diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj
index a77c90b1..3c48a89b 100644
--- a/Source/Base/Base.dproj
+++ b/Source/Base/Base.dproj
@@ -44,13 +44,6 @@
Package
FalseTrueFalseLibreria base de FactuGESTrueFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0
-
-
-
-
-
-
-
VCL for the Web Design Package for CodeGear RAD Studio
CodeGear WebSnap Components
CodeGear SOAP Components
@@ -65,8 +58,56 @@
MainSource
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -78,50 +119,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -142,13 +142,6 @@
-
-
-
-
-
-
-
+
diff --git a/Source/Modulos/Articulos/Controller/Articulos_controller.dpk b/Source/Modulos/Articulos/Controller/Articulos_controller.dpk
new file mode 100644
index 00000000..68180bc1
--- /dev/null
+++ b/Source/Modulos/Articulos/Controller/Articulos_controller.dpk
@@ -0,0 +1,41 @@
+package Articulos_controller;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION OFF}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES ON}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$IMPLICITBUILD ON}
+
+requires
+ GUIBase,
+ Articulos_model,
+ Contactos_model,
+ Contactos_controller,
+ Articulos_data;
+
+contains
+ uIEditorArticulos in 'View\uIEditorArticulos.pas',
+ uIEditorArticulo in 'View\uIEditorArticulo.pas',
+ uArticulosController in 'uArticulosController.pas',
+ uIEditorElegirArticulos in 'View\uIEditorElegirArticulos.pas',
+ uControllerDetallesArticulos in 'uControllerDetallesArticulos.pas';
+
+end.
diff --git a/Source/Modulos/Articulos/Controller/Articulos_controller.rc b/Source/Modulos/Articulos/Controller/Articulos_controller.rc
new file mode 100644
index 00000000..e69de29b
diff --git a/Source/Modulos/Articulos/Controller/Articulos_controller.res b/Source/Modulos/Articulos/Controller/Articulos_controller.res
new file mode 100644
index 00000000..86c94e6a
Binary files /dev/null and b/Source/Modulos/Articulos/Controller/Articulos_controller.res differ
diff --git a/Source/Modulos/Articulos/Controller/View/uIEditorArticulo.pas b/Source/Modulos/Articulos/Controller/View/uIEditorArticulo.pas
new file mode 100644
index 00000000..61198c71
--- /dev/null
+++ b/Source/Modulos/Articulos/Controller/View/uIEditorArticulo.pas
@@ -0,0 +1,22 @@
+unit uIEditorArticulo;
+
+interface
+
+uses
+ uEditorDBItem, uBizArticulos, uArticulosController;
+
+type
+ IEditorArticulo = interface(IEditorDBItem)
+ ['{3260C102-192B-4797-A390-30C818ECBEA5}']
+ function GetController : IArticulosController;
+ procedure SetController (const Value : IArticulosController);
+ property Controller : IArticulosController read GetController write SetController;
+
+ function GetArticulo: IBizArticulo;
+ procedure SetArticulo(const Value: IBizArticulo);
+ property Articulo: IBizArticulo read GetArticulo write SetArticulo;
+ end;
+
+implementation
+
+end.
diff --git a/Source/Modulos/Articulos/Controller/View/uIEditorArticulos.pas b/Source/Modulos/Articulos/Controller/View/uIEditorArticulos.pas
new file mode 100644
index 00000000..5082fd75
--- /dev/null
+++ b/Source/Modulos/Articulos/Controller/View/uIEditorArticulos.pas
@@ -0,0 +1,23 @@
+unit uIEditorArticulos;
+
+interface
+
+uses
+ uEditorGridBase, uBizArticulos, uArticulosController;
+
+type
+ IEditorArticulos = interface(IEditorGridBase)
+ ['{997019B7-6663-4EA0-AC5E-EEB126A62808}']
+ function GetArticulos: IBizArticulo;
+ procedure SetArticulos(const Value: IBizArticulo);
+ property Articulos: IBizArticulo read GetArticulos write SetArticulos;
+
+ function GetController : IArticulosController;
+ procedure SetController (const Value : IArticulosController);
+ property Controller : IArticulosController read GetController write SetController;
+ end;
+
+
+implementation
+
+end.
diff --git a/Source/Modulos/Articulos/Controller/View/uIEditorElegirArticulos.pas b/Source/Modulos/Articulos/Controller/View/uIEditorElegirArticulos.pas
new file mode 100644
index 00000000..4d11ca77
--- /dev/null
+++ b/Source/Modulos/Articulos/Controller/View/uIEditorElegirArticulos.pas
@@ -0,0 +1,27 @@
+unit uIEditorElegirArticulos;
+
+interface
+
+uses
+ uIEditorArticulos, uBizArticulos, uGUIBase;
+
+type
+ IEditorElegirArticulos = interface(IEditorArticulos)
+ ['{549F3B97-46E2-4D40-8080-566065735FA0}']
+ function GetArticulosSeleccionados: IBizArticulo;
+ property ArticulosSeleccionados: IBizArticulo read GetArticulosSeleccionados;
+
+ procedure SetMultiSelect (AValue : Boolean);
+ function GetMultiSelect : Boolean;
+ property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect;
+
+ procedure SetMensaje (const AValue: String);
+ function GetMensaje: String;
+ property Mensaje : String read GetMensaje write SetMensaje;
+
+ end;
+
+
+implementation
+
+end.
diff --git a/Source/Modulos/Articulos/Controller/uArticulosController.pas b/Source/Modulos/Articulos/Controller/uArticulosController.pas
new file mode 100644
index 00000000..db2d47d1
--- /dev/null
+++ b/Source/Modulos/Articulos/Controller/uArticulosController.pas
@@ -0,0 +1,634 @@
+unit uArticulosController;
+
+interface
+
+
+uses
+ Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem,
+ uIDataModuleArticulos, uBizArticulos, uProveedoresController,
+ uBizContactos;
+
+type
+ IArticulosController = interface(IObservador)
+ ['{C7EA6486-7BE4-468E-A27A-621E1BA13430}']
+ function Buscar(const ID: Integer; AClienteID: Integer = -1): IBizArticulo;
+ function BuscarInventariables: IBizArticulo;
+ function BuscarTodos: IBizArticulo; overload;
+ function BuscarTodos(ACliente: IBizCliente): IBizArticulo; overload;
+ function BuscarTodos(AProveedor: IBizProveedor): IBizArticulo; overload;
+ function BuscarReferencia(const Ref: String; AClienteID: Integer): IBizArticulo;
+ function BuscarReferenciaProveedor(const Ref: String; AClienteID: Integer): IBizArticulo;
+ procedure Ver(AArticulo : IBizArticulo);
+ procedure VerTodos(AArticulos: IBizArticulo);
+ 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 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;
+ end;
+
+ TArticulosController = class(TObservador, IArticulosController)
+ protected
+ FDataModule : IDataModuleArticulos;
+ FProveedoresController: IProveedoresController;
+ function GetProveedoresController: IProveedoresController;
+
+ procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
+ procedure AsignarID(AArticulo: IBizArticulo; const IDNuevo: Integer); virtual;
+ 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; virtual;
+ 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 BuscarTodos: 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 Ref: String; AClienteID: Integer = -1): IBizArticulo; virtual;
+ function BuscarReferenciaProveedor(const Ref: String; AClienteID: Integer = -1): IBizArticulo; virtual;
+ function Nuevo : IBizArticulo; virtual;
+ procedure Ver(AArticulo : IBizArticulo); virtual;
+ procedure VerTodos(AArticulos: IBizArticulo); 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);
+ end;
+
+implementation
+
+uses
+ cxControls, DB, uEditorRegistryUtils, schArticulosClient_Intf,
+ uIEditorArticulos, uIEditorArticulo, uIEditorElegirArticulos,
+ uDataModuleArticulos, uDataModuleUsuarios, uDAInterfaces,
+ uDataTableUtils, uDateUtils, uROTypes, DateUtils, Controls, Windows;
+
+{ 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;
+
+procedure TArticulosController.AsignarID(AArticulo: IBizArticulo; const IDNuevo: Integer);
+begin
+ if not Assigned(AArticulo) then
+ raise Exception.Create ('Articulo no asignado');
+
+ AArticulo.Edit;
+ AArticulo.ID := IDNuevo;
+ AArticulo.Post;
+end;
+
+function TArticulosController.Buscar(const ID: Integer; AClienteID: Integer = -1): IBizArticulo;
+begin
+ if (AClienteID = -1) then
+ Result := (FDataModule as IDataModuleArticulos).GetItem(ID)
+ else
+ Result := (FDataModule as IDataModuleArticulos).GetItem(ID, AClienteID);
+
+ FiltrarEmpresa(Result);
+end;
+
+function TArticulosController.BuscarInventariables: IBizArticulo;
+begin
+ ShowHourglassCursor;
+ try
+ Result := BuscarTodos;
+ with Result.DataTable.Where do
+ begin
+ if NotEmpty then
+ AddOperator(opAND);
+ OpenBraket;
+ AddText('V_ARTICULOS.' + fld_ArticulosINVENTARIABLE + ' = 1');
+ CloseBraket;
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+function TArticulosController.BuscarReferencia(const Ref: String; AClienteID: Integer = -1): IBizArticulo;
+begin
+ ShowHourglassCursor;
+ try
+ if (AClienteID = -1) then
+ Result := BuscarTodos
+ else
+ Result := BuscarTodos(AClienteID);
+
+ with Result.DataTable.Where do
+ begin
+ if NotEmpty then
+ AddOperator(opAND);
+ OpenBraket;
+ AddText('UPPER(V_ARTICULOS.' + fld_ArticulosREFERENCIA + ') = UPPER(''' + Ref + ''')');
+ CloseBraket;
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+function TArticulosController.BuscarReferenciaProveedor(const Ref: String; AClienteID: Integer = -1): IBizArticulo;
+begin
+ ShowHourglassCursor;
+ try
+ if (AClienteID = -1) then
+ Result := BuscarTodos
+ else
+ Result := BuscarTodos(AClienteID);
+
+ with Result.DataTable.Where do
+ begin
+ if NotEmpty then
+ AddOperator(opAND);
+ OpenBraket;
+ AddText('UPPER(V_ARTICULOS.' + fld_ArticulosREFERENCIA_PROV + ') = UPPER(''' + Ref + ''')');
+ CloseBraket;
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+function TArticulosController.BuscarTodos(ACliente: Integer): IBizArticulo;
+begin
+ Result := FDataModule.GetItems(ACliente);
+ FiltrarEmpresa(Result);
+end;
+
+function TArticulosController.BuscarTodos(ACliente: IBizCliente): IBizArticulo;
+begin
+ if not Assigned(ACliente) then
+ raise Exception.Create('Falta ACliente: BuscarTodos');
+
+ Result := BuscarTodos(ACliente.ID);
+end;
+
+function TArticulosController.BuscarTodos(AProveedor: IBizProveedor): IBizArticulo;
+begin
+ if Assigned(AProveedor) then
+ begin
+ ShowHourglassCursor;
+ try
+ Result := BuscarTodos;
+ with Result.DataTable.Where do
+ begin
+ if NotEmpty then
+ AddOperator(opAND);
+ OpenBraket;
+ AddText('V_ARTICULOS.' + fld_ArticulosID_PROVEEDOR + ' = ' + IntToStr(AProveedor.ID));
+ CloseBraket;
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+ end;
+end;
+
+function TArticulosController.BuscarTodos: IBizArticulo;
+begin
+ Result := FDataModule.GetItems;
+ 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;
+end;
+
+constructor TArticulosController.Create;
+begin
+ AsignarDataModule;
+end;
+
+function TArticulosController.CreateEditor(const AName: String;
+ const IID: TGUID; out Intf): Boolean;
+begin
+ Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
+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 := dmUsuarios.IDEmpresaActual;
+// USUARIO := dmUsuarios.LoginInfo.Usuario;
+ 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;
+
+ 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 := dmUsuarios.LoginInfo.Usuario;
+
+ Result := True;
+ finally
+ AArticulo.Post;
+ end;
+end;
+
+procedure TArticulosController.Ver(AArticulo: IBizArticulo);
+var
+ AEditor : IEditorArticulo;
+begin
+ AEditor := NIL;
+ ShowHourglassCursor;
+ try
+ RecuperarObjetos(AArticulo);
+
+ CreateEditor('EditorArticulo', IEditorArticulo, AEditor);
+ with (AEditor as IEditorArticulo) do
+ begin
+ Controller := Self; //OJO ORDEN MUY IMPORTANTE
+ Articulo := AArticulo;
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+
+ if Assigned(AEditor) then
+ try
+ AEditor.ShowModal;
+ AEditor.Release;
+ finally
+ AEditor := NIL;
+ 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(AArticulos: IBizArticulo);
+var
+ AEditor : IEditorArticulos;
+begin
+ AEditor := NIL;
+ ShowHourglassCursor;
+ try
+ RecuperarObjetos(AArticulos);
+
+ CreateEditor('EditorArticulos', IEditorArticulos, AEditor);
+ with (AEditor as IEditorArticulos) do
+ begin
+ Controller := Self; //OJO ORDEN MUY IMPORTANTE
+ Articulos := AArticulos;
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+
+ if Assigned(AEditor) then
+ AEditor.ShowEmbedded;
+end;
+
+function TArticulosController._Vacio: IBizArticulo;
+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]));
+
+ Result := Eliminar(AArticulo);
+ AArticulo := NIL;
+end;
+
+function TArticulosController.ElegirArticulos(AArticulos: IBizArticulo; AMensaje: String; AMultiSelect: Boolean): IBizArticulo;
+var
+ AEditor : IEditorElegirArticulos;
+begin
+ Result := NIL;
+ CreateEditor('EditorElegirArticulos', IEditorElegirArticulos, AEditor);
+ try
+ with AEditor do
+ begin
+ Controller := Self;
+ Articulos := AArticulos;
+ MultiSelect := AMultiSelect;
+ Mensaje := AMensaje;
+ if IsPositiveResult(ShowModal) then
+ Result := ArticulosSeleccionados;
+ Release;
+ end;
+ finally
+ AEditor := NIL;
+ 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;
+//
+end;
+
+procedure TArticulosController.RecuperarObjetos(AArticulo: IBizArticulo);
+begin
+ //
+end;
+
+function TArticulosController.Existe(const ID: Integer): Boolean;
+var
+ AArticulo : IBizArticulo;
+begin
+ try
+ AArticulo := Buscar(ID);
+ Result := Assigned(AArticulo) and (AArticulo.ID = ID);
+ finally
+ AArticulo := NIL;
+ end;
+end;
+
+function TArticulosController.ExtraerSeleccionados(AArticulos: IBizArticulo): IBizArticulo;
+var
+ ASeleccionados : IBizArticulo;
+begin
+ ASeleccionados := (Self.Buscar(ID_NULO) as IBizArticulo);
+ CopyDataTable(AArticulos.DataTable, ASeleccionados.DataTable, True);
+ Result := ASeleccionados;
+end;
+
+procedure TArticulosController.FiltrarEmpresa(AArticulo: IBizArticulo);
+begin
+ if AArticulo.DataTable.Active then
+ AArticulo.DataTable.Active := False;
+
+ // Filtrar los Articulos actuales por empresa
+{ with AArticulo.DataTable.Where do
+ begin
+ if NotEmpty then
+ AddOperator(opAND);
+
+ OpenBraket;
+// AddText('V_ARTICULOS.' + fld_ArticulosID_EMPRESA + ' = ' + IntToStr(dmUsuarios.IDEmpresaActual));
+ CloseBraket;
+ end;
+}
+end;
+
+function TArticulosController.GetProveedoresController: IProveedoresController;
+begin
+ Result := FProveedoresController;
+end;
+
+function TArticulosController.Guardar(AArticulo: IBizArticulo): Boolean;
+var
+ NuevoID: Integer;
+begin
+ Result := False;
+
+ if ValidarArticulo(AArticulo) then
+ begin
+ ShowHourglassCursor;
+ try
+ if (AArticulo.EsNuevo) then
+ NuevoID := FDataModule.GetNextID(AArticulo.DataTable.LogicalName)
+ else
+ NuevoID := AArticulo.ID;
+
+ AsignarID(AArticulo, NuevoID);
+ AArticulo.DataTable.ApplyUpdates;
+
+ Result := True;
+ finally
+ HideHourglassCursor;
+ end;
+ end;
+end;
+
+function TArticulosController.Nuevo: IBizArticulo;
+var
+ AArticulo : IBizArticulo;
+begin
+ AArticulo := FDataModule.NewItem;
+ FiltrarEmpresa(AArticulo);
+ AArticulo.DataTable.Active := True;
+ AArticulo.Insert;
+ Result := AArticulo;
+end;
+
+procedure TArticulosController.Preview(AArticulo: IBizArticulo);
+//var
+// AReportController : IArticulosReportController;
+begin
+{ AReportController := TArticulosReportController.Create;
+ try
+ AReportController.Preview(AArticulo.ID);
+ finally
+ AReportController := NIL;
+ end;
+}
+end;
+
+procedure TArticulosController.Print(AArticulo: IBizArticulo);
+//var
+// AReportController : IArticulosReportController;
+begin
+{ AReportController := TArticulosReportController.Create;
+ try
+ AReportController.Print(AArticulo.ID);
+ finally
+ AReportController := NIL;
+ end;
+}
+end;
+
+end.
diff --git a/Source/Modulos/Articulos/Controller/uControllerDetallesArticulos.pas b/Source/Modulos/Articulos/Controller/uControllerDetallesArticulos.pas
new file mode 100644
index 00000000..e84129fe
--- /dev/null
+++ b/Source/Modulos/Articulos/Controller/uControllerDetallesArticulos.pas
@@ -0,0 +1,395 @@
+unit uControllerDetallesArticulos;
+
+interface
+
+uses Classes, Variants, uDACDSDataTable, uDADataTable, uControllerDetallesBase,
+ uBizArticulos, uArticulosController;
+
+const
+ CAMPO_REFERENCIA = 'REFERENCIA'; //Campo ficticio
+ CAMPO_REFERENCIA_PROVEEDOR = 'REFERENCIA_PROVEEDOR'; //Campo ficticio
+
+type
+ TEnumReferencia = (tCliente, tProveedor);
+
+ IControllerDetallesArticulos = interface(IControllerDetallesBase)
+ ['{6E156796-DB1F-4727-BBFB-FBAEF2E5C098}']
+ procedure AsignarID(ADetalles: IDAStronglyTypedDataTable; IDCabecera: Integer; AEsNuevo:Boolean);
+ procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable);
+ function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; AClienteID: Integer = -1): Boolean; overload;
+ function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; IDArticulo: Integer; AClienteID: Integer = -1): Boolean; overload;
+ procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
+ procedure CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable);
+ procedure AnadirConceptoInicial(ADetalles: IDAStronglyTypedDataTable; AConcepto: String);
+ end;
+
+ TControllerDetallesArticulos = class (TControllerDetallesBase, IControllerDetallesArticulos)
+ protected
+ FArticulosController: IArticulosController;
+
+ procedure EliminarArticulosProveedor(ADetalles: IDAStronglyTypedDataTable);
+ procedure AsignarDatos(ADetalles: IDAStronglyTypedDataTable; IDCabecera: Integer); virtual;
+ procedure RellenarOtros(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
+ procedure RellenarImportes(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
+ procedure RellenarGenerales(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
+ procedure RellenarDetalle(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual;
+ procedure Add(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); overload;
+
+ procedure AsignarController; virtual;
+
+ public
+ procedure AsignarID(ADetalles: IDAStronglyTypedDataTable; IDCabecera: Integer; AEsNuevo:Boolean);
+ function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; AClienteID: Integer = -1): Boolean; overload;
+ function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; IDArticulo: Integer; AClienteID: Integer = -1): Boolean; overload;
+ procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable); virtual;
+ procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
+ procedure CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable);
+ procedure AnadirConceptoInicial(ADetalles: IDAStronglyTypedDataTable; AConcepto: String);
+
+ constructor Create; override;
+ destructor Destroy; override;
+ end;
+
+
+implementation
+
+{ TControllerDetallesArticulos }
+
+uses DB, Dialogs, cxControls, SysUtils, uDAInterfaces, uCalculosUtils, schArticulosClient_Intf;
+
+
+{ TControllerDetallesArticulos }
+
+procedure TControllerDetallesArticulos.ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
+begin
+ if (Assigned(ADetalles) and Assigned(AArticulos)) then
+ begin
+ if not AArticulos.DataTable.Active then
+ AArticulos.DataTable.Active := True;
+
+ BeginUpdate(ADetalles);
+ try
+ ADetalles.DataTable.First;
+ with ADetalles.DataTable do
+ begin
+ while not Eof do
+ begin
+ Edit;
+ AArticulos.DataTable.First;
+ try
+ if AArticulos.DataTable.Locate(CAMPO_ID, FieldByName(CAMPO_ID_ARTICULOS).AsVariant, []) then
+ RellenarDetalle(ADetalles, AArticulos)
+ else
+ RellenarDetalle(ADetalles, Nil);
+ except
+ on E: Exception do
+ ShowMessage(E.Message);
+ end;
+ Next;
+ end;
+ //Volvemos a dejarlo al principio
+ ADetalles.DataTable.First;
+ end;
+ finally
+ EndUpdate(ADetalles);
+ end;
+ end;
+end;
+
+procedure TControllerDetallesArticulos.Add(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
+begin
+ if Assigned(ADetalles) and Assigned(AArticulos) then
+ begin
+ try
+ ShowHourglassCursor;
+ BeginUpdate(ADetalles);
+
+ if not ADetalles.DataTable.Active then
+ ADetalles.DataTable.Active := True;
+
+ if not AArticulos.DataTable.Active then
+ AArticulos.DataTable.Active := True;
+
+ with AArticulos.DataTable do
+ begin
+ First;
+ while not EOF do
+ begin
+ Self.Add(ADetalles, TIPO_DETALLE_CONCEPTO);
+ RellenarDetalle(ADetalles, AArticulos);
+ Next;
+ end;
+ end;
+ finally
+ EndUpdate(ADetalles);
+ HideHourglassCursor;
+ end;
+ end;
+end;
+
+function TControllerDetallesArticulos.AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; IDArticulo: Integer; AClienteID: Integer = -1): 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);
+
+ if Assigned(AArticulo) then
+ begin
+ AArticulo.DataTable.Active := True;
+ if (AArticulo.RecordCount > 0) then
+ begin
+ RellenarDetalle(ADetalles, AArticulo);
+ Result := True;
+ end;
+ end;
+ finally
+ EndUpdate(ADetalles);
+ HideHourglassCursor;
+ end;
+end;
+
+procedure TControllerDetallesArticulos.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable);
+var
+ AArticulos: IBizArticulo;
+begin
+ if Assigned(ADetalles) then
+ begin
+ try
+ AArticulos := (FArticulosController.BuscarTodos as IBizArticulo);
+ AArticulos := FArticulosController.ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir', True);
+ Add(ADetalles, AArticulos);
+ finally
+ AArticulos := Nil;
+ end;
+ end;
+end;
+
+procedure TControllerDetallesArticulos.AnadirConceptoInicial(ADetalles: IDAStronglyTypedDataTable; AConcepto: String);
+begin
+ if Assigned(ADetalles) then
+ begin
+ With ADetalles.DataTable do
+ begin
+ First;
+ Add(ADetalles, TIPO_DETALLE_TITULO);
+ Edit;
+ FieldByName(CAMPO_CONCEPTO).AsString := AConcepto;
+ Post;
+ //Subimos la linea insertada al inicio de los detalles
+ Self.Mover(ADetalles.DataTable, 1, -1);
+ //Añadimos linea en blanco
+ Add(ADetalles, TIPO_DETALLE_CONCEPTO);
+ Edit;
+ FieldByName(CAMPO_CONCEPTO).AsString := '';
+ Post;
+// First;
+ end;
+ end;
+end;
+
+procedure TControllerDetallesArticulos.AsignarController;
+begin
+ FArticulosController := TArticulosController.Create;
+end;
+
+procedure TControllerDetallesArticulos.AsignarDatos(ADetalles: IDAStronglyTypedDataTable; IDCabecera: Integer);
+begin
+//
+end;
+
+procedure TControllerDetallesArticulos.AsignarID(ADetalles: IDAStronglyTypedDataTable; IDCabecera: Integer; AEsNuevo: Boolean);
+begin
+ with ADetalles do
+ begin
+ DataTable.DisableControls;
+ try
+ begin
+ if not DataTable.Active then
+ DataTable.Active := True;
+
+ { ¡¡¡¡ OJO !!!!
+ Para asignar el ID en los detalles hay
+ que tener en cuenta una cosa:
+ Si se cambia el ID, ese detalle ya no
+ pertenece a esa cabecera porque ya no se
+ cumple la condición de la relacion:
+ Master.ID = Detail.ID_PRESUPUESTO.
+
+ Por esa razón no sirve hacer un recorrido
+ desde el principio hasta el final porque
+ las detalles van desapareciendo según asignamos
+ el valor al campo ID y nos mueve aleatoriamente
+ la posición del registro actual.
+
+ Es mejor hacer un bucle sencillo hasta que
+ "se gasten" todos los detalles. Cuando el
+ RecordCount llegue a 0 quiere decir que hemos
+ tratado todos los detalles.
+
+ El bucle cambia en el caso de ser llamada esta funcion desde modificar
+ un presupuesto ya que en ese caso si que hay que hacer un recorrido
+ total de las tuplas de detalle.
+ }
+
+ if AEsNuevo then
+ begin
+ while RecordCount > 0 do
+ begin
+ DataTable.First;
+ AsignarDatos(ADetalles, IDCabecera);
+ end
+ end
+ else
+ begin
+ DataTable.First;
+ while not DataTable.EOF do
+ begin
+ if DataTable.FieldByName('ID').AsInteger < 0 then
+ AsignarDatos(ADetalles, IDCabecera);
+ DataTable.Next
+ end;
+ end;
+ end;
+ finally
+ DataTable.EnableControls;
+ end;
+ end;
+end;
+
+procedure TControllerDetallesArticulos.CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable);
+begin
+//Cambia de signo los detalles de la pasados por parámetro
+ if Assigned(ADetalles) then
+ begin
+ try
+ BeginUpdate(ADetalles);
+
+ if not ADetalles.DataTable.Active then
+ ADetalles.DataTable.Active := True;
+
+ with ADetalles.DataTable do
+ begin
+ First;
+ while not EOF do
+ begin
+ if (FieldByName(CAMPO_CANTIDAD).AsInteger <> 0) then
+ begin
+ Edit;
+ FieldByName(CAMPO_CANTIDAD).AsInteger := -1;
+ end;
+ Next;
+ end;
+ end;
+ finally
+ EndUpdate(ADetalles);
+ end;
+ end;
+end;
+
+constructor TControllerDetallesArticulos.Create;
+begin
+ inherited;
+ AsignarController;
+end;
+
+destructor TControllerDetallesArticulos.Destroy;
+begin
+ FArticulosController := Nil;
+ inherited;
+end;
+
+procedure TControllerDetallesArticulos.EliminarArticulosProveedor(ADetalles: IDAStronglyTypedDataTable);
+begin
+ if Assigned(ADetalles) then
+ begin
+ with ADetalles.DataTable do
+ begin
+ First;
+ while not Eof do
+ if not FieldByName(CAMPO_ID_ARTICULOS).IsNull then
+ Delete
+ else
+ Next;
+ end;
+ end;
+end;
+
+function TControllerDetallesArticulos.AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; AClienteID: Integer = -1): 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
+ case TipoReferencia of
+ tCliente: AArticulo := FArticulosController.BuscarReferencia(Referencia, AClienteID);
+ tProveedor: AArticulo := FArticulosController.BuscarReferenciaProveedor(Referencia, AClienteID)
+ end;
+
+ if Assigned(AArticulo) then
+ begin
+ AArticulo.DataTable.Active := True;
+ if (AArticulo.RecordCount > 0) then
+ begin
+ RellenarDetalle(ADetalles, AArticulo);
+ Result := True;
+ end;
+ end;
+ finally
+ EndUpdate(ADetalles);
+ HideHourglassCursor;
+ end;
+end;
+
+procedure TControllerDetallesArticulos.RellenarOtros(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
+begin
+// Procedimiento que en los hijos se sobreescribirá para rellenar otros campos según necesidades
+end;
+
+procedure TControllerDetallesArticulos.RellenarDetalle(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
+begin
+ if Assigned(ADetalles) then
+ begin
+ if not ADetalles.DataTable.Editing then
+ ADetalles.DataTable.Edit;
+
+ RellenarGenerales(ADetalles, AArticulos);
+ RellenarImportes(ADetalles, AArticulos);
+ RellenarOtros(ADetalles, AArticulos);
+
+ ADetalles.DataTable.Post;
+ end;
+end;
+
+procedure TControllerDetallesArticulos.RellenarGenerales(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
+begin
+ if Assigned(AArticulos) then
+ 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_CANTIDAD).AsInteger := 1;
+ end;
+end;
+
+procedure TControllerDetallesArticulos.RellenarImportes(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo);
+begin
+// Procedimiento que en los hijos se sobreescribirá para rellenar el campo importe según necesidades
+end;
+
+end.
diff --git a/Source/Modulos/Articulos/Data/Articulos_data.bdsproj b/Source/Modulos/Articulos/Data/Articulos_data.bdsproj
new file mode 100644
index 00000000..3ac864db
--- /dev/null
+++ b/Source/Modulos/Articulos/Data/Articulos_data.bdsproj
@@ -0,0 +1,492 @@
+
+
+
+
+
+
+
+
+
+
+
+ Articulos_data.dpk
+
+
+ 7.0
+
+
+ 8
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ True
+ True
+ WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+
+ False
+
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ False
+ False
+ False
+ True
+ True
+ True
+ True
+ True
+ True
+
+
+
+ 0
+ 0
+ False
+ 1
+ True
+ 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/Articulos/Data/Articulos_data.dpk b/Source/Modulos/Articulos/Data/Articulos_data.dpk
new file mode 100644
index 00000000..41ff3507
--- /dev/null
+++ b/Source/Modulos/Articulos/Data/Articulos_data.dpk
@@ -0,0 +1,33 @@
+package Articulos_data;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION OFF}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES ON}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$IMPLICITBUILD ON}
+
+requires
+ Articulos_model;
+
+contains
+ uDataModuleArticulos in 'uDataModuleArticulos.pas' {DataModuleArticulos};
+
+end.
diff --git a/Source/Modulos/Articulos/Data/Articulos_data.rc b/Source/Modulos/Articulos/Data/Articulos_data.rc
new file mode 100644
index 00000000..e69de29b
diff --git a/Source/Modulos/Articulos/Data/Articulos_data.res b/Source/Modulos/Articulos/Data/Articulos_data.res
new file mode 100644
index 00000000..86c94e6a
Binary files /dev/null and b/Source/Modulos/Articulos/Data/Articulos_data.res differ
diff --git a/Source/Modulos/Articulos/Data/uDataModuleArticulos.dfm b/Source/Modulos/Articulos/Data/uDataModuleArticulos.dfm
new file mode 100644
index 00000000..434be28a
--- /dev/null
+++ b/Source/Modulos/Articulos/Data/uDataModuleArticulos.dfm
@@ -0,0 +1,235 @@
+inherited DataModuleArticulos: TDataModuleArticulos
+ OnCreate = DAClientDataModuleCreate
+ Height = 414
+ Width = 518
+ object RORemoteService: TRORemoteService
+ Message = dmConexion.ROMessage
+ Channel = dmConexion.ROChannel
+ ServiceName = 'srvArticulos'
+ Left = 48
+ Top = 24
+ end
+ object Bin2DataStreamer: TDABin2DataStreamer
+ Left = 48
+ Top = 84
+ end
+ object rda_Articulos: TDARemoteDataAdapter
+ GetSchemaCall.RemoteService = RORemoteService
+ GetDataCall.RemoteService = RORemoteService
+ UpdateDataCall.RemoteService = RORemoteService
+ GetScriptsCall.RemoteService = RORemoteService
+ RemoteService = RORemoteService
+ DataStreamer = Bin2DataStreamer
+ Left = 51
+ Top = 151
+ end
+ object tbl_Articulos: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ID'
+ DataType = datInteger
+ InPrimaryKey = True
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FAMILIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'IMAGEN'
+ DataType = datBlob
+ end
+ item
+ Name = 'COMISIONABLE'
+ DataType = datInteger
+ end
+ item
+ Name = 'FECHA_ALTA'
+ DataType = datDateTime
+ end
+ item
+ Name = 'FECHA_MODIFICACION'
+ DataType = datDateTime
+ end
+ item
+ Name = 'USUARIO'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'REFERENCIA_PROV'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'PRECIO_COSTE'
+ DataType = datFloat
+ end
+ item
+ Name = 'PRECIO_PORTE'
+ DataType = datFloat
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ end
+ item
+ Name = 'PRECIO_NETO'
+ DataType = datFloat
+ end
+ item
+ Name = 'INVENTARIABLE'
+ DataType = datInteger
+ end
+ item
+ Name = 'ID_PROVEEDOR'
+ DataType = datInteger
+ end
+ item
+ Name = 'NOMBRE_PROVEEDOR'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ELIMINADO'
+ DataType = datInteger
+ DisplayLabel = 'Eliminado'
+ end>
+ Params = <>
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteDataAdapter = rda_Articulos
+ DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
+ MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
+ LogicalName = 'Articulos'
+ Left = 232
+ Top = 112
+ end
+ object ds_Articulos: TDADataSource
+ DataSet = tbl_Articulos.Dataset
+ DataTable = tbl_Articulos
+ Left = 232
+ Top = 32
+ end
+ object tbl_ArticulosParaCliente: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ID'
+ DataType = datInteger
+ InPrimaryKey = True
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FAMILIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'IMAGEN'
+ DataType = datBlob
+ end
+ item
+ Name = 'COMISIONABLE'
+ DataType = datInteger
+ end
+ item
+ Name = 'FECHA_ALTA'
+ DataType = datDateTime
+ end
+ item
+ Name = 'FECHA_MODIFICACION'
+ DataType = datDateTime
+ end
+ item
+ Name = 'USUARIO'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'REFERENCIA_PROV'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'PRECIO_COSTE'
+ DataType = datFloat
+ end
+ item
+ Name = 'PRECIO_PORTE'
+ DataType = datFloat
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ end
+ item
+ Name = 'PRECIO_NETO'
+ DataType = datFloat
+ end
+ item
+ Name = 'ID_PROVEEDOR'
+ DataType = datInteger
+ end
+ item
+ Name = 'INVENTARIABLE'
+ DataType = datInteger
+ end
+ item
+ Name = 'NOMBRE_PROVEEDOR'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ELIMINADO'
+ DataType = datInteger
+ DisplayLabel = 'Eliminado'
+ end>
+ Params = <
+ item
+ Name = 'ID_CLIENTE'
+ Value = ''
+ ParamType = daptInput
+ end>
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteDataAdapter = rda_Articulos
+ DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
+ MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
+ LogicalName = 'ArticulosParaCliente'
+ Left = 400
+ Top = 112
+ end
+ object ds_ArticulosParaCliente: TDADataSource
+ DataSet = tbl_ArticulosParaCliente.Dataset
+ DataTable = tbl_ArticulosParaCliente
+ Left = 400
+ Top = 32
+ end
+end
diff --git a/Source/Modulos/Articulos/Data/uDataModuleArticulos.pas b/Source/Modulos/Articulos/Data/uDataModuleArticulos.pas
new file mode 100644
index 00000000..95c7f592
--- /dev/null
+++ b/Source/Modulos/Articulos/Data/uDataModuleArticulos.pas
@@ -0,0 +1,149 @@
+unit uDataModuleArticulos;
+
+interface
+
+uses
+ SysUtils, Classes, DB, uDADataTable, uDABINAdapter,
+ uDAScriptingProvider, uROWinInetHttpChannel, uROTypes,
+ uRORemoteService, uROClient, uROBinMessage,
+ uDADesigntimeCall,
+ uIDataModuleArticulos, uBizArticulos, uDataModuleBase, uDARemoteDataAdapter,
+ uDADataStreamer, uDABin2DataStreamer, uDAInterfaces, uDAMemDataTable;
+
+type
+ TDataModuleArticulos = class(TDataModuleBase, IDataModuleArticulos)
+ RORemoteService: TRORemoteService;
+ Bin2DataStreamer: TDABin2DataStreamer;
+ rda_Articulos: TDARemoteDataAdapter;
+ tbl_Articulos: TDAMemDataTable;
+ ds_Articulos: TDADataSource;
+ tbl_ArticulosParaCliente: TDAMemDataTable;
+ ds_ArticulosParaCliente: TDADataSource;
+ procedure DAClientDataModuleCreate(Sender: TObject);
+
+ protected
+ procedure AsignarClaseNegocio(AArticulo: TDADataTable); virtual;
+ function darNombreGenerador(DataSetName: String): String; virtual;
+ public
+ function GetItems : IBizArticulo; overload;
+ function GetItems (IDCliente: Integer) : IBizArticulo; overload;
+ function GetItem(const ID : Integer; AClienteID: Integer = -1) : IBizArticulo;
+ function GetNextID(const DataSetName : String) : Integer;
+ function NewItem : IBizArticulo;
+ end;
+
+implementation
+
+{$R *.DFM}
+
+uses
+ FactuGES_Intf, uDataModuleConexion, uDataTableUtils, cxControls,
+ schArticulosClient_Intf;
+
+{ TdmArticulos }
+
+procedure TDataModuleArticulos.AsignarClaseNegocio(AArticulo: TDADataTable);
+begin
+ AArticulo.BusinessRulesID := BIZ_CLIENT_ARTICULO;
+end;
+
+procedure TDataModuleArticulos.DAClientDataModuleCreate(Sender: TObject);
+begin
+ RORemoteService.Channel := dmConexion.Channel;
+ RORemoteService.Message := dmConexion.Message;
+end;
+
+function TDataModuleArticulos.darNombreGenerador(DataSetName: String): String;
+begin
+ if DataSetName = nme_Articulos then
+ Result := 'GEN_ARTICULOS_ID';
+end;
+
+function TDataModuleArticulos.GetNextID(const DataSetName: String): Integer;
+var
+ aGeneratorName : String;
+begin
+// aGeneratorName := darNombreGenerador(DataSetName);
+// Result := (RORemoteService as IsrvArticulos).GetNextAutoInc(aGeneratorName)
+end;
+
+function TDataModuleArticulos.NewItem: IBizArticulo;
+begin
+ Result := GetItem(ID_NULO)
+end;
+
+{
+function TDataModuleArticulos._CloneDataTable(const ADataTable : TDACDSDataTable): TDACDSDataTable;
+begin
+ Result := NIL;
+
+ if not Assigned(ADataTable) then
+ raise Exception.Create ('No se ha asignado la tabla de origen (CloneDataTable)');
+
+ Result := TDACDSDataTable.Create(NIL);
+ CloneDataTable(ADataTable, Result);
+end;
+}
+function TDataModuleArticulos.GetItem(const ID: Integer; AClienteID: Integer = -1): IBizArticulo;
+begin
+ ShowHourglassCursor;
+ try
+ if (AClienteID = -1) then
+ Result := Self.GetItems
+ else
+ Result := Self.GetItems(AClienteID);
+
+ with Result.DataTable.Where do
+ begin
+ if NotEmpty then
+ AddOperator(opAND);
+ OpenBraket;
+ AddText('V_ARTICULOS.' + fld_ArticulosID + ' = ' + IntToStr(ID));
+ CloseBraket;
+ end;
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+function TDataModuleArticulos.GetItems(IDCliente: Integer): IBizArticulo;
+var
+ AArticulo : TDAMemDataTable;
+begin
+
+ ShowHourglassCursor;
+ try
+// AArticulo := _CloneDataTable(tbl_ArticulosParaCliente);
+ AArticulo := CloneDataTable(tbl_ArticulosParaCliente);
+
+ AsignarClaseNegocio(AArticulo);
+
+ AArticulo.ParamByName('ID_CLIENTE').AsInteger := IdCliente;
+ Result := (AArticulo as IBizArticulo);
+
+ finally
+ HideHourglassCursor;
+ end;
+
+end;
+
+function TDataModuleArticulos.GetItems: IBizArticulo;
+var
+ AArticulo : TDAMemDataTable;
+begin
+ ShowHourglassCursor;
+ try
+// AArticulo := _CloneDataTable(tbl_Articulos);
+ AArticulo := CloneDataTable(tbl_Articulos);
+
+ AsignarClaseNegocio(AArticulo);
+
+ Result := (AArticulo as IBizArticulo);
+
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
+
+end.
diff --git a/Source/Modulos/Articulos/Model/Articulos_model.bdsproj b/Source/Modulos/Articulos/Model/Articulos_model.bdsproj
new file mode 100644
index 00000000..f5c354a9
--- /dev/null
+++ b/Source/Modulos/Articulos/Model/Articulos_model.bdsproj
@@ -0,0 +1,492 @@
+
+
+
+
+
+
+
+
+
+
+
+ Articulos_model.dpk
+
+
+ 7.0
+
+
+ 8
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ True
+ True
+ WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+
+ False
+
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ False
+ False
+ False
+ True
+ True
+ True
+ True
+ True
+ True
+
+
+
+ 0
+ 0
+ False
+ 1
+ True
+ 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/Articulos/Model/Articulos_model.dpk b/Source/Modulos/Articulos/Model/Articulos_model.dpk
new file mode 100644
index 00000000..deb5ce20
--- /dev/null
+++ b/Source/Modulos/Articulos/Model/Articulos_model.dpk
@@ -0,0 +1,36 @@
+package Articulos_model;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION OFF}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES ON}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$IMPLICITBUILD ON}
+
+requires
+ Base;
+
+contains
+ uBizArticulos in 'uBizArticulos.pas',
+ uIDataModuleArticulos in 'Data\uIDataModuleArticulos.pas',
+ schArticulosClient_Intf in 'schArticulosClient_Intf.pas',
+ schArticulosServer_Intf in 'schArticulosServer_Intf.pas';
+
+end.
diff --git a/Source/Modulos/Articulos/Model/Articulos_model.rc b/Source/Modulos/Articulos/Model/Articulos_model.rc
new file mode 100644
index 00000000..e69de29b
diff --git a/Source/Modulos/Articulos/Model/Articulos_model.res b/Source/Modulos/Articulos/Model/Articulos_model.res
new file mode 100644
index 00000000..86c94e6a
Binary files /dev/null and b/Source/Modulos/Articulos/Model/Articulos_model.res differ
diff --git a/Source/Modulos/Articulos/Model/Data/uIDataModuleArticulos.pas b/Source/Modulos/Articulos/Model/Data/uIDataModuleArticulos.pas
new file mode 100644
index 00000000..17b690e5
--- /dev/null
+++ b/Source/Modulos/Articulos/Model/Data/uIDataModuleArticulos.pas
@@ -0,0 +1,20 @@
+unit uIDataModuleArticulos;
+
+interface
+
+uses
+ uBizArticulos;
+
+type
+ IDataModuleArticulos = interface
+ ['{9047C468-78DE-404E-9047-1125B382FE3B}']
+ function GetItems: IBizArticulo; overload;
+ function GetItems (IDCliente: Integer) : IBizArticulo; overload;
+ function GetItem(const ID : Integer; AClienteID: Integer = -1) : IBizArticulo;
+ function GetNextID(const DataSetName : String) : Integer;
+ function NewItem : IBizArticulo;
+ end;
+
+implementation
+
+end.
diff --git a/Source/Modulos/Articulos/Model/schArticulosClient_Intf.pas b/Source/Modulos/Articulos/Model/schArticulosClient_Intf.pas
new file mode 100644
index 00000000..c6043389
--- /dev/null
+++ b/Source/Modulos/Articulos/Model/schArticulosClient_Intf.pas
@@ -0,0 +1,1458 @@
+unit schArticulosClient_Intf;
+
+interface
+
+uses
+ Classes, DB, schBase_Intf, SysUtils, uROClasses, uDADataTable, FmtBCD, uROXMLIntf;
+
+const
+ { Data table rules ids
+ Feel free to change them to something more human readable
+ but make sure they are unique in the context of your application }
+ RID_Articulos = '{73F4E826-B760-40AD-B9B6-5FC60A7ACD02}';
+ RID_ArticulosParaCliente = '{E835B51B-6F88-4292-B38E-71CD1CA408E3}';
+
+ { Data table names }
+ nme_Articulos = 'Articulos';
+ nme_ArticulosParaCliente = 'ArticulosParaCliente';
+
+ { Articulos fields }
+ fld_ArticulosID = 'ID';
+ fld_ArticulosID_EMPRESA = 'ID_EMPRESA';
+ fld_ArticulosREFERENCIA = 'REFERENCIA';
+ fld_ArticulosDESCRIPCION = 'DESCRIPCION';
+ fld_ArticulosFAMILIA = 'FAMILIA';
+ fld_ArticulosIMAGEN = 'IMAGEN';
+ fld_ArticulosCOMISIONABLE = 'COMISIONABLE';
+ fld_ArticulosFECHA_ALTA = 'FECHA_ALTA';
+ fld_ArticulosFECHA_MODIFICACION = 'FECHA_MODIFICACION';
+ fld_ArticulosUSUARIO = 'USUARIO';
+ fld_ArticulosREFERENCIA_PROV = 'REFERENCIA_PROV';
+ fld_ArticulosPRECIO_COSTE = 'PRECIO_COSTE';
+ fld_ArticulosPRECIO_PORTE = 'PRECIO_PORTE';
+ fld_ArticulosDESCUENTO = 'DESCUENTO';
+ fld_ArticulosPRECIO_NETO = 'PRECIO_NETO';
+ fld_ArticulosINVENTARIABLE = 'INVENTARIABLE';
+ fld_ArticulosID_PROVEEDOR = 'ID_PROVEEDOR';
+ fld_ArticulosNOMBRE_PROVEEDOR = 'NOMBRE_PROVEEDOR';
+ fld_ArticulosELIMINADO = 'ELIMINADO';
+
+ { Articulos field indexes }
+ idx_ArticulosID = 0;
+ idx_ArticulosID_EMPRESA = 1;
+ idx_ArticulosREFERENCIA = 2;
+ idx_ArticulosDESCRIPCION = 3;
+ idx_ArticulosFAMILIA = 4;
+ idx_ArticulosIMAGEN = 5;
+ idx_ArticulosCOMISIONABLE = 6;
+ idx_ArticulosFECHA_ALTA = 7;
+ idx_ArticulosFECHA_MODIFICACION = 8;
+ idx_ArticulosUSUARIO = 9;
+ idx_ArticulosREFERENCIA_PROV = 10;
+ idx_ArticulosPRECIO_COSTE = 11;
+ idx_ArticulosPRECIO_PORTE = 12;
+ idx_ArticulosDESCUENTO = 13;
+ idx_ArticulosPRECIO_NETO = 14;
+ idx_ArticulosINVENTARIABLE = 15;
+ idx_ArticulosID_PROVEEDOR = 16;
+ idx_ArticulosNOMBRE_PROVEEDOR = 17;
+ idx_ArticulosELIMINADO = 18;
+
+ { ArticulosParaCliente fields }
+ fld_ArticulosParaClienteID = 'ID';
+ fld_ArticulosParaClienteID_EMPRESA = 'ID_EMPRESA';
+ fld_ArticulosParaClienteREFERENCIA = 'REFERENCIA';
+ fld_ArticulosParaClienteDESCRIPCION = 'DESCRIPCION';
+ fld_ArticulosParaClienteFAMILIA = 'FAMILIA';
+ fld_ArticulosParaClienteIMAGEN = 'IMAGEN';
+ fld_ArticulosParaClienteCOMISIONABLE = 'COMISIONABLE';
+ fld_ArticulosParaClienteFECHA_ALTA = 'FECHA_ALTA';
+ fld_ArticulosParaClienteFECHA_MODIFICACION = 'FECHA_MODIFICACION';
+ fld_ArticulosParaClienteUSUARIO = 'USUARIO';
+ fld_ArticulosParaClienteREFERENCIA_PROV = 'REFERENCIA_PROV';
+ fld_ArticulosParaClientePRECIO_COSTE = 'PRECIO_COSTE';
+ fld_ArticulosParaClientePRECIO_PORTE = 'PRECIO_PORTE';
+ fld_ArticulosParaClienteDESCUENTO = 'DESCUENTO';
+ fld_ArticulosParaClientePRECIO_NETO = 'PRECIO_NETO';
+ fld_ArticulosParaClienteID_PROVEEDOR = 'ID_PROVEEDOR';
+ fld_ArticulosParaClienteINVENTARIABLE = 'INVENTARIABLE';
+ fld_ArticulosParaClienteNOMBRE_PROVEEDOR = 'NOMBRE_PROVEEDOR';
+ fld_ArticulosParaClienteELIMINADO = 'ELIMINADO';
+
+ { ArticulosParaCliente field indexes }
+ idx_ArticulosParaClienteID = 0;
+ idx_ArticulosParaClienteID_EMPRESA = 1;
+ idx_ArticulosParaClienteREFERENCIA = 2;
+ idx_ArticulosParaClienteDESCRIPCION = 3;
+ idx_ArticulosParaClienteFAMILIA = 4;
+ idx_ArticulosParaClienteIMAGEN = 5;
+ idx_ArticulosParaClienteCOMISIONABLE = 6;
+ idx_ArticulosParaClienteFECHA_ALTA = 7;
+ idx_ArticulosParaClienteFECHA_MODIFICACION = 8;
+ idx_ArticulosParaClienteUSUARIO = 9;
+ idx_ArticulosParaClienteREFERENCIA_PROV = 10;
+ idx_ArticulosParaClientePRECIO_COSTE = 11;
+ idx_ArticulosParaClientePRECIO_PORTE = 12;
+ idx_ArticulosParaClienteDESCUENTO = 13;
+ idx_ArticulosParaClientePRECIO_NETO = 14;
+ idx_ArticulosParaClienteID_PROVEEDOR = 15;
+ idx_ArticulosParaClienteINVENTARIABLE = 16;
+ idx_ArticulosParaClienteNOMBRE_PROVEEDOR = 17;
+ idx_ArticulosParaClienteELIMINADO = 18;
+
+type
+ { IArticulos }
+ IArticulos = interface(IDAStronglyTypedDataTable)
+ ['{3FB4F707-7E49-490E-9960-26CDB572BD71}']
+ { Property getters and setters }
+ function GetIDValue: Integer;
+ procedure SetIDValue(const aValue: Integer);
+ function GetIDIsNull: Boolean;
+ procedure SetIDIsNull(const aValue: Boolean);
+ function GetID_EMPRESAValue: Integer;
+ procedure SetID_EMPRESAValue(const aValue: Integer);
+ function GetID_EMPRESAIsNull: Boolean;
+ procedure SetID_EMPRESAIsNull(const aValue: Boolean);
+ function GetREFERENCIAValue: String;
+ procedure SetREFERENCIAValue(const aValue: String);
+ function GetREFERENCIAIsNull: Boolean;
+ procedure SetREFERENCIAIsNull(const aValue: Boolean);
+ function GetDESCRIPCIONValue: String;
+ procedure SetDESCRIPCIONValue(const aValue: String);
+ function GetDESCRIPCIONIsNull: Boolean;
+ procedure SetDESCRIPCIONIsNull(const aValue: Boolean);
+ function GetFAMILIAValue: String;
+ procedure SetFAMILIAValue(const aValue: String);
+ function GetFAMILIAIsNull: Boolean;
+ procedure SetFAMILIAIsNull(const aValue: Boolean);
+ function GetIMAGENValue: IROStream;
+ function GetIMAGENIsNull: Boolean;
+ procedure SetIMAGENIsNull(const aValue: Boolean);
+ function GetCOMISIONABLEValue: Integer;
+ procedure SetCOMISIONABLEValue(const aValue: Integer);
+ function GetCOMISIONABLEIsNull: Boolean;
+ procedure SetCOMISIONABLEIsNull(const aValue: Boolean);
+ function GetFECHA_ALTAValue: DateTime;
+ procedure SetFECHA_ALTAValue(const aValue: DateTime);
+ function GetFECHA_ALTAIsNull: Boolean;
+ procedure SetFECHA_ALTAIsNull(const aValue: Boolean);
+ function GetFECHA_MODIFICACIONValue: DateTime;
+ procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime);
+ function GetFECHA_MODIFICACIONIsNull: Boolean;
+ procedure SetFECHA_MODIFICACIONIsNull(const aValue: Boolean);
+ function GetUSUARIOValue: String;
+ procedure SetUSUARIOValue(const aValue: String);
+ function GetUSUARIOIsNull: Boolean;
+ procedure SetUSUARIOIsNull(const aValue: Boolean);
+ function GetREFERENCIA_PROVValue: String;
+ procedure SetREFERENCIA_PROVValue(const aValue: String);
+ function GetREFERENCIA_PROVIsNull: Boolean;
+ procedure SetREFERENCIA_PROVIsNull(const aValue: Boolean);
+ function GetPRECIO_COSTEValue: Float;
+ procedure SetPRECIO_COSTEValue(const aValue: Float);
+ function GetPRECIO_COSTEIsNull: Boolean;
+ procedure SetPRECIO_COSTEIsNull(const aValue: Boolean);
+ function GetPRECIO_PORTEValue: Float;
+ procedure SetPRECIO_PORTEValue(const aValue: Float);
+ function GetPRECIO_PORTEIsNull: Boolean;
+ procedure SetPRECIO_PORTEIsNull(const aValue: Boolean);
+ function GetDESCUENTOValue: Float;
+ procedure SetDESCUENTOValue(const aValue: Float);
+ function GetDESCUENTOIsNull: Boolean;
+ procedure SetDESCUENTOIsNull(const aValue: Boolean);
+ function GetPRECIO_NETOValue: Float;
+ procedure SetPRECIO_NETOValue(const aValue: Float);
+ function GetPRECIO_NETOIsNull: Boolean;
+ procedure SetPRECIO_NETOIsNull(const aValue: Boolean);
+ function GetINVENTARIABLEValue: Integer;
+ procedure SetINVENTARIABLEValue(const aValue: Integer);
+ function GetINVENTARIABLEIsNull: Boolean;
+ procedure SetINVENTARIABLEIsNull(const aValue: Boolean);
+ function GetID_PROVEEDORValue: Integer;
+ procedure SetID_PROVEEDORValue(const aValue: Integer);
+ function GetID_PROVEEDORIsNull: Boolean;
+ procedure SetID_PROVEEDORIsNull(const aValue: Boolean);
+ function GetNOMBRE_PROVEEDORValue: String;
+ procedure SetNOMBRE_PROVEEDORValue(const aValue: String);
+ function GetNOMBRE_PROVEEDORIsNull: Boolean;
+ procedure SetNOMBRE_PROVEEDORIsNull(const aValue: Boolean);
+ function GetELIMINADOValue: Integer;
+ procedure SetELIMINADOValue(const aValue: Integer);
+ function GetELIMINADOIsNull: Boolean;
+ procedure SetELIMINADOIsNull(const aValue: Boolean);
+
+
+ { Properties }
+ property ID: Integer read GetIDValue write SetIDValue;
+ property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull;
+ property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue;
+ property ID_EMPRESAIsNull: Boolean read GetID_EMPRESAIsNull write SetID_EMPRESAIsNull;
+ property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue;
+ property REFERENCIAIsNull: Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull;
+ property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue;
+ property DESCRIPCIONIsNull: Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull;
+ property FAMILIA: String read GetFAMILIAValue write SetFAMILIAValue;
+ property FAMILIAIsNull: Boolean read GetFAMILIAIsNull write SetFAMILIAIsNull;
+ property IMAGEN: IROStream read GetIMAGENValue;
+ property IMAGENIsNull: Boolean read GetIMAGENIsNull write SetIMAGENIsNull;
+ property COMISIONABLE: Integer read GetCOMISIONABLEValue write SetCOMISIONABLEValue;
+ property COMISIONABLEIsNull: Boolean read GetCOMISIONABLEIsNull write SetCOMISIONABLEIsNull;
+ property FECHA_ALTA: DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue;
+ property FECHA_ALTAIsNull: Boolean read GetFECHA_ALTAIsNull write SetFECHA_ALTAIsNull;
+ property FECHA_MODIFICACION: DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue;
+ property FECHA_MODIFICACIONIsNull: Boolean read GetFECHA_MODIFICACIONIsNull write SetFECHA_MODIFICACIONIsNull;
+ property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue;
+ property USUARIOIsNull: Boolean read GetUSUARIOIsNull write SetUSUARIOIsNull;
+ property REFERENCIA_PROV: String read GetREFERENCIA_PROVValue write SetREFERENCIA_PROVValue;
+ property REFERENCIA_PROVIsNull: Boolean read GetREFERENCIA_PROVIsNull write SetREFERENCIA_PROVIsNull;
+ property PRECIO_COSTE: Float read GetPRECIO_COSTEValue write SetPRECIO_COSTEValue;
+ property PRECIO_COSTEIsNull: Boolean read GetPRECIO_COSTEIsNull write SetPRECIO_COSTEIsNull;
+ property PRECIO_PORTE: Float read GetPRECIO_PORTEValue write SetPRECIO_PORTEValue;
+ property PRECIO_PORTEIsNull: Boolean read GetPRECIO_PORTEIsNull write SetPRECIO_PORTEIsNull;
+ property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue;
+ property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull;
+ property PRECIO_NETO: Float read GetPRECIO_NETOValue write SetPRECIO_NETOValue;
+ property PRECIO_NETOIsNull: Boolean read GetPRECIO_NETOIsNull write SetPRECIO_NETOIsNull;
+ property INVENTARIABLE: Integer read GetINVENTARIABLEValue write SetINVENTARIABLEValue;
+ property INVENTARIABLEIsNull: Boolean read GetINVENTARIABLEIsNull write SetINVENTARIABLEIsNull;
+ property ID_PROVEEDOR: Integer read GetID_PROVEEDORValue write SetID_PROVEEDORValue;
+ property ID_PROVEEDORIsNull: Boolean read GetID_PROVEEDORIsNull write SetID_PROVEEDORIsNull;
+ property NOMBRE_PROVEEDOR: String read GetNOMBRE_PROVEEDORValue write SetNOMBRE_PROVEEDORValue;
+ property NOMBRE_PROVEEDORIsNull: Boolean read GetNOMBRE_PROVEEDORIsNull write SetNOMBRE_PROVEEDORIsNull;
+ property ELIMINADO: Integer read GetELIMINADOValue write SetELIMINADOValue;
+ property ELIMINADOIsNull: Boolean read GetELIMINADOIsNull write SetELIMINADOIsNull;
+ end;
+
+ { TArticulosDataTableRules }
+ TArticulosDataTableRules = class(TIntfObjectDADataTableRules, IArticulos)
+ private
+ f_IMAGEN: IROStream;
+ procedure IMAGEN_OnChange(Sender: TObject);
+ 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_EMPRESAValue: Integer; virtual;
+ procedure SetID_EMPRESAValue(const aValue: Integer); virtual;
+ function GetID_EMPRESAIsNull: Boolean; virtual;
+ procedure SetID_EMPRESAIsNull(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 GetDESCRIPCIONValue: String; virtual;
+ procedure SetDESCRIPCIONValue(const aValue: String); virtual;
+ function GetDESCRIPCIONIsNull: Boolean; virtual;
+ procedure SetDESCRIPCIONIsNull(const aValue: Boolean); virtual;
+ function GetFAMILIAValue: String; virtual;
+ procedure SetFAMILIAValue(const aValue: String); virtual;
+ function GetFAMILIAIsNull: Boolean; virtual;
+ procedure SetFAMILIAIsNull(const aValue: Boolean); virtual;
+ function GetIMAGENValue: IROStream; virtual;
+ function GetIMAGENIsNull: Boolean; virtual;
+ procedure SetIMAGENIsNull(const aValue: Boolean); virtual;
+ function GetCOMISIONABLEValue: Integer; virtual;
+ procedure SetCOMISIONABLEValue(const aValue: Integer); virtual;
+ function GetCOMISIONABLEIsNull: Boolean; virtual;
+ procedure SetCOMISIONABLEIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_ALTAValue: DateTime; virtual;
+ procedure SetFECHA_ALTAValue(const aValue: DateTime); virtual;
+ function GetFECHA_ALTAIsNull: Boolean; virtual;
+ procedure SetFECHA_ALTAIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_MODIFICACIONValue: DateTime; virtual;
+ procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); virtual;
+ function GetFECHA_MODIFICACIONIsNull: Boolean; virtual;
+ procedure SetFECHA_MODIFICACIONIsNull(const aValue: Boolean); virtual;
+ function GetUSUARIOValue: String; virtual;
+ procedure SetUSUARIOValue(const aValue: String); virtual;
+ function GetUSUARIOIsNull: Boolean; virtual;
+ procedure SetUSUARIOIsNull(const aValue: Boolean); virtual;
+ function GetREFERENCIA_PROVValue: String; virtual;
+ procedure SetREFERENCIA_PROVValue(const aValue: String); virtual;
+ function GetREFERENCIA_PROVIsNull: Boolean; virtual;
+ procedure SetREFERENCIA_PROVIsNull(const aValue: Boolean); virtual;
+ function GetPRECIO_COSTEValue: Float; virtual;
+ procedure SetPRECIO_COSTEValue(const aValue: Float); virtual;
+ function GetPRECIO_COSTEIsNull: Boolean; virtual;
+ procedure SetPRECIO_COSTEIsNull(const aValue: Boolean); virtual;
+ function GetPRECIO_PORTEValue: Float; virtual;
+ procedure SetPRECIO_PORTEValue(const aValue: Float); virtual;
+ function GetPRECIO_PORTEIsNull: Boolean; virtual;
+ procedure SetPRECIO_PORTEIsNull(const aValue: Boolean); virtual;
+ function GetDESCUENTOValue: Float; virtual;
+ procedure SetDESCUENTOValue(const aValue: Float); virtual;
+ function GetDESCUENTOIsNull: Boolean; virtual;
+ procedure SetDESCUENTOIsNull(const aValue: Boolean); virtual;
+ function GetPRECIO_NETOValue: Float; virtual;
+ procedure SetPRECIO_NETOValue(const aValue: Float); virtual;
+ function GetPRECIO_NETOIsNull: Boolean; virtual;
+ procedure SetPRECIO_NETOIsNull(const aValue: Boolean); virtual;
+ function GetINVENTARIABLEValue: Integer; virtual;
+ procedure SetINVENTARIABLEValue(const aValue: Integer); virtual;
+ function GetINVENTARIABLEIsNull: Boolean; virtual;
+ procedure SetINVENTARIABLEIsNull(const aValue: Boolean); virtual;
+ function GetID_PROVEEDORValue: Integer; virtual;
+ procedure SetID_PROVEEDORValue(const aValue: Integer); virtual;
+ function GetID_PROVEEDORIsNull: Boolean; virtual;
+ procedure SetID_PROVEEDORIsNull(const aValue: Boolean); virtual;
+ function GetNOMBRE_PROVEEDORValue: String; virtual;
+ procedure SetNOMBRE_PROVEEDORValue(const aValue: String); virtual;
+ function GetNOMBRE_PROVEEDORIsNull: Boolean; virtual;
+ procedure SetNOMBRE_PROVEEDORIsNull(const aValue: Boolean); virtual;
+ function GetELIMINADOValue: Integer; virtual;
+ procedure SetELIMINADOValue(const aValue: Integer); virtual;
+ function GetELIMINADOIsNull: Boolean; virtual;
+ procedure SetELIMINADOIsNull(const aValue: Boolean); virtual;
+
+ { Properties }
+ property ID: Integer read GetIDValue write SetIDValue;
+ property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull;
+ property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue;
+ property ID_EMPRESAIsNull: Boolean read GetID_EMPRESAIsNull write SetID_EMPRESAIsNull;
+ property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue;
+ property REFERENCIAIsNull: Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull;
+ property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue;
+ property DESCRIPCIONIsNull: Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull;
+ property FAMILIA: String read GetFAMILIAValue write SetFAMILIAValue;
+ property FAMILIAIsNull: Boolean read GetFAMILIAIsNull write SetFAMILIAIsNull;
+ property IMAGEN: IROStream read GetIMAGENValue;
+ property IMAGENIsNull: Boolean read GetIMAGENIsNull write SetIMAGENIsNull;
+ property COMISIONABLE: Integer read GetCOMISIONABLEValue write SetCOMISIONABLEValue;
+ property COMISIONABLEIsNull: Boolean read GetCOMISIONABLEIsNull write SetCOMISIONABLEIsNull;
+ property FECHA_ALTA: DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue;
+ property FECHA_ALTAIsNull: Boolean read GetFECHA_ALTAIsNull write SetFECHA_ALTAIsNull;
+ property FECHA_MODIFICACION: DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue;
+ property FECHA_MODIFICACIONIsNull: Boolean read GetFECHA_MODIFICACIONIsNull write SetFECHA_MODIFICACIONIsNull;
+ property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue;
+ property USUARIOIsNull: Boolean read GetUSUARIOIsNull write SetUSUARIOIsNull;
+ property REFERENCIA_PROV: String read GetREFERENCIA_PROVValue write SetREFERENCIA_PROVValue;
+ property REFERENCIA_PROVIsNull: Boolean read GetREFERENCIA_PROVIsNull write SetREFERENCIA_PROVIsNull;
+ property PRECIO_COSTE: Float read GetPRECIO_COSTEValue write SetPRECIO_COSTEValue;
+ property PRECIO_COSTEIsNull: Boolean read GetPRECIO_COSTEIsNull write SetPRECIO_COSTEIsNull;
+ property PRECIO_PORTE: Float read GetPRECIO_PORTEValue write SetPRECIO_PORTEValue;
+ property PRECIO_PORTEIsNull: Boolean read GetPRECIO_PORTEIsNull write SetPRECIO_PORTEIsNull;
+ property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue;
+ property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull;
+ property PRECIO_NETO: Float read GetPRECIO_NETOValue write SetPRECIO_NETOValue;
+ property PRECIO_NETOIsNull: Boolean read GetPRECIO_NETOIsNull write SetPRECIO_NETOIsNull;
+ property INVENTARIABLE: Integer read GetINVENTARIABLEValue write SetINVENTARIABLEValue;
+ property INVENTARIABLEIsNull: Boolean read GetINVENTARIABLEIsNull write SetINVENTARIABLEIsNull;
+ property ID_PROVEEDOR: Integer read GetID_PROVEEDORValue write SetID_PROVEEDORValue;
+ property ID_PROVEEDORIsNull: Boolean read GetID_PROVEEDORIsNull write SetID_PROVEEDORIsNull;
+ property NOMBRE_PROVEEDOR: String read GetNOMBRE_PROVEEDORValue write SetNOMBRE_PROVEEDORValue;
+ property NOMBRE_PROVEEDORIsNull: Boolean read GetNOMBRE_PROVEEDORIsNull write SetNOMBRE_PROVEEDORIsNull;
+ property ELIMINADO: Integer read GetELIMINADOValue write SetELIMINADOValue;
+ property ELIMINADOIsNull: Boolean read GetELIMINADOIsNull write SetELIMINADOIsNull;
+
+ public
+ constructor Create(aDataTable: TDADataTable); override;
+ destructor Destroy; override;
+
+ end;
+
+ { IArticulosParaCliente }
+ IArticulosParaCliente = interface(IDAStronglyTypedDataTable)
+ ['{7AB1616F-5C31-40AB-A0A3-FD785F7F064E}']
+ { Property getters and setters }
+ function GetIDValue: Integer;
+ procedure SetIDValue(const aValue: Integer);
+ function GetIDIsNull: Boolean;
+ procedure SetIDIsNull(const aValue: Boolean);
+ function GetID_EMPRESAValue: Integer;
+ procedure SetID_EMPRESAValue(const aValue: Integer);
+ function GetID_EMPRESAIsNull: Boolean;
+ procedure SetID_EMPRESAIsNull(const aValue: Boolean);
+ function GetREFERENCIAValue: String;
+ procedure SetREFERENCIAValue(const aValue: String);
+ function GetREFERENCIAIsNull: Boolean;
+ procedure SetREFERENCIAIsNull(const aValue: Boolean);
+ function GetDESCRIPCIONValue: String;
+ procedure SetDESCRIPCIONValue(const aValue: String);
+ function GetDESCRIPCIONIsNull: Boolean;
+ procedure SetDESCRIPCIONIsNull(const aValue: Boolean);
+ function GetFAMILIAValue: String;
+ procedure SetFAMILIAValue(const aValue: String);
+ function GetFAMILIAIsNull: Boolean;
+ procedure SetFAMILIAIsNull(const aValue: Boolean);
+ function GetIMAGENValue: IROStream;
+ function GetIMAGENIsNull: Boolean;
+ procedure SetIMAGENIsNull(const aValue: Boolean);
+ function GetCOMISIONABLEValue: Integer;
+ procedure SetCOMISIONABLEValue(const aValue: Integer);
+ function GetCOMISIONABLEIsNull: Boolean;
+ procedure SetCOMISIONABLEIsNull(const aValue: Boolean);
+ function GetFECHA_ALTAValue: DateTime;
+ procedure SetFECHA_ALTAValue(const aValue: DateTime);
+ function GetFECHA_ALTAIsNull: Boolean;
+ procedure SetFECHA_ALTAIsNull(const aValue: Boolean);
+ function GetFECHA_MODIFICACIONValue: DateTime;
+ procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime);
+ function GetFECHA_MODIFICACIONIsNull: Boolean;
+ procedure SetFECHA_MODIFICACIONIsNull(const aValue: Boolean);
+ function GetUSUARIOValue: String;
+ procedure SetUSUARIOValue(const aValue: String);
+ function GetUSUARIOIsNull: Boolean;
+ procedure SetUSUARIOIsNull(const aValue: Boolean);
+ function GetREFERENCIA_PROVValue: String;
+ procedure SetREFERENCIA_PROVValue(const aValue: String);
+ function GetREFERENCIA_PROVIsNull: Boolean;
+ procedure SetREFERENCIA_PROVIsNull(const aValue: Boolean);
+ function GetPRECIO_COSTEValue: Float;
+ procedure SetPRECIO_COSTEValue(const aValue: Float);
+ function GetPRECIO_COSTEIsNull: Boolean;
+ procedure SetPRECIO_COSTEIsNull(const aValue: Boolean);
+ function GetPRECIO_PORTEValue: Float;
+ procedure SetPRECIO_PORTEValue(const aValue: Float);
+ function GetPRECIO_PORTEIsNull: Boolean;
+ procedure SetPRECIO_PORTEIsNull(const aValue: Boolean);
+ function GetDESCUENTOValue: Float;
+ procedure SetDESCUENTOValue(const aValue: Float);
+ function GetDESCUENTOIsNull: Boolean;
+ procedure SetDESCUENTOIsNull(const aValue: Boolean);
+ function GetPRECIO_NETOValue: Float;
+ procedure SetPRECIO_NETOValue(const aValue: Float);
+ function GetPRECIO_NETOIsNull: Boolean;
+ procedure SetPRECIO_NETOIsNull(const aValue: Boolean);
+ function GetID_PROVEEDORValue: Integer;
+ procedure SetID_PROVEEDORValue(const aValue: Integer);
+ function GetID_PROVEEDORIsNull: Boolean;
+ procedure SetID_PROVEEDORIsNull(const aValue: Boolean);
+ function GetINVENTARIABLEValue: Integer;
+ procedure SetINVENTARIABLEValue(const aValue: Integer);
+ function GetINVENTARIABLEIsNull: Boolean;
+ procedure SetINVENTARIABLEIsNull(const aValue: Boolean);
+ function GetNOMBRE_PROVEEDORValue: String;
+ procedure SetNOMBRE_PROVEEDORValue(const aValue: String);
+ function GetNOMBRE_PROVEEDORIsNull: Boolean;
+ procedure SetNOMBRE_PROVEEDORIsNull(const aValue: Boolean);
+ function GetELIMINADOValue: Integer;
+ procedure SetELIMINADOValue(const aValue: Integer);
+ function GetELIMINADOIsNull: Boolean;
+ procedure SetELIMINADOIsNull(const aValue: Boolean);
+
+
+ { Properties }
+ property ID: Integer read GetIDValue write SetIDValue;
+ property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull;
+ property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue;
+ property ID_EMPRESAIsNull: Boolean read GetID_EMPRESAIsNull write SetID_EMPRESAIsNull;
+ property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue;
+ property REFERENCIAIsNull: Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull;
+ property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue;
+ property DESCRIPCIONIsNull: Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull;
+ property FAMILIA: String read GetFAMILIAValue write SetFAMILIAValue;
+ property FAMILIAIsNull: Boolean read GetFAMILIAIsNull write SetFAMILIAIsNull;
+ property IMAGEN: IROStream read GetIMAGENValue;
+ property IMAGENIsNull: Boolean read GetIMAGENIsNull write SetIMAGENIsNull;
+ property COMISIONABLE: Integer read GetCOMISIONABLEValue write SetCOMISIONABLEValue;
+ property COMISIONABLEIsNull: Boolean read GetCOMISIONABLEIsNull write SetCOMISIONABLEIsNull;
+ property FECHA_ALTA: DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue;
+ property FECHA_ALTAIsNull: Boolean read GetFECHA_ALTAIsNull write SetFECHA_ALTAIsNull;
+ property FECHA_MODIFICACION: DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue;
+ property FECHA_MODIFICACIONIsNull: Boolean read GetFECHA_MODIFICACIONIsNull write SetFECHA_MODIFICACIONIsNull;
+ property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue;
+ property USUARIOIsNull: Boolean read GetUSUARIOIsNull write SetUSUARIOIsNull;
+ property REFERENCIA_PROV: String read GetREFERENCIA_PROVValue write SetREFERENCIA_PROVValue;
+ property REFERENCIA_PROVIsNull: Boolean read GetREFERENCIA_PROVIsNull write SetREFERENCIA_PROVIsNull;
+ property PRECIO_COSTE: Float read GetPRECIO_COSTEValue write SetPRECIO_COSTEValue;
+ property PRECIO_COSTEIsNull: Boolean read GetPRECIO_COSTEIsNull write SetPRECIO_COSTEIsNull;
+ property PRECIO_PORTE: Float read GetPRECIO_PORTEValue write SetPRECIO_PORTEValue;
+ property PRECIO_PORTEIsNull: Boolean read GetPRECIO_PORTEIsNull write SetPRECIO_PORTEIsNull;
+ property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue;
+ property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull;
+ property PRECIO_NETO: Float read GetPRECIO_NETOValue write SetPRECIO_NETOValue;
+ property PRECIO_NETOIsNull: Boolean read GetPRECIO_NETOIsNull write SetPRECIO_NETOIsNull;
+ property ID_PROVEEDOR: Integer read GetID_PROVEEDORValue write SetID_PROVEEDORValue;
+ property ID_PROVEEDORIsNull: Boolean read GetID_PROVEEDORIsNull write SetID_PROVEEDORIsNull;
+ property INVENTARIABLE: Integer read GetINVENTARIABLEValue write SetINVENTARIABLEValue;
+ property INVENTARIABLEIsNull: Boolean read GetINVENTARIABLEIsNull write SetINVENTARIABLEIsNull;
+ property NOMBRE_PROVEEDOR: String read GetNOMBRE_PROVEEDORValue write SetNOMBRE_PROVEEDORValue;
+ property NOMBRE_PROVEEDORIsNull: Boolean read GetNOMBRE_PROVEEDORIsNull write SetNOMBRE_PROVEEDORIsNull;
+ property ELIMINADO: Integer read GetELIMINADOValue write SetELIMINADOValue;
+ property ELIMINADOIsNull: Boolean read GetELIMINADOIsNull write SetELIMINADOIsNull;
+ end;
+
+ { TArticulosParaClienteDataTableRules }
+ TArticulosParaClienteDataTableRules = class(TIntfObjectDADataTableRules, IArticulosParaCliente)
+ private
+ f_IMAGEN: IROStream;
+ procedure IMAGEN_OnChange(Sender: TObject);
+ 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_EMPRESAValue: Integer; virtual;
+ procedure SetID_EMPRESAValue(const aValue: Integer); virtual;
+ function GetID_EMPRESAIsNull: Boolean; virtual;
+ procedure SetID_EMPRESAIsNull(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 GetDESCRIPCIONValue: String; virtual;
+ procedure SetDESCRIPCIONValue(const aValue: String); virtual;
+ function GetDESCRIPCIONIsNull: Boolean; virtual;
+ procedure SetDESCRIPCIONIsNull(const aValue: Boolean); virtual;
+ function GetFAMILIAValue: String; virtual;
+ procedure SetFAMILIAValue(const aValue: String); virtual;
+ function GetFAMILIAIsNull: Boolean; virtual;
+ procedure SetFAMILIAIsNull(const aValue: Boolean); virtual;
+ function GetIMAGENValue: IROStream; virtual;
+ function GetIMAGENIsNull: Boolean; virtual;
+ procedure SetIMAGENIsNull(const aValue: Boolean); virtual;
+ function GetCOMISIONABLEValue: Integer; virtual;
+ procedure SetCOMISIONABLEValue(const aValue: Integer); virtual;
+ function GetCOMISIONABLEIsNull: Boolean; virtual;
+ procedure SetCOMISIONABLEIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_ALTAValue: DateTime; virtual;
+ procedure SetFECHA_ALTAValue(const aValue: DateTime); virtual;
+ function GetFECHA_ALTAIsNull: Boolean; virtual;
+ procedure SetFECHA_ALTAIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_MODIFICACIONValue: DateTime; virtual;
+ procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); virtual;
+ function GetFECHA_MODIFICACIONIsNull: Boolean; virtual;
+ procedure SetFECHA_MODIFICACIONIsNull(const aValue: Boolean); virtual;
+ function GetUSUARIOValue: String; virtual;
+ procedure SetUSUARIOValue(const aValue: String); virtual;
+ function GetUSUARIOIsNull: Boolean; virtual;
+ procedure SetUSUARIOIsNull(const aValue: Boolean); virtual;
+ function GetREFERENCIA_PROVValue: String; virtual;
+ procedure SetREFERENCIA_PROVValue(const aValue: String); virtual;
+ function GetREFERENCIA_PROVIsNull: Boolean; virtual;
+ procedure SetREFERENCIA_PROVIsNull(const aValue: Boolean); virtual;
+ function GetPRECIO_COSTEValue: Float; virtual;
+ procedure SetPRECIO_COSTEValue(const aValue: Float); virtual;
+ function GetPRECIO_COSTEIsNull: Boolean; virtual;
+ procedure SetPRECIO_COSTEIsNull(const aValue: Boolean); virtual;
+ function GetPRECIO_PORTEValue: Float; virtual;
+ procedure SetPRECIO_PORTEValue(const aValue: Float); virtual;
+ function GetPRECIO_PORTEIsNull: Boolean; virtual;
+ procedure SetPRECIO_PORTEIsNull(const aValue: Boolean); virtual;
+ function GetDESCUENTOValue: Float; virtual;
+ procedure SetDESCUENTOValue(const aValue: Float); virtual;
+ function GetDESCUENTOIsNull: Boolean; virtual;
+ procedure SetDESCUENTOIsNull(const aValue: Boolean); virtual;
+ function GetPRECIO_NETOValue: Float; virtual;
+ procedure SetPRECIO_NETOValue(const aValue: Float); virtual;
+ function GetPRECIO_NETOIsNull: Boolean; virtual;
+ procedure SetPRECIO_NETOIsNull(const aValue: Boolean); virtual;
+ function GetID_PROVEEDORValue: Integer; virtual;
+ procedure SetID_PROVEEDORValue(const aValue: Integer); virtual;
+ function GetID_PROVEEDORIsNull: Boolean; virtual;
+ procedure SetID_PROVEEDORIsNull(const aValue: Boolean); virtual;
+ function GetINVENTARIABLEValue: Integer; virtual;
+ procedure SetINVENTARIABLEValue(const aValue: Integer); virtual;
+ function GetINVENTARIABLEIsNull: Boolean; virtual;
+ procedure SetINVENTARIABLEIsNull(const aValue: Boolean); virtual;
+ function GetNOMBRE_PROVEEDORValue: String; virtual;
+ procedure SetNOMBRE_PROVEEDORValue(const aValue: String); virtual;
+ function GetNOMBRE_PROVEEDORIsNull: Boolean; virtual;
+ procedure SetNOMBRE_PROVEEDORIsNull(const aValue: Boolean); virtual;
+ function GetELIMINADOValue: Integer; virtual;
+ procedure SetELIMINADOValue(const aValue: Integer); virtual;
+ function GetELIMINADOIsNull: Boolean; virtual;
+ procedure SetELIMINADOIsNull(const aValue: Boolean); virtual;
+
+ { Properties }
+ property ID: Integer read GetIDValue write SetIDValue;
+ property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull;
+ property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue;
+ property ID_EMPRESAIsNull: Boolean read GetID_EMPRESAIsNull write SetID_EMPRESAIsNull;
+ property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue;
+ property REFERENCIAIsNull: Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull;
+ property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue;
+ property DESCRIPCIONIsNull: Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull;
+ property FAMILIA: String read GetFAMILIAValue write SetFAMILIAValue;
+ property FAMILIAIsNull: Boolean read GetFAMILIAIsNull write SetFAMILIAIsNull;
+ property IMAGEN: IROStream read GetIMAGENValue;
+ property IMAGENIsNull: Boolean read GetIMAGENIsNull write SetIMAGENIsNull;
+ property COMISIONABLE: Integer read GetCOMISIONABLEValue write SetCOMISIONABLEValue;
+ property COMISIONABLEIsNull: Boolean read GetCOMISIONABLEIsNull write SetCOMISIONABLEIsNull;
+ property FECHA_ALTA: DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue;
+ property FECHA_ALTAIsNull: Boolean read GetFECHA_ALTAIsNull write SetFECHA_ALTAIsNull;
+ property FECHA_MODIFICACION: DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue;
+ property FECHA_MODIFICACIONIsNull: Boolean read GetFECHA_MODIFICACIONIsNull write SetFECHA_MODIFICACIONIsNull;
+ property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue;
+ property USUARIOIsNull: Boolean read GetUSUARIOIsNull write SetUSUARIOIsNull;
+ property REFERENCIA_PROV: String read GetREFERENCIA_PROVValue write SetREFERENCIA_PROVValue;
+ property REFERENCIA_PROVIsNull: Boolean read GetREFERENCIA_PROVIsNull write SetREFERENCIA_PROVIsNull;
+ property PRECIO_COSTE: Float read GetPRECIO_COSTEValue write SetPRECIO_COSTEValue;
+ property PRECIO_COSTEIsNull: Boolean read GetPRECIO_COSTEIsNull write SetPRECIO_COSTEIsNull;
+ property PRECIO_PORTE: Float read GetPRECIO_PORTEValue write SetPRECIO_PORTEValue;
+ property PRECIO_PORTEIsNull: Boolean read GetPRECIO_PORTEIsNull write SetPRECIO_PORTEIsNull;
+ property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue;
+ property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull;
+ property PRECIO_NETO: Float read GetPRECIO_NETOValue write SetPRECIO_NETOValue;
+ property PRECIO_NETOIsNull: Boolean read GetPRECIO_NETOIsNull write SetPRECIO_NETOIsNull;
+ property ID_PROVEEDOR: Integer read GetID_PROVEEDORValue write SetID_PROVEEDORValue;
+ property ID_PROVEEDORIsNull: Boolean read GetID_PROVEEDORIsNull write SetID_PROVEEDORIsNull;
+ property INVENTARIABLE: Integer read GetINVENTARIABLEValue write SetINVENTARIABLEValue;
+ property INVENTARIABLEIsNull: Boolean read GetINVENTARIABLEIsNull write SetINVENTARIABLEIsNull;
+ property NOMBRE_PROVEEDOR: String read GetNOMBRE_PROVEEDORValue write SetNOMBRE_PROVEEDORValue;
+ property NOMBRE_PROVEEDORIsNull: Boolean read GetNOMBRE_PROVEEDORIsNull write SetNOMBRE_PROVEEDORIsNull;
+ property ELIMINADO: Integer read GetELIMINADOValue write SetELIMINADOValue;
+ property ELIMINADOIsNull: Boolean read GetELIMINADOIsNull write SetELIMINADOIsNull;
+
+ public
+ constructor Create(aDataTable: TDADataTable); override;
+ destructor Destroy; override;
+
+ end;
+
+implementation
+
+uses Variants, uROBinaryHelpers;
+
+{ TArticulosDataTableRules }
+constructor TArticulosDataTableRules.Create(aDataTable: TDADataTable);
+var
+ ROStream: TROStream;
+begin
+ inherited;
+
+ ROStream := TROStream.Create;
+ ROStream.OnChange := IMAGEN_OnChange;
+ f_IMAGEN := ROStream;
+end;
+
+destructor TArticulosDataTableRules.Destroy;
+begin
+ inherited;
+end;
+
+procedure TArticulosDataTableRules.IMAGEN_OnChange(Sender: TObject);
+begin
+ if DataTable.Editing then DataTable.Fields[idx_ArticulosIMAGEN].LoadFromStream(TROStream(Sender));
+end;
+
+function TArticulosDataTableRules.GetIDValue: Integer;
+begin
+ result := DataTable.Fields[idx_ArticulosID].AsInteger;
+end;
+
+procedure TArticulosDataTableRules.SetIDValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_ArticulosID].AsInteger := aValue;
+end;
+
+function TArticulosDataTableRules.GetIDIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosID].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetIDIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosID].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetID_EMPRESAValue: Integer;
+begin
+ result := DataTable.Fields[idx_ArticulosID_EMPRESA].AsInteger;
+end;
+
+procedure TArticulosDataTableRules.SetID_EMPRESAValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_ArticulosID_EMPRESA].AsInteger := aValue;
+end;
+
+function TArticulosDataTableRules.GetID_EMPRESAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosID_EMPRESA].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetID_EMPRESAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosID_EMPRESA].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetREFERENCIAValue: String;
+begin
+ result := DataTable.Fields[idx_ArticulosREFERENCIA].AsString;
+end;
+
+procedure TArticulosDataTableRules.SetREFERENCIAValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ArticulosREFERENCIA].AsString := aValue;
+end;
+
+function TArticulosDataTableRules.GetREFERENCIAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosREFERENCIA].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetREFERENCIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosREFERENCIA].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetDESCRIPCIONValue: String;
+begin
+ result := DataTable.Fields[idx_ArticulosDESCRIPCION].AsString;
+end;
+
+procedure TArticulosDataTableRules.SetDESCRIPCIONValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ArticulosDESCRIPCION].AsString := aValue;
+end;
+
+function TArticulosDataTableRules.GetDESCRIPCIONIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosDESCRIPCION].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetDESCRIPCIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosDESCRIPCION].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetFAMILIAValue: String;
+begin
+ result := DataTable.Fields[idx_ArticulosFAMILIA].AsString;
+end;
+
+procedure TArticulosDataTableRules.SetFAMILIAValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ArticulosFAMILIA].AsString := aValue;
+end;
+
+function TArticulosDataTableRules.GetFAMILIAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosFAMILIA].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetFAMILIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosFAMILIA].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetIMAGENValue: IROStream;
+begin
+ result := f_IMAGEN;
+ result.Position := 0;
+ if not Result.InUpdateMode then begin
+ DataTable.Fields[idx_ArticulosIMAGEN].SaveToStream(result);
+ result.Position := 0;
+ end;
+end;
+
+function TArticulosDataTableRules.GetIMAGENIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosIMAGEN].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetIMAGENIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosIMAGEN].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetCOMISIONABLEValue: Integer;
+begin
+ result := DataTable.Fields[idx_ArticulosCOMISIONABLE].AsInteger;
+end;
+
+procedure TArticulosDataTableRules.SetCOMISIONABLEValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_ArticulosCOMISIONABLE].AsInteger := aValue;
+end;
+
+function TArticulosDataTableRules.GetCOMISIONABLEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosCOMISIONABLE].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetCOMISIONABLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosCOMISIONABLE].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetFECHA_ALTAValue: DateTime;
+begin
+ result := DataTable.Fields[idx_ArticulosFECHA_ALTA].AsDateTime;
+end;
+
+procedure TArticulosDataTableRules.SetFECHA_ALTAValue(const aValue: DateTime);
+begin
+ DataTable.Fields[idx_ArticulosFECHA_ALTA].AsDateTime := aValue;
+end;
+
+function TArticulosDataTableRules.GetFECHA_ALTAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosFECHA_ALTA].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetFECHA_ALTAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosFECHA_ALTA].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetFECHA_MODIFICACIONValue: DateTime;
+begin
+ result := DataTable.Fields[idx_ArticulosFECHA_MODIFICACION].AsDateTime;
+end;
+
+procedure TArticulosDataTableRules.SetFECHA_MODIFICACIONValue(const aValue: DateTime);
+begin
+ DataTable.Fields[idx_ArticulosFECHA_MODIFICACION].AsDateTime := aValue;
+end;
+
+function TArticulosDataTableRules.GetFECHA_MODIFICACIONIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosFECHA_MODIFICACION].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetFECHA_MODIFICACIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosFECHA_MODIFICACION].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetUSUARIOValue: String;
+begin
+ result := DataTable.Fields[idx_ArticulosUSUARIO].AsString;
+end;
+
+procedure TArticulosDataTableRules.SetUSUARIOValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ArticulosUSUARIO].AsString := aValue;
+end;
+
+function TArticulosDataTableRules.GetUSUARIOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosUSUARIO].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetUSUARIOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosUSUARIO].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetREFERENCIA_PROVValue: String;
+begin
+ result := DataTable.Fields[idx_ArticulosREFERENCIA_PROV].AsString;
+end;
+
+procedure TArticulosDataTableRules.SetREFERENCIA_PROVValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ArticulosREFERENCIA_PROV].AsString := aValue;
+end;
+
+function TArticulosDataTableRules.GetREFERENCIA_PROVIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosREFERENCIA_PROV].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetREFERENCIA_PROVIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosREFERENCIA_PROV].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetPRECIO_COSTEValue: Float;
+begin
+ result := DataTable.Fields[idx_ArticulosPRECIO_COSTE].AsFloat;
+end;
+
+procedure TArticulosDataTableRules.SetPRECIO_COSTEValue(const aValue: Float);
+begin
+ DataTable.Fields[idx_ArticulosPRECIO_COSTE].AsFloat := aValue;
+end;
+
+function TArticulosDataTableRules.GetPRECIO_COSTEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosPRECIO_COSTE].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetPRECIO_COSTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosPRECIO_COSTE].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetPRECIO_PORTEValue: Float;
+begin
+ result := DataTable.Fields[idx_ArticulosPRECIO_PORTE].AsFloat;
+end;
+
+procedure TArticulosDataTableRules.SetPRECIO_PORTEValue(const aValue: Float);
+begin
+ DataTable.Fields[idx_ArticulosPRECIO_PORTE].AsFloat := aValue;
+end;
+
+function TArticulosDataTableRules.GetPRECIO_PORTEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosPRECIO_PORTE].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetPRECIO_PORTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosPRECIO_PORTE].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetDESCUENTOValue: Float;
+begin
+ result := DataTable.Fields[idx_ArticulosDESCUENTO].AsFloat;
+end;
+
+procedure TArticulosDataTableRules.SetDESCUENTOValue(const aValue: Float);
+begin
+ DataTable.Fields[idx_ArticulosDESCUENTO].AsFloat := aValue;
+end;
+
+function TArticulosDataTableRules.GetDESCUENTOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosDESCUENTO].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetDESCUENTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosDESCUENTO].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetPRECIO_NETOValue: Float;
+begin
+ result := DataTable.Fields[idx_ArticulosPRECIO_NETO].AsFloat;
+end;
+
+procedure TArticulosDataTableRules.SetPRECIO_NETOValue(const aValue: Float);
+begin
+ DataTable.Fields[idx_ArticulosPRECIO_NETO].AsFloat := aValue;
+end;
+
+function TArticulosDataTableRules.GetPRECIO_NETOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosPRECIO_NETO].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetPRECIO_NETOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosPRECIO_NETO].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetINVENTARIABLEValue: Integer;
+begin
+ result := DataTable.Fields[idx_ArticulosINVENTARIABLE].AsInteger;
+end;
+
+procedure TArticulosDataTableRules.SetINVENTARIABLEValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_ArticulosINVENTARIABLE].AsInteger := aValue;
+end;
+
+function TArticulosDataTableRules.GetINVENTARIABLEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosINVENTARIABLE].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetINVENTARIABLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosINVENTARIABLE].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetID_PROVEEDORValue: Integer;
+begin
+ result := DataTable.Fields[idx_ArticulosID_PROVEEDOR].AsInteger;
+end;
+
+procedure TArticulosDataTableRules.SetID_PROVEEDORValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_ArticulosID_PROVEEDOR].AsInteger := aValue;
+end;
+
+function TArticulosDataTableRules.GetID_PROVEEDORIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosID_PROVEEDOR].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetID_PROVEEDORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosID_PROVEEDOR].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetNOMBRE_PROVEEDORValue: String;
+begin
+ result := DataTable.Fields[idx_ArticulosNOMBRE_PROVEEDOR].AsString;
+end;
+
+procedure TArticulosDataTableRules.SetNOMBRE_PROVEEDORValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ArticulosNOMBRE_PROVEEDOR].AsString := aValue;
+end;
+
+function TArticulosDataTableRules.GetNOMBRE_PROVEEDORIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosNOMBRE_PROVEEDOR].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetNOMBRE_PROVEEDORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosNOMBRE_PROVEEDOR].AsVariant := Null;
+end;
+
+function TArticulosDataTableRules.GetELIMINADOValue: Integer;
+begin
+ result := DataTable.Fields[idx_ArticulosELIMINADO].AsInteger;
+end;
+
+procedure TArticulosDataTableRules.SetELIMINADOValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_ArticulosELIMINADO].AsInteger := aValue;
+end;
+
+function TArticulosDataTableRules.GetELIMINADOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosELIMINADO].IsNull;
+end;
+
+procedure TArticulosDataTableRules.SetELIMINADOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosELIMINADO].AsVariant := Null;
+end;
+
+
+{ TArticulosParaClienteDataTableRules }
+constructor TArticulosParaClienteDataTableRules.Create(aDataTable: TDADataTable);
+var
+ ROStream: TROStream;
+begin
+ inherited;
+
+ ROStream := TROStream.Create;
+ ROStream.OnChange := IMAGEN_OnChange;
+ f_IMAGEN := ROStream;
+end;
+
+destructor TArticulosParaClienteDataTableRules.Destroy;
+begin
+ inherited;
+end;
+
+procedure TArticulosParaClienteDataTableRules.IMAGEN_OnChange(Sender: TObject);
+begin
+ if DataTable.Editing then DataTable.Fields[idx_ArticulosParaClienteIMAGEN].LoadFromStream(TROStream(Sender));
+end;
+
+function TArticulosParaClienteDataTableRules.GetIDValue: Integer;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteID].AsInteger;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetIDValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteID].AsInteger := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetIDIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteID].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetIDIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteID].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetID_EMPRESAValue: Integer;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteID_EMPRESA].AsInteger;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetID_EMPRESAValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteID_EMPRESA].AsInteger := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetID_EMPRESAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteID_EMPRESA].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetID_EMPRESAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteID_EMPRESA].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetREFERENCIAValue: String;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteREFERENCIA].AsString;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetREFERENCIAValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteREFERENCIA].AsString := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetREFERENCIAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteREFERENCIA].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetREFERENCIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteREFERENCIA].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetDESCRIPCIONValue: String;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteDESCRIPCION].AsString;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetDESCRIPCIONValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteDESCRIPCION].AsString := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetDESCRIPCIONIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteDESCRIPCION].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetDESCRIPCIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteDESCRIPCION].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetFAMILIAValue: String;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteFAMILIA].AsString;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetFAMILIAValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteFAMILIA].AsString := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetFAMILIAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteFAMILIA].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetFAMILIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteFAMILIA].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetIMAGENValue: IROStream;
+begin
+ result := f_IMAGEN;
+ result.Position := 0;
+ if not Result.InUpdateMode then begin
+ DataTable.Fields[idx_ArticulosParaClienteIMAGEN].SaveToStream(result);
+ result.Position := 0;
+ end;
+end;
+
+function TArticulosParaClienteDataTableRules.GetIMAGENIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteIMAGEN].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetIMAGENIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteIMAGEN].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetCOMISIONABLEValue: Integer;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteCOMISIONABLE].AsInteger;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetCOMISIONABLEValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteCOMISIONABLE].AsInteger := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetCOMISIONABLEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteCOMISIONABLE].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetCOMISIONABLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteCOMISIONABLE].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetFECHA_ALTAValue: DateTime;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteFECHA_ALTA].AsDateTime;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetFECHA_ALTAValue(const aValue: DateTime);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteFECHA_ALTA].AsDateTime := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetFECHA_ALTAIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteFECHA_ALTA].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetFECHA_ALTAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteFECHA_ALTA].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetFECHA_MODIFICACIONValue: DateTime;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteFECHA_MODIFICACION].AsDateTime;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetFECHA_MODIFICACIONValue(const aValue: DateTime);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteFECHA_MODIFICACION].AsDateTime := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetFECHA_MODIFICACIONIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteFECHA_MODIFICACION].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetFECHA_MODIFICACIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteFECHA_MODIFICACION].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetUSUARIOValue: String;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteUSUARIO].AsString;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetUSUARIOValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteUSUARIO].AsString := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetUSUARIOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteUSUARIO].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetUSUARIOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteUSUARIO].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetREFERENCIA_PROVValue: String;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteREFERENCIA_PROV].AsString;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetREFERENCIA_PROVValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteREFERENCIA_PROV].AsString := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetREFERENCIA_PROVIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteREFERENCIA_PROV].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetREFERENCIA_PROVIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteREFERENCIA_PROV].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetPRECIO_COSTEValue: Float;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClientePRECIO_COSTE].AsFloat;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetPRECIO_COSTEValue(const aValue: Float);
+begin
+ DataTable.Fields[idx_ArticulosParaClientePRECIO_COSTE].AsFloat := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetPRECIO_COSTEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClientePRECIO_COSTE].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetPRECIO_COSTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClientePRECIO_COSTE].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetPRECIO_PORTEValue: Float;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClientePRECIO_PORTE].AsFloat;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetPRECIO_PORTEValue(const aValue: Float);
+begin
+ DataTable.Fields[idx_ArticulosParaClientePRECIO_PORTE].AsFloat := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetPRECIO_PORTEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClientePRECIO_PORTE].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetPRECIO_PORTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClientePRECIO_PORTE].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetDESCUENTOValue: Float;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteDESCUENTO].AsFloat;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetDESCUENTOValue(const aValue: Float);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteDESCUENTO].AsFloat := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetDESCUENTOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteDESCUENTO].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetDESCUENTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteDESCUENTO].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetPRECIO_NETOValue: Float;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClientePRECIO_NETO].AsFloat;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetPRECIO_NETOValue(const aValue: Float);
+begin
+ DataTable.Fields[idx_ArticulosParaClientePRECIO_NETO].AsFloat := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetPRECIO_NETOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClientePRECIO_NETO].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetPRECIO_NETOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClientePRECIO_NETO].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetID_PROVEEDORValue: Integer;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteID_PROVEEDOR].AsInteger;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetID_PROVEEDORValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteID_PROVEEDOR].AsInteger := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetID_PROVEEDORIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteID_PROVEEDOR].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetID_PROVEEDORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteID_PROVEEDOR].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetINVENTARIABLEValue: Integer;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteINVENTARIABLE].AsInteger;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetINVENTARIABLEValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteINVENTARIABLE].AsInteger := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetINVENTARIABLEIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteINVENTARIABLE].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetINVENTARIABLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteINVENTARIABLE].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetNOMBRE_PROVEEDORValue: String;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteNOMBRE_PROVEEDOR].AsString;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetNOMBRE_PROVEEDORValue(const aValue: String);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteNOMBRE_PROVEEDOR].AsString := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetNOMBRE_PROVEEDORIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteNOMBRE_PROVEEDOR].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetNOMBRE_PROVEEDORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteNOMBRE_PROVEEDOR].AsVariant := Null;
+end;
+
+function TArticulosParaClienteDataTableRules.GetELIMINADOValue: Integer;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteELIMINADO].AsInteger;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetELIMINADOValue(const aValue: Integer);
+begin
+ DataTable.Fields[idx_ArticulosParaClienteELIMINADO].AsInteger := aValue;
+end;
+
+function TArticulosParaClienteDataTableRules.GetELIMINADOIsNull: boolean;
+begin
+ result := DataTable.Fields[idx_ArticulosParaClienteELIMINADO].IsNull;
+end;
+
+procedure TArticulosParaClienteDataTableRules.SetELIMINADOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ DataTable.Fields[idx_ArticulosParaClienteELIMINADO].AsVariant := Null;
+end;
+
+
+initialization
+ RegisterDataTableRules(RID_Articulos, TArticulosDataTableRules);
+ RegisterDataTableRules(RID_ArticulosParaCliente, TArticulosParaClienteDataTableRules);
+
+end.
diff --git a/Source/Modulos/Articulos/Model/schArticulosServer_Intf.pas b/Source/Modulos/Articulos/Model/schArticulosServer_Intf.pas
new file mode 100644
index 00000000..2fb8f131
--- /dev/null
+++ b/Source/Modulos/Articulos/Model/schArticulosServer_Intf.pas
@@ -0,0 +1,1753 @@
+unit schArticulosServer_Intf;
+
+interface
+
+uses
+ Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, FmtBCD, uROXMLIntf, schArticulosClient_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_ArticulosDelta = '{356F117D-F27F-4DDF-8B1C-AE5B4FB17D50}';
+ RID_ArticulosParaClienteDelta = '{9A431115-0279-472E-B8AB-4E0F525D89C4}';
+
+type
+ { IArticulosDelta }
+ IArticulosDelta = interface(IArticulos)
+ ['{356F117D-F27F-4DDF-8B1C-AE5B4FB17D50}']
+ { Property getters and setters }
+ function GetOldIDValue : Integer;
+ function GetOldID_EMPRESAValue : Integer;
+ function GetOldREFERENCIAValue : String;
+ function GetOldDESCRIPCIONValue : String;
+ function GetOldFAMILIAValue : String;
+ function GetOldIMAGENValue : IROStream;
+ function GetOldCOMISIONABLEValue : Integer;
+ function GetOldFECHA_ALTAValue : DateTime;
+ function GetOldFECHA_MODIFICACIONValue : DateTime;
+ function GetOldUSUARIOValue : String;
+ function GetOldREFERENCIA_PROVValue : String;
+ function GetOldPRECIO_COSTEValue : Float;
+ function GetOldPRECIO_PORTEValue : Float;
+ function GetOldDESCUENTOValue : Float;
+ function GetOldPRECIO_NETOValue : Float;
+ function GetOldINVENTARIABLEValue : Integer;
+ function GetOldID_PROVEEDORValue : Integer;
+ function GetOldNOMBRE_PROVEEDORValue : String;
+ function GetOldELIMINADOValue : Integer;
+
+ { Properties }
+ property OldID : Integer read GetOldIDValue;
+ property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue;
+ property OldREFERENCIA : String read GetOldREFERENCIAValue;
+ property OldDESCRIPCION : String read GetOldDESCRIPCIONValue;
+ property OldFAMILIA : String read GetOldFAMILIAValue;
+ property OldIMAGEN : IROStream read GetOldIMAGENValue;
+ property OldCOMISIONABLE : Integer read GetOldCOMISIONABLEValue;
+ property OldFECHA_ALTA : DateTime read GetOldFECHA_ALTAValue;
+ property OldFECHA_MODIFICACION : DateTime read GetOldFECHA_MODIFICACIONValue;
+ property OldUSUARIO : String read GetOldUSUARIOValue;
+ property OldREFERENCIA_PROV : String read GetOldREFERENCIA_PROVValue;
+ property OldPRECIO_COSTE : Float read GetOldPRECIO_COSTEValue;
+ property OldPRECIO_PORTE : Float read GetOldPRECIO_PORTEValue;
+ property OldDESCUENTO : Float read GetOldDESCUENTOValue;
+ property OldPRECIO_NETO : Float read GetOldPRECIO_NETOValue;
+ property OldINVENTARIABLE : Integer read GetOldINVENTARIABLEValue;
+ property OldID_PROVEEDOR : Integer read GetOldID_PROVEEDORValue;
+ property OldNOMBRE_PROVEEDOR : String read GetOldNOMBRE_PROVEEDORValue;
+ property OldELIMINADO : Integer read GetOldELIMINADOValue;
+ end;
+
+ { TArticulosBusinessProcessorRules }
+ TArticulosBusinessProcessorRules = class(TDABusinessProcessorRules, IArticulos, IArticulosDelta)
+ private
+ f_IMAGEN: IROStream;
+ procedure IMAGEN_OnChange(Sender: Tobject);
+ 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_EMPRESAValue: Integer; virtual;
+ function GetID_EMPRESAIsNull: Boolean; virtual;
+ function GetOldID_EMPRESAValue: Integer; virtual;
+ function GetOldID_EMPRESAIsNull: Boolean; virtual;
+ procedure SetID_EMPRESAValue(const aValue: Integer); virtual;
+ procedure SetID_EMPRESAIsNull(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 GetDESCRIPCIONValue: String; virtual;
+ function GetDESCRIPCIONIsNull: Boolean; virtual;
+ function GetOldDESCRIPCIONValue: String; virtual;
+ function GetOldDESCRIPCIONIsNull: Boolean; virtual;
+ procedure SetDESCRIPCIONValue(const aValue: String); virtual;
+ procedure SetDESCRIPCIONIsNull(const aValue: Boolean); virtual;
+ function GetFAMILIAValue: String; virtual;
+ function GetFAMILIAIsNull: Boolean; virtual;
+ function GetOldFAMILIAValue: String; virtual;
+ function GetOldFAMILIAIsNull: Boolean; virtual;
+ procedure SetFAMILIAValue(const aValue: String); virtual;
+ procedure SetFAMILIAIsNull(const aValue: Boolean); virtual;
+ function GetIMAGENValue: IROStream; virtual;
+ function GetIMAGENIsNull: Boolean; virtual;
+ function GetOldIMAGENValue: IROStream; virtual;
+ function GetOldIMAGENIsNull: Boolean; virtual;
+ procedure SetIMAGENIsNull(const aValue: Boolean); virtual;
+ function GetCOMISIONABLEValue: Integer; virtual;
+ function GetCOMISIONABLEIsNull: Boolean; virtual;
+ function GetOldCOMISIONABLEValue: Integer; virtual;
+ function GetOldCOMISIONABLEIsNull: Boolean; virtual;
+ procedure SetCOMISIONABLEValue(const aValue: Integer); virtual;
+ procedure SetCOMISIONABLEIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_ALTAValue: DateTime; virtual;
+ function GetFECHA_ALTAIsNull: Boolean; virtual;
+ function GetOldFECHA_ALTAValue: DateTime; virtual;
+ function GetOldFECHA_ALTAIsNull: Boolean; virtual;
+ procedure SetFECHA_ALTAValue(const aValue: DateTime); virtual;
+ procedure SetFECHA_ALTAIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_MODIFICACIONValue: DateTime; virtual;
+ function GetFECHA_MODIFICACIONIsNull: Boolean; virtual;
+ function GetOldFECHA_MODIFICACIONValue: DateTime; virtual;
+ function GetOldFECHA_MODIFICACIONIsNull: Boolean; virtual;
+ procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); virtual;
+ procedure SetFECHA_MODIFICACIONIsNull(const aValue: Boolean); virtual;
+ function GetUSUARIOValue: String; virtual;
+ function GetUSUARIOIsNull: Boolean; virtual;
+ function GetOldUSUARIOValue: String; virtual;
+ function GetOldUSUARIOIsNull: Boolean; virtual;
+ procedure SetUSUARIOValue(const aValue: String); virtual;
+ procedure SetUSUARIOIsNull(const aValue: Boolean); virtual;
+ function GetREFERENCIA_PROVValue: String; virtual;
+ function GetREFERENCIA_PROVIsNull: Boolean; virtual;
+ function GetOldREFERENCIA_PROVValue: String; virtual;
+ function GetOldREFERENCIA_PROVIsNull: Boolean; virtual;
+ procedure SetREFERENCIA_PROVValue(const aValue: String); virtual;
+ procedure SetREFERENCIA_PROVIsNull(const aValue: Boolean); virtual;
+ function GetPRECIO_COSTEValue: Float; virtual;
+ function GetPRECIO_COSTEIsNull: Boolean; virtual;
+ function GetOldPRECIO_COSTEValue: Float; virtual;
+ function GetOldPRECIO_COSTEIsNull: Boolean; virtual;
+ procedure SetPRECIO_COSTEValue(const aValue: Float); virtual;
+ procedure SetPRECIO_COSTEIsNull(const aValue: Boolean); virtual;
+ function GetPRECIO_PORTEValue: Float; virtual;
+ function GetPRECIO_PORTEIsNull: Boolean; virtual;
+ function GetOldPRECIO_PORTEValue: Float; virtual;
+ function GetOldPRECIO_PORTEIsNull: Boolean; virtual;
+ procedure SetPRECIO_PORTEValue(const aValue: Float); virtual;
+ procedure SetPRECIO_PORTEIsNull(const aValue: Boolean); virtual;
+ function GetDESCUENTOValue: Float; virtual;
+ function GetDESCUENTOIsNull: Boolean; virtual;
+ function GetOldDESCUENTOValue: Float; virtual;
+ function GetOldDESCUENTOIsNull: Boolean; virtual;
+ procedure SetDESCUENTOValue(const aValue: Float); virtual;
+ procedure SetDESCUENTOIsNull(const aValue: Boolean); virtual;
+ function GetPRECIO_NETOValue: Float; virtual;
+ function GetPRECIO_NETOIsNull: Boolean; virtual;
+ function GetOldPRECIO_NETOValue: Float; virtual;
+ function GetOldPRECIO_NETOIsNull: Boolean; virtual;
+ procedure SetPRECIO_NETOValue(const aValue: Float); virtual;
+ procedure SetPRECIO_NETOIsNull(const aValue: Boolean); virtual;
+ function GetINVENTARIABLEValue: Integer; virtual;
+ function GetINVENTARIABLEIsNull: Boolean; virtual;
+ function GetOldINVENTARIABLEValue: Integer; virtual;
+ function GetOldINVENTARIABLEIsNull: Boolean; virtual;
+ procedure SetINVENTARIABLEValue(const aValue: Integer); virtual;
+ procedure SetINVENTARIABLEIsNull(const aValue: Boolean); virtual;
+ function GetID_PROVEEDORValue: Integer; virtual;
+ function GetID_PROVEEDORIsNull: Boolean; virtual;
+ function GetOldID_PROVEEDORValue: Integer; virtual;
+ function GetOldID_PROVEEDORIsNull: Boolean; virtual;
+ procedure SetID_PROVEEDORValue(const aValue: Integer); virtual;
+ procedure SetID_PROVEEDORIsNull(const aValue: Boolean); virtual;
+ function GetNOMBRE_PROVEEDORValue: String; virtual;
+ function GetNOMBRE_PROVEEDORIsNull: Boolean; virtual;
+ function GetOldNOMBRE_PROVEEDORValue: String; virtual;
+ function GetOldNOMBRE_PROVEEDORIsNull: Boolean; virtual;
+ procedure SetNOMBRE_PROVEEDORValue(const aValue: String); virtual;
+ procedure SetNOMBRE_PROVEEDORIsNull(const aValue: Boolean); virtual;
+ function GetELIMINADOValue: Integer; virtual;
+ function GetELIMINADOIsNull: Boolean; virtual;
+ function GetOldELIMINADOValue: Integer; virtual;
+ function GetOldELIMINADOIsNull: Boolean; virtual;
+ procedure SetELIMINADOValue(const aValue: Integer); virtual;
+ procedure SetELIMINADOIsNull(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_EMPRESA : Integer read GetID_EMPRESAValue write SetID_EMPRESAValue;
+ property ID_EMPRESAIsNull : Boolean read GetID_EMPRESAIsNull write SetID_EMPRESAIsNull;
+ property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue;
+ property OldID_EMPRESAIsNull : Boolean read GetOldID_EMPRESAIsNull;
+ 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 DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue;
+ property DESCRIPCIONIsNull : Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull;
+ property OldDESCRIPCION : String read GetOldDESCRIPCIONValue;
+ property OldDESCRIPCIONIsNull : Boolean read GetOldDESCRIPCIONIsNull;
+ property FAMILIA : String read GetFAMILIAValue write SetFAMILIAValue;
+ property FAMILIAIsNull : Boolean read GetFAMILIAIsNull write SetFAMILIAIsNull;
+ property OldFAMILIA : String read GetOldFAMILIAValue;
+ property OldFAMILIAIsNull : Boolean read GetOldFAMILIAIsNull;
+ property IMAGEN : IROStream read GetIMAGENValue;
+ property IMAGENIsNull : Boolean read GetIMAGENIsNull write SetIMAGENIsNull;
+ property OldIMAGEN : IROStream read GetOldIMAGENValue;
+ property OldIMAGENIsNull : Boolean read GetOldIMAGENIsNull;
+ property COMISIONABLE : Integer read GetCOMISIONABLEValue write SetCOMISIONABLEValue;
+ property COMISIONABLEIsNull : Boolean read GetCOMISIONABLEIsNull write SetCOMISIONABLEIsNull;
+ property OldCOMISIONABLE : Integer read GetOldCOMISIONABLEValue;
+ property OldCOMISIONABLEIsNull : Boolean read GetOldCOMISIONABLEIsNull;
+ property FECHA_ALTA : DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue;
+ property FECHA_ALTAIsNull : Boolean read GetFECHA_ALTAIsNull write SetFECHA_ALTAIsNull;
+ property OldFECHA_ALTA : DateTime read GetOldFECHA_ALTAValue;
+ property OldFECHA_ALTAIsNull : Boolean read GetOldFECHA_ALTAIsNull;
+ property FECHA_MODIFICACION : DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue;
+ property FECHA_MODIFICACIONIsNull : Boolean read GetFECHA_MODIFICACIONIsNull write SetFECHA_MODIFICACIONIsNull;
+ property OldFECHA_MODIFICACION : DateTime read GetOldFECHA_MODIFICACIONValue;
+ property OldFECHA_MODIFICACIONIsNull : Boolean read GetOldFECHA_MODIFICACIONIsNull;
+ property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue;
+ property USUARIOIsNull : Boolean read GetUSUARIOIsNull write SetUSUARIOIsNull;
+ property OldUSUARIO : String read GetOldUSUARIOValue;
+ property OldUSUARIOIsNull : Boolean read GetOldUSUARIOIsNull;
+ property REFERENCIA_PROV : String read GetREFERENCIA_PROVValue write SetREFERENCIA_PROVValue;
+ property REFERENCIA_PROVIsNull : Boolean read GetREFERENCIA_PROVIsNull write SetREFERENCIA_PROVIsNull;
+ property OldREFERENCIA_PROV : String read GetOldREFERENCIA_PROVValue;
+ property OldREFERENCIA_PROVIsNull : Boolean read GetOldREFERENCIA_PROVIsNull;
+ property PRECIO_COSTE : Float read GetPRECIO_COSTEValue write SetPRECIO_COSTEValue;
+ property PRECIO_COSTEIsNull : Boolean read GetPRECIO_COSTEIsNull write SetPRECIO_COSTEIsNull;
+ property OldPRECIO_COSTE : Float read GetOldPRECIO_COSTEValue;
+ property OldPRECIO_COSTEIsNull : Boolean read GetOldPRECIO_COSTEIsNull;
+ property PRECIO_PORTE : Float read GetPRECIO_PORTEValue write SetPRECIO_PORTEValue;
+ property PRECIO_PORTEIsNull : Boolean read GetPRECIO_PORTEIsNull write SetPRECIO_PORTEIsNull;
+ property OldPRECIO_PORTE : Float read GetOldPRECIO_PORTEValue;
+ property OldPRECIO_PORTEIsNull : Boolean read GetOldPRECIO_PORTEIsNull;
+ property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue;
+ property DESCUENTOIsNull : Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull;
+ property OldDESCUENTO : Float read GetOldDESCUENTOValue;
+ property OldDESCUENTOIsNull : Boolean read GetOldDESCUENTOIsNull;
+ property PRECIO_NETO : Float read GetPRECIO_NETOValue write SetPRECIO_NETOValue;
+ property PRECIO_NETOIsNull : Boolean read GetPRECIO_NETOIsNull write SetPRECIO_NETOIsNull;
+ property OldPRECIO_NETO : Float read GetOldPRECIO_NETOValue;
+ property OldPRECIO_NETOIsNull : Boolean read GetOldPRECIO_NETOIsNull;
+ property INVENTARIABLE : Integer read GetINVENTARIABLEValue write SetINVENTARIABLEValue;
+ property INVENTARIABLEIsNull : Boolean read GetINVENTARIABLEIsNull write SetINVENTARIABLEIsNull;
+ property OldINVENTARIABLE : Integer read GetOldINVENTARIABLEValue;
+ property OldINVENTARIABLEIsNull : Boolean read GetOldINVENTARIABLEIsNull;
+ property ID_PROVEEDOR : Integer read GetID_PROVEEDORValue write SetID_PROVEEDORValue;
+ property ID_PROVEEDORIsNull : Boolean read GetID_PROVEEDORIsNull write SetID_PROVEEDORIsNull;
+ property OldID_PROVEEDOR : Integer read GetOldID_PROVEEDORValue;
+ property OldID_PROVEEDORIsNull : Boolean read GetOldID_PROVEEDORIsNull;
+ property NOMBRE_PROVEEDOR : String read GetNOMBRE_PROVEEDORValue write SetNOMBRE_PROVEEDORValue;
+ property NOMBRE_PROVEEDORIsNull : Boolean read GetNOMBRE_PROVEEDORIsNull write SetNOMBRE_PROVEEDORIsNull;
+ property OldNOMBRE_PROVEEDOR : String read GetOldNOMBRE_PROVEEDORValue;
+ property OldNOMBRE_PROVEEDORIsNull : Boolean read GetOldNOMBRE_PROVEEDORIsNull;
+ property ELIMINADO : Integer read GetELIMINADOValue write SetELIMINADOValue;
+ property ELIMINADOIsNull : Boolean read GetELIMINADOIsNull write SetELIMINADOIsNull;
+ property OldELIMINADO : Integer read GetOldELIMINADOValue;
+ property OldELIMINADOIsNull : Boolean read GetOldELIMINADOIsNull;
+
+ public
+ constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
+ destructor Destroy; override;
+
+ end;
+
+ { IArticulosParaClienteDelta }
+ IArticulosParaClienteDelta = interface(IArticulosParaCliente)
+ ['{9A431115-0279-472E-B8AB-4E0F525D89C4}']
+ { Property getters and setters }
+ function GetOldIDValue : Integer;
+ function GetOldID_EMPRESAValue : Integer;
+ function GetOldREFERENCIAValue : String;
+ function GetOldDESCRIPCIONValue : String;
+ function GetOldFAMILIAValue : String;
+ function GetOldIMAGENValue : IROStream;
+ function GetOldCOMISIONABLEValue : Integer;
+ function GetOldFECHA_ALTAValue : DateTime;
+ function GetOldFECHA_MODIFICACIONValue : DateTime;
+ function GetOldUSUARIOValue : String;
+ function GetOldREFERENCIA_PROVValue : String;
+ function GetOldPRECIO_COSTEValue : Float;
+ function GetOldPRECIO_PORTEValue : Float;
+ function GetOldDESCUENTOValue : Float;
+ function GetOldPRECIO_NETOValue : Float;
+ function GetOldID_PROVEEDORValue : Integer;
+ function GetOldINVENTARIABLEValue : Integer;
+ function GetOldNOMBRE_PROVEEDORValue : String;
+ function GetOldELIMINADOValue : Integer;
+
+ { Properties }
+ property OldID : Integer read GetOldIDValue;
+ property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue;
+ property OldREFERENCIA : String read GetOldREFERENCIAValue;
+ property OldDESCRIPCION : String read GetOldDESCRIPCIONValue;
+ property OldFAMILIA : String read GetOldFAMILIAValue;
+ property OldIMAGEN : IROStream read GetOldIMAGENValue;
+ property OldCOMISIONABLE : Integer read GetOldCOMISIONABLEValue;
+ property OldFECHA_ALTA : DateTime read GetOldFECHA_ALTAValue;
+ property OldFECHA_MODIFICACION : DateTime read GetOldFECHA_MODIFICACIONValue;
+ property OldUSUARIO : String read GetOldUSUARIOValue;
+ property OldREFERENCIA_PROV : String read GetOldREFERENCIA_PROVValue;
+ property OldPRECIO_COSTE : Float read GetOldPRECIO_COSTEValue;
+ property OldPRECIO_PORTE : Float read GetOldPRECIO_PORTEValue;
+ property OldDESCUENTO : Float read GetOldDESCUENTOValue;
+ property OldPRECIO_NETO : Float read GetOldPRECIO_NETOValue;
+ property OldID_PROVEEDOR : Integer read GetOldID_PROVEEDORValue;
+ property OldINVENTARIABLE : Integer read GetOldINVENTARIABLEValue;
+ property OldNOMBRE_PROVEEDOR : String read GetOldNOMBRE_PROVEEDORValue;
+ property OldELIMINADO : Integer read GetOldELIMINADOValue;
+ end;
+
+ { TArticulosParaClienteBusinessProcessorRules }
+ TArticulosParaClienteBusinessProcessorRules = class(TDABusinessProcessorRules, IArticulosParaCliente, IArticulosParaClienteDelta)
+ private
+ f_IMAGEN: IROStream;
+ procedure IMAGEN_OnChange(Sender: Tobject);
+ 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_EMPRESAValue: Integer; virtual;
+ function GetID_EMPRESAIsNull: Boolean; virtual;
+ function GetOldID_EMPRESAValue: Integer; virtual;
+ function GetOldID_EMPRESAIsNull: Boolean; virtual;
+ procedure SetID_EMPRESAValue(const aValue: Integer); virtual;
+ procedure SetID_EMPRESAIsNull(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 GetDESCRIPCIONValue: String; virtual;
+ function GetDESCRIPCIONIsNull: Boolean; virtual;
+ function GetOldDESCRIPCIONValue: String; virtual;
+ function GetOldDESCRIPCIONIsNull: Boolean; virtual;
+ procedure SetDESCRIPCIONValue(const aValue: String); virtual;
+ procedure SetDESCRIPCIONIsNull(const aValue: Boolean); virtual;
+ function GetFAMILIAValue: String; virtual;
+ function GetFAMILIAIsNull: Boolean; virtual;
+ function GetOldFAMILIAValue: String; virtual;
+ function GetOldFAMILIAIsNull: Boolean; virtual;
+ procedure SetFAMILIAValue(const aValue: String); virtual;
+ procedure SetFAMILIAIsNull(const aValue: Boolean); virtual;
+ function GetIMAGENValue: IROStream; virtual;
+ function GetIMAGENIsNull: Boolean; virtual;
+ function GetOldIMAGENValue: IROStream; virtual;
+ function GetOldIMAGENIsNull: Boolean; virtual;
+ procedure SetIMAGENIsNull(const aValue: Boolean); virtual;
+ function GetCOMISIONABLEValue: Integer; virtual;
+ function GetCOMISIONABLEIsNull: Boolean; virtual;
+ function GetOldCOMISIONABLEValue: Integer; virtual;
+ function GetOldCOMISIONABLEIsNull: Boolean; virtual;
+ procedure SetCOMISIONABLEValue(const aValue: Integer); virtual;
+ procedure SetCOMISIONABLEIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_ALTAValue: DateTime; virtual;
+ function GetFECHA_ALTAIsNull: Boolean; virtual;
+ function GetOldFECHA_ALTAValue: DateTime; virtual;
+ function GetOldFECHA_ALTAIsNull: Boolean; virtual;
+ procedure SetFECHA_ALTAValue(const aValue: DateTime); virtual;
+ procedure SetFECHA_ALTAIsNull(const aValue: Boolean); virtual;
+ function GetFECHA_MODIFICACIONValue: DateTime; virtual;
+ function GetFECHA_MODIFICACIONIsNull: Boolean; virtual;
+ function GetOldFECHA_MODIFICACIONValue: DateTime; virtual;
+ function GetOldFECHA_MODIFICACIONIsNull: Boolean; virtual;
+ procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); virtual;
+ procedure SetFECHA_MODIFICACIONIsNull(const aValue: Boolean); virtual;
+ function GetUSUARIOValue: String; virtual;
+ function GetUSUARIOIsNull: Boolean; virtual;
+ function GetOldUSUARIOValue: String; virtual;
+ function GetOldUSUARIOIsNull: Boolean; virtual;
+ procedure SetUSUARIOValue(const aValue: String); virtual;
+ procedure SetUSUARIOIsNull(const aValue: Boolean); virtual;
+ function GetREFERENCIA_PROVValue: String; virtual;
+ function GetREFERENCIA_PROVIsNull: Boolean; virtual;
+ function GetOldREFERENCIA_PROVValue: String; virtual;
+ function GetOldREFERENCIA_PROVIsNull: Boolean; virtual;
+ procedure SetREFERENCIA_PROVValue(const aValue: String); virtual;
+ procedure SetREFERENCIA_PROVIsNull(const aValue: Boolean); virtual;
+ function GetPRECIO_COSTEValue: Float; virtual;
+ function GetPRECIO_COSTEIsNull: Boolean; virtual;
+ function GetOldPRECIO_COSTEValue: Float; virtual;
+ function GetOldPRECIO_COSTEIsNull: Boolean; virtual;
+ procedure SetPRECIO_COSTEValue(const aValue: Float); virtual;
+ procedure SetPRECIO_COSTEIsNull(const aValue: Boolean); virtual;
+ function GetPRECIO_PORTEValue: Float; virtual;
+ function GetPRECIO_PORTEIsNull: Boolean; virtual;
+ function GetOldPRECIO_PORTEValue: Float; virtual;
+ function GetOldPRECIO_PORTEIsNull: Boolean; virtual;
+ procedure SetPRECIO_PORTEValue(const aValue: Float); virtual;
+ procedure SetPRECIO_PORTEIsNull(const aValue: Boolean); virtual;
+ function GetDESCUENTOValue: Float; virtual;
+ function GetDESCUENTOIsNull: Boolean; virtual;
+ function GetOldDESCUENTOValue: Float; virtual;
+ function GetOldDESCUENTOIsNull: Boolean; virtual;
+ procedure SetDESCUENTOValue(const aValue: Float); virtual;
+ procedure SetDESCUENTOIsNull(const aValue: Boolean); virtual;
+ function GetPRECIO_NETOValue: Float; virtual;
+ function GetPRECIO_NETOIsNull: Boolean; virtual;
+ function GetOldPRECIO_NETOValue: Float; virtual;
+ function GetOldPRECIO_NETOIsNull: Boolean; virtual;
+ procedure SetPRECIO_NETOValue(const aValue: Float); virtual;
+ procedure SetPRECIO_NETOIsNull(const aValue: Boolean); virtual;
+ function GetID_PROVEEDORValue: Integer; virtual;
+ function GetID_PROVEEDORIsNull: Boolean; virtual;
+ function GetOldID_PROVEEDORValue: Integer; virtual;
+ function GetOldID_PROVEEDORIsNull: Boolean; virtual;
+ procedure SetID_PROVEEDORValue(const aValue: Integer); virtual;
+ procedure SetID_PROVEEDORIsNull(const aValue: Boolean); virtual;
+ function GetINVENTARIABLEValue: Integer; virtual;
+ function GetINVENTARIABLEIsNull: Boolean; virtual;
+ function GetOldINVENTARIABLEValue: Integer; virtual;
+ function GetOldINVENTARIABLEIsNull: Boolean; virtual;
+ procedure SetINVENTARIABLEValue(const aValue: Integer); virtual;
+ procedure SetINVENTARIABLEIsNull(const aValue: Boolean); virtual;
+ function GetNOMBRE_PROVEEDORValue: String; virtual;
+ function GetNOMBRE_PROVEEDORIsNull: Boolean; virtual;
+ function GetOldNOMBRE_PROVEEDORValue: String; virtual;
+ function GetOldNOMBRE_PROVEEDORIsNull: Boolean; virtual;
+ procedure SetNOMBRE_PROVEEDORValue(const aValue: String); virtual;
+ procedure SetNOMBRE_PROVEEDORIsNull(const aValue: Boolean); virtual;
+ function GetELIMINADOValue: Integer; virtual;
+ function GetELIMINADOIsNull: Boolean; virtual;
+ function GetOldELIMINADOValue: Integer; virtual;
+ function GetOldELIMINADOIsNull: Boolean; virtual;
+ procedure SetELIMINADOValue(const aValue: Integer); virtual;
+ procedure SetELIMINADOIsNull(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_EMPRESA : Integer read GetID_EMPRESAValue write SetID_EMPRESAValue;
+ property ID_EMPRESAIsNull : Boolean read GetID_EMPRESAIsNull write SetID_EMPRESAIsNull;
+ property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue;
+ property OldID_EMPRESAIsNull : Boolean read GetOldID_EMPRESAIsNull;
+ 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 DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue;
+ property DESCRIPCIONIsNull : Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull;
+ property OldDESCRIPCION : String read GetOldDESCRIPCIONValue;
+ property OldDESCRIPCIONIsNull : Boolean read GetOldDESCRIPCIONIsNull;
+ property FAMILIA : String read GetFAMILIAValue write SetFAMILIAValue;
+ property FAMILIAIsNull : Boolean read GetFAMILIAIsNull write SetFAMILIAIsNull;
+ property OldFAMILIA : String read GetOldFAMILIAValue;
+ property OldFAMILIAIsNull : Boolean read GetOldFAMILIAIsNull;
+ property IMAGEN : IROStream read GetIMAGENValue;
+ property IMAGENIsNull : Boolean read GetIMAGENIsNull write SetIMAGENIsNull;
+ property OldIMAGEN : IROStream read GetOldIMAGENValue;
+ property OldIMAGENIsNull : Boolean read GetOldIMAGENIsNull;
+ property COMISIONABLE : Integer read GetCOMISIONABLEValue write SetCOMISIONABLEValue;
+ property COMISIONABLEIsNull : Boolean read GetCOMISIONABLEIsNull write SetCOMISIONABLEIsNull;
+ property OldCOMISIONABLE : Integer read GetOldCOMISIONABLEValue;
+ property OldCOMISIONABLEIsNull : Boolean read GetOldCOMISIONABLEIsNull;
+ property FECHA_ALTA : DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue;
+ property FECHA_ALTAIsNull : Boolean read GetFECHA_ALTAIsNull write SetFECHA_ALTAIsNull;
+ property OldFECHA_ALTA : DateTime read GetOldFECHA_ALTAValue;
+ property OldFECHA_ALTAIsNull : Boolean read GetOldFECHA_ALTAIsNull;
+ property FECHA_MODIFICACION : DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue;
+ property FECHA_MODIFICACIONIsNull : Boolean read GetFECHA_MODIFICACIONIsNull write SetFECHA_MODIFICACIONIsNull;
+ property OldFECHA_MODIFICACION : DateTime read GetOldFECHA_MODIFICACIONValue;
+ property OldFECHA_MODIFICACIONIsNull : Boolean read GetOldFECHA_MODIFICACIONIsNull;
+ property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue;
+ property USUARIOIsNull : Boolean read GetUSUARIOIsNull write SetUSUARIOIsNull;
+ property OldUSUARIO : String read GetOldUSUARIOValue;
+ property OldUSUARIOIsNull : Boolean read GetOldUSUARIOIsNull;
+ property REFERENCIA_PROV : String read GetREFERENCIA_PROVValue write SetREFERENCIA_PROVValue;
+ property REFERENCIA_PROVIsNull : Boolean read GetREFERENCIA_PROVIsNull write SetREFERENCIA_PROVIsNull;
+ property OldREFERENCIA_PROV : String read GetOldREFERENCIA_PROVValue;
+ property OldREFERENCIA_PROVIsNull : Boolean read GetOldREFERENCIA_PROVIsNull;
+ property PRECIO_COSTE : Float read GetPRECIO_COSTEValue write SetPRECIO_COSTEValue;
+ property PRECIO_COSTEIsNull : Boolean read GetPRECIO_COSTEIsNull write SetPRECIO_COSTEIsNull;
+ property OldPRECIO_COSTE : Float read GetOldPRECIO_COSTEValue;
+ property OldPRECIO_COSTEIsNull : Boolean read GetOldPRECIO_COSTEIsNull;
+ property PRECIO_PORTE : Float read GetPRECIO_PORTEValue write SetPRECIO_PORTEValue;
+ property PRECIO_PORTEIsNull : Boolean read GetPRECIO_PORTEIsNull write SetPRECIO_PORTEIsNull;
+ property OldPRECIO_PORTE : Float read GetOldPRECIO_PORTEValue;
+ property OldPRECIO_PORTEIsNull : Boolean read GetOldPRECIO_PORTEIsNull;
+ property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue;
+ property DESCUENTOIsNull : Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull;
+ property OldDESCUENTO : Float read GetOldDESCUENTOValue;
+ property OldDESCUENTOIsNull : Boolean read GetOldDESCUENTOIsNull;
+ property PRECIO_NETO : Float read GetPRECIO_NETOValue write SetPRECIO_NETOValue;
+ property PRECIO_NETOIsNull : Boolean read GetPRECIO_NETOIsNull write SetPRECIO_NETOIsNull;
+ property OldPRECIO_NETO : Float read GetOldPRECIO_NETOValue;
+ property OldPRECIO_NETOIsNull : Boolean read GetOldPRECIO_NETOIsNull;
+ property ID_PROVEEDOR : Integer read GetID_PROVEEDORValue write SetID_PROVEEDORValue;
+ property ID_PROVEEDORIsNull : Boolean read GetID_PROVEEDORIsNull write SetID_PROVEEDORIsNull;
+ property OldID_PROVEEDOR : Integer read GetOldID_PROVEEDORValue;
+ property OldID_PROVEEDORIsNull : Boolean read GetOldID_PROVEEDORIsNull;
+ property INVENTARIABLE : Integer read GetINVENTARIABLEValue write SetINVENTARIABLEValue;
+ property INVENTARIABLEIsNull : Boolean read GetINVENTARIABLEIsNull write SetINVENTARIABLEIsNull;
+ property OldINVENTARIABLE : Integer read GetOldINVENTARIABLEValue;
+ property OldINVENTARIABLEIsNull : Boolean read GetOldINVENTARIABLEIsNull;
+ property NOMBRE_PROVEEDOR : String read GetNOMBRE_PROVEEDORValue write SetNOMBRE_PROVEEDORValue;
+ property NOMBRE_PROVEEDORIsNull : Boolean read GetNOMBRE_PROVEEDORIsNull write SetNOMBRE_PROVEEDORIsNull;
+ property OldNOMBRE_PROVEEDOR : String read GetOldNOMBRE_PROVEEDORValue;
+ property OldNOMBRE_PROVEEDORIsNull : Boolean read GetOldNOMBRE_PROVEEDORIsNull;
+ property ELIMINADO : Integer read GetELIMINADOValue write SetELIMINADOValue;
+ property ELIMINADOIsNull : Boolean read GetELIMINADOIsNull write SetELIMINADOIsNull;
+ property OldELIMINADO : Integer read GetOldELIMINADOValue;
+ property OldELIMINADOIsNull : Boolean read GetOldELIMINADOIsNull;
+
+ public
+ constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
+ destructor Destroy; override;
+
+ end;
+
+implementation
+
+uses
+ Variants, uROBinaryHelpers, uDAInterfaces;
+
+{ TArticulosBusinessProcessorRules }
+constructor TArticulosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
+var
+ ROStream: TROStream;
+begin
+ inherited;
+
+ ROStream := TROStream.Create;
+ ROStream.OnChange := IMAGEN_OnChange;
+ f_IMAGEN := ROStream;
+end;
+
+destructor TArticulosBusinessProcessorRules.Destroy;
+begin
+ inherited;
+end;
+
+procedure TArticulosBusinessProcessorRules.IMAGEN_OnChange(Sender: TObject);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosIMAGEN] := VariantBinaryFromBinary((TROStream(Sender) as IROStream).Stream);
+end;
+
+function TArticulosBusinessProcessorRules.GetIDValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosID];
+end;
+
+function TArticulosBusinessProcessorRules.GetIDIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosID]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldIDValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosID];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldIDIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosID]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetIDValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosID] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetIDIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosID] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetID_EMPRESAValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosID_EMPRESA];
+end;
+
+function TArticulosBusinessProcessorRules.GetID_EMPRESAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosID_EMPRESA]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldID_EMPRESAValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosID_EMPRESA];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldID_EMPRESAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosID_EMPRESA]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetID_EMPRESAValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosID_EMPRESA] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetID_EMPRESAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosID_EMPRESA] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetREFERENCIAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosREFERENCIA];
+end;
+
+function TArticulosBusinessProcessorRules.GetREFERENCIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosREFERENCIA]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldREFERENCIAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosREFERENCIA];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldREFERENCIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosREFERENCIA]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetREFERENCIAValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosREFERENCIA] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetREFERENCIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosREFERENCIA] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetDESCRIPCIONValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosDESCRIPCION];
+end;
+
+function TArticulosBusinessProcessorRules.GetDESCRIPCIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosDESCRIPCION]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldDESCRIPCIONValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosDESCRIPCION];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldDESCRIPCIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosDESCRIPCION]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosDESCRIPCION] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetDESCRIPCIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosDESCRIPCION] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetFAMILIAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosFAMILIA];
+end;
+
+function TArticulosBusinessProcessorRules.GetFAMILIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosFAMILIA]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldFAMILIAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosFAMILIA];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldFAMILIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosFAMILIA]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetFAMILIAValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosFAMILIA] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetFAMILIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosFAMILIA] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetIMAGENValue: IROStream;
+begin
+ result := f_IMAGEN;
+ result.Position := 0;
+ if not Result.InUpdateMode then begin
+ WriteVariantBinaryToBinary(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosIMAGEN], result.Stream);
+ result.Position := 0;
+ end;
+end;
+
+function TArticulosBusinessProcessorRules.GetIMAGENIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosIMAGEN]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldIMAGENValue: IROStream;
+begin
+ result := NewROStream();
+ WriteVariantBinaryToBinary(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosIMAGEN], result.Stream);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldIMAGENIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosIMAGEN]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetIMAGENIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosIMAGEN] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetCOMISIONABLEValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosCOMISIONABLE];
+end;
+
+function TArticulosBusinessProcessorRules.GetCOMISIONABLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosCOMISIONABLE]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldCOMISIONABLEValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosCOMISIONABLE];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldCOMISIONABLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosCOMISIONABLE]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetCOMISIONABLEValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosCOMISIONABLE] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetCOMISIONABLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosCOMISIONABLE] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetFECHA_ALTAValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosFECHA_ALTA];
+end;
+
+function TArticulosBusinessProcessorRules.GetFECHA_ALTAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosFECHA_ALTA]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldFECHA_ALTAValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosFECHA_ALTA];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldFECHA_ALTAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosFECHA_ALTA]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetFECHA_ALTAValue(const aValue: DateTime);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosFECHA_ALTA] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetFECHA_ALTAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosFECHA_ALTA] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetFECHA_MODIFICACIONValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosFECHA_MODIFICACION];
+end;
+
+function TArticulosBusinessProcessorRules.GetFECHA_MODIFICACIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosFECHA_MODIFICACION]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldFECHA_MODIFICACIONValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosFECHA_MODIFICACION];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldFECHA_MODIFICACIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosFECHA_MODIFICACION]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetFECHA_MODIFICACIONValue(const aValue: DateTime);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosFECHA_MODIFICACION] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetFECHA_MODIFICACIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosFECHA_MODIFICACION] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetUSUARIOValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosUSUARIO];
+end;
+
+function TArticulosBusinessProcessorRules.GetUSUARIOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosUSUARIO]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldUSUARIOValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosUSUARIO];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldUSUARIOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosUSUARIO]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetUSUARIOValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosUSUARIO] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetUSUARIOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosUSUARIO] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetREFERENCIA_PROVValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosREFERENCIA_PROV];
+end;
+
+function TArticulosBusinessProcessorRules.GetREFERENCIA_PROVIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosREFERENCIA_PROV]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldREFERENCIA_PROVValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosREFERENCIA_PROV];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldREFERENCIA_PROVIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosREFERENCIA_PROV]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetREFERENCIA_PROVValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosREFERENCIA_PROV] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetREFERENCIA_PROVIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosREFERENCIA_PROV] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetPRECIO_COSTEValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosPRECIO_COSTE];
+end;
+
+function TArticulosBusinessProcessorRules.GetPRECIO_COSTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosPRECIO_COSTE]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldPRECIO_COSTEValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosPRECIO_COSTE];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldPRECIO_COSTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosPRECIO_COSTE]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetPRECIO_COSTEValue(const aValue: Float);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosPRECIO_COSTE] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetPRECIO_COSTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosPRECIO_COSTE] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetPRECIO_PORTEValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosPRECIO_PORTE];
+end;
+
+function TArticulosBusinessProcessorRules.GetPRECIO_PORTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosPRECIO_PORTE]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldPRECIO_PORTEValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosPRECIO_PORTE];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldPRECIO_PORTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosPRECIO_PORTE]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetPRECIO_PORTEValue(const aValue: Float);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosPRECIO_PORTE] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetPRECIO_PORTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosPRECIO_PORTE] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetDESCUENTOValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosDESCUENTO];
+end;
+
+function TArticulosBusinessProcessorRules.GetDESCUENTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosDESCUENTO]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldDESCUENTOValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosDESCUENTO];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldDESCUENTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosDESCUENTO]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosDESCUENTO] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetDESCUENTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosDESCUENTO] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetPRECIO_NETOValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosPRECIO_NETO];
+end;
+
+function TArticulosBusinessProcessorRules.GetPRECIO_NETOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosPRECIO_NETO]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldPRECIO_NETOValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosPRECIO_NETO];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldPRECIO_NETOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosPRECIO_NETO]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetPRECIO_NETOValue(const aValue: Float);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosPRECIO_NETO] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetPRECIO_NETOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosPRECIO_NETO] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetINVENTARIABLEValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosINVENTARIABLE];
+end;
+
+function TArticulosBusinessProcessorRules.GetINVENTARIABLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosINVENTARIABLE]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldINVENTARIABLEValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosINVENTARIABLE];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldINVENTARIABLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosINVENTARIABLE]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetINVENTARIABLEValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosINVENTARIABLE] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetINVENTARIABLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosINVENTARIABLE] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetID_PROVEEDORValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosID_PROVEEDOR];
+end;
+
+function TArticulosBusinessProcessorRules.GetID_PROVEEDORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosID_PROVEEDOR]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldID_PROVEEDORValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosID_PROVEEDOR];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldID_PROVEEDORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosID_PROVEEDOR]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetID_PROVEEDORValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosID_PROVEEDOR] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetID_PROVEEDORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosID_PROVEEDOR] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetNOMBRE_PROVEEDORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosNOMBRE_PROVEEDOR];
+end;
+
+function TArticulosBusinessProcessorRules.GetNOMBRE_PROVEEDORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosNOMBRE_PROVEEDOR]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldNOMBRE_PROVEEDORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosNOMBRE_PROVEEDOR];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldNOMBRE_PROVEEDORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosNOMBRE_PROVEEDOR]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetNOMBRE_PROVEEDORValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosNOMBRE_PROVEEDOR] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetNOMBRE_PROVEEDORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosNOMBRE_PROVEEDOR] := Null;
+end;
+
+function TArticulosBusinessProcessorRules.GetELIMINADOValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosELIMINADO];
+end;
+
+function TArticulosBusinessProcessorRules.GetELIMINADOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosELIMINADO]);
+end;
+
+function TArticulosBusinessProcessorRules.GetOldELIMINADOValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosELIMINADO];
+end;
+
+function TArticulosBusinessProcessorRules.GetOldELIMINADOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosELIMINADO]);
+end;
+
+procedure TArticulosBusinessProcessorRules.SetELIMINADOValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosELIMINADO] := aValue;
+end;
+
+procedure TArticulosBusinessProcessorRules.SetELIMINADOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosELIMINADO] := Null;
+end;
+
+
+{ TArticulosParaClienteBusinessProcessorRules }
+constructor TArticulosParaClienteBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
+var
+ ROStream: TROStream;
+begin
+ inherited;
+
+ ROStream := TROStream.Create;
+ ROStream.OnChange := IMAGEN_OnChange;
+ f_IMAGEN := ROStream;
+end;
+
+destructor TArticulosParaClienteBusinessProcessorRules.Destroy;
+begin
+ inherited;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.IMAGEN_OnChange(Sender: TObject);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteIMAGEN] := VariantBinaryFromBinary((TROStream(Sender) as IROStream).Stream);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetIDValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteID];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetIDIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteID]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldIDValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteID];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldIDIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteID]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetIDValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteID] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetIDIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteID] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetID_EMPRESAValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteID_EMPRESA];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetID_EMPRESAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteID_EMPRESA]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldID_EMPRESAValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteID_EMPRESA];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldID_EMPRESAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteID_EMPRESA]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetID_EMPRESAValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteID_EMPRESA] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetID_EMPRESAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteID_EMPRESA] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetREFERENCIAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteREFERENCIA];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetREFERENCIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteREFERENCIA]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldREFERENCIAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteREFERENCIA];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldREFERENCIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteREFERENCIA]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetREFERENCIAValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteREFERENCIA] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetREFERENCIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteREFERENCIA] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetDESCRIPCIONValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteDESCRIPCION];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetDESCRIPCIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteDESCRIPCION]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldDESCRIPCIONValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteDESCRIPCION];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldDESCRIPCIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteDESCRIPCION]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteDESCRIPCION] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetDESCRIPCIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteDESCRIPCION] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetFAMILIAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteFAMILIA];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetFAMILIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteFAMILIA]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldFAMILIAValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteFAMILIA];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldFAMILIAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteFAMILIA]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetFAMILIAValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteFAMILIA] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetFAMILIAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteFAMILIA] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetIMAGENValue: IROStream;
+begin
+ result := f_IMAGEN;
+ result.Position := 0;
+ if not Result.InUpdateMode then begin
+ WriteVariantBinaryToBinary(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteIMAGEN], result.Stream);
+ result.Position := 0;
+ end;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetIMAGENIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteIMAGEN]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldIMAGENValue: IROStream;
+begin
+ result := NewROStream();
+ WriteVariantBinaryToBinary(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteIMAGEN], result.Stream);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldIMAGENIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteIMAGEN]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetIMAGENIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteIMAGEN] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetCOMISIONABLEValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteCOMISIONABLE];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetCOMISIONABLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteCOMISIONABLE]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldCOMISIONABLEValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteCOMISIONABLE];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldCOMISIONABLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteCOMISIONABLE]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetCOMISIONABLEValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteCOMISIONABLE] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetCOMISIONABLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteCOMISIONABLE] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetFECHA_ALTAValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteFECHA_ALTA];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetFECHA_ALTAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteFECHA_ALTA]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldFECHA_ALTAValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteFECHA_ALTA];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldFECHA_ALTAIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteFECHA_ALTA]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetFECHA_ALTAValue(const aValue: DateTime);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteFECHA_ALTA] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetFECHA_ALTAIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteFECHA_ALTA] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetFECHA_MODIFICACIONValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteFECHA_MODIFICACION];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetFECHA_MODIFICACIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteFECHA_MODIFICACION]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldFECHA_MODIFICACIONValue: DateTime;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteFECHA_MODIFICACION];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldFECHA_MODIFICACIONIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteFECHA_MODIFICACION]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetFECHA_MODIFICACIONValue(const aValue: DateTime);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteFECHA_MODIFICACION] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetFECHA_MODIFICACIONIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteFECHA_MODIFICACION] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetUSUARIOValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteUSUARIO];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetUSUARIOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteUSUARIO]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldUSUARIOValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteUSUARIO];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldUSUARIOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteUSUARIO]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetUSUARIOValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteUSUARIO] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetUSUARIOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteUSUARIO] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetREFERENCIA_PROVValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteREFERENCIA_PROV];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetREFERENCIA_PROVIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteREFERENCIA_PROV]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldREFERENCIA_PROVValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteREFERENCIA_PROV];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldREFERENCIA_PROVIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteREFERENCIA_PROV]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetREFERENCIA_PROVValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteREFERENCIA_PROV] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetREFERENCIA_PROVIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteREFERENCIA_PROV] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetPRECIO_COSTEValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClientePRECIO_COSTE];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetPRECIO_COSTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClientePRECIO_COSTE]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldPRECIO_COSTEValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClientePRECIO_COSTE];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldPRECIO_COSTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClientePRECIO_COSTE]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetPRECIO_COSTEValue(const aValue: Float);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClientePRECIO_COSTE] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetPRECIO_COSTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClientePRECIO_COSTE] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetPRECIO_PORTEValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClientePRECIO_PORTE];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetPRECIO_PORTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClientePRECIO_PORTE]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldPRECIO_PORTEValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClientePRECIO_PORTE];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldPRECIO_PORTEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClientePRECIO_PORTE]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetPRECIO_PORTEValue(const aValue: Float);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClientePRECIO_PORTE] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetPRECIO_PORTEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClientePRECIO_PORTE] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetDESCUENTOValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteDESCUENTO];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetDESCUENTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteDESCUENTO]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldDESCUENTOValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteDESCUENTO];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldDESCUENTOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteDESCUENTO]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteDESCUENTO] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetDESCUENTOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteDESCUENTO] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetPRECIO_NETOValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClientePRECIO_NETO];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetPRECIO_NETOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClientePRECIO_NETO]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldPRECIO_NETOValue: Float;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClientePRECIO_NETO];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldPRECIO_NETOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClientePRECIO_NETO]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetPRECIO_NETOValue(const aValue: Float);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClientePRECIO_NETO] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetPRECIO_NETOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClientePRECIO_NETO] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetID_PROVEEDORValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteID_PROVEEDOR];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetID_PROVEEDORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteID_PROVEEDOR]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldID_PROVEEDORValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteID_PROVEEDOR];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldID_PROVEEDORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteID_PROVEEDOR]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetID_PROVEEDORValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteID_PROVEEDOR] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetID_PROVEEDORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteID_PROVEEDOR] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetINVENTARIABLEValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteINVENTARIABLE];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetINVENTARIABLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteINVENTARIABLE]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldINVENTARIABLEValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteINVENTARIABLE];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldINVENTARIABLEIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteINVENTARIABLE]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetINVENTARIABLEValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteINVENTARIABLE] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetINVENTARIABLEIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteINVENTARIABLE] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetNOMBRE_PROVEEDORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteNOMBRE_PROVEEDOR];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetNOMBRE_PROVEEDORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteNOMBRE_PROVEEDOR]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldNOMBRE_PROVEEDORValue: String;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteNOMBRE_PROVEEDOR];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldNOMBRE_PROVEEDORIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteNOMBRE_PROVEEDOR]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetNOMBRE_PROVEEDORValue(const aValue: String);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteNOMBRE_PROVEEDOR] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetNOMBRE_PROVEEDORIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteNOMBRE_PROVEEDOR] := Null;
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetELIMINADOValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteELIMINADO];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetELIMINADOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteELIMINADO]);
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldELIMINADOValue: Integer;
+begin
+ result := BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteELIMINADO];
+end;
+
+function TArticulosParaClienteBusinessProcessorRules.GetOldELIMINADOIsNull: Boolean;
+begin
+ result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ArticulosParaClienteELIMINADO]);
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetELIMINADOValue(const aValue: Integer);
+begin
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteELIMINADO] := aValue;
+end;
+
+procedure TArticulosParaClienteBusinessProcessorRules.SetELIMINADOIsNull(const aValue: Boolean);
+begin
+ if aValue then
+ BusinessProcessor.CurrentChange.NewValueByName[fld_ArticulosParaClienteELIMINADO] := Null;
+end;
+
+
+initialization
+ RegisterBusinessProcessorRules(RID_ArticulosDelta, TArticulosBusinessProcessorRules);
+ RegisterBusinessProcessorRules(RID_ArticulosParaClienteDelta, TArticulosParaClienteBusinessProcessorRules);
+
+end.
diff --git a/Source/Modulos/Articulos/Model/uBizArticulos.pas b/Source/Modulos/Articulos/Model/uBizArticulos.pas
new file mode 100644
index 00000000..4dbc517c
--- /dev/null
+++ b/Source/Modulos/Articulos/Model/uBizArticulos.pas
@@ -0,0 +1,124 @@
+unit uBizArticulos;
+
+interface
+
+uses
+ uDAInterfaces, uDADataTable, schArticulosClient_Intf, uDBSelectionListUtils;
+
+const
+ BIZ_CLIENT_ARTICULO = 'Client.Articulo';
+
+type
+ IBizArticulo = interface(IArticulos)
+ ['{06AB61B1-C225-4791-9F5E-00A60DBA7FFD}']
+ function EsNuevo : Boolean;
+ function HayImagen: Boolean;
+ procedure SalvarImagen(const AFileName: String);
+ procedure CargarImagen(const AFileName: String);
+ procedure QuitarImagen;
+ end;
+
+ TBizArticulo = class(TArticulosDataTableRules, IBizArticulo, ISeleccionable)
+ protected
+ FSeleccionableInterface : ISeleccionable;
+ procedure OnNewRecord(Sender: TDADataTable); override;
+ public
+ procedure IniciarValoresArticuloNuevo; virtual;
+ function HayImagen: Boolean;
+ procedure SalvarImagen(const AFileName: String);
+ procedure CargarImagen(const AFileName: String);
+ procedure QuitarImagen;
+ function EsNuevo : Boolean;
+ constructor Create(aDataTable: TDADataTable); override;
+ destructor Destroy; override;
+ property SeleccionableInterface : ISeleccionable read FSeleccionableInterface
+ write FSeleccionableInterface implements ISeleccionable;
+ end;
+
+implementation
+
+uses
+ uDataTableUtils, SysUtils, uROClasses, Classes;
+
+{ TBizArticulo }
+
+procedure TBizArticulo.CargarImagen(const AFileName: String);
+begin
+{ inherited;
+ DataTable.Edit;
+ DataTable.FieldByName(fld_ArticulosIMAGEN).LoadFromFile(AFileName);
+ DataTable.Post;}
+end;
+
+constructor TBizArticulo.Create(aDataTable: TDADataTable);
+begin
+ inherited;
+ FSeleccionableInterface := TSeleccionable.Create(aDataTable);
+end;
+
+destructor TBizArticulo.Destroy;
+begin
+ FSeleccionableInterface := NIL;
+ inherited;
+end;
+
+function TBizArticulo.EsNuevo: Boolean;
+begin
+ Result := (ID < 0);
+end;
+
+function TBizArticulo.HayImagen: Boolean;
+{var
+ AStream : TMemoryStream;
+ AROStream : IROStream;}
+begin
+{ AStream := TMemoryStream.Create;
+ AROStream := TROStream.Create(AStream, False);
+ try
+ DataTable.FieldByName(fld_ArticulosIMAGEN).SaveToStream(AROStream);
+ Result := (AROStream.Size > 0);
+ finally
+ AROStream := NIL;
+ FreeAndNIL(AStream);
+ end;}
+end;
+
+procedure TBizArticulo.IniciarValoresArticuloNuevo;
+begin
+// ID_EMPRESA := dmUsuarios.IDEmpresaActual;
+ PRECIO_PORTE := 0;
+ PRECIO_COSTE := 0;
+ DESCUENTO := 0;
+ PRECIO_NETO := 0;
+ COMISIONABLE := 1;
+ ELIMINADO := 0;
+// USUARIO := dmUsuarios.LoginInfo.Usuario;
+end;
+
+procedure TBizArticulo.OnNewRecord(Sender: TDADataTable);
+begin
+ inherited;
+ ID := GetRecNo; // -1, -2, -3...
+ INVENTARIABLE := 1;
+ IniciarValoresArticuloNuevo;
+end;
+
+procedure TBizArticulo.QuitarImagen;
+begin
+{ DataTable.Edit;
+ DataTable.Fields[idx_ArticulosIMAGEN].Clear;
+ DataTable.Post;}
+end;
+
+procedure TBizArticulo.SalvarImagen(const AFileName: String);
+begin
+// DataTable.FieldByName(fld_ArticulosIMAGEN).SaveToFile(AFileName);
+end;
+
+initialization
+ RegisterDataTableRules(BIZ_CLIENT_ARTICULO, TBizArticulo);
+
+finalization
+
+end.
+
diff --git a/Source/Modulos/Articulos/Plugin/Articulos_plugin.bdsproj b/Source/Modulos/Articulos/Plugin/Articulos_plugin.bdsproj
new file mode 100644
index 00000000..44d9a390
--- /dev/null
+++ b/Source/Modulos/Articulos/Plugin/Articulos_plugin.bdsproj
@@ -0,0 +1,492 @@
+
+
+
+
+
+
+
+
+
+
+
+ Articulos_plugin.dpk
+
+
+ 7.0
+
+
+ 8
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+ True
+ True
+ WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+
+ False
+
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ False
+ False
+ False
+ True
+ True
+ True
+ True
+ True
+ True
+
+
+
+ 0
+ 0
+ False
+ 1
+ False
+ False
+ False
+ 16384
+ 1048576
+ 4194304
+
+
+
+
+ .\
+ ..\..\..\..\Output\Debug\Cliente
+ ..\..\Lib
+ ..\..\..\Lib;..\..\Lib
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+ True
+ False
+
+
+
+ $00000000
+
+
+
+ True
+ False
+ 1
+ 0
+ 0
+ 0
+ False
+ False
+ False
+ False
+ False
+ 3082
+ 1252
+
+
+
+
+ 1.0.0.0
+
+
+
+
+
+ 1.0.0.0
+
+
+
+
+
diff --git a/Source/Modulos/Articulos/Plugin/Articulos_plugin.dpk b/Source/Modulos/Articulos/Plugin/Articulos_plugin.dpk
new file mode 100644
index 00000000..325d708c
--- /dev/null
+++ b/Source/Modulos/Articulos/Plugin/Articulos_plugin.dpk
@@ -0,0 +1,35 @@
+package Articulos_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 ON}
+
+requires
+ PluginSDK_D10R,
+ Articulos_controller,
+ Articulos_view;
+
+contains
+ uPluginArticulos in 'uPluginArticulos.pas';
+
+end.
diff --git a/Source/Modulos/Articulos/Plugin/Articulos_plugin.rc b/Source/Modulos/Articulos/Plugin/Articulos_plugin.rc
new file mode 100644
index 00000000..e69de29b
diff --git a/Source/Modulos/Articulos/Plugin/Articulos_plugin.res b/Source/Modulos/Articulos/Plugin/Articulos_plugin.res
new file mode 100644
index 00000000..86c94e6a
Binary files /dev/null and b/Source/Modulos/Articulos/Plugin/Articulos_plugin.res differ
diff --git a/Source/Modulos/Articulos/Plugin/uPluginArticulos.dfm b/Source/Modulos/Articulos/Plugin/uPluginArticulos.dfm
new file mode 100644
index 00000000..0ac32d65
--- /dev/null
+++ b/Source/Modulos/Articulos/Plugin/uPluginArticulos.dfm
@@ -0,0 +1,112 @@
+object PluginArticulos: TPluginArticulos
+ OldCreateOrder = True
+ DefaultAction = actArticulos
+ Description = 'Ventas'
+ ModuleMenu = MainMenu
+ ModuleName = 'Articulos'
+ 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
+ F80000000970485973000017120000171201679FD2520000015E4944415478DA
+ 63FCFFFF3F032D0123CC822BA552CE406A0F1EB52E84E475BA9FEDC567C17FD5
+ 961A0676F62C0C9D3F7F4E63981DDBC290BA18BF7CCEAA678C782D00BA00AC18
+ 0EBE7F6760F8F19D61FA0E4306966DA9200308C993600148F38777607AFA4967
+ 4C0BB0CB1369014CF37B20FEF19361FACD60540B70CB1361C1875E84E60F1F20
+ 2E7C958AB000BF3C11163CA8466806BB1068C0AF728405F8E5F15B004A45D397
+ CB634D83200340A9089F3C210B9C0F3CC49DCE1DE4195C08C9539C0FB0B99010
+ 20351F50D1023CE99C88620504C041466A3E8059803338D18394D47CC088E118
+ 64F0F91303C397CF0CD30F58C1D5939A0F705B00359CE133D082B3EED82D2094
+ 0F705A806438D8073743B05A40301FC0D2398A056886337CFDC230FD4902A605
+ A400B8056F3A300C67F8F29561FA876C2A5970B38481E1D72F14C319BE7D4189
+ 33B22DC0175FC87146AE0578E30B39CEC8B2801440730B007C5C13EF8DA2E719
+ 0000000049454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
+ end>
+ Left = 232
+ Top = 16
+ Bitmap = {}
+ end
+ object ModuleActionList: TActionList
+ Images = LargeImages
+ Left = 40
+ Top = 72
+ object actArticulos: TAction
+ Category = 'Ventas'
+ Caption = 'Cat'#225'logo de art'#237'culos'
+ ImageIndex = 0
+ OnExecute = actArticulosExecute
+ end
+ end
+ object MainMenu: TMainMenu
+ Images = LargeImages
+ Left = 40
+ Top = 16
+ object N1: TMenuItem
+ Caption = 'Log'#237'stica'
+ object Articulos1: TMenuItem
+ Tag = 100
+ Action = actArticulos
+ end
+ end
+ end
+ object SmallImages: TPngImageList
+ PngImages = <
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001004944415478DA
+ 63BC5C22F99F8148A0D3FD8C115D8C1164806A4B0D84F7FD3B03C3FD3B0CB3DB
+ 3732A42EC614CB5985CF00A8C2E9177D1858B6A5420C4013C36D4075315821C3
+ F5AB0CD37F95430C98852986DB80287FB02D300036A012530CA701071E121788
+ F8C3002DC072573F67FCFF9F7004E10C449001403967A09A3D78F4BBE00C44A8
+ 0160C3D9D9B33074FEFC398D61766C0BEE408419004C3C60C5700072E98FEF0C
+ D3771882D5E10C44AC0680347F7807A6A79F748618802FA0AE944A210C80697E
+ 0FC43F7E324CBF194C82011F7A119A3F7C80B8E0552A09063CA8466806BBE03B
+ 3CB0091A008A85E9CBE5B1CA13638033308071A6030779061700E6FAF742387F
+ 63F70000000049454E44AE426082}
+ Name = 'PngImage0'
+ Background = clWindow
+ end>
+ PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled]
+ Left = 308
+ Top = 16
+ Bitmap = {}
+ end
+ object ExtraImages: TPngImageList
+ Height = 28
+ Width = 28
+ PngImages = <
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF
+ 940000000970485973000017120000171201679FD252000001374944415478DA
+ 63FCFFFF3F033D01E3C8B2F04AA9943390DA43408F0B316A74BA9FED25C6C2FF
+ AA2D350CECEC59584DF9F9731AC3ECD81686D4C584D5E4AC7AC6489485409781
+ 35A180CF9F1818BE7C66987EC08A81655B2AC83062D4906921D42086CF40C3CE
+ BA63B710BB1A322C443208ECFA9B219816E25643A2856806317CFDC230FD4902
+ AA85F8D59060E19B0E0C8318BE7C6598FE211B61216135245878B38481E1D72F
+ 148318BE015DFFAB1C61216135C45908CA16D397CB33E00220C340D982901A62
+ 2D743EF0107FA67690677021460D55333E2ED71303C8CDF834B4104FA626B6EC
+ 450E5E72333ECC4292A380DC8CCF88D581444401B9191FB78504CA5572333E76
+ 0B892857C9CAF8582D24B25C2527E397022DE921270A302C2415901A0554B190
+ 9428A086854495BD38333E3DC0F0B71000FEC966E74A55381F0000000049454E
+ 44AE426082}
+ Name = 'PngImage0'
+ Background = clWindow
+ end>
+ Left = 232
+ Top = 80
+ Bitmap = {}
+ end
+end
diff --git a/Source/Modulos/Articulos/Plugin/uPluginArticulos.pas b/Source/Modulos/Articulos/Plugin/uPluginArticulos.pas
new file mode 100644
index 00000000..c8c450cb
--- /dev/null
+++ b/Source/Modulos/Articulos/Plugin/uPluginArticulos.pas
@@ -0,0 +1,74 @@
+unit uPluginArticulos;
+
+interface
+
+uses
+ uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList,
+ ImgList, Controls, PngImageList;
+
+type
+ IMCArticulos = interface(IInterface)
+ ['{ED6B467B-B6DD-4E2E-8E54-BCEB8FD0A012}']
+ end;
+
+ TPluginArticulos = class(TModuleController, IMCArticulos)
+ actArticulos: TAction;
+ ExtraImages: TPngImageList;
+ LargeImages: TPngImageList;
+ MainMenu: TMainMenu;
+ ModuleActionList: TActionList;
+ SmallImages: TPngImageList;
+ N1: TMenuItem;
+ Articulos1: TMenuItem;
+ procedure actArticulosExecute(Sender: TObject);
+ public
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ end;
+
+implementation
+
+{$R *.dfm}
+
+uses
+ Forms, Dialogs, SysUtils,
+ uArticulosController, uBizArticulos, uArticulosViewRegister;
+
+function GetModule : TModuleController;
+begin
+ Result := TPluginArticulos.Create(NIL);
+end;
+
+exports
+ GetModule name GET_MODULE_FUNC;
+
+procedure TPluginArticulos.actArticulosExecute(Sender: TObject);
+var
+ AArticulosController : IArticulosController;
+ AArticulos : IBizArticulo;
+
+begin
+ AArticulosController := TArticulosController.Create;
+ AArticulos := (AArticulosController.BuscarTodos as IBizArticulo);
+ AArticulosController.VerTodos(AArticulos);
+end;
+
+constructor TPluginArticulos.Create(AOwner: TComponent);
+begin
+ inherited;
+ uArticulosViewRegister.RegisterViews;
+end;
+
+destructor TPluginArticulos.Destroy;
+begin
+ uArticulosViewRegister.UnregisterViews;
+ inherited;
+end;
+
+initialization
+ RegisterModuleClass(TPluginArticulos);
+
+finalization
+ UnRegisterModuleClass(TPluginArticulos);
+
+end.
diff --git a/Source/Modulos/Articulos/Servidor/srvArticulos_Impl.dfm b/Source/Modulos/Articulos/Servidor/srvArticulos_Impl.dfm
new file mode 100644
index 00000000..5b9ce83d
--- /dev/null
+++ b/Source/Modulos/Articulos/Servidor/srvArticulos_Impl.dfm
@@ -0,0 +1,823 @@
+object srvArticulos: TsrvArticulos
+ OldCreateOrder = True
+ OnCreate = DARemoteServiceCreate
+ RequiresSession = True
+ SessionManager = dmServer.SessionManager
+ ConnectionName = 'IBX'
+ ServiceSchema = schArticulos
+ ServiceDataStreamer = Bin2DataStreamer
+ ExportedDataTables = <>
+ BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection
+ Height = 229
+ Width = 349
+ object Diagrams: TDADiagrams
+ Left = 150
+ Top = 74
+ DiagramData = ''#13#10''#13#10
+ end
+ object DataDictionary: TDADataDictionary
+ Fields = <
+ item
+ Name = 'Articulos_REFERENCIA'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'Referencia'
+ end
+ item
+ Name = 'Articulos_DESCRIPCION'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'Descripci'#243'n'
+ end
+ item
+ Name = 'Articulos_FAMILIA'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'Familia'
+ end
+ item
+ Name = 'Articulos_IMAGEN'
+ DataType = datBlob
+ DisplayLabel = 'Foto'
+ end
+ item
+ Name = 'Articulos_COMISIONABLE'
+ DataType = datInteger
+ DisplayLabel = 'Comisionable'
+ end
+ item
+ Name = 'Articulos_FECHA_ALTA'
+ DataType = datDateTime
+ DisplayLabel = 'FECHA_ALTA'
+ end
+ item
+ Name = 'Articulos_FECHA_MODIFICACION'
+ DataType = datDateTime
+ DisplayLabel = 'FECHA_MODIFICACION'
+ end
+ item
+ Name = 'Articulos_USUARIO'
+ DataType = datString
+ Size = 20
+ DisplayLabel = 'USUARIO'
+ end
+ item
+ Name = 'Articulos_REFERENCIA_PROVEEDOR'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'Ref. proveedor'
+ end
+ item
+ Name = 'Articulos_PRECIO_COSTE'
+ DataType = datCurrency
+ DisplayLabel = 'Importe'
+ end
+ item
+ Name = 'Articulos_PRECIO_PORTE'
+ DataType = datCurrency
+ DisplayLabel = 'Porte'
+ end
+ item
+ Name = 'Articulos_DESCUENTO'
+ DataType = datFloat
+ DisplayLabel = 'Descuento'
+ end
+ item
+ Name = 'Articulos_ID'
+ DataType = datAutoInc
+ GeneratorName = 'GEN_ARTICULOS_ID'
+ Required = True
+ DisplayLabel = 'ID'
+ end
+ item
+ Name = 'Articulos_ID_EMPRESA'
+ DataType = datInteger
+ DisplayLabel = 'ID_EMPRESA'
+ end
+ item
+ Name = 'Articulos_PRECIO_NETO'
+ DataType = datCurrency
+ DisplayLabel = 'PRECIO_NETO'
+ end
+ item
+ Name = 'Articulos_ID_PROVEEDOR'
+ DataType = datInteger
+ DisplayLabel = 'ID_PROVEEDOR'
+ ServerAutoRefresh = True
+ end
+ item
+ Name = 'Articulos_NOMBRE_PROVEEDOR'
+ DataType = datString
+ Size = 255
+ DisplayLabel = 'Nombre'
+ ServerAutoRefresh = True
+ end>
+ Left = 150
+ Top = 22
+ end
+ object schArticulos: TDASchema
+ ConnectionManager = dmServer.ConnectionManager
+ DataDictionary = DataDictionary
+ Diagrams = Diagrams
+ Datasets = <
+ item
+ Params = <>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'V_ARTICULOS'
+ StatementType = stAutoSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID'
+ TableField = 'ID'
+ end
+ item
+ DatasetField = 'ID_EMPRESA'
+ TableField = 'ID_EMPRESA'
+ end
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'FAMILIA'
+ TableField = 'FAMILIA'
+ end
+ item
+ DatasetField = 'IMAGEN'
+ TableField = 'IMAGEN'
+ end
+ item
+ DatasetField = 'COMISIONABLE'
+ TableField = 'COMISIONABLE'
+ end
+ item
+ DatasetField = 'FECHA_ALTA'
+ TableField = 'FECHA_ALTA'
+ end
+ item
+ DatasetField = 'FECHA_MODIFICACION'
+ TableField = 'FECHA_MODIFICACION'
+ end
+ item
+ DatasetField = 'USUARIO'
+ TableField = 'USUARIO'
+ end
+ item
+ DatasetField = 'REFERENCIA_PROV'
+ TableField = 'REFERENCIA_PROV'
+ end
+ item
+ DatasetField = 'PRECIO_COSTE'
+ TableField = 'PRECIO_COSTE'
+ end
+ item
+ DatasetField = 'PRECIO_PORTE'
+ TableField = 'PRECIO_PORTE'
+ end
+ item
+ DatasetField = 'DESCUENTO'
+ TableField = 'DESCUENTO'
+ end
+ item
+ DatasetField = 'PRECIO_NETO'
+ TableField = 'PRECIO_NETO'
+ end
+ item
+ DatasetField = 'ID_PROVEEDOR'
+ TableField = 'ID_PROVEEDOR'
+ end
+ item
+ DatasetField = 'NOMBRE_PROVEEDOR'
+ TableField = 'NOMBRE_PROVEEDOR'
+ end
+ item
+ DatasetField = 'INVENTARIABLE'
+ TableField = 'INVENTARIABLE'
+ end
+ item
+ DatasetField = 'ELIMINADO'
+ TableField = 'ELIMINADO'
+ end>
+ end>
+ Name = 'Articulos'
+ Fields = <
+ item
+ Name = 'ID'
+ DataType = datInteger
+ InPrimaryKey = True
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FAMILIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'IMAGEN'
+ DataType = datBlob
+ end
+ item
+ Name = 'COMISIONABLE'
+ DataType = datInteger
+ end
+ item
+ Name = 'FECHA_ALTA'
+ DataType = datDateTime
+ end
+ item
+ Name = 'FECHA_MODIFICACION'
+ DataType = datDateTime
+ end
+ item
+ Name = 'USUARIO'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'REFERENCIA_PROV'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'PRECIO_COSTE'
+ DataType = datFloat
+ end
+ item
+ Name = 'PRECIO_PORTE'
+ DataType = datFloat
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ end
+ item
+ Name = 'PRECIO_NETO'
+ DataType = datFloat
+ end
+ item
+ Name = 'INVENTARIABLE'
+ DataType = datInteger
+ end
+ item
+ Name = 'ID_PROVEEDOR'
+ DataType = datInteger
+ end
+ item
+ Name = 'NOMBRE_PROVEEDOR'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ELIMINADO'
+ DataType = datInteger
+ DisplayLabel = 'Eliminado'
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_CLIENTE'
+ Value = ''
+ ParamType = daptInput
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'ARTICULOS'
+ SQL =
+ 'SELECT V_ARTICULOS.ID, V_ARTICULOS.ID_EMPRESA, V_ARTICULOS.REFER' +
+ 'ENCIA, V_ARTICULOS.DESCRIPCION,'#10' V_ARTICULOS.FAMILIA, V_AR' +
+ 'TICULOS.IMAGEN, V_ARTICULOS.COMISIONABLE, V_ARTICULOS.FECHA_ALTA' +
+ ','#10' V_ARTICULOS.FECHA_MODIFICACION, V_ARTICULOS.USUARIO,'#10' ' +
+ ' V_ARTICULOS.REFERENCIA_PROV,'#10' V_ARTICULOS.PRECIO_COST' +
+ 'E,'#10' V_ARTICULOS.PRECIO_PORTE,'#10' CLIENTES_DTOS_PROVEED' +
+ 'ORES.DESCUENTO,'#10' V_ARTICULOS.PRECIO_NETO,'#10' V_ARTICUL' +
+ 'OS.INVENTARIABLE,'#10' V_ARTICULOS.ID_PROVEEDOR,'#10' V_ARTI' +
+ 'CULOS.NOMBRE_PROVEEDOR,'#10' V_ARTICULOS.ELIMINADO'#10'FROM V_ARTI' +
+ 'CULOS'#10'LEFT OUTER JOIN CLIENTES_DTOS_PROVEEDORES'#10'ON ((CLIENTES_DT' +
+ 'OS_PROVEEDORES.ID_PROVEEDOR = V_ARTICULOS.ID_PROVEEDOR)'#10'AND (CLI' +
+ 'ENTES_DTOS_PROVEEDORES.ID_CLIENTE = :ID_CLIENTE))'
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID'
+ TableField = 'ID'
+ end
+ item
+ DatasetField = 'ID_EMPRESA'
+ TableField = 'ID_EMPRESA'
+ end
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'FAMILIA'
+ TableField = 'FAMILIA'
+ end
+ item
+ DatasetField = 'IMAGEN'
+ TableField = 'IMAGEN'
+ end
+ item
+ DatasetField = 'COMISIONABLE'
+ TableField = 'COMISIONABLE'
+ end
+ item
+ DatasetField = 'FECHA_ALTA'
+ TableField = 'FECHA_ALTA'
+ end
+ item
+ DatasetField = 'FECHA_MODIFICACION'
+ TableField = 'FECHA_MODIFICACION'
+ end
+ item
+ DatasetField = 'USUARIO'
+ TableField = 'USUARIO'
+ end
+ item
+ DatasetField = 'REFERENCIA_PROV'
+ TableField = 'REFERENCIA_PROV'
+ end
+ item
+ DatasetField = 'PRECIO_COSTE'
+ TableField = 'PRECIO_COSTE'
+ end
+ item
+ DatasetField = 'PRECIO_PORTE'
+ TableField = 'PRECIO_PORTE'
+ end
+ item
+ DatasetField = 'DESCUENTO'
+ TableField = 'DESCUENTO'
+ end
+ item
+ DatasetField = 'PRECIO_NETO'
+ TableField = 'PRECIO_NETO'
+ end
+ item
+ DatasetField = 'ID_PROVEEDOR'
+ TableField = 'ID_PROVEEDOR'
+ end
+ item
+ DatasetField = 'NOMBRE_PROVEEDOR'
+ TableField = 'NOMBRE_PROVEEDOR'
+ end
+ item
+ DatasetField = 'INVENTARIABLE'
+ TableField = 'INVENTARIABLE'
+ end
+ item
+ DatasetField = 'ELIMINADO'
+ TableField = 'ELIMINADO'
+ end>
+ end>
+ Name = 'ArticulosParaCliente'
+ Fields = <
+ item
+ Name = 'ID'
+ DataType = datInteger
+ InPrimaryKey = True
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'FAMILIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'IMAGEN'
+ DataType = datBlob
+ end
+ item
+ Name = 'COMISIONABLE'
+ DataType = datInteger
+ end
+ item
+ Name = 'FECHA_ALTA'
+ DataType = datDateTime
+ end
+ item
+ Name = 'FECHA_MODIFICACION'
+ DataType = datDateTime
+ end
+ item
+ Name = 'USUARIO'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'REFERENCIA_PROV'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'PRECIO_COSTE'
+ DataType = datFloat
+ end
+ item
+ Name = 'PRECIO_PORTE'
+ DataType = datFloat
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ end
+ item
+ Name = 'PRECIO_NETO'
+ DataType = datFloat
+ end
+ item
+ Name = 'ID_PROVEEDOR'
+ DataType = datInteger
+ end
+ item
+ Name = 'INVENTARIABLE'
+ DataType = datInteger
+ end
+ item
+ Name = 'NOMBRE_PROVEEDOR'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ELIMINADO'
+ DataType = datInteger
+ DisplayLabel = 'Eliminado'
+ end>
+ end>
+ JoinDataTables = <>
+ UnionDataTables = <>
+ Commands = <
+ item
+ Params = <
+ item
+ Name = 'ELIMINADO'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'ID'
+ DataType = datInteger
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 255
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'FAMILIA'
+ DataType = datString
+ Size = 255
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'IMAGEN'
+ DataType = datBlob
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'COMISIONABLE'
+ DataType = datInteger
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'FECHA_ALTA'
+ DataType = datDateTime
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'FECHA_MODIFICACION'
+ DataType = datDateTime
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'USUARIO'
+ DataType = datString
+ Size = 20
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'PRECIO_COSTE'
+ DataType = datFloat
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'PRECIO_PORTE'
+ DataType = datFloat
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'ID_PROVEEDOR'
+ DataType = datInteger
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'PRECIO_NETO'
+ DataType = datFloat
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'REFERENCIA_PROV'
+ DataType = datString
+ Size = 255
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'INVENTARIABLE'
+ DataType = datInteger
+ Value = ''
+ ParamType = daptInput
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'ARTICULOS'
+ SQL =
+ 'INSERT'#10' INTO ARTICULOS'#10' (ID, ID_EMPRESA, REFERENCIA, DESCRIP' +
+ 'CION, FAMILIA, IMAGEN, '#10' COMISIONABLE, FECHA_ALTA, FECHA_MOD' +
+ 'IFICACION, USUARIO, '#10' PRECIO_COSTE, PRECIO_PORTE, DESCUENTO,' +
+ ' ID_PROVEEDOR, '#10' PRECIO_NETO, REFERENCIA_PROV, INVENTARIABLE' +
+ ', ELIMINADO)'#10' VALUES'#10' (:ID, :ID_EMPRESA, :REFERENCIA, :DESCR' +
+ 'IPCION, :FAMILIA, '#10' :IMAGEN, :COMISIONABLE, :FECHA_ALTA, :FE' +
+ 'CHA_MODIFICACION, '#10' :USUARIO, :PRECIO_COSTE, :PRECIO_PORTE, ' +
+ ':DESCUENTO, '#10' :ID_PROVEEDOR, :PRECIO_NETO, :REFERENCIA_PROV,' +
+ #10' :INVENTARIABLE, :ELIMINADO)'
+ StatementType = stSQL
+ ColumnMappings = <>
+ end>
+ Name = 'Insert_Articulos'
+ end
+ item
+ Params = <
+ item
+ Name = 'OLD_ID'
+ DataType = datInteger
+ Value = ''
+ ParamType = daptInput
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'ARTICULOS'
+ SQL = 'UPDATE ARTICULOS'#10'SET ELIMINADO = 1'#10'WHERE (ID = :OLD_ID)'
+ StatementType = stSQL
+ ColumnMappings = <>
+ end>
+ Name = 'Delete_Articulos'
+ end
+ item
+ Params = <
+ item
+ Name = 'ID'
+ DataType = datInteger
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 255
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'FAMILIA'
+ DataType = datString
+ Size = 255
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'IMAGEN'
+ DataType = datBlob
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'COMISIONABLE'
+ DataType = datInteger
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'FECHA_ALTA'
+ DataType = datDateTime
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'FECHA_MODIFICACION'
+ DataType = datDateTime
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'USUARIO'
+ DataType = datString
+ Size = 20
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'PRECIO_COSTE'
+ DataType = datFloat
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'PRECIO_PORTE'
+ DataType = datFloat
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'DESCUENTO'
+ DataType = datFloat
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'ID_PROVEEDOR'
+ DataType = datInteger
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'PRECIO_NETO'
+ DataType = datFloat
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'INVENTARIABLE'
+ DataType = datInteger
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'REFERENCIA_PROV'
+ DataType = datString
+ Size = 255
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'ELIMINADO'
+ DataType = datInteger
+ Value = ''
+ ParamType = daptInput
+ end
+ item
+ Name = 'OLD_ID'
+ DataType = datInteger
+ Value = ''
+ ParamType = daptInput
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ TargetTable = 'ARTICULOS'
+ SQL =
+ 'UPDATE ARTICULOS'#10' SET '#10' ID = :ID, '#10' ID_EMPRESA = :ID_EMPR' +
+ 'ESA, '#10' REFERENCIA = :REFERENCIA, '#10' DESCRIPCION = :DESCRIPC' +
+ 'ION, '#10' FAMILIA = :FAMILIA, '#10' IMAGEN = :IMAGEN, '#10' COMISI' +
+ 'ONABLE = :COMISIONABLE, '#10' FECHA_ALTA = :FECHA_ALTA, '#10' FECH' +
+ 'A_MODIFICACION = :FECHA_MODIFICACION, '#10' USUARIO = :USUARIO, '#10 +
+ ' PRECIO_COSTE = :PRECIO_COSTE, '#10' PRECIO_PORTE = :PRECIO_PO' +
+ 'RTE, '#10' DESCUENTO = :DESCUENTO, '#10' ID_PROVEEDOR = :ID_PROVEE' +
+ 'DOR, '#10' PRECIO_NETO = :PRECIO_NETO,'#10' INVENTARIABLE = :INVEN' +
+ 'TARIABLE,'#10' REFERENCIA_PROV = :REFERENCIA_PROV,'#10' ELIMINADO ' +
+ '= :ELIMINADO'#10' WHERE'#10' (ID = :OLD_ID)'
+ StatementType = stSQL
+ ColumnMappings = <>
+ end>
+ Name = 'Update_Articulos'
+ end>
+ RelationShips = <>
+ UpdateRules = <
+ item
+ Name = 'Insert Articulos'
+ DoUpdate = False
+ DoDelete = False
+ DatasetName = 'Articulos'
+ FailureBehavior = fbRaiseException
+ end
+ item
+ Name = 'Update Articulos'
+ DoInsert = False
+ DoDelete = False
+ DatasetName = 'Articulos'
+ FailureBehavior = fbRaiseException
+ end
+ item
+ Name = 'Delete Articulos'
+ DoUpdate = False
+ DoInsert = False
+ DatasetName = 'Articulos'
+ FailureBehavior = fbRaiseException
+ end>
+ Version = 0
+ Left = 48
+ Top = 24
+ end
+ object Bin2DataStreamer: TDABin2DataStreamer
+ Left = 48
+ Top = 80
+ end
+ object bpArticulos: TDABusinessProcessor
+ Schema = schArticulos
+ InsertCommandName = 'Insert_Articulos'
+ DeleteCommandName = 'Delete_Articulos'
+ UpdateCommandName = 'Update_Articulos'
+ RefreshDatasetName = 'Articulos_Refresh'
+ ReferencedDataset = 'Articulos'
+ ProcessorOptions = [poPrepareCommands]
+ UpdateMode = updWhereKeyOnly
+ Left = 264
+ Top = 24
+ end
+end
diff --git a/Source/Modulos/Articulos/Servidor/srvArticulos_Impl.pas b/Source/Modulos/Articulos/Servidor/srvArticulos_Impl.pas
new file mode 100644
index 00000000..c7ae8c53
--- /dev/null
+++ b/Source/Modulos/Articulos/Servidor/srvArticulos_Impl.pas
@@ -0,0 +1,87 @@
+unit srvArticulos_Impl;
+
+{----------------------------------------------------------------------------}
+{ This unit was automatically generated by the RemObjects SDK after reading }
+{ the RODL file associated with this project . }
+{ }
+{ This is where you are supposed to code the implementation of your objects. }
+{----------------------------------------------------------------------------}
+
+interface
+
+uses
+ {vcl:} Classes, SysUtils,
+ {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions,
+ {Ancestor Implementation:} DataAbstractService_Impl,
+ {Used RODLs:} DataAbstract4_Intf,
+ {Generated:} FactuGES_Intf, uDADataTable, uDABINAdapter, uDAClasses,
+ uDAInterfaces, uDAScriptingProvider,
+ uDABusinessProcessor, uDADataStreamer, uDABin2DataStreamer;
+
+type
+ { TsrvArticulos }
+ TsrvArticulos = class(TDataAbstractService, IsrvArticulos)
+ Diagrams: TDADiagrams;
+ schArticulos: TDASchema;
+ bpArticulos: TDABusinessProcessor;
+ DataDictionary: TDADataDictionary;
+ Bin2DataStreamer: TDABin2DataStreamer;
+ procedure DARemoteServiceBeforeGetDatasetData(const Dataset: IDADataset;
+ const IncludeSchema: Boolean; const MaxRecords: Integer);
+ procedure DARemoteServiceCreate(Sender: TObject);
+ procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject;
+ var aConnectionName: string);
+ private
+ protected
+ { IsrvArticulos methods }
+ function GetNextAutoInc(const GeneratorName: String): Integer;
+ end;
+
+implementation
+
+{$R *.dfm}
+uses
+ {Generated:} FactuGES_Invk, uDataModuleServer,
+ uDatabaseUtils, schArticulosClient_Intf, uRestriccionesUsuarioUtils;
+
+procedure Create_srvArticulos(out anInstance : IUnknown);
+begin
+ anInstance := TsrvArticulos.Create(NIL);
+end;
+
+{ srvArticulos }
+procedure TsrvArticulos.DARemoteServiceBeforeGetDatasetData(
+ const Dataset: IDADataset; const IncludeSchema: Boolean;
+ const MaxRecords: Integer);
+begin
+ if DataSet.Name = nme_Articulos then
+ begin
+ { Aquí se asegura que el usuario sólo accede a los Articulos
+ de las empresas a las que tiene permiso para acceder
+ filtrando DataSet por ID_EMPRESA. }
+ FiltrarAccesoUsuario(Session, Connection, schArticulos, DataSet, fld_ArticulosID_EMPRESA);
+ end;
+end;
+
+procedure TsrvArticulos.DARemoteServiceCreate(Sender: TObject);
+begin
+ SessionManager := dmServer.SessionManager;
+end;
+
+procedure TsrvArticulos.DataAbstractServiceBeforeAcquireConnection(
+ aSender: TObject; var aConnectionName: string);
+begin
+ ConnectionName := dmServer.ConnectionName;
+end;
+
+function TsrvArticulos.GetNextAutoInc(const GeneratorName: String): Integer;
+begin
+ Result := uDatabaseUtils.GetNextAutoInc(GeneratorName)
+end;
+
+initialization
+ TROClassFactory.Create('srvArticulos', Create_srvArticulos, TsrvArticulos_Invoker);
+
+finalization
+
+end.
diff --git a/Source/Modulos/Articulos/Views/Articulos_view.bdsproj b/Source/Modulos/Articulos/Views/Articulos_view.bdsproj
new file mode 100644
index 00000000..e794ddfb
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/Articulos_view.bdsproj
@@ -0,0 +1,492 @@
+
+
+
+
+
+
+
+
+
+
+
+ Articulos_view.dpk
+
+
+ 7.0
+
+
+ 8
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ True
+ True
+ WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+
+ False
+
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ False
+ False
+ False
+ True
+ True
+ True
+ True
+ True
+ True
+
+
+
+ 0
+ 0
+ False
+ 1
+ True
+ 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/Articulos/Views/Articulos_view.dpk b/Source/Modulos/Articulos/Views/Articulos_view.dpk
new file mode 100644
index 00000000..68d2370c
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/Articulos_view.dpk
@@ -0,0 +1,43 @@
+package Articulos_view;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION OFF}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES ON}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$IMPLICITBUILD ON}
+
+requires
+ GUIBase,
+ Articulos_model,
+ Articulos_controller,
+ Familias_controller,
+ Contactos_view;
+
+contains
+ uViewArticulos in 'uViewArticulos.pas' {frViewArticulos: TFrame},
+ uEditorArticulos in 'uEditorArticulos.pas' {fEditorArticulos: TfEditorArticulos},
+ uArticulosViewRegister in 'uArticulosViewRegister.pas',
+ uEditorArticulo in 'uEditorArticulo.pas' {fEditorArticulo: TfEditorArticulo},
+ uEditorElegirArticulos in 'uEditorElegirArticulos.pas' {fEditorElegirArticulos: TfEditorElegirArticulos},
+ uViewArticulo in 'uViewArticulo.pas' {frViewArticulo: TFrame},
+ uViewDetallesArticulos in 'uViewDetallesArticulos.pas' {frViewDetallesArticulos: TFrame};
+
+end.
diff --git a/Source/Modulos/Articulos/Views/Articulos_view.rc b/Source/Modulos/Articulos/Views/Articulos_view.rc
new file mode 100644
index 00000000..e69de29b
diff --git a/Source/Modulos/Articulos/Views/Articulos_view.res b/Source/Modulos/Articulos/Views/Articulos_view.res
new file mode 100644
index 00000000..86c94e6a
Binary files /dev/null and b/Source/Modulos/Articulos/Views/Articulos_view.res differ
diff --git a/Source/Modulos/Articulos/Views/uArticulosViewRegister.pas b/Source/Modulos/Articulos/Views/uArticulosViewRegister.pas
new file mode 100644
index 00000000..29559a0d
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/uArticulosViewRegister.pas
@@ -0,0 +1,27 @@
+unit uArticulosViewRegister;
+
+interface
+
+procedure RegisterViews;
+procedure UnregisterViews;
+
+implementation
+
+uses
+ uEditorRegistryUtils, uEditorArticulos, uEditorArticulo, uEditorElegirArticulos;
+
+procedure RegisterViews;
+begin
+ EditorRegistry.RegisterClass(TfEditorArticulo, 'EditorArticulo');
+ EditorRegistry.RegisterClass(TfEditorArticulos, 'EditorArticulos');
+ EditorRegistry.RegisterClass(TfEditorElegirArticulos, 'EditorElegirArticulos');
+end;
+
+procedure UnregisterViews;
+begin
+ EditorRegistry.UnRegisterClass(TfEditorArticulo);
+ EditorRegistry.UnRegisterClass(TfEditorArticulos);
+ EditorRegistry.UnRegisterClass(TfEditorElegirArticulos);
+end;
+
+end.
diff --git a/Source/Modulos/Articulos/Views/uEditorArticulo.dfm b/Source/Modulos/Articulos/Views/uEditorArticulo.dfm
new file mode 100644
index 00000000..b4c51fda
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/uEditorArticulo.dfm
@@ -0,0 +1,664 @@
+inherited fEditorArticulo: TfEditorArticulo
+ Left = 374
+ Top = 273
+ HorzScrollBar.Visible = False
+ VertScrollBar.Visible = False
+ Caption = 'Ficha de art'#237'culo'
+ ClientHeight = 480
+ ClientWidth = 624
+ Scaled = False
+ OnClose = CustomEditorClose
+ ExplicitWidth = 632
+ ExplicitHeight = 514
+ PixelsPerInch = 96
+ TextHeight = 13
+ inherited JvNavPanelHeader: TJvNavPanelHeader
+ Width = 624
+ Caption = 'Art'#237'culo'
+ ExplicitWidth = 624
+ inherited Image1: TImage
+ Left = 597
+ Picture.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000AA11B57D14DC000001374944415478DA63FCFFFF3F
+ 033D01E3C8B2F04AA9943390DA43408F0B316A74BA9FED25C6C2FFAA2D350CEC
+ EC59584DF9F9731AC3ECD81686D4C584D5E4AC7AC648948540978135A180CF9F
+ 1818BE7C66987EC08A81655B2AC83062D4906921D42086CF40C3CEBA63B710BB
+ 1A322C443208ECFA9B219816E25643A2856806317CFDC230FD4902AA85F8D590
+ 60E19B0E0C8318BE7C6598FE211B61216135245878B38481E1D72F148318BE01
+ 5DFFAB1C61216135C45908CA16D397CB33E00220C340D982901A622D743EF010
+ 7FA67690677021460D55333E2ED71303C8CDF834B4104FA626B6EC450E5E7233
+ 3ECC4292A380DC8CCF88D581444401B9191FB78504CA5572333E760B892857C9
+ CAF8582D24B25C2527E397022DE921270A302C2415901A0554B1909428A08685
+ 4495BD38333E3DC0F0B71000FEC966E74A55381F0000000049454E44AE426082}
+ ExplicitLeft = 607
+ end
+ end
+ inherited TBXDock: TTBXDock
+ Width = 624
+ ExplicitWidth = 624
+ inherited tbxMain: TTBXToolbar
+ ExplicitWidth = 394
+ inherited TBXItem2: TTBXItem
+ Visible = False
+ end
+ inherited TBXItem5: TTBXItem
+ Visible = False
+ end
+ inherited TBXItem23: TTBXItem
+ Visible = False
+ end
+ inherited TBXItem3: TTBXItem
+ Visible = False
+ end
+ object TBXSeparatorItem6: TTBXSeparatorItem [11]
+ end
+ object TBXItem33: TTBXItem [12]
+ Action = actFamilias
+ DisplayMode = nbdmImageAndText
+ end
+ end
+ inherited tbxMenu: TTBXToolbar
+ DockPos = 0
+ ExplicitWidth = 624
+ inherited TBXSubmenuItem4: TTBXSubmenuItem
+ inherited TBXItem8: TTBXItem
+ Visible = False
+ end
+ inherited TBXSeparatorItem5: TTBXSeparatorItem
+ Visible = False
+ end
+ inherited TBXItem10: TTBXItem
+ Visible = False
+ end
+ inherited TBXItem21: TTBXItem
+ Visible = False
+ end
+ inherited TBXItem22: TTBXItem
+ Visible = False
+ end
+ inherited TBXItem9: TTBXItem
+ Visible = False
+ end
+ end
+ inherited TBXSubmenuItem1: TTBXSubmenuItem
+ inherited TBXItem32: TTBXItem
+ Visible = False
+ end
+ inherited TBXItem31: TTBXItem
+ Visible = False
+ end
+ inherited TBXSeparatorItem13: TTBXSeparatorItem
+ Visible = False
+ end
+ end
+ end
+ end
+ inherited pgPaginas: TPageControl
+ Width = 624
+ Height = 385
+ ExplicitWidth = 624
+ ExplicitHeight = 385
+ inherited pagGeneral: TTabSheet
+ ExplicitLeft = 4
+ ExplicitTop = 24
+ ExplicitWidth = 616
+ ExplicitHeight = 357
+ end
+ end
+ inherited StatusBar: TJvStatusBar
+ Top = 461
+ Width = 624
+ Panels = <
+ item
+ Width = 200
+ end>
+ ExplicitTop = 461
+ ExplicitWidth = 624
+ end
+ inherited EditorActionList: TActionList
+ Top = 128
+ object actFamilias: TAction
+ Category = 'Acciones'
+ Caption = 'Familias'
+ Hint = 'Acceder a la gesti'#243'n de familias de art'#237'culos'
+ ImageIndex = 21
+ OnExecute = actFamiliasExecute
+ 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
+ 61000001A34944415478DA9D922177E3300CC7655636C3B20596CD702C86C7E6
+ B141C342EF1BE42318167AECD81916BA6CD0638582852A0BCBA46CCDDAF46E77
+ EFF4E2A7D8F2FF2759B6724FD9354BF30B09810EF5B16C43866FACAC7DA67DD5
+ E364655A15020ECEDD42AD47C839EE4AE9EC5CE492EBB2CF9DFC676BCA83772D
+ 6C133CEFE14D395F066B0C032AA4346AD5B9905D20C49BD255350196D4BEF40D
+ C48A47657F44073D05CEDC9AFBF0585F63B61D1379AF7BF2B702C67D8509B0F6
+ 4329E52D1DE8CE2CF557B6B93144CAF13C04767702CCED62B12433587FB99141
+ 4E1C03C2B70011B72EC02E479843CEAD6E60D04BEED9C1825B47A54E6273CF15
+ F73CE9095226D00B891000FB66C1733E2F71CCACCC08EA36043165755141D334
+ 2CE6EEAFE429F0552F3468CD5E370CE05842F04E4FE2DFF6A05979CE04633524
+ 15F08707024484E0F9EA36C880ACAE7A70DE87931D7B0190BCD0B1326F11E256
+ 20FF0098C454D92324167A5320163B95FF47C0518EC02219F4E9D3AB01C780F4
+ 3780910A46D167763E3FF508B95A59BA105F037E76038EC28FE6C9B58DCDEC3F
+ E273F115E07FEC1D6B02010E884AA1F00000000049454E44AE426082}
+ Name = 'PngImage21'
+ Background = clWindow
+ end>
+ Top = 112
+ Bitmap = {}
+ end
+ inherited dsDataTable: TDADataSource [6]
+ Left = 168
+ Top = 120
+ end
+ inherited LargeImages: TPngImageList [7]
+ Top = 112
+ end
+ inherited JvFormStorage: TJvFormStorage [8]
+ Left = 400
+ Top = 152
+ end
+ inherited JvAppRegistryStorage: TJvAppRegistryStorage
+ Left = 432
+ Top = 152
+ end
+ object dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList
+ Left = 248
+ Top = 168
+ object dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel
+ GroupOptions.CaptionOptions.Font.Charset = DEFAULT_CHARSET
+ GroupOptions.CaptionOptions.Font.Color = clWindowText
+ GroupOptions.CaptionOptions.Font.Height = -11
+ GroupOptions.CaptionOptions.Font.Name = 'Tahoma'
+ GroupOptions.CaptionOptions.Font.Style = [fsBold]
+ GroupOptions.CaptionOptions.TextColor = clHighlight
+ GroupOptions.CaptionOptions.UseDefaultFont = False
+ end
+ end
+end
diff --git a/Source/Modulos/Articulos/Views/uEditorArticulo.pas b/Source/Modulos/Articulos/Views/uEditorArticulo.pas
new file mode 100644
index 00000000..86965f34
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/uEditorArticulo.pas
@@ -0,0 +1,212 @@
+unit uEditorArticulo;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent,
+ uViewArticulo, uBizArticulos, JvNavigationPane, ActnList,
+ uEditorBase, StdActns, TB2Dock, TB2Toolbar, TBX, ImgList, PngImageList,
+ TB2Item, uEditorItem, DB, uDADataTable, uEditorDBBase, JvFormAutoSize,
+ uDAScriptingProvider, uDACDSDataTable, StdCtrls, pngimage, ExtCtrls,
+ TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase,
+ JvAppStorage, JvAppRegistryStorage, JvFormPlacement, JvComponentBase,
+
+ uViewArticulos, uIEditorArticulo, uArticulosController, JvExComCtrls,
+ JvStatusBar, dxLayoutLookAndFeels;
+
+type
+ TfEditorArticulo = class(TfEditorDBItem, IEditorArticulo)
+ dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
+ dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
+ TBXItem33: TTBXItem;
+ actFamilias: TAction;
+ TBXSeparatorItem6: TTBXSeparatorItem;
+ procedure FormShow(Sender: TObject);
+ procedure dsDataTableDataChange(Sender: TObject; Field: TField);
+ procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
+ procedure actFamiliasExecute(Sender: TObject);
+ protected
+ FController : IArticulosController;
+ FArticulo: IBizArticulo;
+ FViewArticulo : IViewArticulo;
+
+ function GetController : IArticulosController;
+ procedure SetController (const Value : IArticulosController); virtual;
+ function GetArticulo: IBizArticulo; virtual;
+ procedure SetArticulo(const Value: IBizArticulo); virtual;
+ function GetViewArticulo: IViewArticulo;
+ procedure SetViewArticulo(const Value: IViewArticulo);
+ property ViewArticulo: IViewArticulo read GetViewArticulo write SetViewArticulo;
+
+ procedure GuardarInterno; override;
+ procedure EliminarInterno; override;
+
+ //Si queremos crear otra vista para el editor heredado solo tendriamos que
+ //sobreescribir este metodo
+ procedure AsignarVista; virtual;
+ procedure PonerTitulos(const ATitulo: string = ''); override;
+
+ public
+ property Articulo: IBizArticulo read GetArticulo write SetArticulo;
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ end;
+
+implementation
+
+{$R *.dfm}
+
+uses
+ uCustomEditor, uDataModuleArticulos, uDataModuleBase,
+ uBizFamilias, uFamiliasController;
+
+{
+******************************* TfEditorArticulo *******************************
+}
+function TfEditorArticulo.GetArticulo: IBizArticulo;
+begin
+ Result := FArticulo;
+end;
+
+function TfEditorArticulo.GetController: IArticulosController;
+begin
+ Result := FController;
+end;
+
+function TfEditorArticulo.GetViewArticulo: IViewArticulo;
+begin
+ Result := FViewArticulo;
+end;
+
+procedure TfEditorArticulo.GuardarInterno;
+begin
+ inherited;
+ FController.Guardar(FArticulo);
+ Modified := False;
+end;
+
+procedure TfEditorArticulo.PonerTitulos(const ATitulo: string);
+var
+ FTitulo : String;
+begin
+ if Assigned(Articulo) then
+ begin
+ if Articulo.EsNuevo then
+ FTitulo := 'Nuevo artículo'
+ else
+ FTitulo := 'Artículo';
+ end;
+
+ inherited PonerTitulos(FTitulo);
+end;
+
+procedure TfEditorArticulo.SetArticulo(const Value: IBizArticulo);
+begin
+ FArticulo := Value;
+ dsDataTable.DataTable := FArticulo.DataTable;
+
+ if Assigned(FViewArticulo) and Assigned(Articulo) then
+ FViewArticulo.Articulo := Articulo;
+end;
+
+procedure TfEditorArticulo.SetController(const Value: IArticulosController);
+begin
+ FController := Value;
+ if Assigned(FController) then
+ (ViewArticulo as IViewArticulo).Controller := (FController as IArticulosController);
+end;
+
+procedure TfEditorArticulo.SetViewArticulo(const Value: IViewArticulo);
+begin
+ FViewArticulo := Value;
+
+ if Assigned(FViewArticulo) and Assigned(Articulo) then
+ FViewArticulo.Articulo := Articulo;
+end;
+
+procedure TfEditorArticulo.FormShow(Sender: TObject);
+begin
+ inherited;
+
+ if not Assigned(FViewArticulo) then
+ raise Exception.Create('No hay ninguna vista asignada');
+
+ if not Assigned(Articulo) then
+ raise Exception.Create('No hay ningún almacén asignado');
+
+ Articulo.DataTable.Active := True;
+end;
+
+destructor TfEditorArticulo.Destroy;
+begin
+ // Utilizar mejor OnClose;
+ inherited;
+end;
+
+procedure TfEditorArticulo.actFamiliasExecute(Sender: TObject);
+var
+ AFamiliasController : IFamiliasController;
+ AFamilias : IBizFamilia;
+begin
+ AFamiliasController := TFamiliasController.Create;
+ try
+ AFamilias := (AFamiliasController.BuscarTodos as IBizFamilia);
+ AFamiliasController.VerTodos(AFamilias);
+ finally
+ AFamilias := NIL;
+ AFamiliasController := NIL;
+ end;
+end;
+
+procedure TfEditorArticulo.AsignarVista;
+var
+ AViewArticulo: TfrViewArticulo;
+begin
+ AViewArticulo := TfrViewArticulo.create(Self);
+ with AViewArticulo do
+ begin
+ Parent := pagGeneral;
+ Align := alClient;
+ dxLayoutControlArticulo.LookAndFeel := dxLayoutOfficeLookAndFeel1;
+ end;
+ ViewArticulo := AViewArticulo;
+end;
+
+constructor TfEditorArticulo.Create(AOwner: TComponent);
+begin
+ inherited;
+ pgPaginas.ActivePageIndex := 0;
+ AsignarVista;
+end;
+
+procedure TfEditorArticulo.CustomEditorClose(Sender: TObject;
+ var Action: TCloseAction);
+begin
+ inherited;
+ dsDataTable.DataTable := NIL;
+ FViewArticulo := NIL;
+ FArticulo := NIL;
+end;
+
+procedure TfEditorArticulo.dsDataTableDataChange(Sender: TObject;
+ Field: TField);
+begin
+ inherited;
+ if Assigned(FArticulo) and (not (FArticulo.DataTable.Fetching) or
+ not (FArticulo.DataTable.Opening) or not (FArticulo.DataTable.Closing)) then
+ PonerTitulos;
+end;
+
+procedure TfEditorArticulo.EliminarInterno;
+begin
+ if (Application.MessageBox('¿Desea borrar este articulo?', 'Atención', MB_YESNO) = IDYES) then
+ begin
+ inherited;
+ if not FController.Eliminar(FArticulo) then
+ actRefrescar.Execute;
+ end;
+end;
+
+end.
+
diff --git a/Source/Modulos/Articulos/Views/uEditorArticulos.dfm b/Source/Modulos/Articulos/Views/uEditorArticulos.dfm
new file mode 100644
index 00000000..2789f360
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/uEditorArticulos.dfm
@@ -0,0 +1,1426 @@
+inherited fEditorArticulos: TfEditorArticulos
+ Left = 489
+ Top = 325
+ Caption = 'Lista de art'#237'culos'
+ ExplicitWidth = 320
+ ExplicitHeight = 240
+ PixelsPerInch = 96
+ TextHeight = 13
+ inherited JvNavPanelHeader: TJvNavPanelHeader
+ Caption = 'Lista de articulos'
+ inherited Image1: TImage
+ Picture.Data = {
+ 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00
+ 00001C0806000000720DDF940000000970485973000017120000171201679FD2
+ 520000000467414D410000AA11B57D14DC000001374944415478DA63FCFFFF3F
+ 033D01E3C8B2F04AA9943390DA43408F0B316A74BA9FED25C6C2FFAA2D350CEC
+ EC59584DF9F9731AC3ECD81686D4C584D5E4AC7AC648948540978135A180CF9F
+ 1818BE7C66987EC08A81655B2AC83062D4906921D42086CF40C3CEBA63B710BB
+ 1A322C443208ECFA9B219816E25643A2856806317CFDC230FD4902AA85F8D590
+ 60E19B0E0C8318BE7C6598FE211B61216135245878B38481E1D72F148318BE01
+ 5DFFAB1C61216135C45908CA16D397CB33E00220C340D982901A622D743EF010
+ 7FA67690677021460D55333E2ED71303C8CDF834B4104FA626B6EC450E5E7233
+ 3ECC4292A380DC8CCF88D581444401B9191FB78504CA5572333E760B892857C9
+ CAF8582D24B25C2527E397022DE921270A302C2415901A0554B1909428A08685
+ 4495BD38333E3DC0F0B71000FEC966E74A55381F0000000049454E44AE426082}
+ ExplicitLeft = 516
+ end
+ end
+ inherited TBXDock: TTBXDock
+ inherited tbxMain: TTBXToolbar
+ ExplicitWidth = 543
+ end
+ inherited tbxFiltro: TTBXToolbar
+ ExplicitWidth = 269
+ inherited tbxEditFiltro: TTBXEditItem
+ EditOptions = [tboUseEditWhenVertical]
+ end
+ inherited TBXItem37: TTBXItem
+ Visible = False
+ end
+ end
+ inherited TBXTMain2: TTBXToolbar
+ Left = 275
+ DockPos = 275
+ ExplicitLeft = 275
+ end
+ end
+ inherited EditorActionList: TActionList
+ inherited actNuevo: TAction
+ ImageIndex = 24
+ end
+ inherited actPrevisualizar: TAction
+ Visible = True
+ end
+ inherited actImprimir: TAction
+ Visible = True
+ end
+ object actFamilias: TAction
+ Category = 'Acciones'
+ Caption = 'Familias de art'#237'culos'
+ OnExecute = actFamiliasExecute
+ end
+ end
+ inherited SmallImages: TPngImageList
+ PngImages = <
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD252000001754944415478DA6364C001D6ECBE900CA4E640B9
+ 2921AE0673B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD
+ 3EF6BA0C250B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4E
+ E1008BF345BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C290
+ 60C30296734D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDF
+ FF6358B8E71B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232
+ E03FBACD5FBEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043
+ C00678586B32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF
+ 194EDDFE0136A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E4
+ 67582C800CE051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A
+ 91C301161330CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA
+ 9C589D8D3521E13204047069C69B99608680002ECD380D4036E4C98B77383583
+ 000005100EB8572466A60000000049454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001074944415478DA
+ 63FCFFFF3F032580912A06303232E2543079D1766F201505C520B02C37CE331A
+ C400EBC5670054F3960057330631617E0690B2F357EF336CDA7786A1B5289211
+ AF01C89A254505183E7FFDC1F0F5DB0F06311101A021F7184E5DBA733927D643
+ 0FAB01E89ADF7EF802D6FCF5FB4F866F406CA6AFC21095DBC6B06C7215238601
+ C4689EB27807C3B153E7300D2056F38B371F18B62EDA79EDFCF9F9DA700348D4
+ CC70E1C2024420022548D68C128D40C906A0E67A5234631860A6A752AF202346
+ B466740396C2521AD020B0A49EA622C39C95BB716AC64889C0405C0A541C2501
+ 4C2830804F33D6A40C8A09A0A62DF7EEDD03F3AF1FB98D372301A39191E2DC08
+ 0029AC32F01825AACD0000000049454E44AE426082}
+ Name = 'PngImage2'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001514944415478DA
+ 635CB5E3DC7F062C20CCC388918108C0083220D4DD104570F5CEF30CEDFDB319
+ CEEF9C4ED0109C06D818AB3278C7941134046E40CBAA0760819A3005B80B6000
+ 9F21182EF8F1F30F10FF86E05F7F1882926B883300E60264C0C1805D5F69B802
+ 238601E836FF04E2CDA7BF339484C9A368EE59F59261D9C1BB0CE7A75933C20D
+ F0B4D56698B0E5195617601AF09021DA4998C1297307C38D35A18C60031CCDD4
+ C036FF84DAFCE7EF3F307DF0FA7FB001112D57C09A57D4E8800D98BBFA346A18
+ 58EA2BC235C39C0FC2671EB0A2B8E0DBCF7F0C5F7FFE05E27F60B65DE26C8801
+ 7316ADC11A58AEFE69282E4009C8284506F7F4B90C781349F7CA07FF4106A0DB
+ FCFD171003E980BCF9840D48F5916148EFBB8E2197EC2BCB1059B290B001512E
+ 92609BC1B602F1EF3FFFC1F437204EAE5A4CD8007F5B71B8E66F480681407AED
+ 12C20674CCDE884F0903000B1A00979E81F9710000000049454E44AE426082}
+ Name = 'PngImage3'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000E9C00000E9C01079453DD000002574944415478DA
+ 63FCFFFF3F03258011D9004646468696696B17FFFECAD0DE581A7C0D596155CF
+ 0AF77F7FFFD975944755A3E8413760EA929DAF393938D62785D8A7C1C48BBB17
+ 711BABAB5C7AF9F6FDDFC2446F354206BC75B6D4E35ABCFE90536B49F87190F8
+ E4853B2779DA1BE46EDE7FE62ED00015BC06F4CFDBBA24CACF26FAD0A99B5B42
+ BDCC7C6BFA563B057B986FFDFDE72FC7D20D072B26D62574E235A0A26DA999B0
+ 98E0F2607713F9251B8E85692A4B5698E9AB9AAEDA7EE2DEBB571F3DDAAB226F
+ E33500044A3B979507B898B6BF78F3FEA3B1B612FF992BF7FF1F3975336E425D
+ CC52903C4103EAEBEB5998450D8FAA2A889BC94888306CD977664D675964284C
+ 1D0103EA99F8DDF50C8CD439E3FFFE67CB7DFFE9DB1F7E3E9EC637DF5977DC98
+ B3E73C0343E33F9C0670B8AC555292175BC8F6FF9BEEDF6FEF995E7DF8F95941
+ 55EDE5AB17AFBEFCFAC7C2F1ECC5FBEF0C4C4C89FF0F47DDC36A8056F2A103FF
+ DEDEE465FBFFB5F1D577EECB8C8CFFF72AAA6A7CFFF4F842CED54D7907184CE7
+ 4631B0B227FC3F1AE38AD5008D981DDFD9BEDE48BABCA1703983DE226E09891F
+ D754B4756F7DBC7FBAEFF286BCED0C32BD9C0CB222B7FF1F8B93C16A805ED2EE
+ D74CEFAF445FDC50B48BC172858E34DFFB6582B2DAFB38BEDCFC7166456A0583
+ CE0471063EA103FF8FC66A623540C063F55669B6E747AE3DE3E861E5E158A9C8
+ FBF1D1FD6F628BF4147977FC7A79D3E3F2736E39060E9E84FF47A202B0C782ED
+ 627356C6FF935998FEB349737FB9FE95E975F2F32D8DDF98EC9647B1FCFF55F0
+ EB1FD31FA08EC2FF87634F6235801C0000382740F0DFD997BD0000000049454E
+ 44AE426082}
+ Name = 'PngImage4'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA
+ A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304
+ 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994
+ 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F
+ 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546
+ 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8
+ 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA
+ 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E
+ 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8
+ E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0
+ 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8
+ 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37
+ 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB
+ 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932
+ 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04
+ E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148
+ D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2
+ 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56
+ A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E
+ AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13
+ 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058
+ 5538F0EAB25B380000000049454E44AE426082}
+ Name = 'PngImage5'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001934944415478DA
+ 6364C002662430FC47E6672C606064C001C0122726A06AB870818121A1632A98
+ 5D169DCD10E58B90B32840358C11A4D920622A5C604145365833482308D4F5E6
+ 3134154F62A8EE4805F35B2B66334CDA8B3004C50098E62F2F6E823581347F7F
+ FB80E1E58DBD0C8BD67D6588F6656258BAF91F7E03AE3D66C009081A800CD61F
+ B161C0072243F419711AF0F7F777864D275D192282F5B06A5EB1F23C43D7FCD9
+ 0CE7774E67C43000A41984B79EF3C36AC08F9F7F18366CB8CC10116EC860E491
+ 85EA0298E6BFBFBE33ECB8120E36C071E64DB8E6ED09CA40037E33ECD87E03EC
+ 02142F206BFEF7FB07C3AE9BF1282E00D90CD20CC6BFFE30EC3B719561CAECE5
+ 100374837B503483E8BDF733305C000333DC04198E9EBB893040CBAF1945F3DF
+ 3FDF190E3C2E041B806EF34F283E73E52EC200758F2A865B3B3A506CB927739E
+ C1C75383C177F17D0C17745971325CBEF51062004820CF19352F808065E64506
+ 172748A0C16CFDF3F71F9806B9E4F683A70803B081E56B2EFEB7B19663D875F4
+ 32CEC444D080AED9331808010085EE16005695A1DA0000000049454E44AE4260
+ 82}
+ Name = 'PngImage6'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD252000002164944415478DA95D35F4853511CC0F1EFD491DD
+ D9587F2C83AC8C328DFE4949908BC0AC142A147BC8077B88A01EECA5E718F958
+ 410486C384B50A1F7A991023CBEC0F594F81E5D4C211E130D7D4DDCDA15B5EEF
+ DD5DD74B1B8EA9D90FCEC3EFC0EFC3EF9CF33B06FE46CBE3AE042B886B176B0C
+ 0B73C342A0A9B17AD9E2FB4F5EE0E878C6E79776C37F03AAAAD2DAD1CDDEDD3B
+ B96EBB9B425604CC17CB8A4AFBD31EEA6BAC0CFF08A4907F02C962598EE374BD
+ D58F908C2581442241603C8CCBFD89D86C9C9C9C1C0A365A282DDE446FDF37E6
+ AB9277B128F02B10C6DDF385CD074B10D6593019211E9CC2EF1DA5A0C0821895
+ 68BE6D5F1A6873BEA6D07A0879951945CD626B1E6C372978BD7EBC5F4710D608
+ DC6A712C0EC84A9C7B6DDDECAF3B459E315B3B3B685B9835448DCD30F4BE0FC1
+ 94CB9D56672670A5E1A47E590F1EBDE374C3091D88CD4120063359902B4719F9
+ D88F201835E0612670E97CA5DE41578F870A6B296BD79B096BC0B8B6C4DF3252
+ 4024E81960832071B3FD7926D0587B5C7F32DFE8243FC74214EDD906AB4D4C29
+ 1011230487BC1419BFB32BE8E06CE7BE4CE0C299637A07B3928CCF37816F4CD4
+ F2040943365234823134C8E1FC094A8A8D4C0DF6B2E5EA8774A0BEFAA80E283A
+ A21012A791E6E6B4618249FF08AFEC97292B2CA7B64221BFAC9C90E74DFA289F
+ AB3A42FFB07FD90FE5B255A510B754379D062C1CD3E5E240AC931D9537B03537
+ 19FE00839434866373C4BA0000000049454E44AE426082}
+ Name = 'PngImage7'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20
+ E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9
+ 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1
+ CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098
+ D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4
+ AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609
+ 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3
+ D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD
+ 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8
+ C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D
+ E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770
+ 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F
+ 16FA1194E3DBC30000000049454E44AE426082}
+ Name = 'PngImage8'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD2520000015F4944415478DA6364A000FC3060F8CF884D62C5
+ 8A0BBB81940BB258E7FC99286A8EBF9CCEC06EE4C5C088457334905AE2E6A9CA
+ 20C8C70516FBF3F71F8399770E44D3F9FF0C3F0D19219AE76D6364C4A2B902A8
+ 5967EF89BB2806B7F54D6738E7C4C1F073793F58B3D1537986F33BA76318B01B
+ A8D905D9E6DF7FFE82B1437011C3B91DD31818BA8AC07246FB7EA01A00737A78
+ B83EC39A5D9731C205E40274003700A8F93F90BA02723AC876649BFF02D920FE
+ 9F3FFF18D22BA63298E82B3148AB1A316C5CB38661F5B92A064690CD579F5C58
+ 4228CAB6EC3E893D166A7B16FC6F2A8EC7A9F1CB8FBF0C9FBFFF65F08E2CC01E
+ 0B20038849342017608D055C2E80D9FC19487FF9F18F2125B3147B2C6033005D
+ 73ED791F86E7B334B1C702BA01E89ABF02F1AC743D8680EEB30CAFEE9E61D8BE
+ F72C4CA9CCE679554FE1064C5FB68B98A0801900D60C6230FA26B54903E92744
+ E946B219C661244123560000C9AFE6B31530CB2E0000000049454E44AE426082}
+ Name = 'PngImage9'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD2520000016A4944415478DA
+ 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA
+ 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA
+ 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30
+ F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911
+ FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD
+ D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5
+ 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C
+ E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3
+ FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B
+ CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907
+ BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4
+ 0090010087546EF0ACB0C7920000000049454E44AE426082}
+ Name = 'PngImage10'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001024944415478DA
+ 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3
+ C493AF1EDC305B3E7F1A2323BA66090111A9272F9F301CD9BE99119701110999
+ FF416A0E6FDB843000A4F9CFCF1F52F834C2808DA72FD8DF700348D18C6C08D8
+ 004B77AF69F292F299308987CF1F4E979256DEB076DEE45D207E7052AEDBB3A7
+ 770390D58000DC0B20FFCC98D0CE70E1053FC3DBBF3F191E7F66603831A310C5
+ B6E533A6311C7CC080228F624046C534B82408AC690C856B9611976140970719
+ 20ACA0CB30A53E13624068693F5CF2F2E3F70C37E7A5C163019BFCD7AD4D0C2B
+ 164C07A72146981F999998C17EFCFBEF2FD630C0260F3660C0933200BCB3BCE1
+ CDA578040000000049454E44AE426082}
+ Name = 'PngImage11'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001C04944415478DA
+ 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440
+ 1BA234FDF9FB8FE1F79FBF60EC105CC4806200A3E14C86FFE7D3C13408E0627F
+ 3C12CF70ECEC0D86AAB659D80D4007FF806AFEFC41D80CC2672FDFC1340019C8
+ 7A2C6178F2F22B98ADAE20C0D09869CCE06E29CD2068B788E1D9AE48868BD7EF
+ 117601C8E673D7DF309846AF6310E66767B8BE3E8441CC6929C3C36D610CD76E
+ 3FC46DC0CBB7DF19EA679C613870E619C3C3679F197EFCFA0B36106433C8F97F
+ 80F8D6FD27B8BD1053BD8F61E9B6DB0C0B9B1C181C4C2518E43D5780C54136CB
+ 7BAD62B8B12E90E1FEE367D85DF0F75C1A836FDE0E866D471E315C5A15CCF0F1
+ CB4F06DBA42D6003EE6E0A6650F65BCB7061B90FC3F357AFB11BF0F3540AC3B1
+ 8B2F18A2ABF6313C7BFD8DC1C14412E895E76003AEAEF6077B4123528661FFC4
+ F3A806C4F859C1A30839CAE0ECDF10BE41E416860F7F32188E4F453320DCCB9C
+ 81CB621ED8A6177BA218245C9681D9B7360431A805AC03B37F306430FCF8C3C0
+ F0E61B0483D8700382DC4CF0DAFC1B498EDD5785E1FD4A3417F83919319CBA78
+ 8BA8FCF0DFCF908171139201A0DC3871C6529273637E46740C00F128724C706C
+ 80060000000049454E44AE426082}
+ Name = 'PngImage12'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000E9C00000E9C01079453DD000002324944415478DA
+ 63FCFFFF3F03258011640023232386C4922BFF0D9818FFC57EFFFE57FDEFBFFF
+ CC8CFF19BEF0F1B36D5C73E9EAAAD5613ABF60166318505FFF9F4939F077F98B
+ 97BF6BEFDCFEC6F9EDDB3F86BF7F810A9918192424D9FEF3F1B32FBFFA93236E
+ 5528C35FB8018D9B7E2C6DF0E38859759581F5E7BF3FD36EDEF89AF4E51B03E3
+ B72F7FC0867EF8F897E1EF3F06867F40ACA1C9F96FE392D5BA5737265D831BE0
+ 58F9F0BF83A5F83245796696CB973E87FEF9C70CD6FCE2D92B86E78F6EFCFCF7
+ EFEF17360E5E4151590326666626067D7DDE65F57E1CD12806288BB3FF676567
+ 66E0E062036B7EFEF425C39307576E8A2A19B9EE6A557DA217B2A88E9B5FBA41
+ 405C87C1DC9CEF01D0004514031444391804843918409ADFBFFFCE70E7EA91FB
+ 9F3FF06BDED9E1F513A450357481341FBBD03D611973362B4B2C067CF8C1C060
+ A020C0F0E3FB4F86CF1FDEBCBE7FFD84C3B54DC9D760812B13DACB29CAAAF84A
+ 58C69AC7C61A8B01CF9FFF61E014646190E365627870FD40C3A535718DC8D1AA
+ E2B1988F5788E7B998823597A5392FA6010C1F1EC0157FF8F081E1DF9F4F0D1C
+ EC6AFDA7965A7C02899924ED550746C555793523665D1D2ED440C49690D08149
+ D2A9764E3ED90A037DEEFF3696BC7161EA0C4B8836402FF6A41A37AFF0690E2E
+ 7E3E7B5B9E65C08494084C48BF8832402BF40A0F8F30DB3E0E2E4153277B9E65
+ 0DFE9C60A7E34CCA280098ACCDDF3C5A2925C913ACAFCBB51CA6997803ECF7B3
+ 301C74FC834D0AC5004A000026261CF09ABF155A0000000049454E44AE426082}
+ Name = 'PngImage13'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA
+ 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414
+ A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D
+ 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF
+ 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008
+ EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5
+ 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050
+ 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85
+ CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15
+ 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7
+ F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D
+ B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D
+ 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02
+ 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE
+ 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0
+ 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D
+ 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747
+ 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7
+ FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386
+ 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790
+ E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6
+ 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74
+ 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD
+ BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03
+ 503A4EA60D6AAC070000000049454E44AE426082}
+ Name = 'PngImage14'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA
+ 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251
+ 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E
+ C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC
+ 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910
+ 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537
+ BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0
+ 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB
+ B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048
+ 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5
+ E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676
+ 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8
+ 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002
+ 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29
+ 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF
+ 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF
+ 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5
+ 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF
+ AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632
+ 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4
+ E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384
+ 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72
+ CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD
+ DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8
+ 3FA68502A9830000000049454E44AE426082}
+ Name = 'PngImage0'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A0000032A4944415478DA
+ 6D937B4814411CC77FB3B7777A5E7276969AA4648A20A5592A4585FE654122BD
+ 0CAA3FE2841EA45946697591BD8DB27748A2BDA0A43FA2420C893252D2A244B4
+ 7C24495986AFBC3BDDDBDB9DDDBDDDDB663714B366F9B2BB33DFCF777E3BB383
+ E0DF66235A19342370912538D0CAB2825BF00A6DA4EF2D1133D5A8AA2AA029EF
+ 4126B3292B2E21BA70697A5262626A9C393422040D0FBAFCAD6F3BF187C68ED6
+ 9F5F472E2992524FBCE2F400735884ED40E6BAE58539F6CCD0B9F323009111C5
+ EF075191600C7BA0ABEBAB5AF7A071A4ADBEE71CE7C615849126032823B52D77
+ EFBAEBF6BDEBAD164B20E941A092EBF89ED75050960C6ECC805B6060D8E984E7
+ 379B9C2D8F3AB71353CD4440CC8ACCE49725D7F2626DB3AC60A028C2535092FF
+ 4A2FCD5E1A0F2E3C062E9E8171D1034303A3F0E24CF3A7910EF72A1230826813
+ BDAFF87CEE85ACCD19269AA2C16030C0093273EDC372C8DE92FFD7EACEDDE902
+ 06B3D0F1A41777DEED2D5015F5369A1335BBB6ACFA4056745C24A22903941636
+ EBF044C38204BCE003FBEE62B0DAFBC1237A61B8C7A9B69DE979ECF3F836A1A4
+ 65F15F4EDD2A880BB606A12B45AD93B02C2BE023D2604D79FB8F02B5F533B022
+ 078C9B55BBCF7EEBC43F8424B4243DE19BA37C678CC962844A47B71E204F8212
+ 09F1EBF783474E02BBB105BC1207DE711EFACA06BE8B7D520C8A8A0D6F70DCD9
+ 951E343B1061598067A54EA8AEBAA4435A0826D22A3976B21406B31B80F76160
+ FB3975E8E2E84785F12F460166E3E91D17361D8E5D1E45F332062C8BD07EC300
+ D7CA4EC1BEA292BF16B177751D6893304D5E9979E0AD5265354FDBC694B4EC05
+ 7599FB57844906093862D04CCEBB913AE4D9F01EBC3E1EBC22AF87635680F1FB
+ EC4FB95DC922DBD8A105A0008BF1444641DAA1A88C8800CE8F8123656AA59A1F
+ A740FF9A7AF22CE8B0208AC035F258A8911C20C3D5A9BF72D8CC79C197E3D7CE
+ CBB12D0D09106862D4A13F9F343133F70E63F18D740F7E818330E3D30FD31CA3
+ D5986F5B68B55B532DE128923248269F0EF2DF05856FC58372AF52013C5412AF
+ EB7FA7516B34512232C2063A944E44C1C82C7B14CEEFF2B793929F92B16E2265
+ EA71FE0D330BBCF031BDB9A60000000049454E44AE426082}
+ Name = 'PngImage15'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A0000031C4944415478DA
+ 6D536B481451143E779D5D5D37D95AD354523445905AB32C0A0DFD653F92252B
+ 8BFA130A3D40F385D1C3B09766A5652548D23B34FA1115624894A0F6502845CB
+ 079298A5F8CA75737677E6CECCCEA3BB532DAB75868F3B73EFF77DE7CCBDF720
+ F8374C045BFC97F8AD3504F8191D0ECEC639B91E32D741407B13154501E4F5ED
+ AFD3EBD263E2220A37A5C49BCD1B62F481214BD1F4E49CDCDDD18F3FB4F7758F
+ 8FCC5C9504A98570F9C506FAE01053715A46526166565AE0CA552180C88A24CB
+ C04B02FCC476181818519A1BDA677A5A862E32365C473482C740A3D5ECCFCECF
+ A8C9CADF613418FCC80C02853C678EB4425E5502D8300D368E8669AB155EDE7C
+ 67FDF8A4FF002135FE35884A4E4B787DFA464EB469B9117C341AA2D78008329C
+ CF6D55CBB39406C11C4BC33C6F87A989597855FEFEF34C9F6D2B319841948E2A
+ 387639BB327D6FAA8ED2505056F066C18E363DAE05CBBE5C30E7BBE02767071A
+ 3BA0EFD930EEBF3F9CA748CA5D141A1ED454F5A8383D22260C511A1FA8287CAF
+ 8ABC037302ECC92E0263D618D879274C0F59959EF2A1A72EBB6B378ADF1CFBE5
+ FC9DBC9800A33F2201D547BB3C06A228818B80E55C2A728A4E01B3AB0B689B43
+ 19BCF0B51F7FE7E2D1FA94B8AF25B587A274062DD971173C2C1D560D448F5020
+ 26B23A1E3D790EA62C6DE09C6761B46AE21B3F2A44A1F0E8156D25F70EA7F807
+ F9212C72F0A2C20ACFEB6B3C62F788094E9496C12411B32E0C8E314699BA32FB
+ 49A2E575C857AF2D3B58B9FB44745238C58A183AAF890BFEFF5259A947CC082C
+ B893D0EF9C22DDE0BCAD884A8EFB1813375A5637A71525070B3E023084E02631
+ 24136E88564D262DADE0E4DD621EB08383F97AC7B8D82BA59363EC731B205F83
+ F66C6ADEC6E3E1A921BE8C8C55B1BB54FDD34418DBD642DE3955CCF13C30ED2C
+ E61A85127251AE7B5FE5E0659101D5B1DB23334D9B96FA721421AA22FC3BEB9F
+ CC4C27C6FC5BE101FC8012A2995FDC4CA15AA336D7B4C69865DC605881C2343E
+ 82CEA50AD96F9CC476E3497158AA03166E11EEDCFFBAD11D1481196961271548
+ 995100D28B768991E7E45E52F273B236482079B7F32FB7E1BAF0E8F71C040000
+ 000049454E44AE426082}
+ Name = 'PngImage16'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD2520000019E4944415478DA
+ 63FCFFFF3F4341F1F9FF0C6402469801BEFE4A0C0B16DD60583CC71CABC21F3F
+ FF327CFFF90748FF6128ABBCC2A0A5CEC0B072C752E20C40D6FCE3D71F86BAFA
+ 1B0CEB963B31A85A241336005DF38FDF7F18DA5AEE3098997032CC5D3D07BF01
+ D834FFFCF597A1B7EB3E612FE0D20CC253263C625092FFC5B0F1C06AEC06E0D3
+ 0CE2CF99F68C4152EC0BC3AE931B310D983EC908A119AA11A409660008CC9FF9
+ 9C4180F72DC3E14B3B500D00019021840048F3F7EF3F19CEDCDE8F6AC09F3F40
+ DB7EFC024B82E81FDF816C280D11FFC5F0F9D337B03C08DF7C79126180A7B73C
+ 86E6CF9FBF43C460867DFB09D70C32ECD1A7F308036CEC44C18A976E9A82D7F9
+ 7CFF8DC19A4186BCFE7D0D618089193FD896B5BB67311CDA309341504A87E1C9
+ ED930CEF3FFD60F8F0F927C3FD671F1956AD59CDF0EC96105833C8BBEFFFDF44
+ 18A0A3CB0976EAB6C30B182E1CDDCBA06768C8B073FD02B8CDF79F7E64E89C34
+ 87E1EE456EB06610403140599519EC827D6796312447F833F072B130B0B0B2A1
+ 387FF5D6430C37CF72C0F9700318191919F49D72C9CAD200FAC9B5C145016BDA
+ 0000000049454E44AE426082}
+ Name = 'PngImage17'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD2520000015D4944415478DA
+ 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0
+ 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060
+ 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298
+ E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0
+ 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161
+ 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319
+ 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5
+ BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068
+ 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2
+ E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41
+ 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500
+ 00000049454E44AE426082}
+ Name = 'PngImage18'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001B04944415478DA
+ 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3
+ C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999
+ FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7
+ 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E
+ 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840
+ 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3
+ CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657
+ 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28
+ 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34
+ 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9
+ F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296
+ D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801
+ 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A
+ 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082}
+ Name = 'PngImage19'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001034944415478DA
+ 636498F123988181610D032A0861C8E058CB400460041AF07F8201AA60C10520
+ 91C1C1489201604DC40114D7313234DCF84FB4561868D080BB8E71F3BEBBFF7D
+ 1C9550E4FFFCFDC7F0E7CF5F86DF60FC0F4C83F8DF7EFC66084FAF6738BF733A
+ 7603D6DEFBC710B2FB378A61732CFF307888FF061B7AEDEE4B86EAD6C9B80D60
+ 9CF993015B803EF0FDCAF0EBF75F863B8FDEE036006403EB9CDF0CA40628D800
+ 0F3B05B01F393BEE911C9E6003ECCDA4188E9CBBCFF0F70F3B03A9010A36A0AE
+ B307ACB8A9BC04C5005C9A91031425B52107283ECDC8018AD500429A41F8D1F3
+ F7D80D8005283ECDBF81F8F99B4FD80D8005283100AB01B0002516000097A51A
+ 7A68BA98860000000049454E44AE426082}
+ Name = 'PngImage20'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001124944415478DA
+ 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28
+ 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC
+ 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2
+ 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81
+ 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC
+ E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC
+ 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5
+ CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818
+ 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082}
+ Name = 'PngImage21'
+ Background = clWindow
+ end
+ 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
+ inherited LargeImages: TPngImageList
+ PngImages = <
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000774494D45000000000000000973942E000000097048597300001712
+ 0000171201679FD252000003CD4944415478DA8D96ED4F53571CC7BF17EC9315
+ 11864234C607C6D4E9408621F88CBA88D0C64D48EA906C3E3459F40FD077666F
+ 7CEB62A2912C43F0A950A12A3001AD2613810908B46869E69E8B2FBA3087F499
+ B6F7B63BF7E0BDB6D2A79BDCDE73EEBDE7F339E7777EE7DC3248E1303C346BC9
+ A5812FDBED767AAF51D7B9C9F4A07E22595B2655F8DED202642D5E089F3F88B6
+ EE415CF8BE857F9C54C2A402DFBD651D7296C8C5FBD3336EE87F7C8206DDBDA4
+ 1226197C57493E96662D9A7BF9F810BD861A4BF1EFB4136D5DFDB8D2DC9550C2
+ 2482EF2161C9266111E00D470B611C015A75D7E11FD6E2F51B176EF7FC8CA696
+ F812261EFCC0F60D502AA451706DB902A7EB5F60D2F32195B8068EC1E5F1C1D0
+ CD4B62878B4904F7F8392C3A3922C2C361D280B438736900B6D94FA9E4D5FD5A
+ C8A46968E9E8C555FDFC9130EFC3856C8984A72F90E0E31C274AD767A3EBF138
+ 7A2D6E64AF2D82C99A4E257FDED320C4B1E87C34881BAD3D511226D1840A70E1
+ B09AE7269987FB021CBCE49C9C545089AD5B0387CB03E39351E80C0F44892008
+ 278207D830BE297F27FAB6DD41E182A4A9CF0698CDF8BDA31A334E2F7E7A6A42
+ F36D2395303C3C56B644F69C09BA3139C5E2ECE11C5AE727DA9791274AF8B3C3
+ 64A712ABE17338C9C4F70D3D4757DF2FA0829ACF8AE2C2BD410E013F0397C329
+ 0A4E9CEB059B5B4005B38110825C083EF25EDFAFFF518959AF86E5E55F387FB9
+ 19CCC5EB3D61AD661F14320915683616A2B24C22C2F9DE05FD0B10F4450B9C59
+ 6B299C070B23197FE5A082519D0AD6DFFEC677F56F0599194AA8CA8BB1848429
+ BDE40768EABEC6EE923431C6E1800C0C1B2D9852AE8E091FB959058F771643A6
+ 0974F7BF04535C716A236963D1D6A95173601B9128A1286BA4924DEB58DA98F5
+ C891217347096CD29531E16E12FFC1B109DC6A7F3837C9FCAF20397144854315
+ 5B91A15C88CC9DD7A864F90A2F8A729538B6F7DD662748C602B9F37AFE74D422
+ C2C5348D941CAF55A19A8C840B315855758B4A64996F909FEE84C7350D960D61
+ C6C7D1364D7FC829BCFF4A05A97118187901FD1DE3FC85365FA28646BD132E6F
+ 0005070DC0E6CD5015E6C58C390F9748D2D03F3C8E9B6DD1AB38E66627488E7E
+ A942D59E2D9090945DA36EA392B2FCEC28F8B31B9598251FA061B335263CEE76
+ 2D48BED25462DFF66228E4527CF4C55D2AA1C75B38CD16027F3F2C49059192BA
+ 9A0AEC2A2B2212193ED174D2673CDCED9DCB96D6F64771E109059192DAEAFDD8
+ 515A08B94C0A8EAC5A9A2D6396A4F0A48248C9113292BC651F807C1260FFE735
+ F4778D49E129090449E6B25516C7948DD64919A49CD2DF96FF0126B669571175
+ 682F0000000049454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000032A4944415478DA
+ BD95CD4F134118877F5B0A22D84205341E30087E24021A45893131F1E2C178F1
+ 2A26FE07C6C478319E8D9E8C8926EA49E217D1B328F142A24123070B2E6DB76C
+ 0B5DB6A585B614CA47BB1F6D7D772CDAD22DA0094C32997476F67966DE79F72D
+ 97CBE5B0958DDB1601C7719B7EE1D18B8F9768E8A17EB660FA2BF537D7AF5DEC
+ 2F5CCBD8FF22C8C3DF5FBED04D2F73882FAC40CF64114BA6E1F3F9797AC693E4
+ EA7F090AE1FB9AEAD9DCD24A1ABA9E81AA6510239920C530CABB71F7E615EE9F
+ 0425705A6E80753D4B27C8A0AAD24A630EFE5002E25494242E26D994A01C5C55
+ 7528AC6BC866B3A8B7D782B35830198A63C829E2D9BDDEFB4EE7F3DBEB0ACCE0
+ AAA617C155EA29458546D2867A1B72D90CDEF67F41DFD37E3709DACB0ACCE00C
+ AA680CAC685A5EA4B13B38D97E00B14412BC57C2C0E0777C7A37545E50166E80
+ F302E324EC37CD7775B4223EBF0861621AA35E19636322BE7D18361798C2159D
+ ED785550024F2C821F9F82673202419882382A221C0897DEC146F0D59014C213
+ 0B4BF0D0CE9D8244F020FC3CC127C31819E92DCE2233785AF90B53F360632E43
+ 1FD7098A79742E899F047691C0352621264F63C22D3178D177F0F8E540093C95
+ 568BE29EA64C512834468A9EEA6CC34C7C1E6E5F082EA3BBA71097C310F9893F
+ F0B582D7C78EECEFE9EA6883B5C2C2629C5EB373259F9EDDC70F6226364FE020
+ C6082E8E87200B0148A25C045F2B983C77FA684BE7E16696D3A9945A10EBBC48
+ FB0D8FC617081CA44B0D421483181F19C7AC3C5B023715B43637D109AC58585C
+ C64A4A29806B043F84394AC561DE4FE560165E418668C083E6F01281A3CED6D2
+ E4D8853D0D75D8595DC52ED2C89E2C8D5D14F34834C1B2E5873B00C123232147
+ E017A4B2F0B582C14C8E3B5FBDA30A95560BF6EEB6A3916486A4C16187DD5603
+ A77B025E2902371FC072740E9E51DFBAF0926A7AE7415FCE6677C052C1C1565D
+ 81C6FA5AAA2B39D45111CBD2627F7086761E424494E0F30436849B966B4362AD
+ AC84BDA69A5295C3F2D21295619D95E5C5E40ABC4E3F8B79FB99F68DD8ACBD7A
+ 728B332B153722B1F987E170181ADD81F1DCE8AECFDE4D410B1B950A6E7BFEF4
+ B7B2FD02BC08E5EFAAF547E00000000049454E44AE426082}
+ Name = 'PngImage2'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000022C4944415478DA
+ 63FCFFFF3F032D0123CC82D53BCF13655398871123B18683CC46B120D4DD10AF
+ 06A01A86F6FED90CE7774E27CA12922CF80754B776D7050651415E86A2BA3EA2
+ 2C21DA0290E17FFFFE63D8B0F712838DB12AC3CD7B2F88B284280BFEFDFBCFF0
+ 0768F89FBF7F19B61EBC0A0E2218A08A0520D0B3EA2131410E06A5E10A704BB1
+ 5AD0B2EA0186260E0646869230798286831CD2317B23C3DB3DF98C382D00F141
+ 610E0E963FFF18FEFEFBC7306BEB4BA22D3051F8CD1052BD0D6C098605216E06
+ D008FDCFF0FBCF5FB0E1A0C89DBBE335410B7EFDF9CF3069DD23866827617022
+ 0059F266771E238A0541AEFA0CED6B1E91144440FBC186FF02FA76F69627E020
+ 82010C0BFC1C7519DE7EF88661C8B203EFB15A806C388CDEB9FF2458AE6CC679
+ 4C0B3C6DB5C061FF179A2C81084CAF3AFC096E4144CB159CC1D49EA60AB6E4E8
+ F133D82D70B5D26098B2FD25C120C2E67264FAF4E9B3D82D70325763F8F8F907
+ 8605EB8E7F815B40C87010BE78FE1C760BEC4C5418FEFD852451502A82E4E07F
+ 0CDBCEFE005B00323CBA0D7710954629327CFBF997E1F6B58BD82DB0355261B8
+ FFF41D86C6A3B718180A43E419BEFFFA87D5C520F6CFDF08B187B72E61B760DE
+ 92B5E0B2071DB8FAA73164F8C912653888FDE2FE654C0B181971975BDD2B1FFC
+ 4FF292061B5030E5264E75715E32608BDE3DBE4ABA05316E52045DFE0B5CB430
+ 307C7C4A8605614E1244190E026459106027CE70E8E869066201C916209731C4
+ 02140B6805009C1383EFACA508270000000049454E44AE426082}
+ Name = 'PngImage3'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000E9C00000E9C01079453DD000004BF4944415478DA
+ B5D37B4C53571800F0737A5B6ECB4B2F2D2D2D2053408286870CD4C9C0B89989
+ 8ACEB041F035064CEB365800D93235C0EA40FD836D380C085B44C7C30993111E
+ 93199411DE844029B80908586094577B81963EE8E3EE82D311662A35DB97DCE4
+ 3CBE737EB9E77C07120401FECF802B010821A8ACACC7BAC453B54A95E6405AE2
+ E111631B7C9E7E331102E87431313C76B1FFAFFD9E071492C0A3A109218D8AD4
+ 68C68527040281E1799B9FCF2A738306439314971765244598060C3C9E1406FA
+ BA73EE36F6045E381DD6B672F39339393457C4BE748BFBFAE08AFBED572E9B04
+ 94D7B20647645D7111FB7805E58D359DF2817DB97CBE76795E7246717450E096
+ 5C7239E5C7AAA62B99C9260039F977B893B3AA9E84A8FD3603C313BA9FAA5B8F
+ 9C8F0B2D799A73F6AB627B77676E4750A0375BD43B0ACA6ADA7ECE4C8A085935
+ 9097574B1F56C89A2342767A6356E6A0AAB6E3E1AF1DFD5B6E0822D5A1A1C588
+ D71B66D7DF7B3BE0E862767BCF20A8691265647D1115BF6A6031522E9784B130
+ EB9BEF066DA72C68B5C4F5D2BACF5262DF493F935E78684F804FE9C6F53CF8E7
+ 040E6E57B7E04A9572DBB7C951FD26018BCDF8B4FCAC5DDB37F377F86C84AD5D
+ 0353F79A1FECD9ECC22B3EF8E6AB2EB25925B85327D4F70E8DC5640B22AF3E5D
+ 640A004EA7FCC046D7A06D216F6D73E230AD417E59BD243CF8353B081128FC43
+ 0C6A9BBBEF4BF48CBD2582B085970296904B45611C1BEB225F4F67848A40E0FA
+ 0A178C4864A0F46EEB2C3E33BF332735BA6B79BEC9C062BD5B482D8A5998D5A1
+ 0D8E6C60678B01D14331E81D94246509DE4F052BC26400B8FC821E0E5178D9D9
+ 326A5BC516E6737225F0B09BEB1892500FB688E7A5A02E52FD72C08E026F3B1E
+ 2B92CBC676D3E9664E23A313A85EA7910368A6B1E3602C3A1D5DA0D210B14422
+ BBFF6860FC3BD018DEB53AC03797C659E79062CF65C6418346AF981AD3E85438
+ 9C56D3692C864A6EE1E0A3D62AA6AD0787261A210D250044BCD45A832DB93413
+ A8E70544FB49AD5100DB5FF1D14667CE3732F103056A98EBA322C42D8D9ED239
+ 348725AEB39CF56438FA2E5066FAB893B8C27D4C4A1D279770C9DF3E09CCE831
+ 8002CF12F5C7B28C022E11BF89508DD489AA1ABE26421D12414998FEEF23BBEA
+ 6683EF46ED7D09BDACD756A61AE2492A05CAA539A73C3A60EB6F03338623D170
+ C4D328E01E5DAF21A47D5A864EE92FACFAE49F12F42F28DA84C93CA9F67E2832
+ 3FECA4C30739DD5567F067F3BEB9A90035FF9468388A1A053CF8CD7238FDFB3C
+ 55A7F2E92C8F1D7B329A42A1BCEE52ED8EC9AC11DE56E61A44EE3833DA13DC5D
+ 9E50B30CB848023124606514F03AD5D24F99E9B5D42B64FEDD5509834B837E37
+ 98660CD8E7B616BF2745DD985C267D977E52745D88D49F0025254F8ED0EFFB22
+ F21EFC48C0D52860B9B7347B2D9C896252E70E8B2AE24BC1CE142AD0B97ECD36
+ 577DCC3197F3BB71762B8FC3CAD8C0D46D958FF59DEA2A4F2804DED99B009D71
+ 0B204803D170EC43E3651A50E88F52F4D55C0B45E563B9F597900031185DF381
+ BD85A262DA801F5FBAD8C0020F1EDBA61ACE8D40E50225145722C1804AE39355
+ 7480A83FDAF8E287E69FCF275BE7C82EC7D152A1C650F5B529037EEE59D52C5D
+ 7AD166000C17C85610F94D904F2C0D341ECF79E143FBAFE32F16D672EF3D728C
+ 4A0000000049454E44AE426082}
+ Name = 'PngImage4'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A0000043D4944415478DA
+ B5956D6C535518C7FFB7B7ED36B66E5D47D67663731BECD5B18605D8504C084B
+ 74982DC16468D4F881AD0305E3870550D100EABE482246712A8AA00182BA9828
+ 84252006D7264AA2631B461325DD5C9ABDC0686B6F5FB7DEDEE373EF6869C736
+ B6189FE4A4A7E79EFBFFF5799EFFE9E11863F83F834BFCF211506AD6A7585DFE
+ A99E3611BD4B1553DE7FC0DC797B64FC9C13387B883149017C0064549A528F56
+ 5A2A9E31AE2CD00EDF700AB62B034DAD22EC8B117E07482B3019F61516E7ED15
+ 6F8DA6BB6F79D84D1F0E5A197B8BDB06F06D7A743F5C8827B4997A684A6A804C
+ 031C7F8D78ED97FA9B5BB130E4531E9B2A2D655D191AA9CAE570201C61CC15C0
+ D94911D60EC642DC4915DA9BCA714C97024E6E87C46BA029AE86DA5C08C79F4E
+ A1F7CAB566AB08DB3DC280C19CA77FBBA42877BB776C940F08018444B0DB3E1C
+ EE6178AD1B88CAFDE58E02797526D8561BB1324A00519A191A532174E535181A
+ 1A176C3FF42595EB6360836595E1AB1C9DB660CC39A1EC0F46204E06B0AF4DC2
+ BBB17D0A409E1C032AD6E7E3C7223D8C31803C54E999C8B1AC85F3A6CF6BBFFC
+ 4BB30C3995A2B2D696E6BC2F8602691E6F50D9E79F4298CAD2DE069C4ECC320E
+ 90E32450BF6605BE37A623231122A9782CAF5A0DF7B44618F869F0FC9A55D94F
+ BB275DAA6058549EFB66C45BACC085D9654C02C8F1058F268B09DF64A5429B08
+ 11A97419463304B707E1E014A669215696093F9EDB097C399701EE01C8714A83
+ D60773F1499A1A7C1264D6A0864A54F397A8E65DF3396C4E801C67B4D85F9683
+ 4EB50ADC5CE25351B04972CB76865716B2F0BC8083D4DFAA545C2DCEC6BA9868
+ 34011096ED18C4E1768657659D2501C8519A2C9DB6AB7A6DB955F8E3376EBE12
+ C959F8C238B003E85C3480C497E5E51BCE6C78AA79EBDF17CE21484D5DA80FD3
+ 049916B1872047EE0B20F1ACE212F3B71B5B1EDD343E781DA3D7FA93C4C88E1E
+ 8941CDABA04B5C8F48F289C58BCF2BE76F1E00D55C5DBF42FF5D43D3238F07C3
+ 115CEFB90831CAE222816984DD213446818954158E136463ECD413546E428446
+ FB2E72FA9C80AF759A37B734D4BC9E663070FDBD5721787C890D955C41B45119
+ 3E57F6D29FA31BE8500187E8F1B2B8D80CE459827427014EF0D8FC585DD1C53C
+ 935E3DEC9CC4B06334A9C6247EC4CAB06776FA1F02D5F4EB8ED3743D77F75EA1
+ DE63DB6EE07C1CD05791FB7B6D85B1CAE70FE1D7010722E2DDD2FC13823D1C45
+ 039DD4C83C76D61A8197497D3F8DD43B990428BBADF4CE6505602FCAEE7EA826
+ BFA56FD0018F371417F747E017A650FB027003F70932482D099FA0A9E5CE9240
+ A37127633F739FF16859579ADD3D36E1492A0DB176B72BB7E0E2E23D20450B1C
+ A0E95ECA86A7526DDEC5582F27A759A6852D330575316708615C1A91B0E50D32
+ C9620109BDA9A78F27A9D91D7117D19D6A58AEC6E9340D1AC9350295A796360C
+ 2D557C76241D34D97E5E4A8F9270ED506EC4FF1E32E05FC9675CEF0AFC725300
+ 00000049454E44AE426082}
+ Name = 'PngImage5'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000027F4944415478DA
+ 63FCFFFF3F032D0123CC02464646AC0A66243060B820630103230391006EC1C9
+ 898CEE406A07B2E4890B40C33AA6A268B8B8229761E9E67F0CD1BE4C1886FD67
+ F8E76151C0B0139705FF154C1A18045444212EAFC8061BFEE5C54D86A6E24970
+ 0D75BD790C770F4C015BD2B16802C3FFBFBF19FE01F1D7A7BF1836CC69C0F01D
+ 8A05061153510C7F7D7527032EF0ECF216B025AD73DAC016DCD8D2C870FEC23F
+ E22C787C6C21C3D64DA70886AFB79F1983988E07D8825B3B3B89B70066092100
+ 331C84EFECE923CD027430F9A037410B61A0345C016E095116FCFFFF8F61CA21
+ 5F869230798286F7AC7AC8D0317B23C3DB3DF98C445900321C9452A61E0D22DA
+ 021385DF0C21D5DBC096E0B50066F8BF3FBF18A69F8C2068C1AF3FFF1926AD7B
+ C410ED24CC70F3DE0BB025382D00451C03D00290E120F6CC33B1382DF8FB0F62
+ F8AF3FFF18666F79020E22BC71003210968160ECD91752B05A806C388CDEB9FF
+ 2458AE6CC6794C0BB0190EF2C5DC2B59700B225AAEE00CA6F63455B025478F9F
+ C1B4402F740256C341F4BCEBF9283EC0E67264FAF4E9B39816E8067563351CC4
+ 5F70AB046E0121C341F8E2F973981668FBB761351C8417DDAD045B00323CBA0D
+ 7710954629327CFBF997E1F6B58B981668FA346235FCFFBF3F0C8BEFD7321486
+ C8337CFFF50FAB8B41EC9FBF11620F6F5DC2B440C3B306ABE120FE92474D0C19
+ 7EB244190E62BFB87F19D302559712B8E1E8F4F2E75D0C495ED260030AA6DCC4
+ 1944715E32608BDE3DBE8A6981B45E00C3B34B9BB06A3C24798F21C64D8AA0CB
+ 416C503C7D7C8A6901B8CABC7001BBCB3E7B3E6008739220CA7010C0B00057A5
+ 0F03DD2B1FFC0FB013673874F43403B180640B90CB18620100261ED9D6E5FCF2
+ FA0000000049454E44AE426082}
+ Name = 'PngImage6'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000037C4944415478DA
+ B595DF4F5B6518C73F2DFD4191B66C6C4E8512618376DD28B485B1C126D90F36
+ 8D1B1726264B76B53BAF3431DE99F80F18BDD1449399254B644E1747743ADD94
+ 48169C428131268366832D631BC838FC687B0A057AEA7B0EB692B562417D9393
+ 9C93F33EDFCFFB7D9EE73C47974824F83F976E25A0E59BCE75D1DEFBF00CD72F
+ 7FA4CB0A70E268DD9AC4450C454F17F2E63BEF6784FC2780EAEDCFF3580A6784
+ FC2B403CAE70EEBB007BFD4E22D15846C8BA01AA783C9EE0FC956E0EECDEC1C2
+ E2524648D680E1FB9374760E119A95B1D99FA2AECEC5739BED5C68EBD58AFCE4
+ CA1A1096635CBC14D084B7941761CECB25321D66EAFE440A343032811C959124
+ 498B39DDF275760055BCE5B3761C9E321CDB1D42DC844EA7435114E6E57946FB
+ 4778187C44D3613F66B3414BDBC5B6AEEC0167CF77905FBC096F4D3936430EF7
+ C2301E5D7E67B5409E3EC648D720F353111A1ADC28A226DFB607B203A839FFE1
+ 4A0FF5C71B291169B1EBE14E086E882C0813E488E70D3630CA53F48B4EF2EE72
+ 512852F6FDD5EEEC00EAE973375AA93C50C55C04CC0A8C89D3CB4B5060165D24
+ C242E2DE4A98B1BE2114D1413E7F053FFEDC9B1DE0E34F2E535A5341597529C3
+ 63301703530E3C9B07361308034C2E08A09009DD1A606CE801FB1AABF8E9D7BE
+ 7F06A8C5FAFCC235AC22FFAE3D2E46C661711136E5C266711905A8C0080BC255
+ 707A9E4737832CCE84D95959C6D540FFEA80E32FD56A1FD0E8F8B45683FD279B
+ 90643D2191A62DA2B076215C201C6C109738070392CC2F5F75E0F26CC5969FCB
+ B59EDF5607BC7AB84673B0245A51EDFF925D4E0A859389591D46B1F519E1C022
+ F2633588B489E79B771E70B73B48B5AF428B09DC185C1DF0CA419FB651854833
+ B2E6C2DFBC1BEB461BB373A20E8A0EBB69B9931E4F4DD37BA90B5FA59D2F4F9F
+ E575DF755AF3DE5E1DD0BCBFFACF39B3EC22223EB6E488F01CF163C9B7109989
+ 30D0D6A7C544676EE1609CA6E2DB58BC47986CFF9463AD957F0F78F9054F4A3C
+ 098A2B097E17436C38389A9A455B9D0E0C7A3D5F7CF02E45917BD497C6707B8C
+ E4541DD320C5AF756406BCD8B0334D3C39399F0427EF4FBD518FD751AB419C6E
+ 03267F730A920638B4C7BD26F1E4BE336FED4B41563A490334D63AB52075AEA8
+ 814BF1BF84944422A37872AD846C739B18948CE980BDBE726D22AE77F59C3A99
+ 829C934AD201997E1E6B5D55D1560A771C659BC7CB1F1C73BA92B5793DE80000
+ 000049454E44AE426082}
+ Name = 'PngImage7'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000B3A00000B3A01647F570D000002724944415478DA
+ 63FCFFFF3F032D01235D2C606464C42AB978D3F10C0E76EEE9E4181CEAAE0731
+ 1B9F05AB775E3A1DE2A66B822E0EF2F3BF7FFF19FEFEFB8742FF03D217AE3F67
+ E89DB19261F3BC2AFC16C05C0FB480E1E0E97B0CAFDF7FC5E95A51416E067D0D
+ 49B02513E6AC66D0D3353A03F481295E0B40AEB73751341115E2818BFDFB0F72
+ 2DC4A5A82E87E0CBB75E3014D6F6309CDF391D6C204E0B905D4FACE120B9C9F3
+ D6C05D8FD70264D713133C5A2AE20CD7EEBC44713D4E0BD05D4F8CCB4172A965
+ 5318FC3C6C18EEDDBDCEC0C6C6CEA0A363C400348311C30264D7136BF88D7BAF
+ C129C7232C99C152959B61FDFA350C17AE3D63D834B712AB05FF41AE07197EF8
+ CC7D82C1A3A620C2905E3115C570297975866DDBF7A35A50DBB3E03F30821880
+ AE671012E0C69AC681086BFACFAE9ECED0589D07371C04502C689EB8E4FFEF3F
+ 7FC9C9B070C0CCCCC2202EA30C371C04E016D4F52EFCDF541C4FD0901FBFFE31
+ 7CFFFD1F4CFFF8FD8FE1CF5F18FB3FC3E68D88A0F1F27444F5013116A01B0EA6
+ A18683F0FE9DEBC0110B321C2388401650143EB060E2E063E0E6E165E0E1E621
+ DE07845CFE1D2A7EE1C82686EF7F9818787878C0961C3A749AB005840C5FF4D5
+ 8E61C1850B0C4BB5DE30DC38B585E10D304973F3F2822D397BEE067E0B8871B9
+ F76901B0DAB9AAAF181E9CDFC670FFD173065E5E3EB025376F3DC16D01B1C1E2
+ 9D21C43083D59481B5790BC38B2BDB192E5EB9C1C0C7C7CFF0F1CB7FD4FA0066
+ 0138D9C10C40321C268E6C3848FC75B127D841300B4E9FBBC8C0CA210A361C24
+ 8E62415D411CC3EC95BBC94E41CF9F3F07275398E12816C08A0A4A92A8B28621
+ 43828F3E4AB90FB7809600004F6ECDEFF6DCFB3B0000000049454E44AE426082}
+ Name = 'PngImage8'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000B3A00000B3A01647F570D000002954944415478DA
+ B5955F6852511CC7BF3E9882694B723D6450D4A21ED61FB3879EEA295CABA058
+ D1CB6A23A315C2A441AC4123368A82FE5011066D63D1ECAF6058291643AC8D60
+ 966EB5FE3E64D4966B7B1841B1997A4FF75CF14E773DFE1978E070EE3D1E3F9F
+ EF399C9FCA082190C964284523F73A88AC54020A8F9E3323A7E0B6EB558352A1
+ B2150BAF991C00852B0779742EC143EFDB40CDB64AA3241DDF398EC066F74ABE
+ 6399372AC2E93B53904ACF0BE00F7CC5C4E45FC99AB15FA3B054AD07ECE781C6
+ CB4084876FD743D1DC01D97E736E014DBFC5B8DCA8D3CE17E7387E6D824FCE71
+ 9CB083CE07BD387CA94AF84CE1FC88E8EE3550D45961F04411F2DAD882F4F42C
+ 78821FBB1D3E58E2EF10BD7A425CA7708FC0507F26B7203D3DEB78C423DABA12
+ 38DD8868D02D1C0DF6D4C2B0D3CA16CC4E9F2D3927BC13F43CF2C3526B02EE5E
+ 037E8401F34940AB83C1740C2DC78F0AB74922484F9F0B4EFB1DD70B74D95D59
+ 7717ACDF88AC75C00B084D4FE12F5F8799C7439B6EA10AAB962DC291E6EB30ED
+ 3B84CD152A389D0EB4E9E3D23A3875A19BACAD34804F0F6D994A4C3B939A8EC8
+ 987378FA9975B0D770168FBB5A9282F62B3D24164FA0D8565EBE985907BB9E8D
+ CF085A2FDE226D4D07F302A7FF71988A11619C8E7178EAF531EB40BF64697182
+ D9703AF6FAFCCC3A90088A3E9FD41131EAA0E01D644B9E7C267833D0C7AC8382
+ 04B9E0B4BF0FF533EB20AF201F7C8A7FAE0E94096B3B2BC6F12DE446F87B046A
+ B5062AB51A9FBF8CB00585C0E97C75831637E49B206F7F82B1610F86863F41A3
+ 5980DF7F8800A7AC0C413C91064883A7E6D3E1747EA2297945538240700872A5
+ 4E8467085AAD0770F3FEF3B95C26A14522110C7EF899011705A99F8A39D3F9B6
+ 62F506D4ED5827F9E71204A56CFF01E5E2820611E3A8010000000049454E44AE
+ 426082}
+ Name = 'PngImage9'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000029E4944415478DA
+ 63FCFFFF3F032D0123B2054BB79C24CBB6DE290B19CEEF9CCE882C063317C382
+ 681F73920C07EA619016136628AAEB43B184AA1618682A30BC7EFB19C512AA58
+ F0F7EF3F8615DB4F33D818AB337CF9F613C5128A2D0019FEF7EF7F86D5BBCE30
+ 38596833FCFAFD07C592733BA6319265C1FF7FFF19FE02F11FA00520F6BABDE7
+ C0918C0E48B2E0D687070C53AF4E62B8F0F6020348B59BB41F43A1661603EF12
+ 0E8637E15F188E9C7FC0F0F5DB5786B76FDF82D5CF5BBA89780BE6DC58C0B0FD
+ D9620C4B4F3FBFCFF0E4EB038697219FC0C1F5E7DF3F30BD79EF29E22D38FDEA
+ 0283F906230CC303551CC1F4FA3BFB199E057E801BFE0F18275B0F9C26DE0287
+ CD4E0C879E1F6028D56B606834AC021B62BEC582415D44106EC123FF7770C341
+ 71B3E3D019E22C38F5F20283FB7627860D6EFB18CC8575A0A9E61F83D5762B14
+ 0BEEFBBC811B0E8AF83D47CF116741FED12206676064BA49DAC00D1758CE8511
+ 5C773D5FC30D07A9D97FE202610B400A6BCEB430D4E95532FC03CA234722321B
+ E6F2B92FA631C408A581C50E9DBE84DF82084F5370068219C4BF9413C3D5F7BC
+ DFC033DAD467ED60B164E112B0FA6367AFE0B720D4CD04C595422BB8E1A9E6E6
+ 9BF70C5BACF7C00D7FCEFE942160971343B16E1D83277B3058CFE98BD7F15B10
+ E46C84121CA2AB79512CD868B10B6CF8DC97D319BA2F3530D8493A30F42A2E84
+ EB3977E5267E0BFC1C0D50C25A722D3FDC0274004A454DC67D0CAEAC81703D17
+ AFDFC66F81B79D1E4A10C96C106490E15600E75A74806E3828C2AFDCBC83DF02
+ 0F6B1D942092DF2CCC70DBE315C3F2D74B18763DDDC400D265206CC020CA2187
+ 61380810B4C0C5520B45132C4271255564C389B2C0DE541D258DC33210580C4B
+ 9E40369C280B6C8C54C125222500AF05D82A0F7200CC0200F191E9EFB5062090
+ 0000000049454E44AE426082}
+ Name = 'PngImage10'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300004E2000004E2001167D99DE0000035A4944415478DA
+ ED954D4C134114C7DFEC6E0B420B085A6A040DD88A45C0C4602D4A2D281F5589
+ F1AB6AA2094A4C5502DC34F160EAD11BF1E4498D462F1A43FC408BA052C11435
+ F8890AA222A2601B6B2D94B26DB73BEEB4168B16E1E2C1C4974C7627F37BFFFF
+ CB9B995D843186BF19E8BFC1940653012693897AF9CEAEA5696825732FE72B6B
+ 3877F2B6F01A982A77435595F48F0646A351E4E3E3342CE7BDFBD1F6F1E7024D
+ 957CE6BCED6FCC66EF6485D71D3DDE617FDFAD9ECC00E96B6BC5727FAC9A65DD
+ 41718EF795A6CBE6F9699A6925738F67ACE091A5A5235AB2C1502DA1E3F108E1
+ A219A0CA4A530C15CFE68F7986DB0814F0072AAC2DD71BC9A276FDA69D98E7CE
+ 7198DFDC616E6C8866A0D6EB13C448E48AB6078278A5209E22888F05C531E075
+ F76E5CBB11660B4AD716D30C732BC0F37A6B5363535403B56090F2BB01D209E2
+ 4AA96C99DB1D6A0BE251455BD395C6C8E4253A5D929491248F70CCD7A796CBDF
+ A219E495EE8A4F605CEE09060683412C92CED6F03CB64C26FE830F9F6B4A187C
+ D41D144EDECAFBF7D50889AC41039D4EC7C83354050850B0721FEB392441D892
+ 1827C62C93E892393F7F3863B1F822049142A110CB6473553C254AA431041806
+ 80E3001266A7D8ED036FFA3A3333F94237CB1103B4AD72DF0A0A51EDD18AE91F
+ EA3F2191CCBADA7CE9ECCD88EA614B556DC9E0A7B71BE7CF997FE0579E773B2E
+ 386C0EAB5CA962D1DE9A835AD273B25873B41E66C602385900DB28C0C008C0F3
+ 0127F49C3282D3ED2F7FD16626170C6FDB53534CE140F39FF8A10FB6D573E6A5
+ DE463B761FC061F17C39C0A03B34C209244892F9702924C5607DD6E2A501719C
+ A4793A7C863203D05C450ED6166AE1C8B17A9821F4718C9B5811097A580CC7AA
+ F38070E1980E1FDC2C7966567ED1AAD50F4945E1707943C3EE9998402A229196
+ 9A06D3E159AF6719D2EB6B63B20A942D19E5C6C2746908F0064209E449E0272E
+ 1BBC3D5F37D865BD6BCCC9CDE5E4694AB3667F3D4CC5B73E7EB020784CD76EDC
+ BE70C4EBE9D96ABA0831B470DC9CE2F1EA084CFAF9CDE95C33EAF8D49E9D9D0D
+ 0AC5224D5C72AA85984CC6B37E9FCAD1FFBA7BFCA269CACA14CB57569CEEEC68
+ 2EECEBED1B4F50E6A8067BBA7B770F753F89FC4453E5DB77AE1A1D1EBE13C986
+ F9AE675D455FDEBDEA0DEEC1BFFF47FBE70DBE03EC16D6DE8FAAF1BC00000000
+ 49454E44AE426082}
+ Name = 'PngImage11'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD252000003784944415478DA
+ B5566B48544114FE362D31A3C78F104C7B50145A902FECE15299D12668ADBA61
+ AE925AA405811585F4A31745FD308A0A42DB5EBBE96E56AE9AAF30CD2CC5C79A
+ BB998FCCEDA5640F15823233DC7B9BB9EBBDEEB65BAD5207863967E6CCF7CD39
+ 6766EE15B12C8BFF29224AA0CCAF89237DD63F051689E21323C5D91CC1F5BC6A
+ 96186302A0EB68EC0CC3C2C430309918B34E7A2AF2DD2751A23A21B22210F965
+ 9A17EB5304DD9ECD34256382FF25C11EA84D82DB8A6B9CDEFF301E771FE8A0D4
+ 94E0E1ED745B020A36F69DD39EC5F4552A7CAA88437155A37D02478421FE96E0
+ E6366293C610FD5E75D3F822A0E096B9363116E0C4765FA74677690CCA6B0D63
+ 23287EDC850B375BF0A4AD177D9FBF63DA94499086CCC1B15D0198E2EA2C44E1
+ 21D1E04DF16654D6373B4E702CF3098E663422FFAC049215B35050F5165BD22A
+ B8B9D0200FA84FAE11A2F00ACBC1CB42191EE99E395E03D76597F1FD8709BB36
+ FB207DEF320E689A58C9CD393B89D0551243C6F81A985357D3D4EA5804F47424
+ 1DA982BAD488C329FE48952FC6FDDA77901D28177C68CE79F0F91177D09E2B45
+ DDD3F6BF13F005A5EDC730C3919C57B7C063E6645434F40804AF8B64233B67B1
+ 28528B67B736A2B1A5E3F704F412D1313EDCEE8F0388492B87FE793FC2C45E50
+ 1C0A86A7E4A64060BC1B2D6CC447560083261CFAF64E5B82046930B7800233FC
+ 1927FADAE462E85A7BB9B9B6DC284C759B08CF0D390241475EA4E0CBF7CD1D46
+ FB04F4FA0F356CB75AE0BE2E1B43A4C854CA2E4AA02A3222ABE4A54060D044C0
+ 89149BFAFAC616A1E146185A3B5FD912C46F5C8989810A7C23EF8AC9E22229B4
+ 1D38AED07360625F77246E5A0065A111F7EB7AE03C4184D80DF3B047EE8D3A6F
+ 4F81D4455B694B200F5F0E97A02BF85293387A4B99D14233BF1C45ABB490A65B
+ 321B29CA73C84C48B54F10131664B573BB4056F3E6776778C447BF74EE9F09A2
+ D707622AB9407D95F1E6428F000D5B00FFFA06D5FB8CA685CA8E3307A1D877CA
+ 6A4C2090860660C66A1537D853160B8FF51AC1E9457E14164AB582AD5787C34F
+ 5E840CC34E6ED7ECE057B0FD1FC0F4BD0778BDD380EB060B8288103F3B69F8F3
+ EB49D36229DBB78A7145556D3F024A5058A973E89B604F86A242B02D7C01AE92
+ 636C5303FAD1CFD196667D1B1C1A3741EC9DD348F40597168D6C3F92E2A4A31F
+ 7DF207306E605E3200E1FF6727C90CAFFF0482645308AD8246DC000000004945
+ 4E44AE426082}
+ Name = 'PngImage12'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000E9C00000E9C01079453DD000003DC4944415478DA
+ BD947F4C1B6518C79F7BEF8EFBD56BAFC7951F33BA75E9822B88520C88D92C93
+ 05C410CA70986D3261B1DB3F261B24D3F92331F2A799C6B0F96B666668165D88
+ 12E7FE598CC14C639C43D0988D41B69974DD5A680B584A5B68EFFA7AAD81306C
+ 8D0BE2935CEE9E7B9FE7FB79DEF779DF97C018C35A1AF1BF020882C81978E004
+ A6EB6BA106236D0B42E4BD080045E3AA8A35ECA3587A607709717531F60ECD7F
+ 0378FFDBF806A9807E2734956898F027A94844054D03C86310701C02AB950B47
+ E3DA075D4EEEA5BB069CB898DCC671D03F3E1655BCDE0548A520F3A4D332DFFA
+ 9BA208D8B2D5047351B5EB48BDD09B13F0E27B41E7A580E5870B3D849AF64F5F
+ 49BA522AEE1B198E48B11806DE40416C4EBDA380A9192D03E278048D0DE61BDE
+ 49B2FAE5ED309515B0AFD7838D14FFEE3C6DE9AEAD559B6211AD7F642842A91A
+ B1243E3D1D85D999202416E2C08B0A30BC5907109999382A045C5E2674B6DAE0
+ 93AC8096377EC7452C8F79237DB6AC5CAC1BBA14165329B4243EE10B82DF3B06
+ 34237E93C2DA607C36F4B849595F67B26C22B03E0B399F82E626F9B3A76CB027
+ 27A0D0600235F9D7325034B5241E0C84E1E6F591A02E7870F058D599F4F87AE7
+ 295654882F8B37D434D08CA4C7226869967F7CA6143D9A1320911C305C5EC65F
+ 140F8713E0B9368C3535F5E4D069D7F9E53DB0EF38D526291BFB8DCAFD603090
+ B0C3257DB7A79474660534BF12C0884A81C9844056988C7824A24168D283FDDE
+ AB472F7FD17164E52EB3B77D7C1FCF291EB9F8613D8F84D656F3B95D25A83927
+ E076488375051498440C825E5178568399D0ED9F3DD7475CE35FB97D2B01B627
+ 3EB218154B405E570D160B05AD2D52DF4E1BDA97133039A3427AD714EA0D33EA
+ 907455A169350E40BA075EB37CBA12B0A9ADEF1E91C9BF251557C1462B03CEAD
+ E25BED65E8705640E5013F9E5767F553A4014AA9A07700B4E43CA49271482EC4
+ E7584172FD76A66E7039A0F2D9F35588CCFB49904BC1F1100F763B77F0390779
+ 3C2BA0F11830E274805EF4037F3BD731F5428F757EF91FC7DEAFBB04B3ED6D82
+ 12A0A9D1A4996554ED76D0C35901FF74D965B347BA6F725AD8F73D27592BD3B9
+ 9DED66DF956B0B9547DB8489FF0450D171712F6750FA106D440F3EC0E9CBC39C
+ 7CBE266FFF5DDFA6D9CCDE71B98867F02F2C5F50C43024EC6C312646C763F6E3
+ 9DD28D5503CADB7F1568160D7086C27A8AD42FB97A51CDB75087DD0EAA373DBE
+ 6A40C5FEB10F395674CB324B6C731A4010D09B7E0FF56ACFD34462D580C70E85
+ 369BCC7874730987CB4AD9D1C980FAFA0BDBD9CF97C7AC0AE03C3423EDDA2D9C
+ 5414FADCAD089CEDAE20FE58199313B016B6E6803F0192C0D6E065D4DD9D0000
+ 000049454E44AE426082}
+ Name = 'PngImage13'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A0000053A4944415478DA
+ AD956B50546518C79F73CE2ECB5ED9B3ECB22C48800A02CA45101BBCA005D9D4
+ 4C17758C6FD57899FAE0D4871AB3CC6B5FD2748CA91877600AB3A949CA4427E3
+ A65C1409729565B92CEEB2807B935DD80BECB2B773F6F4420A5841493D33E7D3
+ 7BDEDFEF39FFF799F760F058C5601F2BAB443E079B0C077DF250304086432117
+ CDC6AD3EA77FACAC6CAF77EAA5B93BB07F8B3EFD55A37872CC95C7E5725E6671
+ 584F4570D871188E7182815068D2E3354E38DC17273C8E2B9DC33A4D735599E7
+ B10495E76FC63B6CCED7F8A4708F58267A429620C5C4B1628C601310F006C06E
+ 1A656CF7ECA151B3ADDB366256EA07BB2EFEF4CD19FBF427FF13FCA4F29214A3
+ 88BD9218F2CDB4DCA531B1F1122C40B0C11B02A0C37F74C822502A011F63EA37
+ 33BACEBB8377BBD5A75B9B7EF956A3B9E15C50B063C77922AF20622B29979CC8
+ 29484D4C7F428647E038DCF703BC70E826681A34F0F9B15720398F0452C0000F
+ 0FC1B0C640AB9A3ABA55ED8DEFFD5C5D797541C1A7E5D5F2E024766C59CEB29D
+ F96B5388380E0BC351CFEE2040E187B3024516096C1680044958FE71467D4D1D
+ AAABAE52B65D6F38BAA0E0E8890B05B21871E5AAC28C94D8043926A601F80480
+ 651260DB47B382F47C12BC14008ED6A2793458D4FDE196CBB53D576BBE7B635E
+ C1543C2B32A8ED4B33932A5617670929161F761EB9396F330F6519EB49A06C56
+ 4655D3EA3A5B7162DF0282C3112969A9AFA7E7A794E61467478E072360FD66E5
+ CC7A6671E634746E4D0956AD2301BC4EE8ACFDD5AF2C3DF2C9BC824D9B0EB30A
+ 3624EF589EBDBC3CB7389B1F2004A06A76CEAC2B5BFA66BA9E5B1B3693601DB6
+ 30B7EB5B3D155F1C2B5DF00C0E1CAE2C8C8E8B399BFB744EA2302E16333B3020
+ D08E680EC09EE3B367B0BD98041A4D2A9A5AF08469E8EAE8635A2E5D19BCF07D
+ D9A90505EF1CA84814F1F92757ADCFDC96929F8A8F4DA2F9F7014421C1C62DCA
+ 9958B622C154518866754E80A6454D55559EA96F69AA3E3EAF40B57FCB726D50
+ C0D2466DD9268D4F7C376B6396589A28C7EC1E0218344D7DEDB371BD84040CC6
+ 80C31F64746A1DEABECE5873F9EBB33A9DFAB3BF15B41F78A690C7659A3D9152
+ D044AE8500AE08B1F83266C593692C91428A071836BA0470E0A2B1E4A10747E1
+ 38C6BD8C65C014EEBCFE9BA3B1EEC7DAB6EB57CA298A6AFB8BA0637FF18B3C11
+ 5D91B03A534684ECA0712583C61D0316271EE408E4DEA495295162B904E39242
+ 60B1D998DFE367D04507F6210BD577476DBD73BBF9467B5BED799FC7D38470EE
+ 47041D1F146D1788C22715B9EB92843C0A5CDA4EE8B708A163221E8C7E4269F3
+ B0FB2339FC2269AC224D1EAF904444B2591E97276C1A1A720E1B740383035DB7
+ 7A7B54F5341DB88D702E987BD94D752E10D3A58ABC8D4922AE7F1A6E30B2C130
+ 26048DD50A23E38EE7CBEB354D19196B93A3158A748C2696D1B43F0AC5002EF7
+ 98C334ACEFF47ADD030835821EDF432EF630733E9FFA217ECD3A998817828981
+ 2ED0E93130B824A0350D41B7590F6E7FF0B9BA2E67CD833DE8E6017410403CE0
+ 4C4D68706A90E0CF3F1CD5C1E2A24801D1B0243707F85C149AF60E188609E877
+ 4483D6A8875E8BDEE5F4516F35F6B8CEC1220AEB39FE2CB3247B25F0055C14CB
+ 2D1834B2C0E010836678007AAD7ABBCB1B3C78AD775CB918F8B4A0FE5409B366
+ 752A50860E1832A1CC4705A0351B416DEC7721F8FBD7FAC6CF2C163E2D38B4EF
+ 6D2647781F12682F82F3A0CF6C821EF3008C7A03AF2E36964704BB77EF629688
+ F9407A6CE01CB987E006704FFA76D575BBBFFCAFF06941494949915020688811
+ F1E15E4F2BD82CFA5D63DDEE732A80D0FF21F81D69327688E78891A000000000
+ 49454E44AE426082}
+ Name = 'PngImage14'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A000005234944415478DA
+ AD956B4C53671880DF7329BD9CB6B4A5174A454005112F205E16DCD46C3097ED
+ C7B2690CFFB665BAE80FB3FDD8E2DC8C739AFD984EE3C8326203D9702E5B069B
+ 139D8E9B82283299454AB9147B81DA9BB4D00BB4F476DAB3AF80896E02D3ED24
+ 5F4E4ECEF99EE7FDDEEF7DBF83C1135D0CF6B9BA4E18F2B0C4896848118B46C4
+ 8958CC1767E1CE90373C5E59B92F98FCE8E119D8BF459FFAB6553435EE5BC7E5
+ B25F23D9E4F3296C56068663EC6824169B0A04AD931EFFF9C980E7728FC5A0BB
+ 5657197822414DED4D95C7E57D93120BDE11C9848B6599524C942EC208160191
+ 6004DCB631C675CF1D1BB3BBFA5CA376B571B8F7FCAFDF9F764F2F7921F809F5
+ 05294613FB2472F1DEFCE225F27495048B102C08C600E2899908490265251262
+ 6C4376C6D07377F86E9FF65447DBEF3FE87437BCF30A76EEAC25D695A4BC2E56
+ 488E1795E465AD582CC353701CEE870106BD00D1F84C0E481C40CC678087C7C0
+ A233C7356D5D7D9A5BAD1F5EAAAFB932AFE0CBAA7A45740A3BBAB468E9DB1B36
+ E612196C12C311D11F05E81E07F044101F9B192C12408224647882D15ED5C69A
+ EAEBD49DD75B8ECC2B3872FC5C894C2EAA59B5A520373D53818950C41401E098
+ 0218F2CD940B8F35B38A200D80A37769BC3838B44389F68B8DFD571A7EDC33A7
+ 20999EE505F48E25ABB3ABD796AD11D024056EEFC2BBC6E502D02E27A369E8F0
+ 9DA93EBE7F1EC1E194DCFCBCB7566CC8AD282A2BE44C445360EF6737E704EB5A
+ 7470E9B73D4071D043D00B3D8D7F84D5159F7E31A760EBD6C364C973393B9715
+ 2EAB2A2E2BA422041F4AB6AAE78D3E295009019C1607D3DDDC11A8FEFA68C5BC
+ 0B3E78B8664B5A86FC4CF10B4559828C74ECBE77E1B6C9498D436FD720D37EE1
+ F2F0B99F2A4FCE3BE3FD83D559428A3AB1EAD9D5DB7337E4E1E353A8FE4300A9
+ 6C00394A059B98ED83590A8DEE4EEF24E8DAB5745DCDE9E6F6B6FA63730A3407
+ B62DD347F9A43E75DB76A92AEB83359BD788A4590ACC1D208041D5244896650A
+ 2A4FD4033896DC7C063CE12863D01A50F44DD6868BDF9D3118B45F3D5670EBE0
+ 8B5B785CE65A8023051D67234470658CA464CCF267F249A1528A4718549B0C0E
+ 5CB4021E1A3824C03311641C265BA2E7FA9F9ED6A65F1A3BAF5FAEA269BAF31F
+ 82AE0365AFF284F1EACCB5AB6544CC0D3A5F0EE8FC727078F1289BAF0866AFCC
+ 4D15292418572C0092C5C2C28130830E3A708F38E8C13B5AE79DEE6B376E7536
+ D68602813684F33F22E8FAB874075F9838A12CDE942DE0D1E0D3F7C09043005D
+ 932AB08609B52BC01AE2B0A95269BA325FA1524A52382C32E00B246C23235E8B
+ D9601A36F5DE1EE8D734C7E3916E8443ADF850DB2423E78BE215CA759BB385DC
+ F034DC6C6581795C003AA71346273CAF5435EBDA0A0A36E6A429952BB038B134
+ 1E0FA7A23480CF3FEEB1598C3DC1A0DF8450A368841E70B10739A728FA67D5FA
+ 4D32212F0693A65E30183130FB24A0B78D409FDD08FE70F4E5A65E6FC3EC1CB4
+ C5903C2488590E3A57219A2C24F8FB0F4773A8AC94C3275A1615170185DADCAF
+ BF03660B01439E34D05B8D30E030FABC21FADDD67EDFD9059BE03117D67FEC25
+ 6651E14AA0F85C9496DB306C25C1EC1181CE628201A7D1ED0B460F5D1D98503F
+ 0D7C5AD07CB29C59BF360F6873178CD850CEC7F8A0B75B416B1DF221F8475707
+ 274E3F2D7C5AF0C9FEF79822C17DC88C07119C0783761BF4DB4D30168CBCF1B4
+ 697944B07BF72E6691880271C005DED17B086E06FF546857539FFF9BFF0A9F16
+ 949797970AF8FC16B990827BFD1DE07218778DF7F9CF6A0062FF87E02F9F6855
+ 88E7298D620000000049454E44AE426082}
+ Name = 'PngImage0'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A000005A34944415478DA
+ 8D960B50546514C7CFBDFB625958DC455049C8074A3C44B490C67C8C5A098A8E
+ 8E61A0E68C363A4C884C5A3E7240D1F1C13496A58E634FCD0AABC9416DB29C18
+ D9626C542052234904158170A10576F7DEBBDF7D75BEBB0B3E82F49BF9CF7767
+ F7DCFFEF7CCF731918B8E950C1283B6AB8D96C8C62F5AC4994149EF0A4197F6B
+ 4575A13894D29F81AAAAC00C601EA6D3416A5090F9F9509B65AA2D3C74C490E8
+ C121C19620D6E316E4F616678FCBD973C3E5723B445E2CC7F81A94F7710034EB
+ B17ABD7E516C42744E424AECA8F8F1234D23C63CC10C8D8900539001BC5E1E5A
+ 6EFD0DF57537D53F6A1BF9FADAC66B6D8D1DC7144529C3776F51DF8100D43CCD
+ 1E11B626754A52C69CACA9831252464358B815581DA305CB8A028AAA804F26E0
+ 1638686DBBAB5EB9F417549EAA71D6573595096E72103DAEF442EE07B0A8F1B6
+ 48EB96CC97A6A72F58362B3866F43046A763FBD2A1C6C5F90ED8F8EEB3C0893C
+ 78509C28809BF74243FD6DF5E7D2AA9ECB3F5DFF9678C91E0C6FF0FBDF034418
+ 0CBA4DF397CE5CBD7CCD7C4B544C24A36391C930BDB940D19A735AE0EB7B9F06
+ 0FE1347935103EFB38B8D3D0AE3A3EAD72D59737BD8361FB513DBD0093C1C02E
+ 9B38257157DE9625914F258F445F06588645E1D46048515E399C2E3D08F372F2
+ 20B7244933778B5EF05210422888230234D5DC81F3876B9B3AEA5DEBD1F73402
+ 240A181E3ED476287BD5EC3959AFA6B366B34903E8581DF66C9F396D14B0724F
+ 3CB87D1E70138F96B936020471124E57B7176A8F5F93AE7F7FFB33C9236D4440
+ 07CE33A4C7A5C41ECDDF9A13999C1AA7654DB3A7806DF9157DE6BD80FE5AD4AA
+ 0EE071148244A0F9421B5C3DD2D0E469E65620C0C1982C86E21973D336BF5698
+ 6D1844774C20FB9D05950F98D31D24490A88921C90FF39B7E02DB0AF6C418080
+ 001F74B5F640DD478DA2EBF79E4259944B98109BE5544E6E46E6E2D5E98CDEA0
+ 031617F7ED75171ECB9C2A7F7D21985FB901BCE407705E011A4BEFA8CE739D47
+ 245E59C9D822C2AAF28AB3274E9FFB0C43E77EDF869AC736F71109DED85C0CCC
+ 92BAC0088876465ACF38D5B613CE5F658FFC1C631F32A8A660D7D209A93393B4
+ 1D7968F3953E407FA6D243CF9B0A77009F558D009F66EE9345E83CD705EDDF74
+ D6CA6E790263B5592A96AD9B37EDC5ECC98C04321045842FB7DE8413C7DE7FA4
+ 39ED0B8B77C13F0BCE6BD3A3017C22749C76A9DD673DD58AA0A432C1A1410766
+ 2C9A949BB576B60E8218201844213FEC76C1E71FEEFD5F73AAED3B4BA0655E05
+ F81040307BA18B40676997CAFF269C54457521C31AD8E58993461F78796346A8
+ 2DC61A18A61F72699F0A1FECDFDD6758F06651BFDBB431E34704F8DFE11A04E8
+ FECACD49B7E5125556B7D383161F1963FB62F6EA2929492FC4323E55BC079125
+ 683C6C85F7DEDEAE01E8822AD957B5E9E051DAB468BDDF5CC445F73838953B2B
+ FCA276AB5BF01C545240A8C1ACDB903C2B6EFDF455A966A3DD0082ECD3168B42
+ 44EC5D47A361CF8E426D41DD8B2EF6ED169A756FE634195F1B016F19D72DD5C9
+ 5B41828F11E0E9BDECE22DB6A092B4A5E3D3C7A63FA9978D0AC35388F6B27F67
+ E8BF4ED602DB321D81D1899A4445F2F76E51E52A0442CAC5E340A010439BEFBF
+ 4D8DA8CCC1636D45E316C4260E993458279914C6171809096CBFF09393E166C6
+ 59CDD01730A72324682E54119138C845F52E6C432F074A7AB8E0846255586C1F
+ 655D1B3D6D5842449A5DCFD870573DB026FE7511E994507311FF6B2720541322
+ 568BD56A3BD0ABFA3B943050C9B4A266996C8615F6C4B099D6849060D3082303
+ 363CD1264583116AEA45E05DEC9B7C2AA9177BA4EBF2192CFD9FE0BB9528FE51
+ 45DF801AC31AD9857AAB3ED318AE8F3344E843749178EF5A8021DDA24ADA4549
+ 724A3DB24BF95375AB65B8A02703F5587A54D1EF6DF477FAC91285953A99D1C3
+ 38303276BC074D8A0CBC4A54271EFACBA8AB18D30EFE4F97FF340AF8172272E4
+ FE66E507F40000000049454E44AE426082}
+ Name = 'PngImage16'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300000AEB00000AEB01828B0D5A000005A14944415478DA
+ 8D960B50546514C7CFBD771FC0C2E22E026A8A2F140145B490C65047AC0445D3
+ F111A463A38DE608CA949A1A83864C2AD5E8543A4D33659AD360E3E8A036D958
+ 069B943D80C8576E12A8BCC28559D8C7DDBBDF7D75BECB2EBE60F49BF9CFBD77
+ F7DCFFEF7CE77B5D06066E1C2A0C65450D0F0D350C6375AC5194141FF19166FC
+ AD0DD58DE2514A7F06AAAA0233807924C7415A4848E8F31116D30C4B54C4A8D8
+ 1183C3C34C21ACC72DC81DAD0E97D3E1FAD7E974DB449F7801E3EB50DE2701D0
+ ACC7EB74BA25F14923F29252E3C7244E1E6D1C35EE2966485C341843F4E0F5FA
+ A0F5F67F60BF7E4BBD56DFE8B3D737DE686FEC3CA6284A05BE7B9BFA0E04A0E6
+ E9D6E8C882B48C89D9F396CD1894943A1622A3CCC0728C162C2B0A28AA027E99
+ 805BE0A1ADFDAE7AE58F7FA0FA4C9DC35ED35421B8C921F4B81284DC0F605193
+ 2D31E6A29CA5B3B216AD9C1316377628C3716C5F3AD4B864A30DB61D781678D1
+ 071E142F0AE0F679A1C17E47FDA9BCC675F9879B278997ECC3F0865EFF7B8068
+ BD9EDBBE7045E6BA55050B4DC3E262188E4526C30473D12EBB0A2AB5E0B57B13
+ C14378F06A201E3C7E1E5A1A3A54DB17354EFB85A6FD18F231CA150418F57A76
+ E5D48CE43DF945AFC44C48198DBE0CB00C8BC2D260888A5192224169810DCE96
+ 1F820579F9F0D2CE58F02284F68482782240535D0BFCF2697D53A7DDB9197DCF
+ 2240A280E151432C9FE4AE9D3B6FD96B596C68A85103702C87572C11CB8084CF
+ 7E4584F736546900DA2824638BB1B70708E2252C578F17EA8FDF906E7E7BE74B
+ C9236D434027D619B21252E38F6EDC9517939296A0654DB32F2DBCD8EFFCA500
+ 3AD892A4C0D2570B21219F0737027CD80B4122D0FC5B3B5C3DD2D0E469E65723
+ C0C6184DFA92D9F3D3776C28CED50FA2332690FDBB85D57DD9DEDF82E6A2246B
+ 5AF5FA56B0AE69458080003F74B7B9E0FA678DA2F32F57B12CCA654CB8C57426
+ 6F7D76CEF275598C4ECF01CBB25A0FCADEB8F408E061733170BFBEF06D80BC6B
+ 1A80F70AD058DEA23A2ABB8E483E650D63898EACC92FC99D3A6BFE338C36B808
+ A0A37F606BED038081CCA9FC44822D3B4AA07BF1AFDA1A693BE750DB4F392EC9
+ 1EF939C61A3BA8AE70CF8A29699913B5A9884B09449C31878BEC7D80FE4CA587
+ EEB7179742FB822A0488D055D90D1D27BAEA65B73C85315B4C552BDF5C30F3C5
+ DCE98C0432109C2DA22CC189DD2D1AE049CDDB722AB5ECFD7E113ACF3AD59EF3
+ 9E5A4550D298B0889083B3974C5BBF6CD35C0E421820184421DFED75C2A9631F
+ 3D91792BCD1CEB4F307BA19B405779B7EAFB5338AD8AEA6286D5B3AB92A78D3D
+ F8F2B6EC084B9CB9370BD4CFFB49BFD3F4C3F7773F98399AD3C1F54BBD89F10D
+ 02F47CEDE6A53B72992AABBBE9424B8C89B37C35775D46EAC417E219BF2AF641
+ 08968ABE4402CF3D4747C2077B77DDCB9C9605CD8580B98883EDB1F12A7F5EB8
+ A8F6A8453859AA2920421FCABD95322761F3ACB569A106AB1E04D9AF0D163515
+ E5205004B97C02EC2B2DD6CC5B727ED4B20E664E93F1B713F056F03DD27519B3
+ 80CF11E0096E7689264B4859FA8AC959E3B346EA6483C2F8E460B77BCD697DC3
+ 4E3EAD05DFCAFE5E7BA6A2334EBBBA4595AF1208B9201E0702C518D67CFF6E6A
+ 40E50C1E6FD93969517C72ECB4C19C6454187FA02724D083A8D3D3D1FCBC66E8
+ 0F98D31E1234176A88486CE477F52EBC835E3694F4F0811381A7C272EB18F3A6
+ 1133872645A75B758C0567D50363D23B2E222D093517F1BF0E02422D2162AD58
+ AB7600DDAABF4109031D9966D41CA345BFDA9A1C99694E0A0F338E323060C195
+ 6C543418A1A65E04DEC56B935F2576D125DD94CFE1D17F18DFAD46F91E77E8EB
+ 51E35803BB5867D6E518A27409FA685D381783FBAE0918D223AAA443942487E4
+ 929DCADFAA5BADC0013D1D388FA5C71DFAC1467FA79F2CC3F0A44E617430090C
+ 8C15B729A322834F25AA0317FD65D4558CE980DE4F97471A05FC0F622CD6FE88
+ 2F15D20000000049454E44AE426082}
+ Name = 'PngImage15'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD252000002814944415478DA
+ 63FCFFFF3F032D0123C8822F5C7FFED767DC625876E301458645692830B0B2FF
+ 67E8ECD06184391CCC282EBAF6DFC7478B21AA671BC3F36D5E040DFAF3E71FC3
+ EFBF7F19FEFDFB0F66FF01B275A20E32AC28E766F0F2F26250538B63387F7E3A
+ 235E0B3AD73F25CAD571D6BC60DA28E108C3A783A160365116E07339C4D540FC
+ 07C1364B3EC6D0E0AFCDF0EBD72F8679F3FA48B7009FE1206C957682A1CA5395
+ E1E7AFDF0C4B974CA65E10051AB28169FBACD30CC5CE0A401FFC6658BD6A06F1
+ 3E20E4F2DF50BE73DE59862C2B09A0057F18B66C9E4F9C05C41A0E4A45EE8517
+ 18524C44C03ED8B573097E0B40C9AF7BE333A282C8550D92DEBD4B2F31C4E9F1
+ 03E3E017C3C1FDAB705BF0748B2786EB103EC04CFF3039FF8A2B0CE11A9C601F
+ 1C3FBA1EB7050F37BAE3351C3DB8FE41732CC882402516B005674F6FC16E0138
+ BB032D2107C00C07E583CB1777E1B6E02FD07520853F7FFE82D0504DE86C506A
+ 8188C1F81039909A5BD7F763B7006678754D0159BE5056B303EB7FFCE038A605
+ 6E6EC05CF813E292D6B60A9002AC86FCFEF593E1F7CF9F0CBF8018C4CE2E3A0A
+ 16BF7DF30083AC822558FFCB6767302DB0B757807BB3BBA70E6C0137373758B3
+ 868605C3D9B37B310CFFF3FB17437EF969B805E252266033DEBFB9886981A5A5
+ 343C0C274D6A065B2025A5C42029A9C8A0AB6BCD307B563586E1BF81EA4B6A2F
+ C22D1014D107B3B15A606C2C0A8DC4DF0C336674802D303676061BAEA666C450
+ 90EB8461F81F20AE68BE4E9C053ABA02F0208216B70C09097560C385852519C2
+ 8395300C07D1B59D77095BC0C8C8C8505478F5BF82222B72718B35CC910DFF07
+ CC78F53D0F88B300040C0C32A8D202B87061066A9D4C4B40730B0038C31BFE85
+ 5838D40000000049454E44AE426082}
+ Name = 'PngImage17'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000026D4944415478DA
+ B5966D48535118C7FF138A455F84588C0A7A27AA1163CDB69168929851CB5806
+ 81D5878A7C29412428484264A85006814342E805112DE8436F94F43E74393775
+ ABC1552C87B5EA6286B7B01AB4BBD3CE8D0DC57976B7D9038773B8F79CDFEF9C
+ F33C17AE821082FF198AE982F607CE946C4DCD3731D8D5A2A063FFDA73E4C9FB
+ 469C8CB0E30A4AF61A928247D660F9D225A8BE7019366F0B0CD595C8186B43AB
+ 4D9024F322D06E5C8521F75D2CAB2A85E94026E010C00533D1CD09E99D4014C3
+ E87CE482F2A717D93B8A305AA381A97F4282D3484B40E1A248F0BAE33486825A
+ 188D464C0A5FF1A3AA002A9EC0C7837D457957C7124A6A958DD896AF4146C08D
+ 1B1E23D46A35789E87D56A452010483EC9244C20465A28B27B6767650CFEE5D7
+ 38BE8F7F46AF5026C1559BCDB1AA922D48040F0A1E145B57E06C7D2BAEB5DF4B
+ 4E20176E7778F0F0A54B9E205E0EA6DF793C38DDC463BB5BFE0992D97974DED3
+ 9E01798254E0B4745FF47A120BA2354EFB70E47D435D09FE902294177630E1B4
+ D95D6FD88243BBB324F8AEEB01E95959A8166F3F4E4137F509CEC515B0AC3922
+ C1D7D574CFC8CF95DC050885C370F4FBD88283057A69277432ED2FD51FC5999C
+ 85F03FE7E00F2A71E7C322D435DF8A9D303A2F3A767939B6C0B253175BD4D556
+ 0197E3154EE95663D0FF1B8E491EE50D7D73C2693FE01B660BF6E569638B8E9F
+ 3886D1110E2B5504872D7AE8CD179970DABCDC085BB027678B34B1F8F604BED9
+ CC385FBA1586FD4D33123F179C26DC37FC8E2D28DCAE99B5482E9C464241BE69
+ 53CA705982DCAC0DFFEA5F24B36A9C7E132CB82C41B66E3DEE3FEB433AC114D0
+ 3F84F988A8E02F75743575B8E251160000000049454E44AE426082}
+ Name = 'PngImage18'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F8000000097048597300004E2000004E2001167D99DE000004124944415478DA
+ ED955F4C5B551CC77FF7DEFE61D0C204D7758139C15684752C1A565A47D7A983
+ 1664449D75337301A7D68D8CBD69F4C11463627858427C30DD8B3A0C8B0FBA10
+ 71B8F247470706A6996E93617173C060A56D645DD7526EDBDB7BBCE75E6F2D5A
+ 46E2E29BBFE4E49ED3F33DDFCFEFFCEE39B7044208FECB20FE07AC0A584DE070
+ 38C889EB011345C1101EC798786D77D747DF72DDE46A6B1B0F1E54DE1560B7DB
+ A57136DB4033B17373FEB9BF262872978F898D5C73B9622B257EB4ED83B1C0B4
+ 47BF1280B0B6B6CAD4892C3D4D477873868DD76C543D90A028C9101E47A34BC6
+ 1FDD83639916DB6C2D0A2A0785B12E1380686A72C8C91CBA72297A67188B9289
+ 64C3E8E0D7BD78D2F4F4B3FB11CB7431887D6ECCD5DB9D09A0B75A7365843494
+ E91D70E64D9C790167BEC49B2340F5DF9D397D46D41A6BEA9EA024926F922C6B
+ 1DEDEBEDCB08D07380827F02083367AE55AAB64522425908966818EEEBE94D5F
+ BCD56C5EAB9428F2C38CE4D625F797B733012A6A5ECAC9958422CB00369B4D26
+ 55AE33B02C72AF64FEA75E3CD724D7D88C6F903B79DBCF9FD7138474940798CD
+ 6689BAB8CC4800C1671EA7A36F2A08E4CECB96215A921752057D373ADDEE789A
+ 21A1D168642A5561194B4AF3280449890480610072D7150402B3D7A62E9494B0
+ D5119AC100E285A6D71F27097224533233F3334E85E2FEAF064E7DDA2F663F57
+ 21DC01DB867AE7A60D9B0EA7EBF3E6273EFB708DFF45DF758F90C9AB47DE30E1
+ 9AE3C191B60EB82F0B204803F8170166C3003FCF0661F2633B042309CB956117
+ BE60E83897EC6B4E07CC3BDF85503F9DD2FB16A2606F7F14C8DDCDFCDCE9CB1C
+ 605FF361249A57AA01BC11A189001C18E27ABB06D6CA91B574F3634959B66260
+ E709278890E91E9AD737BE550E64FD81947957DD6E200A353A64AA36C13BED1D
+ B086ABE312B37C0738A83B32686FA900AC1303EB87D5592988BAA41408CBBE94
+ F97B1A9D50226EA272E78E277FC03B102314135A20BA1C50AC2DE6C745EB8B40
+ D48F3F9805AF580BF9BEDF7B93374FF4B3BC9E8E45B711566BABBCD4A81D2CB6
+ D8AB372A05C3585200E02736BF18F2C36F278F7AC747CFD9755BB630EA22ADCB
+ 70A803B05E1EFE1D2C6D55BC398EEE636C4A3FF4D3F70FF1C7B4EE99BD0F8763
+ D1C9E71D9F839CE2DE605096DA0D16E3FADF0E069F5A5CB839525E5E0E1ACD23
+ 86ECFCF56EA3FD18B4BCBF19FC37A6F9CCF14E30A82AAA033A112F5B98F9D593
+ BA6886DA5A4DD5F6864F2E8C0D544F5D9D4A01B4BA32EFA4E76AF3BCE762FA27
+ 9AB4ECDDBFE340E897B37B923EE81CF0420F57B646EE0E8990A2CBC2255EF5FF
+ 60A548580BF7708F2FB0399344CD87003AF1EFDC1146E9907B01A0D1F1004CCC
+ 254E70E62FA7CFA543FE3560726B3E3A7BE916EE2A38C0E2DFE731A4A1E21E4A
+ 745CF86CE838F32B77D3FC01CF05F8A9B438C37F0000000049454E44AE426082}
+ Name = 'PngImage19'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD252000001B74944415478DA
+ B5943D2C044114C7DF6A5CA150894204052AD14B7C14D7701D9D44EB4A854434
+ BE3A89E28A0BD128080DA7388ABB444E88904B705710111FA5467D91DB9D9D31
+ 6F6677CFB9B998DD75AFD8F9DCFF6FDEBCFDAFC118834686810063BB3CC9FB47
+ 8AF52988475241C585B6036089C1DA0D7345FE88478C7F030841FF5137CB0A60
+ F5395C2156FA95597A80D3F377161BEBF953C7223694BE4C20361563D324109B
+ 598442762B3800D75110C54DCB167D14C638CEDEC0CE7E3A3800D76C14E4E284
+ C81641160761A4CFF2C100388745213617B628942DC2019801952D9180ECE55D
+ 30804D2950CAE0F0D586E98BDAFA27064A106D3321775DD4074C8C763B93F2E4
+ 16BF92965D06F5FC5118FE84ABDB077DC0F88804C8821271E7AD074D10C61F6C
+ B639E501A2439D62567E2D4464D09EFC08A4EC65B0DC6754D520B997A9DAD0D5
+ D10B61FC719FD9AC0096D6376A5E5C5B988730FEF00086A1FE9F9DE4DE42F9C3
+ 37C0AF3F7C035C7FE049F1C41240C518A1652703D71F5A00953F4C47D86BC555
+ 71805303D71F5A00953F4C2703B7B5BCB104E48B4FFA00953F7E9E5C05283EBE
+ F8ABC16F7FE8843640E50FDDF0008D8C6F397A5EEFE9EAF0950000000049454E
+ 44AE426082}
+ Name = 'PngImage20'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD2520000018C4944415478DA
+ 63FCFFFF3F032D01E3A8054459C0C8C8C860E091F0FFC28E058C843490AA8E3E
+ 16187A26D22C9C864910812CA079102DD87000251E40E23F7FFE62F8F90B827F
+ C0D8405A47439528753D15A98C2816C4FBDBA3D8FEFBCF5F08FEFD17CEEE98B1
+ 9461626D1651EA26D565E3B6009BA64BB75E306CD8B183617A733E51EA66B414
+ 60B7009BA6DF7FFE315CBFF78A61F9860D0C0BBACB8952B7B0A70261C1FCF5FB
+ FF270438E0D404A2EF3C7ACB307FC54A861593EB8852B7724A3DC282192B76FE
+ 4F0A76C6A9E91750ECD1F30F0CD3162C625833BD8928759BE6B4212C98B868F3
+ FF9450379C9A40F8C59BCF0C7D336633AC9FDD4694BA5D4B7A111674CD59FB3F
+ 2DCC13A7A65FBFFF30BCFBF89DA175E21486CD73BB88527778F51484054D5397
+ FFCF8CF4C1A9E9D7AFBF0C5FBEFF62A8EDEC61D8B6B09F2875A737CF415850DD
+ BFF07F76B43F3889E103152D1D0CDB164D204A1D4A5151D231FBFF2F600EFCF5
+ EB37C3F71F3F187EFCF809A47F42E89F20FA0730DCFF8035DB599912A50E6E01
+ 2DC1D0B7000029AD9AF9DFD03E1F0000000049454E44AE426082}
+ Name = 'PngImage21'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
+ F80000000970485973000017120000171201679FD252000001684944415478DA
+ 63FCFFFF3F032D0123B2054BB79C24CBB6DE290B19CEEF9CCE882C063317C382
+ 681F73920C07EA619016136628AAEB43B184AA1618682A30BC7EFB19C512AA58
+ F0F7EF3F8615DB4F33D818AB337CF9F613C5128A2D0019FEF7EF7F86D5BBCE30
+ 38596833FCFAFD07C592733BA6319265C1FF7FFF19FE02F11FA00520F6BABDE7
+ C0918C0EC8B200D9F0BF50FCE7DF3F8623E71F307CFDF695E1EDDBB76075F396
+ 6E22DD025C86A3B337EF3D45BA05C41AFE0F18275B0F9C26CD02520C07A9DB71
+ E80CF116906A3848DD9EA3E788B3801CC341FCFD272E10B60096C6C106FCFF4F
+ B4E1207CE8F425FC1644789AC20DC7662818FFFB8FD311C7CE5EC16F41A89B09
+ 4986A3AB3B7DF13A7E0B829C8DC8361C449FBB7213BF057E8E06641B0EC217AF
+ DFC66F81B79D1ED98683D45DB97907BF051ED63A641B0E02042D70B1D422DB70
+ A22CB03755C799C6B1E50964C389B2C0C648155C225202F05A80ADF22007C02C
+ 0000E2A9A9FE0847986E0000000049454E44AE426082}
+ Name = 'PngImage22'
+ Background = clWindow
+ end>
+ Bitmap = {}
+ end
+end
diff --git a/Source/Modulos/Articulos/Views/uEditorArticulos.pas b/Source/Modulos/Articulos/Views/uEditorArticulos.pas
new file mode 100644
index 00000000..14328d50
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/uEditorArticulos.pas
@@ -0,0 +1,189 @@
+unit uEditorArticulos;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uEditorBase, ToolWin, ComCtrls, JvExControls, JvComponent,
+ JvNavigationPane, uViewArticulos, uBizArticulos, ActnList, DBActns, uViewGrid,
+ Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX,
+ TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable,
+ JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, JvAppStorage,
+ JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase,
+ uViewBarraSeleccion, pngimage, uIEditorArticulos, uEditorGridBase,
+ JvComponentBase, uViewGridBase, uArticulosController, JvExComCtrls,
+ JvStatusBar, uDAInterfaces;
+
+type
+ TfEditorArticulos = class(TfEditorGridBase, IEditorArticulos)
+ actFamilias: TAction;
+ procedure FormShow(Sender: TObject);
+ procedure actFamiliasExecute(Sender: TObject);
+ private
+ FArticulos: IBizArticulo;
+ FController : IArticulosController;
+ protected
+ function GetArticulos: IBizArticulo;
+ procedure SetArticulos(const Value: IBizArticulo);
+ function GetController : IArticulosController; virtual;
+ procedure SetController (const Value : IArticulosController); virtual;
+
+ procedure NuevoInterno; override;
+ procedure EliminarInterno; override;
+ procedure ModificarInterno; override;
+ procedure ImprimirInterno; override;
+ procedure PrevisualizarInterno; override;
+ procedure DuplicarInterno; override;
+
+ //Si queremos crear otra vista para el editor heredado solo tendriamos que
+ //sobreescribir este metodo
+ procedure AsignarVista; virtual;
+
+ public
+ procedure PonerTitulos(const ATitulo: string = ''); override;
+ property Articulos: IBizArticulo read GetArticulos write SetArticulos;
+ property Controller : IArticulosController read GetController write SetController;
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ end;
+
+implementation
+
+uses
+ uCustomEditor, uDataModuleArticulos, uDataModuleUsuarios,
+ uEditorArticulo, uEditorDBBase, uBizFamilias, uFamiliasController,
+ cxGrid, cxGridCustomTableView; //, uListaArticulos;
+
+{$R *.dfm}
+
+{
+****************************** TfEditorArticulos *******************************
+}
+procedure TfEditorArticulos.FormShow(Sender: TObject);
+begin
+ inherited;
+
+ if not Assigned(ViewGrid) then
+ raise Exception.Create('No hay ninguna vista asignada');
+
+ if not Assigned(Articulos) then
+ raise Exception.Create('No hay ningún articulo asignado');
+
+ Articulos.DataTable.Active := True;
+ ViewGrid.GotoFirst;
+end;
+
+function TfEditorArticulos.GetArticulos: IBizArticulo;
+begin
+ Result := FArticulos;
+end;
+
+function TfEditorArticulos.GetController: IArticulosController;
+begin
+ Result := FController;
+end;
+
+procedure TfEditorArticulos.ImprimirInterno;
+begin
+ inherited;
+end;
+
+procedure TfEditorArticulos.ModificarInterno;
+begin
+ inherited;
+ FController.Ver(Articulos);
+end;
+
+procedure TfEditorArticulos.NuevoInterno;
+begin
+ inherited;
+ FController.Anadir(Articulos);
+ FController.Ver(Articulos);
+end;
+
+procedure TfEditorArticulos.PonerTitulos(const ATitulo: string);
+var
+ FTitulo : String;
+begin
+// FTitulo := 'Lista de artículos - ' + dmUsuarios.EmpresaActual.NOMBRE;
+ inherited PonerTitulos(FTitulo);
+end;
+
+procedure TfEditorArticulos.PrevisualizarInterno;
+begin
+ inherited;
+end;
+
+procedure TfEditorArticulos.SetArticulos(const Value: IBizArticulo);
+begin
+ FArticulos := Value;
+ dsDataTable.DataTable := FArticulos.DataTable;
+ if Assigned(ViewGrid) then
+ (ViewGrid as IViewArticulos).Articulos := Articulos;
+end;
+
+procedure TfEditorArticulos.SetController(const Value: IArticulosController);
+begin
+ FController := Value;
+end;
+
+destructor TfEditorArticulos.Destroy;
+begin
+ FArticulos := NIL;
+ FController := NIl;
+ inherited;
+end;
+
+procedure TfEditorArticulos.DuplicarInterno;
+var
+ AArticulo : IBizArticulo;
+begin
+ inherited;
+ AArticulo := FController.Duplicar(Articulos);
+ try
+ FController.Ver(AArticulo);
+ finally
+ actRefrescar.Execute;
+ end;
+end;
+
+procedure TfEditorArticulos.EliminarInterno;
+begin
+ if (Application.MessageBox('¿Desea borrar este artículo?', 'Atención', MB_YESNO) = IDYES) then
+ begin
+ inherited;
+ //Para que en el caso de no poderse realizar la operación se refresquen
+ //los datos y no nos permita eliminar un registro a la segunda
+ if not FController.Eliminar(Articulos) then
+ actRefrescar.Execute;
+ end;
+end;
+
+procedure TfEditorArticulos.actFamiliasExecute(Sender: TObject);
+var
+ AFamiliasController : IFamiliasController;
+ AFamilias : IBizFamilia;
+begin
+ AFamiliasController := TFamiliasController.Create;
+ try
+ AFamilias := (AFamiliasController.BuscarTodos as IBizFamilia);
+ AFamiliasController.VerTodos(AFamilias);
+ finally
+ AFamilias := NIL;
+ AFamiliasController := NIL;
+ end;
+end;
+
+procedure TfEditorArticulos.AsignarVista;
+begin
+ ViewGrid := CreateView(TfrViewArticulos) as IViewArticulos;
+end;
+
+constructor TfEditorArticulos.Create(AOwner: TComponent);
+begin
+ inherited;
+ AsignarVista;
+end;
+
+end.
+
diff --git a/Source/Modulos/Articulos/Views/uEditorElegirArticulos.dfm b/Source/Modulos/Articulos/Views/uEditorElegirArticulos.dfm
new file mode 100644
index 00000000..a6c56ae6
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/uEditorElegirArticulos.dfm
@@ -0,0 +1,187 @@
+inherited fEditorElegirArticulos: TfEditorElegirArticulos
+ Caption = 'Seleccionar art'#237'culos'
+ ClientWidth = 656
+ ExplicitWidth = 664
+ PixelsPerInch = 96
+ TextHeight = 13
+ object JvgWizardHeader1: TJvgWizardHeader [0]
+ Left = 0
+ Top = 27
+ Width = 656
+ Height = 60
+ CaptionFont.Charset = DEFAULT_CHARSET
+ CaptionFont.Color = clWindowText
+ CaptionFont.Height = -11
+ CaptionFont.Name = 'Tahoma'
+ CaptionFont.Style = [fsBold]
+ CommentFont.Charset = DEFAULT_CHARSET
+ CommentFont.Color = clWindowText
+ CommentFont.Height = -11
+ CommentFont.Name = 'Tahoma'
+ CommentFont.Style = []
+ SymbolFont.Charset = DEFAULT_CHARSET
+ SymbolFont.Color = clHighlightText
+ SymbolFont.Height = -35
+ SymbolFont.Name = 'Wingdings'
+ SymbolFont.Style = [fsBold]
+ Captions.Strings = (
+ 'Seleccione los art'#237'culos')
+ Comments.Strings = (
+ ' ')
+ Gradient.FromColor = clHighlight
+ Gradient.ToColor = clWindow
+ Gradient.Active = False
+ Gradient.Orientation = fgdVertical
+ BufferedDraw = False
+ ExplicitTop = 87
+ end
+ inherited JvNavPanelHeader: TJvNavPanelHeader
+ Width = 656
+ Caption = 'Lista de art'#237'culos'
+ Visible = False
+ ExplicitWidth = 656
+ inherited Image1: TImage
+ Left = 629
+ ExplicitLeft = 629
+ end
+ end
+ inherited TBXDock: TTBXDock
+ Top = 87
+ Width = 656
+ ExplicitTop = 87
+ ExplicitWidth = 656
+ inherited tbxMain: TTBXToolbar
+ Align = alLeft
+ DockPos = -6
+ ExplicitWidth = 126
+ inherited TBXItem2: TTBXItem
+ Visible = False
+ end
+ inherited TBXItem5: TTBXItem
+ Visible = False
+ end
+ inherited TBXItem4: TTBXItem
+ Visible = False
+ end
+ inherited TBXItem6: TTBXItem
+ Visible = False
+ end
+ inherited TBXItem36: TTBXItem
+ Action = actAnchoAuto2
+ end
+ end
+ inherited tbxFiltro: TTBXToolbar
+ Left = 126
+ Top = 23
+ Align = alLeft
+ DockPos = 101
+ DockRow = 1
+ ExplicitLeft = 126
+ ExplicitTop = 23
+ inherited TBXItem34: TTBXItem
+ Action = actQuitarFiltro2
+ end
+ end
+ inherited tbxMenu: TTBXToolbar
+ ExplicitWidth = 656
+ end
+ end
+ inherited StatusBar: TJvStatusBar
+ Width = 656
+ Visible = False
+ ExplicitWidth = 656
+ end
+ inline frViewBarraSeleccion1: TfrViewBarraSeleccion [4]
+ Left = 0
+ Top = 376
+ Width = 656
+ Height = 49
+ Align = alBottom
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'Tahoma'
+ Font.Style = []
+ ParentFont = False
+ TabOrder = 0
+ ReadOnly = False
+ ExplicitTop = 376
+ ExplicitWidth = 656
+ inherited JvFooter1: TJvFooter
+ Width = 656
+ ExplicitWidth = 656
+ inherited bSeleccionar: TJvFooterBtn
+ Left = 444
+ ExplicitLeft = 444
+ end
+ inherited bCancelar: TJvFooterBtn
+ Left = 548
+ ExplicitLeft = 548
+ end
+ end
+ inherited BarraSeleccionActionList: TActionList
+ Left = 76
+ Top = 11
+ inherited actSeleccionar: TAction
+ OnExecute = frViewBarraSeleccion1actSeleccionarExecute
+ OnUpdate = frViewBarraSeleccion1actSeleccionarUpdate
+ end
+ inherited actCancelar: TAction
+ OnExecute = frViewBarraSeleccion1actCancelarExecute
+ end
+ end
+ end
+ inherited EditorActionList: TActionList [5]
+ Left = 112
+ Top = 192
+ inherited actPrevisualizar: TAction
+ Visible = False
+ end
+ inherited actImprimir: TAction
+ Visible = False
+ end
+ inherited actDuplicar: TAction
+ Visible = False
+ end
+ end
+ inherited SmallImages: TPngImageList [6]
+ end
+ inherited LargeImages: TPngImageList [7]
+ end
+ inherited JvFormStorage: TJvFormStorage [8]
+ end
+ inherited dsDataTable: TDADataSource [10]
+ Left = 8
+ Top = 192
+ end
+ inherited StatusBarImages: TPngImageList [11]
+ Top = 384
+ end
+ inherited GridPopupMenu: TPopupMenu
+ Left = 80
+ Top = 192
+ 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/Articulos/Views/uEditorElegirArticulos.pas b/Source/Modulos/Articulos/Views/uEditorElegirArticulos.pas
new file mode 100644
index 00000000..b23cfa4d
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/uEditorElegirArticulos.pas
@@ -0,0 +1,125 @@
+unit uEditorElegirArticulos;
+
+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,
+ uViewArticulos, ComCtrls, TB2ExtItems, TBXExtItems, TBX,
+ TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent,
+ JvNavigationPane, uViewBarraSeleccion, JvgWizardHeader, StdCtrls,
+ uEditorArticulos, uBizArticulos, uIEditorElegirArticulos,
+ JvExComCtrls, JvStatusBar, uDAInterfaces;
+
+type
+ TfEditorElegirArticulos = class(TfEditorArticulos, IEditorElegirArticulos)
+ frViewBarraSeleccion1: TfrViewBarraSeleccion;
+ JvgWizardHeader1: TJvgWizardHeader;
+ EditorSeleccionActionList: TActionList;
+ actBuscar2: TAction;
+ actQuitarFiltro2: TAction;
+ actAnchoAuto2: TAction;
+ procedure frViewBarraSeleccion1actSeleccionarUpdate(Sender: TObject);
+ procedure frViewBarraSeleccion1actCancelarExecute(Sender: TObject);
+ procedure frViewBarraSeleccion1actSeleccionarExecute(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure actAnchoAuto2Execute(Sender: TObject);
+ procedure actQuitarFiltro2Execute(Sender: TObject);
+ protected
+ procedure SetMultiSelect (AValue : Boolean);
+ function GetMultiSelect : Boolean;
+ function GetArticulosSeleccionados: IBizArticulo;
+ procedure SetViewGrid(const Value: IViewGridBase); override;
+ procedure SetMensaje (const AValue: String);
+ function GetMensaje: String;
+ public
+ property Mensaje : String read GetMensaje write SetMensaje;
+ property ArticulosSeleccionados: IBizArticulo read GetArticulosSeleccionados;
+ property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect;
+ end;
+
+implementation
+
+uses
+ uEditorGridBase, cxGridCustomTableView, uIntegerListUtils, uDBSelectionListUtils,
+ uGridUtils, uEditorBase, uArticulosController;
+
+{$R *.dfm}
+
+{ TfEditorElegirArticulos }
+
+procedure TfEditorElegirArticulos.actAnchoAuto2Execute(Sender: TObject);
+begin
+ inherited;
+ actAnchoAuto.Execute;
+end;
+
+procedure TfEditorElegirArticulos.actQuitarFiltro2Execute(Sender: TObject);
+begin
+ inherited;
+ actQuitarFiltro.Execute;
+end;
+
+procedure TfEditorElegirArticulos.FormShow(Sender: TObject);
+begin
+ inherited;
+ EditorActionList.State := asSuspended;
+end;
+
+procedure TfEditorElegirArticulos.frViewBarraSeleccion1actCancelarExecute(
+ Sender: TObject);
+begin
+ inherited;
+ Close;
+end;
+
+procedure TfEditorElegirArticulos.frViewBarraSeleccion1actSeleccionarExecute(
+ Sender: TObject);
+begin
+ inherited;
+ ModalResult := mrOk;
+end;
+
+procedure TfEditorElegirArticulos.frViewBarraSeleccion1actSeleccionarUpdate(
+ Sender: TObject);
+begin
+ inherited;
+ (Sender as TAction).Enabled := (ViewGrid._FocusedView.Controller.SelectedRowCount > 0)
+end;
+
+function TfEditorElegirArticulos.GetArticulosSeleccionados: IBizArticulo;
+begin
+ SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Articulos as ISeleccionable).SelectedRecords);
+ // En SelectedRecords tengo los ID de las filas seleccionadas del grid
+ Result := (Controller as IArticulosController).ExtraerSeleccionados(Articulos) as IBizArticulo;
+end;
+
+function TfEditorElegirArticulos.GetMensaje: String;
+begin
+ Result := JvgWizardHeader1.Comments.Text;
+end;
+
+function TfEditorElegirArticulos.GetMultiSelect: Boolean;
+begin
+ Result := ViewGrid.MultiSelect;
+end;
+
+procedure TfEditorElegirArticulos.SetMensaje(const AValue: String);
+begin
+ JvgWizardHeader1.Comments.Text := AValue;
+end;
+
+procedure TfEditorElegirArticulos.SetMultiSelect(AValue: Boolean);
+begin
+ ViewGrid.MultiSelect := AValue;
+end;
+
+procedure TfEditorElegirArticulos.SetViewGrid(const Value: IViewGridBase);
+begin
+ inherited;
+ ViewGrid.OnDblClick := frViewBarraSeleccion1.actSeleccionar.OnExecute;
+end;
+
+end.
diff --git a/Source/Modulos/Articulos/Views/uViewArticulo.dfm b/Source/Modulos/Articulos/Views/uViewArticulo.dfm
new file mode 100644
index 00000000..cc48a58b
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/uViewArticulo.dfm
@@ -0,0 +1,560 @@
+inherited frViewArticulo: TfrViewArticulo
+ Width = 451
+ Height = 304
+ Align = alClient
+ OnCreate = CustomViewCreate
+ OnDestroy = CustomViewDestroy
+ OnShow = CustomViewShow
+ ExplicitWidth = 451
+ ExplicitHeight = 304
+ object dxLayoutControlArticulo: TdxLayoutControl
+ Left = 0
+ Top = 0
+ Width = 451
+ Height = 393
+ Align = alTop
+ ParentBackground = True
+ TabOrder = 0
+ AutoContentSizes = [acsWidth]
+ DesignSize = (
+ 451
+ 393)
+ object PngSpeedButton2: TPngSpeedButton
+ Left = 546
+ Top = 28
+ Width = 23
+ Height = 22
+ Action = actAnadir
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001EB4944415478DA
+ A5D34B68135114C6F1FF746692462D24D5A8F5B52B81B448501475E142D4EAA2
+ 3420E8C68A0A45345BC19DE24A74D50AE2424A11041105DD28A8881411174A70
+ E58BA4149A1A0D8D1D9B669E997B9D14B1A44491E6C2D9DDF3BB1F877B94DB8F
+ 5E4B5A384A1D3831B06759CDDB0E9D5B04865FD9CD6F49C95A374B4ADC20AAE4
+ 9936B6F244CF70299DFA3F40F5AB1C74CEB225FE1C654E4796DA7963A6D977F2
+ FABF81E061EAC3D1EC0247C531A27A017E846026CC844890CC3CFE3B506F1641
+ D9025CCFA4DF384FD27F419BA1231C9D67917ED267AE3507A414E4BF8DD3B1AA
+ 07A97562F92A31EB037B8D313658137CD292DC5D719A7B83C9E640AEF892F1DC
+ 454A5FABEC4E5D21BEBE0FD397411217E15599911D547C8DEC60A411B8FC34C7
+ C3F7C71710BD73927CB686E785D87FE01D22483267FDC45156620A0DAB069F4F
+ B53702A9ABBB08AF2E20DB7C1CB386517698FE52A56BE31136272EF0F16D1F44
+ 7610EF7D802554A68696003B6F6D42517DAC6A0D3B006CCB67B6686356248944
+ 0F8635C9F7A90A91F800E1EE51CA99D81260B40B27C8F607307DECF91AF38687
+ A6AB74A7A2940A26E5A28B164FE38CDC67FBE1CC22D03BB226007E2708202700
+ 5CAB5E62E14344D785084734664B0EBE8CE18D951A81967661F8E69DE56FA394
+ 2D6D33BF00C89C2C72EBA3BC190000000049454E44AE426082}
+ PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled]
+ end
+ object PngSpeedButton1: TPngSpeedButton
+ Left = 546
+ Top = 56
+ Width = 23
+ Height = 22
+ Action = actEliminar
+ PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled]
+ end
+ object eReferencia: TcxDBTextEdit
+ Left = 103
+ Top = 28
+ Anchors = [akLeft, akTop, akRight]
+ DataBinding.DataField = 'REFERENCIA'
+ DataBinding.DataSource = dsViewArticulo
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.Color = 14745599
+ 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 = 164
+ end
+ object eDescripcion: TcxDBTextEdit
+ Left = 103
+ Top = 55
+ DataBinding.DataField = 'DESCRIPCION'
+ DataBinding.DataSource = dsViewArticulo
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.Color = 14745599
+ Style.HotTrack = False
+ Style.LookAndFeel.Kind = lfStandard
+ Style.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.Kind = lfStandard
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.Kind = lfStandard
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.Kind = lfStandard
+ StyleHot.LookAndFeel.NativeStyle = True
+ TabOrder = 1
+ Width = 108
+ end
+ object eNoComisionable: TcxDBCheckBox
+ Left = 103
+ Top = 109
+ Caption = 'Art'#237'culo no comisionable'
+ DataBinding.DataField = 'COMISIONABLE'
+ DataBinding.DataSource = dsViewArticulo
+ Properties.ImmediatePost = True
+ Properties.NullStyle = nssUnchecked
+ Properties.ValueChecked = 0
+ Properties.ValueUnchecked = 1
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.HotTrack = False
+ Style.LookAndFeel.Kind = lfStandard
+ Style.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.Kind = lfStandard
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.Kind = lfStandard
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.Kind = lfStandard
+ StyleHot.LookAndFeel.NativeStyle = True
+ TabOrder = 3
+ Width = 144
+ end
+ object eImagen: TcxImage
+ Left = 409
+ Top = 28
+ Properties.GraphicClassName = 'TJPEGImage'
+ Properties.ImmediatePost = True
+ Properties.PopupMenuLayout.MenuItems = []
+ Properties.Stretch = True
+ 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
+ Height = 100
+ Width = 140
+ end
+ object cbFamilia: TcxDBComboBox
+ Left = 103
+ Top = 82
+ DataBinding.DataField = 'FAMILIA'
+ DataBinding.DataSource = dsViewArticulo
+ Properties.DropDownRows = 16
+ Properties.ImmediatePost = True
+ Properties.OnInitPopup = cbFamiliaPropertiesInitPopup
+ Properties.OnValidate = cbFamiliaPropertiesValidate
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.LookAndFeel.Kind = lfStandard
+ Style.LookAndFeel.NativeStyle = True
+ Style.ButtonStyle = bts3D
+ Style.PopupBorderStyle = epbsFrame3D
+ StyleDisabled.LookAndFeel.Kind = lfStandard
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.Kind = lfStandard
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.Kind = lfStandard
+ StyleHot.LookAndFeel.NativeStyle = True
+ TabOrder = 2
+ Width = 70
+ end
+ inline frViewDatosYSeleccionProveedor1: TfrViewDatosYSeleccionProveedor
+ Left = 219
+ Top = 166
+ Width = 350
+ Height = 202
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'Tahoma'
+ Font.Style = []
+ ParentFont = False
+ TabOrder = 11
+ ReadOnly = False
+ ExplicitLeft = 219
+ ExplicitTop = 166
+ inherited dxLayoutControl1: TdxLayoutControl
+ inherited edtNIFCIF: TcxDBTextEdit
+ ExplicitWidth = 562
+ Width = 562
+ end
+ inherited edtCalle: TcxDBTextEdit
+ ExplicitWidth = 562
+ Width = 562
+ end
+ inherited edtPoblacion: TcxDBTextEdit
+ ExplicitWidth = 177
+ Width = 177
+ end
+ inherited edtProvincia: TcxDBTextEdit
+ ExplicitWidth = 327
+ Width = 327
+ end
+ end
+ end
+ object eReferenciaProv: TcxDBTextEdit
+ Left = 103
+ Top = 166
+ Anchors = [akLeft, akTop, akRight]
+ DataBinding.DataField = 'REFERENCIA_PROV'
+ DataBinding.DataSource = dsViewArticulo
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.Color = 14745599
+ Style.HotTrack = False
+ Style.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.NativeStyle = True
+ TabOrder = 6
+ Width = 86
+ end
+ object ePrecioCoste: TcxDBCurrencyEdit
+ Left = 103
+ Top = 193
+ DataBinding.DataField = 'PRECIO_COSTE'
+ DataBinding.DataSource = dsViewArticulo
+ Properties.Alignment.Horz = taRightJustify
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.HotTrack = False
+ Style.LookAndFeel.Kind = lfStandard
+ Style.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.Kind = lfStandard
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.Kind = lfStandard
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.Kind = lfStandard
+ StyleHot.LookAndFeel.NativeStyle = True
+ TabOrder = 7
+ Width = 86
+ end
+ object eDescuento: TcxDBSpinEdit
+ Left = 103
+ Top = 220
+ DataBinding.DataField = 'DESCUENTO'
+ DataBinding.DataSource = dsViewArticulo
+ Properties.Alignment.Horz = taRightJustify
+ Properties.ImmediatePost = True
+ Properties.MaxValue = 100.000000000000000000
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.HotTrack = False
+ Style.LookAndFeel.Kind = lfStandard
+ Style.LookAndFeel.NativeStyle = True
+ Style.ButtonStyle = bts3D
+ StyleDisabled.LookAndFeel.Kind = lfStandard
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.Kind = lfStandard
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.Kind = lfStandard
+ StyleHot.LookAndFeel.NativeStyle = True
+ TabOrder = 8
+ Width = 86
+ end
+ object ePrecioNeto: TcxDBCurrencyEdit
+ Left = 103
+ Top = 247
+ DataBinding.DataField = 'PRECIO_NETO'
+ DataBinding.DataSource = dsViewArticulo
+ Enabled = False
+ Properties.Alignment.Horz = taRightJustify
+ Properties.ReadOnly = True
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.Color = clBtnFace
+ Style.HotTrack = False
+ Style.LookAndFeel.Kind = lfStandard
+ Style.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.Kind = lfStandard
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleDisabled.TextColor = clWindowText
+ StyleFocused.LookAndFeel.Kind = lfStandard
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleFocused.TextColor = clWindowText
+ StyleHot.LookAndFeel.Kind = lfStandard
+ StyleHot.LookAndFeel.NativeStyle = True
+ TabOrder = 9
+ Width = 86
+ end
+ object ePrecioPorte: TcxDBCurrencyEdit
+ Left = 103
+ Top = 274
+ DataBinding.DataField = 'PRECIO_PORTE'
+ DataBinding.DataSource = dsViewArticulo
+ Properties.Alignment.Horz = taRightJustify
+ 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 = 10
+ Width = 86
+ end
+ object cbNoInventariable: TcxDBCheckBox
+ Left = 242
+ Top = 109
+ Caption = 'Art'#237'culo no inventariable'
+ DataBinding.DataField = 'INVENTARIABLE'
+ DataBinding.DataSource = dsViewArticulo
+ Properties.ImmediatePost = True
+ Properties.NullStyle = nssUnchecked
+ Properties.ValueChecked = 0
+ Properties.ValueUnchecked = 1
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.HotTrack = False
+ Style.LookAndFeel.Kind = lfStandard
+ Style.LookAndFeel.NativeStyle = True
+ StyleDisabled.LookAndFeel.Kind = lfStandard
+ StyleDisabled.LookAndFeel.NativeStyle = True
+ StyleFocused.LookAndFeel.Kind = lfStandard
+ StyleFocused.LookAndFeel.NativeStyle = True
+ StyleHot.LookAndFeel.Kind = lfStandard
+ StyleHot.LookAndFeel.NativeStyle = True
+ TabOrder = 4
+ Width = 144
+ end
+ object dxLayoutControlArticuloGroup_Root: TdxLayoutGroup
+ ShowCaption = False
+ Hidden = True
+ ShowBorder = False
+ object dxLayoutControlArticuloGroup7: TdxLayoutGroup
+ ShowCaption = False
+ Hidden = True
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ object dxLayoutControlArticuloGroup1: TdxLayoutGroup
+ AutoAligns = []
+ AlignHorz = ahClient
+ AlignVert = avClient
+ Caption = 'Datos del art'#237'culo'
+ object dxLayoutControlArticuloItem3: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ AlignHorz = ahClient
+ Caption = 'Referencia:'
+ Control = eReferencia
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControlArticuloGroup4: TdxLayoutGroup
+ ShowCaption = False
+ Hidden = True
+ ShowBorder = False
+ object dxLayoutControlArticuloItem8: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ AlignHorz = ahClient
+ Caption = 'Descripci'#243'n:'
+ Control = eDescripcion
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControlArticuloGroup6: TdxLayoutGroup
+ ShowCaption = False
+ Hidden = True
+ ShowBorder = False
+ object dxLayoutControlArticuloItem4: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ AlignHorz = ahClient
+ Caption = 'Familia:'
+ Control = cbFamilia
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControlArticuloGroup8: TdxLayoutGroup
+ ShowCaption = False
+ Hidden = True
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ object dxLayoutControlArticuloItem1: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ AlignHorz = ahClient
+ Caption = ' '
+ Control = eNoComisionable
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControlArticuloItem7: TdxLayoutItem
+ AutoAligns = [aaVertical]
+ AlignHorz = ahClient
+ Caption = ' '
+ ShowCaption = False
+ Control = cbNoInventariable
+ ControlOptions.ShowBorder = False
+ end
+ end
+ end
+ end
+ end
+ object dxLayoutControlArticuloGroup2: TdxLayoutGroup
+ AutoAligns = []
+ AlignHorz = ahClient
+ AlignVert = avClient
+ Caption = 'Imagen'
+ Visible = False
+ LayoutDirection = ldHorizontal
+ object dxLayoutControlArticuloItem6: TdxLayoutItem
+ AutoAligns = []
+ AlignHorz = ahClient
+ AlignVert = avClient
+ Control = eImagen
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControlArticuloGroup5: TdxLayoutGroup
+ AutoAligns = [aaVertical]
+ AlignHorz = ahRight
+ ShowCaption = False
+ Hidden = True
+ ShowBorder = False
+ object dxLayoutControlArticuloItem2: TdxLayoutItem
+ ShowCaption = False
+ Control = PngSpeedButton2
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControlArticuloItem5: TdxLayoutItem
+ ShowCaption = False
+ Control = PngSpeedButton1
+ ControlOptions.ShowBorder = False
+ end
+ end
+ end
+ end
+ object dxLayoutControlArticuloGroup3: TdxLayoutGroup
+ Caption = 'New Group'
+ ShowCaption = False
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ object dxLayoutControlArticuloGroup11: TdxLayoutGroup
+ AutoAligns = [aaVertical]
+ AlignHorz = ahClient
+ Caption = 'Datos del proveedor para el art'#237'culo'
+ object dxLayoutControlArticuloItem15: TdxLayoutItem
+ Caption = 'Ref. del prov:'
+ Control = eReferenciaProv
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControlArticuloItem16: TdxLayoutItem
+ Caption = 'Precio:'
+ Control = ePrecioCoste
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControlArticuloItem17: TdxLayoutItem
+ Caption = 'Dto (%):'
+ Control = eDescuento
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControlArticuloItem18: TdxLayoutItem
+ Caption = 'Precio neto:'
+ Control = ePrecioNeto
+ ControlOptions.ShowBorder = False
+ end
+ object dxLayoutControlArticuloItem19: TdxLayoutItem
+ Caption = 'Coste de envio:'
+ Control = ePrecioPorte
+ ControlOptions.ShowBorder = False
+ end
+ end
+ object dxLayoutControlArticuloGroup12: TdxLayoutGroup
+ AutoAligns = [aaVertical]
+ AlignHorz = ahRight
+ Caption = 'Proveedor para el art'#237'culo'
+ object dxLayoutControlArticuloItem14: TdxLayoutItem
+ Control = frViewDatosYSeleccionProveedor1
+ ControlOptions.AutoColor = True
+ ControlOptions.ShowBorder = False
+ end
+ end
+ end
+ end
+ end
+ object dsViewArticulo: TDADataSource
+ Left = 64
+ Top = 32
+ end
+ object OpenDialog1: TOpenDialog
+ Left = 24
+ Top = 32
+ end
+ object SmallImages: TPngImageList
+ PngImages = <
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001EB4944415478DA
+ A5D34B68135114C6F1FF746692462D24D5A8F5B52B81B448501475E142D4EAA2
+ 3420E8C68A0A45345BC19DE24A74D50AE2424A11041105DD28A8881411174A70
+ E58BA4149A1A0D8D1D9B669E997B9D14B1A44491E6C2D9DDF3BB1F877B94DB8F
+ 5E4B5A384A1D3831B06759CDDB0E9D5B04865FD9CD6F49C95A374B4ADC20AAE4
+ 9936B6F244CF70299DFA3F40F5AB1C74CEB225FE1C654E4796DA7963A6D977F2
+ FABF81E061EAC3D1EC0247C531A27A017E846026CC844890CC3CFE3B506F1641
+ D9025CCFA4DF384FD27F419BA1231C9D67917ED267AE3507A414E4BF8DD3B1AA
+ 07A97562F92A31EB037B8D313658137CD292DC5D719A7B83C9E640AEF892F1DC
+ 454A5FABEC4E5D21BEBE0FD397411217E15599911D547C8DEC60A411B8FC34C7
+ C3F7C71710BD73927CB686E785D87FE01D22483267FDC45156620A0DAB069F4F
+ B53702A9ABBB08AF2E20DB7C1CB386517698FE52A56BE31136272EF0F16D1F44
+ 7610EF7D802554A68696003B6F6D42517DAC6A0D3B006CCB67B6686356248944
+ 0F8635C9F7A90A91F800E1EE51CA99D81260B40B27C8F607307DECF91AF38687
+ A6AB74A7A2940A26E5A28B164FE38CDC67FBE1CC22D03BB226007E2708202700
+ 5CAB5E62E14344D785084734664B0EBE8CE18D951A81967661F8E69DE56FA394
+ 2D6D33BF00C89C2C72EBA3BC190000000049454E44AE426082}
+ Name = 'PngImage0'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA
+ A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304
+ 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994
+ 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F
+ 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546
+ 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8
+ 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA
+ 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E
+ 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8
+ E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0
+ 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8
+ 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37
+ 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB
+ 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932
+ 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04
+ E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148
+ D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2
+ 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56
+ A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E
+ AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13
+ 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058
+ 5538F0EAB25B380000000049454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
+ end>
+ PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled]
+ Left = 27
+ Top = 64
+ Bitmap = {}
+ end
+ object ActionList1: TActionList
+ Images = SmallImages
+ Left = 56
+ Top = 64
+ object actAnadir: TAction
+ Hint = 'Cambiar la imagen del producto'
+ ImageIndex = 0
+ OnExecute = actAnadirExecute
+ end
+ object actEliminar: TAction
+ Hint = 'Quitar la imagen del producto'
+ ImageIndex = 1
+ OnExecute = actEliminarExecute
+ end
+ end
+end
diff --git a/Source/Modulos/Articulos/Views/uViewArticulo.pas b/Source/Modulos/Articulos/Views/uViewArticulo.pas
new file mode 100644
index 00000000..aa1fc46d
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/uViewArticulo.pas
@@ -0,0 +1,282 @@
+unit uViewArticulo;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uViewBase, ExtCtrls, StdCtrls, Buttons, DB, uDADataTable,
+ DBCtrls, Grids, DBGrids, uBizArticulos, Mask, ComCtrls, uCustomView,
+ JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit,
+ cxDBEdit, dxLayoutControl, cxCheckBox, PngSpeedButton, cxImage, ActnList,
+ ImgList, PngImageList, cxGraphics, cxMaskEdit, cxDropDownEdit,
+ uFamiliasController, uViewDatosYSeleccionProveedor, cxSpinEdit, cxCurrencyEdit,
+ uArticulosController, uDAInterfaces;
+
+type
+ IViewArticulo = interface(IViewBase)
+ ['{65206152-786D-47AE-A037-5EF480BC056C}']
+ function GetArticulo: IBizArticulo;
+ procedure SetArticulo(const Value: IBizArticulo);
+ property Articulo: IBizArticulo read GetArticulo write SetArticulo;
+
+ function GetController : IArticulosController;
+ procedure SetController (const Value : IArticulosController);
+ property Controller : IArticulosController read GetController write SetController;
+ end;
+
+ TfrViewArticulo = class(TfrViewBase, IViewArticulo)
+ dsViewArticulo: TDADataSource;
+ dxLayoutControlArticuloGroup_Root: TdxLayoutGroup;
+ dxLayoutControlArticulo: TdxLayoutControl;
+ dxLayoutControlArticuloGroup1: TdxLayoutGroup;
+ dxLayoutControlArticuloItem3: TdxLayoutItem;
+ eReferencia: TcxDBTextEdit;
+ dxLayoutControlArticuloItem8: TdxLayoutItem;
+ eDescripcion: TcxDBTextEdit;
+ dxLayoutControlArticuloGroup2: TdxLayoutGroup;
+ dxLayoutControlArticuloItem1: TdxLayoutItem;
+ eNoComisionable: TcxDBCheckBox;
+ dxLayoutControlArticuloGroup4: TdxLayoutGroup;
+ OpenDialog1: TOpenDialog;
+ SmallImages: TPngImageList;
+ ActionList1: TActionList;
+ actAnadir: TAction;
+ actEliminar: TAction;
+ dxLayoutControlArticuloItem2: TdxLayoutItem;
+ PngSpeedButton2: TPngSpeedButton;
+ dxLayoutControlArticuloItem5: TdxLayoutItem;
+ PngSpeedButton1: TPngSpeedButton;
+ dxLayoutControlArticuloGroup3: TdxLayoutGroup;
+ dxLayoutControlArticuloGroup7: TdxLayoutGroup;
+ eImagen: TcxImage;
+ dxLayoutControlArticuloItem6: TdxLayoutItem;
+ dxLayoutControlArticuloGroup5: TdxLayoutGroup;
+ dxLayoutControlArticuloItem4: TdxLayoutItem;
+ cbFamilia: TcxDBComboBox;
+ dxLayoutControlArticuloGroup6: TdxLayoutGroup;
+ dxLayoutControlArticuloItem14: TdxLayoutItem;
+ frViewDatosYSeleccionProveedor1: TfrViewDatosYSeleccionProveedor;
+ dxLayoutControlArticuloItem15: TdxLayoutItem;
+ eReferenciaProv: TcxDBTextEdit;
+ dxLayoutControlArticuloItem16: TdxLayoutItem;
+ ePrecioCoste: TcxDBCurrencyEdit;
+ dxLayoutControlArticuloItem17: TdxLayoutItem;
+ eDescuento: TcxDBSpinEdit;
+ dxLayoutControlArticuloItem18: TdxLayoutItem;
+ ePrecioNeto: TcxDBCurrencyEdit;
+ dxLayoutControlArticuloItem19: TdxLayoutItem;
+ ePrecioPorte: TcxDBCurrencyEdit;
+ dxLayoutControlArticuloGroup11: TdxLayoutGroup;
+ dxLayoutControlArticuloGroup12: TdxLayoutGroup;
+ dxLayoutControlArticuloItem7: TdxLayoutItem;
+ cbNoInventariable: TcxDBCheckBox;
+ dxLayoutControlArticuloGroup8: TdxLayoutGroup;
+ procedure actEliminarExecute(Sender: TObject);
+ procedure actAnadirExecute(Sender: TObject);
+ procedure cbFamiliaPropertiesInitPopup(Sender: TObject);
+ procedure CustomViewCreate(Sender: TObject);
+ procedure CustomViewDestroy(Sender: TObject);
+ procedure cbFamiliaPropertiesValidate(Sender: TObject;
+ var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
+ procedure CustomViewShow(Sender: TObject);
+ procedure PrecioNetoChanged(Sender: TObject);
+ private
+ procedure CargarImagen;
+ procedure SalvarImagen;
+ protected
+ FFamiliasController: IFamiliasController;
+ FController: IArticulosController;
+ FArticulo: IBizArticulo;
+ function GetArticulo: IBizArticulo;
+ procedure SetArticulo(const Value: IBizArticulo); virtual;
+ function GetController : IArticulosController;
+ procedure SetController (const Value : IArticulosController);
+ procedure OnProveedorChanged(Sender: TObject);
+ public
+ property Articulo: IBizArticulo read GetArticulo write SetArticulo;
+ property Controller : IArticulosController read GetController write SetController;
+ end;
+
+implementation
+
+uses uDataModuleArticulos, uSistemaFunc, uBizFamilias, uBizContactos;
+
+{$R *.dfm}
+
+
+{ TfrViewArticulos }
+
+{
+******************************* TfrViewArticulos ********************************
+}
+
+procedure TfrViewArticulo.actAnadirExecute(Sender: TObject);
+begin
+{ eImagen.LoadFromFile;
+ if Assigned(eImagen.Picture) then
+ SalvarImagen;}
+end;
+
+procedure TfrViewArticulo.actEliminarExecute(Sender: TObject);
+begin
+{ inherited;
+ eImagen.Clear;
+ FArticulo.QuitarImagen;}
+end;
+
+procedure TfrViewArticulo.CargarImagen;
+{var
+ aAux : String;}
+begin
+{ if FArticulo.HayImagen then
+ begin
+ ShowHourglassCursor;
+ try
+ aAux := DarFicheroJPGTemporal;
+ FArticulo.SalvarImagen(aAux);
+ try
+ eImagen.Picture.LoadFromFile(aAux);
+ except
+ on EInvalidGraphic do
+ ShowMessage('error');
+ end;
+ finally
+ DeleteFile(aAux);
+ HideHourglassCursor;
+ end;
+ end;}
+end;
+
+procedure TfrViewArticulo.cbFamiliaPropertiesInitPopup(Sender: TObject);
+begin
+ inherited;
+ with cbFamilia.Properties.Items do
+ begin
+ BeginUpdate;
+ try
+ Clear;
+ AddStrings(FFamiliasController.DarListaFamilias);
+ finally
+ EndUpdate;
+ end;
+ end;
+end;
+
+procedure TfrViewArticulo.cbFamiliaPropertiesValidate(Sender: TObject;
+ var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
+var
+ AFamilias : IBizFamilia;
+begin
+ inherited;
+ with (Sender as TcxDBComboBox) do
+ begin
+ if (Length(DisplayValue) > 0) and (DisplayValue <> FArticulo.FAMILIA) then
+ if Properties.LookupItems.IndexOf(DisplayValue) < 0 then
+ begin
+ Properties.LookupItems.BeginUpdate;
+ AFamilias := FFamiliasController.BuscarTodos;
+ AFamilias.DataTable.Active := True;
+ try
+ FFamiliasController.Anadir(AFamilias);
+ AFamilias.DESCRIPCION := DisplayValue;
+ FFamiliasController.Guardar(AFamilias);
+ Properties.LookupItems.Add(DisplayValue);
+ finally
+ Properties.LookupItems.EndUpdate;
+ AFamilias := NIL;
+ end;
+ end;
+ end;
+end;
+
+procedure TfrViewArticulo.CustomViewCreate(Sender: TObject);
+begin
+ inherited;
+ FFamiliasController := TFamiliasController.Create;
+end;
+
+procedure TfrViewArticulo.CustomViewDestroy(Sender: TObject);
+begin
+ FFamiliasController := Nil;
+ ePrecioCoste.Properties.OnEditValueChanged := Nil;
+ eDescuento.Properties.OnEditValueChanged := Nil;
+ inherited;
+end;
+
+procedure TfrViewArticulo.CustomViewShow(Sender: TObject);
+begin
+ inherited;
+ ePrecioCoste.Properties.OnEditValueChanged := PrecioNetoChanged;
+ eDescuento.Properties.OnEditValueChanged := PrecioNetoChanged;
+end;
+
+function TfrViewArticulo.GetArticulo: IBizArticulo;
+begin
+ Result := FArticulo;
+end;
+
+function TfrViewArticulo.GetController: IArticulosController;
+begin
+ Result := FController;
+end;
+
+procedure TfrViewArticulo.OnProveedorChanged(Sender: TObject);
+begin
+ if Assigned(FArticulo) then
+ begin
+ FArticulo.Edit;
+ FArticulo.ID_PROVEEDOR := frViewDatosYSeleccionProveedor1.Proveedor.ID;
+ FArticulo.DESCUENTO := frViewDatosYSeleccionProveedor1.Proveedor.DESCUENTO;
+ end;
+end;
+
+procedure TfrViewArticulo.PrecioNetoChanged(Sender: TObject);
+begin
+ if Assigned(FController) then
+ FController.CalcularPrecioNeto(FArticulo);
+end;
+
+procedure TfrViewArticulo.SalvarImagen;
+var
+ aAux : String;
+begin
+{ ShowHourglassCursor;
+ try
+ aAux := DarFicheroJPGTemporal;
+ eImagen.Picture.SaveToFile(aAux);
+ FArticulo.CargarImagen(aAux);
+ Self.Modified := True;
+ finally
+ DeleteFile(aAux);
+ HideHourglassCursor;
+ end;}
+end;
+
+procedure TfrViewArticulo.SetArticulo(const Value: IBizArticulo);
+begin
+ FArticulo := Value;
+ frViewDatosYSeleccionProveedor1.OnProveedorChanged := NIL;
+
+ if Assigned(FArticulo) then
+ begin
+ dsViewArticulo.DataTable := FArticulo.DataTable;
+ frViewDatosYSeleccionProveedor1.Controller := FController.ProveedoresController;
+ frViewDatosYSeleccionProveedor1.Proveedor := (FController.ProveedoresController.Buscar(FArticulo.ID_PROVEEDOR) as IBizProveedor);
+ frViewDatosYSeleccionProveedor1.OnProveedorChanged := OnProveedorChanged;
+
+// CargarImagen;
+ end
+ else begin
+ dsViewArticulo.DataTable := NIL;
+ FArticulo := NIL;
+ eImagen.Clear;
+ end;
+end;
+
+procedure TfrViewArticulo.SetController(const Value: IArticulosController);
+begin
+ FController := Value;
+end;
+
+end.
+
diff --git a/Source/Modulos/Articulos/Views/uViewArticulos.dfm b/Source/Modulos/Articulos/Views/uViewArticulos.dfm
new file mode 100644
index 00000000..3bd34949
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/uViewArticulos.dfm
@@ -0,0 +1,245 @@
+inherited frViewArticulos: TfrViewArticulos
+ inherited cxGrid: TcxGrid
+ inherited cxGridView: TcxGridDBTableView
+ OnMouseMove = cxGridViewMouseMove
+ DataController.KeyFieldNames = 'ID'
+ DataController.Options = [dcoAnsiSort, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText, dcoGroupsAlwaysExpanded]
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Format = '0 almacenes'
+ Kind = skCount
+ end
+ item
+ Format = '0 Art'#237'culos'
+ Kind = skCount
+ Column = cxGridViewDESCRIPCION
+ end>
+ OptionsBehavior.PullFocusing = True
+ OptionsCustomize.ColumnHidingOnGrouping = False
+ OptionsView.GroupFooters = gfAlwaysVisible
+ object cxGridViewINVENTARIABLE: TcxGridDBColumn
+ Caption = #191'Inventariable?'
+ DataBinding.FieldName = 'INVENTARIABLE'
+ PropertiesClassName = 'TcxImageComboBoxProperties'
+ Properties.Images = PngImageList
+ Properties.Items = <
+ item
+ Value = 0
+ end
+ item
+ ImageIndex = 0
+ Tag = 1
+ Value = 1
+ end>
+ BestFitMaxWidth = 22
+ MinWidth = 22
+ Options.HorzSizing = False
+ Width = 22
+ end
+ object cxGridViewCOMISIONABLE: TcxGridDBColumn
+ Caption = #191'Comisionable?'
+ DataBinding.FieldName = 'COMISIONABLE'
+ PropertiesClassName = 'TcxImageComboBoxProperties'
+ Properties.DefaultDescription = 'S'#237
+ Properties.DefaultImageIndex = 1
+ Properties.Images = PngImageList
+ Properties.ImmediatePost = True
+ Properties.ImmediateUpdateText = True
+ Properties.Items = <
+ item
+ Description = 'S'#237
+ ImageIndex = 1
+ Tag = 1
+ Value = 1
+ end
+ item
+ Description = 'No'
+ Value = 0
+ end
+ item
+ Description = 'S'#237
+ ImageIndex = 1
+ Tag = 1
+ end>
+ Properties.PostPopupValueOnTab = True
+ Properties.ShowDescriptions = False
+ BestFitMaxWidth = 22
+ MinWidth = 22
+ Options.HorzSizing = False
+ Width = 22
+ end
+ object cxGridViewREFERENCIA: TcxGridDBColumn
+ Caption = 'Referencia'
+ DataBinding.FieldName = 'REFERENCIA'
+ BestFitMaxWidth = 60
+ Width = 60
+ end
+ object cxGridViewDESCRIPCION: TcxGridDBColumn
+ Caption = 'Descripci'#243'n'
+ DataBinding.FieldName = 'DESCRIPCION'
+ BestFitMaxWidth = 120
+ Width = 120
+ end
+ object cxGridViewFAMILIA: TcxGridDBColumn
+ Caption = 'Familia'
+ DataBinding.FieldName = 'FAMILIA'
+ BestFitMaxWidth = 60
+ Width = 60
+ end
+ object cxGridViewNOMBRE_PROVEEDOR: TcxGridDBColumn
+ Caption = 'Proveedor'
+ DataBinding.FieldName = 'NOMBRE_PROVEEDOR'
+ BestFitMaxWidth = 120
+ Width = 120
+ end
+ object cxGridViewREFERENCIA_PROV: TcxGridDBColumn
+ Caption = 'Ref. proveedor'
+ DataBinding.FieldName = 'REFERENCIA_PROV'
+ BestFitMaxWidth = 60
+ Width = 60
+ end
+ object cxGridViewPRECIO_COSTE: TcxGridDBColumn
+ Caption = 'Precio coste'
+ DataBinding.FieldName = 'PRECIO_COSTE'
+ PropertiesClassName = 'TcxCurrencyEditProperties'
+ Properties.Alignment.Horz = taRightJustify
+ FooterAlignmentHorz = taRightJustify
+ HeaderAlignmentHorz = taRightJustify
+ end
+ object cxGridViewDESCUENTO: TcxGridDBColumn
+ Caption = 'Descuento'
+ DataBinding.FieldName = 'DESCUENTO'
+ PropertiesClassName = 'TcxSpinEditProperties'
+ Properties.Alignment.Horz = taRightJustify
+ Properties.DisplayFormat = ',0.00 %;-,0.00 %'
+ FooterAlignmentHorz = taRightJustify
+ HeaderAlignmentHorz = taRightJustify
+ end
+ object cxGridViewPRECIO_NETO: TcxGridDBColumn
+ Caption = 'Precio neto'
+ DataBinding.FieldName = 'PRECIO_NETO'
+ PropertiesClassName = 'TcxCurrencyEditProperties'
+ Properties.Alignment.Horz = taRightJustify
+ FooterAlignmentHorz = taRightJustify
+ HeaderAlignmentHorz = taRightJustify
+ end
+ object cxGridViewPRECIO_PORTE: TcxGridDBColumn
+ Caption = 'Precio porte'
+ DataBinding.FieldName = 'PRECIO_PORTE'
+ PropertiesClassName = 'TcxCurrencyEditProperties'
+ Properties.Alignment.Horz = taRightJustify
+ FooterAlignmentHorz = taRightJustify
+ HeaderAlignmentHorz = taRightJustify
+ end
+ end
+ end
+ inherited frViewFiltroBase1: TfrViewFiltroBase
+ inherited TBXDockablePanel1: TTBXDockablePanel
+ inherited dxLayoutControl1: TdxLayoutControl
+ inherited txtFiltroTodo: TcxTextEdit
+ ExplicitWidth = 273
+ Width = 273
+ end
+ inherited edtFechaIniFiltro: TcxDateEdit
+ ExplicitWidth = 121
+ Width = 121
+ end
+ inherited edtFechaFinFiltro: TcxDateEdit
+ ExplicitWidth = 121
+ Width = 121
+ end
+ end
+ end
+ end
+ inherited pnlAgrupaciones: TTBXDockablePanel
+ Visible = True
+ ExplicitWidth = 554
+ inherited TBXAlignmentPanel1: TTBXAlignmentPanel
+ inherited TBXToolbar1: TTBXToolbar
+ object TBXSeparatorItem1: TTBXSeparatorItem
+ end
+ object TBXItem3: TTBXItem
+ Action = actFamilia
+ end
+ object TBXSeparatorItem2: TTBXSeparatorItem
+ end
+ object TBXItem2: TTBXItem
+ Action = actProveedor
+ end
+ end
+ end
+ end
+ inherited dxComponentPrinter: TdxComponentPrinter
+ inherited dxComponentPrinterLink: TdxGridReportLink
+ ReportDocument.CreationDate = 38673.842406053240000000
+ BuiltInReportLink = True
+ end
+ end
+ inherited ActionList1: TActionList
+ Left = 352
+ Top = 560
+ object actFamilia: TAction
+ Caption = 'Familia'
+ OnExecute = actFamiliaExecute
+ OnUpdate = actFamiliaUpdate
+ end
+ object actProveedor: TAction
+ Caption = 'Proveedor'
+ OnExecute = actProveedorExecute
+ OnUpdate = actProveedorUpdate
+ end
+ end
+ inherited PngImageList10: TPngImageList
+ Left = 320
+ Top = 560
+ end
+ inherited dxPrintStyleManager1: TdxPrintStyleManager
+ inherited dxPrintStyleManager1Style1: TdxPSPrintStyle
+ BuiltInStyle = True
+ end
+ end
+ object PngImageList: TPngImageList
+ PngImages = <
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD2520000022E4944415478DA
+ 8D93CF6BD36018C7BF6997A45DD376EA70CA18D31D44981741280C44119DA83D
+ C87619781A1EFD1BC49B2028B28353141111A43BE8CD934E65A8D4A1686B61B5
+ A31DD8CCBAFEDAACEDF226B389EFFB26CBCC54E6030FEFCB4B3E9FE79B9744B0
+ 2C0B8220E0F7BA3AB2D75A282DE07F4AD82C60F0851B8F50530BF85EF98A6236
+ 8DCCAB69B0B366BD8C95B24ACF4BB877FD226AFD635EC13A5CF99243A356869A
+ 4D51F8398799EC476D09E5621E0F6F5EC6C8D938EE7C503604EB7055CDA34127
+ A8B90C3ECD3CE570A35AA2FD0DCB4B2AEE4F5CC29953C35094102667655B706D
+ 7480C3F97412AD951AAAC502E6DEBCE47031974673B942BB8AA9DB57103F7D12
+ 9D9D413ED4154C8C0BD6FCE7AD2F6C2816C3CE9E6E8862077C3E9F57307CE2FC
+ 1F80655A308C35E844C7B3273318D8D78FE8B6282449A41211B7DE05FE2D304D
+ 13866EC34433F0FAC55BF4EDE945A42B0C910A6459C6DD94F27781D936F964B2
+ AADB02DAEF9329ECEEED4138A240944548B2840773DBBD02B637596C6238205D
+ 352AD175643E66B1A3BB0B0A15489204292061AAB0CB2B68D3C96B34367120BE
+ 3AB2F96C01E1A8825028083920F35778BCD8B721387E6C9C42060788465C50A3
+ 12B24AB0582C2110946907282C61BA3588442221B882C343E75C50A30093B104
+ 84D849EAD53AFC1D7E0ECFFA631C76FF0526387470D4135977405B62A0D56CB2
+ C791891C71618FE0C0FEB873618623B2E33361FB679B4A340A1FF5C01E41928C
+ 6DF9256E8659FD02D3B7960923D6946A0000000049454E44AE426082}
+ Name = 'PngImage0'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 61000000B64944415478DA6364A010300E2A031C80B800CA9E00C407408C008F
+ 00850F3F3E2C3870E080032103E09A900D031AD0B061C70607A8185E03FE03B1
+ 2094FD1E24E7E0E12070E1C2850D1F5E7C4800F21F90EC0207078702A0D30370
+ D94E300C0404040E7CF8F0A101C960BC06A000A0ED0140DB0BA006630D604206
+ 00F51F0029DE802B80711A000C798703270E34009D0FF33B4600E335C0C0C0E0
+ 0028F4A136630D60425E00290685FE075C014C300C8805036F00007263471179
+ E402210000000049454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
+ end>
+ Left = 160
+ Top = 32
+ Bitmap = {}
+ end
+end
diff --git a/Source/Modulos/Articulos/Views/uViewArticulos.pas b/Source/Modulos/Articulos/Views/uViewArticulos.pas
new file mode 100644
index 00000000..3f4b77b0
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/uViewArticulos.pas
@@ -0,0 +1,173 @@
+unit uViewArticulos;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
+ cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel,
+ cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView,
+ cxGridTableView, cxGridDBTableView, cxGrid, uBizArticulos, ActnList, Menus,
+ cxGridBandedTableView, cxGridDBBandedTableView, JvComponent,
+ JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn,
+ dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns,
+ dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk,
+ cxGridCustomPopupMenu, cxGridPopupMenu, cxCurrencyEdit, cxSpinEdit, cxCheckBox,
+ cxCheckComboBox, cxImageComboBox, TB2Item, TBX, TB2Toolbar, TBXDkPanels,
+ TB2Dock, uViewFiltroBase, dxPgsDlg, uDAInterfaces;
+
+type
+ IViewArticulos = interface(IViewGrid)
+ ['{4C09BEC8-C82B-4DE8-8C36-40DB62224E95}']
+ function GetArticulos: IBizArticulo;
+ procedure SetArticulos(const Value: IBizArticulo);
+ property Articulos: IBizArticulo read GetArticulos write SetArticulos;
+ end;
+
+ TfrViewArticulos = class(TfrViewGrid, IViewArticulos)
+ PngImageList: TPngImageList;
+ cxGridViewREFERENCIA: TcxGridDBColumn;
+ cxGridViewDESCRIPCION: TcxGridDBColumn;
+ cxGridViewFAMILIA: TcxGridDBColumn;
+ cxGridViewNOMBRE_PROVEEDOR: TcxGridDBColumn;
+ actFamilia: TAction;
+ actProveedor: TAction;
+ TBXItem2: TTBXItem;
+ TBXItem3: TTBXItem;
+ TBXSeparatorItem1: TTBXSeparatorItem;
+ TBXSeparatorItem2: TTBXSeparatorItem;
+ cxGridViewINVENTARIABLE: TcxGridDBColumn;
+ procedure cxGridViewIDCustomDrawCell(
+ Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
+ AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
+ procedure actProveedorExecute(Sender: TObject);
+ procedure actProveedorUpdate(Sender: TObject);
+ procedure actFamiliaExecute(Sender: TObject);
+ procedure actFamiliaUpdate(Sender: TObject);
+ procedure cxGridViewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
+ protected
+ FArticulos: IBizArticulo;
+ function GetArticulos: IBizArticulo; virtual;
+ procedure SetArticulos(const Value: IBizArticulo); virtual;
+ public
+ property Articulos: IBizArticulo read GetArticulos write SetArticulos;
+ end;
+
+implementation
+{$R *.dfm}
+
+uses //uDataModuleArticulos,
+
+schArticulosClient_Intf;
+
+
+{ TfrViewArticulos }
+
+{
+******************************* TfrViewArticulos *******************************
+}
+function TfrViewArticulos.GetArticulos: IBizArticulo;
+begin
+ Result := FArticulos;
+end;
+
+procedure TfrViewArticulos.SetArticulos(const Value: IBizArticulo);
+begin
+ FArticulos := Value;
+ if Assigned(FArticulos) then
+ dsDataSource.DataTable := FArticulos.DataTable;
+end;
+
+
+procedure TfrViewArticulos.actFamiliaExecute(Sender: TObject);
+begin
+ if (cxGridViewFAMILIA.GroupIndex < 0) then
+ begin
+ cxGridViewFAMILIA.GroupIndex := cxGridView.GroupedColumnCount;
+ cxGridViewFAMILIA.Visible := False;
+ end
+ else
+ begin
+ cxGridViewFAMILIA.GroupIndex := -1;
+ cxGridViewFAMILIA.Visible := True;
+ end;
+end;
+
+procedure TfrViewArticulos.actFamiliaUpdate(Sender: TObject);
+begin
+ inherited;
+ (Sender as TAction).Checked := not (cxGridViewFAMILIA.GroupIndex < 0);
+end;
+
+procedure TfrViewArticulos.actProveedorExecute(Sender: TObject);
+begin
+ inherited;
+ if (cxGridViewNOMBRE_PROVEEDOR.GroupIndex < 0) then
+ begin
+ cxGridViewNOMBRE_PROVEEDOR.GroupIndex := cxGridView.GroupedColumnCount;
+ cxGridViewNOMBRE_PROVEEDOR.Visible := False;
+ end
+ else
+ begin
+ cxGridViewNOMBRE_PROVEEDOR.GroupIndex := -1;
+ cxGridViewNOMBRE_PROVEEDOR.Visible := True;
+ end;
+end;
+
+procedure TfrViewArticulos.actProveedorUpdate(Sender: TObject);
+begin
+ inherited;
+ (Sender as TAction).Checked := not (cxGridViewNOMBRE_PROVEEDOR.GroupIndex < 0);
+end;
+
+procedure TfrViewArticulos.cxGridViewIDCustomDrawCell(
+ Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
+ AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
+var
+ R : TRect;
+begin
+ inherited;
+ R := AViewInfo.ContentBounds;
+ ACanvas.FillRect(R);
+ ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0);
+ ADone := True;
+end;
+
+procedure TfrViewArticulos.cxGridViewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
+var
+ Site : TcxGridSite;
+ HitTest : TcxCustomGridHitTest;
+ Item : TcxCustomGridTableItem;
+ Rec : TcxCustomGridRecord;
+ sNewHint : string;
+begin
+{Este método desaparecerá cuando se migre la aplicación, es para sacar la causa de la incidencia sin necesidad de entrar en el documento}
+ Site := Sender as TcxGridSite;
+ HitTest := Site.GridView.ViewInfo.GetHitTest(X, Y);
+ if HitTest is TcxGridRecordCellHitTest then begin
+ Item := TcxGridRecordCellHitTest(HitTest).Item;
+ Rec := TcxGridRecordCellHitTest(HitTest).GridRecord;
+
+ if (Item.Index = cxGridView.GetColumnByFieldName(fld_ArticulosCOMISIONABLE).Index) then begin
+ sNewHint := 'Todo artículo comisionable se tendrá en cuenta para la liquidación de comisiones de los agentes';
+ if (cxGrid.Hint <> sNewHint) then begin
+ cxGrid.ShowHint := false;
+ cxGrid.Hint := sNewHint;
+ end
+ else cxGrid.ShowHint := true;
+ end
+ else if (Item.Index = cxGridView.GetColumnByFieldName(fld_ArticulosINVENTARIABLE).Index) then begin
+ sNewHint := 'Todo artículo inventariable se tendrá en cuenta para el control de almacenes (inventario de almacén)';
+ if (cxGrid.Hint <> sNewHint) then begin
+ cxGrid.ShowHint := false;
+ cxGrid.Hint := sNewHint;
+ end
+ else cxGrid.ShowHint := true;
+ end
+ else begin
+ cxGrid.ShowHint := false;
+ end;
+ end;
+end;
+
+end.
diff --git a/Source/Modulos/Articulos/Views/uViewDetallesArticulos.dfm b/Source/Modulos/Articulos/Views/uViewDetallesArticulos.dfm
new file mode 100644
index 00000000..a3f7fd72
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/uViewDetallesArticulos.dfm
@@ -0,0 +1,358 @@
+inherited frViewDetallesArticulos: TfrViewDetallesArticulos
+ ParentBiDiMode = False
+ OnShow = CustomViewShow
+ inherited ToolBar1: TToolBar
+ inherited ToolButton4: TToolButton
+ Wrap = True
+ end
+ inherited ToolButton14: TToolButton
+ Left = 0
+ Top = 22
+ Wrap = False
+ ExplicitLeft = 0
+ ExplicitTop = 22
+ end
+ inherited FontName: TJvFontComboBox
+ Left = 34
+ ExplicitLeft = 34
+ end
+ inherited FontSize: TEdit
+ Left = 179
+ Width = 42
+ ExplicitLeft = 179
+ ExplicitWidth = 42
+ end
+ inherited UpDown1: TUpDown
+ Left = 221
+ Width = 17
+ ExplicitLeft = 221
+ ExplicitWidth = 17
+ end
+ inherited ToolButton13: TToolButton
+ Left = 238
+ ExplicitLeft = 238
+ end
+ inherited ToolButton6: TToolButton
+ Left = 246
+ ExplicitLeft = 246
+ end
+ inherited ToolButton7: TToolButton
+ Left = 280
+ ExplicitLeft = 280
+ end
+ inherited ToolButton8: TToolButton
+ Left = 314
+ ExplicitLeft = 314
+ end
+ inherited ToolButton12: TToolButton
+ Left = 348
+ ExplicitLeft = 348
+ end
+ inherited ToolButton9: TToolButton
+ Left = 356
+ ExplicitLeft = 356
+ end
+ inherited ToolButton10: TToolButton
+ Left = 390
+ ExplicitLeft = 390
+ end
+ inherited ToolButton11: TToolButton
+ Left = 424
+ ExplicitLeft = 424
+ end
+ end
+ inherited cxGrid: TcxGrid
+ inherited cxGridView: TcxGridDBTableView
+ inherited cxGridViewTIPO: TcxGridDBColumn
+ Visible = False
+ Width = 26
+ end
+ object cxGridViewID_ARTICULO: TcxGridDBColumn [3]
+ DataBinding.FieldName = 'ID_ARTICULO'
+ Visible = False
+ Width = 31
+ end
+ object cxGridViewREFERENCIA: TcxGridDBColumn [4]
+ Caption = 'Referencia'
+ DataBinding.FieldName = 'REFERENCIA'
+ PropertiesClassName = 'TcxTextEditProperties'
+ Width = 59
+ end
+ object cxGridViewREFERENCIA_PROVEEDOR: TcxGridDBColumn [5]
+ Caption = 'Ref. proveedor'
+ DataBinding.FieldName = 'REFERENCIA_PROVEEDOR'
+ PropertiesClassName = 'TcxTextEditProperties'
+ Width = 66
+ end
+ inherited cxGridViewDESCRIPCION: TcxGridDBColumn
+ Width = 85
+ end
+ inherited cxGridViewCANTIDAD: TcxGridDBColumn
+ Width = 48
+ end
+ inherited cxGridViewIMPORTEUNIDAD: TcxGridDBColumn
+ Width = 48
+ end
+ inherited cxGridViewDESCUENTO: TcxGridDBColumn
+ HeaderAlignmentHorz = taRightJustify
+ Width = 25
+ end
+ inherited cxGridViewIMPORTEPORTE: TcxGridDBColumn
+ Caption = 'Porte unidad'
+ end
+ inherited cxGridViewIMPORTETOTAL: TcxGridDBColumn
+ Width = 49
+ end
+ end
+ end
+ inherited TBXDock1: TTBXDock
+ inherited TBXToolbar1: TTBXToolbar
+ ExplicitWidth = 451
+ object TBXItem12: TTBXItem [0]
+ Action = actAnadirArticulos
+ DisplayMode = nbdmImageAndText
+ end
+ end
+ end
+ inherited ActionListContenido: TActionList
+ object actAnadirArticulos: TAction
+ Category = 'Operaciones'
+ Caption = 'A'#241'adir art'#237'culos'
+ ImageIndex = 12
+ OnExecute = actAnadirArticulosExecute
+ OnUpdate = actAnadirArticulosUpdate
+ end
+ end
+ inherited ContenidoImageList: TPngImageList
+ PngImages = <
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000000D04944415478DA
+ 6364C0062630FCC72A5EC0C0882EC488CB80191909706EDDBA750CAF767D6260
+ 5830240DF8F9FB3743EBE6CD780CC011602003409A7F0071EF8E1D10030C30D5
+ 31A23B1706609AB1E23F7FC0F4FA2967B01B408CE6A3B76E815D856100319ABF
+ FFFAC570EEC103540340218D0C92EDECE01AD79E398335ACE106305CC0942CAC
+ 77871BB0F5E2454820620138A331D3CB09EEECBD57AF929E0E629DADC106FCF9
+ F70F1E602419106A67C6F01DE40260805D7AFC9874037C2C0D194EDDBD8B1260
+ 241900A6D103178B01000648ED7B1FCA93F30000000049454E44AE426082}
+ Name = 'PngImage0'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD2520000006E4944415478DA
+ 63FCFFFF3F03258071D40006C6397A1214990036203925952CCD73E7CCC66100
+ C85BBF7F32307CFDC4C0F0FD2B03C33710FD05487F46E0374F19E6FE964032E0
+ CF6F840120CD200D5F3F43357E42F0416C90013FBFA119B0B099742FC00CA028
+ 10073E1D0C7D030077CE5E397DD56C480000000049454E44AE426082}
+ Name = 'PngImage1'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000000E14944415478DA
+ 63FCFFFF3F032580717019C0C8C88822E9D770F9FFA6065D1441740B711A00D2
+ 1C1DA5CA307DC64586037DE68C241900D3FCF10B23C39123CF19AE5EBECF7076
+ B623235106206BFEF899114C3FBAFB94E1C4D1AB0CB7567A33E235C0BFF1CAFF
+ 9F3F7F3380B0B7BF2158F3BB8F4C0C7B36EE60F8F9E317C30F207EB1238C91A0
+ 17AC728EFC77F234076BFEF2E631C3C1BDE7191E6E0C24CE0B20609CBAFFBFB9
+ A31DD0004606B6DF8F18766E3DC9F0726738F106E8C6EFFA6F68AC0617DFB8F6
+ 30C3C783B1C41BA016BEF53FCCCF30FCF364326103C801C3C00000BEA5B3E15D
+ 7F64240000000049454E44AE426082}
+ Name = 'PngImage2'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000000DF4944415478DA
+ 63FCFFFF3F032580717019C0C8C808A643DA6E80057FFDFACDF0F327041FE833
+ 074BA25B88D380982805869FBF18183E7E61645830EF34C3B12936C41BE0D770
+ F97F74942A58F39123CF19AE5EBECF7076B623F106B8579EFB1F1CAACDF0F133
+ 23C3E58BCF18CE9FBDC57079A11B6103FC1BAFFC87F9D9DBDF10EC8247779F32
+ 9C387A95E1E78F5F0C3F80F8C58E3046BC2E70283AF91FA6F9DD472620666460
+ FBFD8861E7D6930C2F77863312E505E3D4FDFFCD1DED3034131D0620A016BEF5
+ BF85B5368A66920C000171F795FF91351334801C300C0C00007FBCB4E1E577C7
+ 9A0000000049454E44AE426082}
+ Name = 'PngImage3'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001984944415478DA
+ 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440
+ 1BA234FDF9FB8FE1F79FBF60EC105CC4409201C89A8F9DBDC150D5360BD30046
+ C399181A59989918A23C55181A328C1804F9D8C0069CBD7C07BB01C886FC3F9F
+ CEF00F28BF7AD75D86888ABD0CEC6CCC0C8F774430FCF9F38FE1E2F57B840DF8
+ 7B2E0DACF8C7AF3F0CFC360BC006DCDF120676C1B5DB0F091BF0F3540AC3C3E7
+ 9F19DAE79D6758B6FD2E4353A6114384BB22D0D0BF0CB7EE3F216C003288F254
+ 66288BD765E0E56206BAE01FC3FDC7CFB01B00F233B3D12C30FBFDA138B0730F
+ 9C7ECE1056BE8FC1C954926172991958ECF9ABD79806803483FCCC6E36076CC0
+ 8B3D5160C52031459FD560B10BCB7DC02E78F3EE2DAA01317E56F038E6B75908
+ 567C6D6D1003273B33C396C38F18723B4F32B0B332311C99E70156F3F1D30754
+ 03C2BDCC51342303666646066F1B1986EC5035065E6E16B0BA6FDF3EA31A10E4
+ 6602762ACC1570F6EFBF503184DCBF7FFF197EFCF8826A809F9311C3A98BB748
+ CA4C700340B971E28CA524E7C6FC8CE81800E35A4E592A9A5C6B000000004945
+ 4E44AE426082}
+ Name = 'PngImage4'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001844944415478DA
+ 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440
+ 1BA234FDF9FB8FE1F79FBF60EC105CC4409201C89A8F9DBDC150D5360BB7010B
+ 37DF6248A8DB0FE7CB4BF2325C5D1B0237E0ECE53BF80D0081C69967191A669C
+ 6188F35163985C61C5F0EF1FC4057FFEFC63B878FD1E6103744357335CB9F38E
+ 61CB240F066B0331B866107DEDF643FC067CFFF98781CB622E98FD745714032B
+ 0B235CF31F20BE75FF096E03FE01C5CE5D7FC3601ABD8E41535180E1E05C6F14
+ CDBF81ECFB8F9F613700A419A478C9D65B0CC98D871862BC5518BAF24DE19A7F
+ 005D06623F7FF51AD30098669082CA49A71826AFB8CAD05D68CA10E2AC0009FD
+ DF7FA1B1F08FE1CDBBB7A806C4F859C1A3E8DDC79F0C0185BB182EDE7AC7B0BE
+ D799415B991F453388FEF8E903AA01E15EE6608993975F31B8656E4709D02D13
+ 9D1964C438E19A41F8DBB7CFA80604B999C09D8F1C5DE83683F0BF7FFF197EFC
+ F8826A809F9311C3A98BB748CA4C700340B971E28CA524E7C6FC8CE818000A3C
+ 81590C9B58CC0000000049454E44AE426082}
+ Name = 'PngImage5'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001854944415478DA
+ 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440
+ 1BA234FDF9FB8FE1F79FBF60EC105CC4806100A3E14C140DFFCFA763887F3C12
+ CF70ECEC0D86AAB65998067CFCF28B41C0763E98FDE6403C83303F07C33FA09A
+ B71F7E3088392D62B8BB259C81978B85E1ECE53BD80D40B60D643B48F39F3F10
+ 67F358CD6778B52F1ACCBF78FD1E6103FE9E4B836B066141BB450CCF764582D9
+ D76E3F246CC0CF532970CD202CE6B494E1E1B630A0A17F196EDD7F42D880B707
+ E318981819C09ADF7DFCC9A011B886E1EEA66020FF1FC3FDC7CFB01B00F2B356
+ D02A869B0F3E305424EA3364846A80BDD1B5F012C3D53BEF1966D558820D7CFE
+ EA35A601B000BBF5F00343CDD4D30C07CE3C07C70A1F372B838BB91443419426
+ 90CD0276C19B776F510D88F1B382FB1539E0E0ECDFB0B080F03F7EFA806A40B8
+ 97395882DF6621C1D47870B60BC3B76F9F510D08723321CA6610FEF7EF3FC38F
+ 1F5F500DF07332623875F1164999096E0028374E9CB194E4DC989F111D03002B
+ D67559EB1C43180000000049454E44AE426082}
+ Name = 'PngImage6'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000000F94944415478DA
+ 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440
+ 1BA234FDF9FB8FE1F79FBF60EC105CC4409201C89A8F9DBDC150D5368B3803FE
+ 01D5FCF983D00CC2672FDFC134809B9B1BAF0B9EBE7803D60C32ECE2F57B845D
+ 80CD6618FFDAED87A4BB00062EDF78C870EBFE13DC2EC067F31F30FF1FC3FDC7
+ CF487701C8E61F3FFF800D7AFEEA35A601E836FFFCF507C5F6DFBF612EFAC7F0
+ E6DD5B540362FCAC18F8F978890A833D47AF327CFCF401D580702F7354DB70D8
+ 0C93FBF6ED33AA01416E26446BFEF7EF3FC38F1F5F500DF07332623875F11651
+ 5E8001B801A0DC3871C6529273637E46740C002BB66C59EAC44C620000000049
+ 454E44AE426082}
+ Name = 'PngImage7'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001004944415478DA
+ 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440
+ 1BA234FDF9FB8FE1F79FBF60EC105CC4409201C89A8F9DBDC150D5368B3803FE
+ 01D5FCF983D00CC2672FDFC16D0037373756839EBE7803D60C32ECE2F57B845D
+ 80CD6618FFDAED879806E0B2191D5CBEF190E1D6FD27B85D80CFE63F60FE3F86
+ FB8F9F613700A499978707A7CD3F7EFE011BF4FCD56B4C03D06DFEF9EB0F8AED
+ BF7FC35CF48FE1CDBBB7A806C4F85931F0F3F11215067B8E5E65F8F8E903AA01
+ E15EE6A8B6E1B01926F7EDDB67540382DC4C88D6FCEFDF7F861F3FBEA01AE0E7
+ 64C470EAE22DA2BC0003700340B971E28CA524E7C6FC8CE8180048E16F597BCE
+ 9D230000000049454E44AE426082}
+ Name = 'PngImage8'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000000FC4944415478DA
+ 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440
+ 1BA234FDF9FB8FE1F79FBF60EC105CC4409201C89A8F9DBDC150D5368B3803FE
+ 01D5FCF983D00CC2672FDFC16D003737375E97DC79F09CE1E2F57B845D80CD66
+ 18FFDAED87980610B219062EDF78C870EBFE13DC2EC067F31F30FF1FC3FDC7CF
+ B01B00D2CCCBC383D705C7CEDE6278FEEA35A601E836FFFCF507C5F6DFBF612E
+ FAC7F0E6DD5B540362FCAC18F8F978890A833D47AF327CFCF401D580702F7354
+ DB70D80C93FBF6ED33AA01416E26446BFEF7EF3FC38F1F5F500DF07332623875
+ F116515E8001B801A0DC3871C6529273637E46740C0021BE635977EAA72D0000
+ 000049454E44AE426082}
+ Name = 'PngImage9'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001CB4944415478DA
+ 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440
+ 1BA234FDF9FB8FE1F79FBF60EC105CC480D580CAA3950C4B6E2C61789CFC18A7
+ E663676F3054B5CDC234E0EFFFBF0C327364185E7C7BC17020E40083BDB43DC3
+ 3FA09A3F7F109A41F8ECE53BD80D587B672D43CBA916860BAF2F3024682530CC
+ 759987A119C4BF78FD1E76031CD73A324CB09FC0E0B0C681E1CFBF3F0C8F129E
+ 32B0317280350ADA2D6278B62B12CCBE76FB21A60137DFDF64D058A481E2EFB9
+ 4E0B188214C2C09A41E0E1B630A00BFE32DCBAFF04D380C243850C06A2060CB1
+ 1A710C871E1F61705C6FC7E020E5C470A02D0C6CB394DB7286BB9B82812EF8C7
+ 70FFF13354034CED04194C969B303C4B7DCEC0CDC40B76A6DA52258667536B19
+ 562D92623017B16190F75AC57075B53F58EEF9ABD7A806347E886578F0E90183
+ 3CAF02C3D5C89B0C69FB531896555B63A4830BCB7DC02E78F3EE2DAA01317E56
+ 28A12CECB098E1F18E70440CFCFECBA01DBA91E1F4622F30FFE3A70FA806847B
+ 99A36886815B1B82E09A61E0E06C17866FDF3EA31A10E4668212DFC83643C410
+ 72FFFEFD67F8F1E30BAA017E4E460CA72EDE222933C10D00E5C6893396929C1B
+ F333A26300FC1C815930D4A9C10000000049454E44AE426082}
+ Name = 'PngImage10'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001124944415478DA
+ 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28
+ 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC
+ 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2
+ 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81
+ 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC
+ E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC
+ 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5
+ CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818
+ 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082}
+ Name = 'PngImage11'
+ Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000002354944415478DA
+ 9D93DF4B936114C73FEF9CDB9C947A23A546E185062E4308122AB5488942A18B
+ A2A228229088EEBA0B83EECCCBCAEA1FA8ABD29B0CACB0FC1176538ACA963FA6
+ A2AEF9966E6E367CF7EEDDF3F4CEB5B4B640FAC281E7E19CF339E73987479152
+ 92D2A34BCAC6650B9A8FD4A0A40089E42BCDE941D128E85AD212E7A896B48F83
+ 9B00FF939CB703C6BC26A0FD22D25AB0F5B68DE0467242EB804CD535B352DF32
+ DC5C75B2737B1E617D8D79DF0ACD53605FAEA1B6AA8FDEA15F1D24DE9249B3B9
+ 2B6837B2B853DD4457749496960ECE8D5772F9C0C8BAFF3720530709B97F404B
+ EE3E6E1D69E04DC0C3BDD6573CC986DD0EFE0DE80F43DC489E8716E175693977
+ 8F37D1A90E71FFF65BAE9AF32ACB379D0246A7F7A7034A3C4E6A5DE568868112
+ 55282B2DA4B278179EC0570606A6D0A5412CC7C062B130F9594D071CF617F2F0
+ CC35A2C4889B65E644800955C52A159CDBEC84D734739506934195DEC75FD201
+ F5C162AE379EE4933A8B61221CD2865D5AF9160AE38F8430AC122104B3A12526
+ 9E2F86FE00E83AB8A60BC8D31CB8BD7E8840757D298D27AA189CF4F2B27B98AC
+ A0056C906DCB425F886F74D0FEC0BE0E99710884397DCC389F90F8CE17D15053
+ C188DF47F7B331EADC7BE8B14DD791F80139C495B6B3F68E40ECE0E94C6B5C72
+ 4418BCB0485D4539E30195F79D1E0C8FA8902FA43B15A36CFE8D7F4B69558EBA
+ F616F714951430B3FA9D85FE006BC3B163B243BEDB1AA04D39E4CCB775E95E03
+ 2324B0080B22224EC9A7F2432AE627BA3D288D657888700000000049454E44AE
+ 426082}
+ Name = 'PngImage12'
+ Background = clWindow
+ end>
+ Bitmap = {}
+ end
+end
diff --git a/Source/Modulos/Articulos/Views/uViewDetallesArticulos.pas b/Source/Modulos/Articulos/Views/uViewDetallesArticulos.pas
new file mode 100644
index 00000000..7fe67bd5
--- /dev/null
+++ b/Source/Modulos/Articulos/Views/uViewDetallesArticulos.pas
@@ -0,0 +1,135 @@
+unit uViewDetallesArticulos;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, uViewDetallesDTO, cxStyles, cxCustomData, cxGraphics, cxFilter,
+ cxData, cxDataStorage, cxEdit, DB, cxDBData, cxImageComboBox, cxRichEdit,
+ cxMaskEdit, cxCurrencyEdit, cxCheckBox, ImgList, PngImageList, uDADataTable,
+ StdActns, ExtActns, ActnList, TB2Item, TBX, TB2Dock, TB2Toolbar, cxGridLevel,
+ cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
+ cxControls, cxGridCustomView, cxGrid, ComCtrls, StdCtrls, JvExStdCtrls,
+ JvCombobox, JvColorCombo, ToolWin, uControllerDetallesArticulos,
+ cxTextEdit, uDAInterfaces;
+
+type
+ IViewDetallesArticulos = interface(IViewDetallesDTO)
+ ['{D2F72E72-9CEA-4E43-AA18-625F7561E627}']
+ end;
+
+ TfrViewDetallesArticulos = class(TfrViewDetallesDTO, IViewDetallesArticulos)
+ cxGridViewID_ARTICULO: TcxGridDBColumn;
+ cxGridViewREFERENCIA: TcxGridDBColumn;
+ cxGridViewREFERENCIA_PROVEEDOR: TcxGridDBColumn;
+ actAnadirArticulos: TAction;
+ TBXItem12: TTBXItem;
+ procedure CustomViewCreate(Sender: TObject);
+ procedure CustomViewDestroy(Sender: TObject);
+ procedure actAnadirArticulosExecute(Sender: TObject);
+ procedure actAnadirArticulosUpdate(Sender: TObject);
+ procedure OnValidateReferencia(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
+ procedure OnValidateReferenciaProveedor(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
+ procedure CustomViewShow(Sender: TObject);
+
+ protected
+ procedure AnadirArticulosInterno; virtual;
+ function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; virtual;
+ end;
+
+implementation
+{$R *.dfm}
+
+uses uViewDetallesBase;
+
+procedure TfrViewDetallesArticulos.actAnadirArticulosExecute(Sender: TObject);
+begin
+ cxGridView.BeginUpdate;
+ try
+ if cxGridView.Controller.EditingController.IsEditing then
+ cxGridView.Controller.EditingController.Edit.PostEditValue;
+
+ AnadirArticulosInterno;
+ finally
+ cxGridView.EndUpdate;
+ end;
+
+ SeleccionarRowActual;
+end;
+
+procedure TfrViewDetallesArticulos.AnadirArticulosInterno;
+begin
+ (Controller as IControllerDetallesArticulos).AnadirArticulos(Detalles);
+end;
+
+procedure TfrViewDetallesArticulos.CustomViewCreate(Sender: TObject);
+begin
+ inherited;
+ cxGridViewREFERENCIA.Properties.OnValidate := OnValidateReferencia;
+ cxGridViewREFERENCIA_PROVEEDOR.Properties.OnValidate := OnValidateReferenciaProveedor;
+end;
+
+procedure TfrViewDetallesArticulos.CustomViewDestroy(Sender: TObject);
+begin
+ inherited;
+ cxGridViewREFERENCIA.Properties.OnValidate := Nil;
+ cxGridViewREFERENCIA_PROVEEDOR.Properties.OnValidate := Nil;
+end;
+
+procedure TfrViewDetallesArticulos.CustomViewShow(Sender: TObject);
+begin
+ inherited;
+ SeleccionarRowActual;
+end;
+
+procedure TfrViewDetallesArticulos.OnValidateReferencia(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
+var
+ lsReferencia : String;
+begin
+ //En el caso de cadena vacia no validamos
+ if (VarIsNull(DisplayValue)) then
+ Exit;
+
+ lsReferencia := VarToStr(DisplayValue);
+ if (length(trim(lsReferencia)) = 0) then
+ Exit;
+
+
+ if not AnadirArticulo(lsReferencia, tCliente) then
+ begin
+ ErrorText := 'La referencia introducida no exite en el catálogo';
+ Error := True;
+ end;
+end;
+
+procedure TfrViewDetallesArticulos.OnValidateReferenciaProveedor(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
+var
+ lsReferencia : String;
+begin
+ //En el caso de cadena vacia no validamos
+ if (VarIsNull(DisplayValue)) then
+ Exit;
+
+ lsReferencia := VarToStr(DisplayValue);
+ if (length(trim(lsReferencia)) = 0) then
+ Exit;
+
+ if not AnadirArticulo(lsReferencia, tProveedor) then
+ begin
+ ErrorText := 'La referencia introducida no exite en el catálogo';
+ Error := True;
+ end;
+end;
+
+procedure TfrViewDetallesArticulos.actAnadirArticulosUpdate(Sender: TObject);
+begin
+ inherited;
+ (Sender as TAction).Enabled := actAnadir.Enabled;
+end;
+
+function TfrViewDetallesArticulos.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
+begin
+ Result := (Controller as IControllerDetallesArticulos).AnadirArticulo(Detalles, pReferencia, TipoReferencia);
+end;
+
+end.
diff --git a/Source/Modulos/Contactos/Contactos_Group.groupproj b/Source/Modulos/Contactos/Contactos_Group.groupproj
index 99210e36..acab6020 100644
--- a/Source/Modulos/Contactos/Contactos_Group.groupproj
+++ b/Source/Modulos/Contactos/Contactos_Group.groupproj
@@ -19,7 +19,7 @@
Default.Personality
-
+
diff --git a/Source/Modulos/Contactos/Controller/uContactosController.pas b/Source/Modulos/Contactos/Controller/uContactosController.pas
index d0e41946..b08589df 100644
--- a/Source/Modulos/Contactos/Controller/uContactosController.pas
+++ b/Source/Modulos/Contactos/Controller/uContactosController.pas
@@ -41,14 +41,14 @@ type
procedure Eliminar(const ID : Integer); overload; virtual;
function Eliminar(AContacto : IBizContacto): Boolean; overload; virtual;
- function Guardar(AContacto : IBizContacto): Boolean;
+ function Guardar(AContacto : IBizContacto): Boolean;
procedure DescartarCambios(AContacto : IBizContacto); virtual;
function Existe(const ID: Integer) : Boolean; virtual;
procedure Anadir(AContacto : IBizContacto); virtual;
function Duplicar(AContacto: IBizContacto): IBizContacto; virtual;
function ExtraerSeleccionados(AContactos: IBizContacto) : IBizContacto; virtual;
function Localizar(AContactos: IBizContacto; const ID : Integer): Boolean;
-
+
// Se implementa en los controladores hijos
function Buscar(const ID: Integer): IBizContacto; virtual; abstract;
function BuscarTodos: IBizContacto; virtual; abstract;
@@ -182,7 +182,7 @@ var
ASeleccionados : IBizContacto;
begin
ASeleccionados := Self.Buscar(ID_NULO);
- CopyDataTable2(AContactos.DataTable, ASeleccionados.DataTable, True);
+ CopyDataTable2(AContactos.DataTable, ASeleccionados.DataTable, True);
Result := ASeleccionados;
end;
@@ -253,10 +253,9 @@ begin
raise Exception.Create('Debe indicar al menos el nombre de este contacto.');
// Asegurarse de valores en campos "automáticos"
- // OJOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
- {AContacto.Edit;
- AContacto.USUARIO := dmUsuarios.LoginInfo.Usuario;
- AContacto.Post;}
+ AContacto.Edit;
+ AContacto.USUARIO := AppFactuGES.UsuarioActivo.UserName;
+ AContacto.Post;
Result := True;
end;
@@ -272,13 +271,13 @@ begin
AContacto.DataTable.Active := False;
// Filtrar los contactos actuales por empresa
- with AContacto.DataTable.DynamicWhere do
+{ with AContacto.DataTable.DynamicWhere do
begin
// (ID = :ID)
- // OJOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
-{ Expression := NewBinaryExpression(NewField('', fld_ContactosID_EMPRESA),
- NewConstant(dmUsuarios.IDEmpresaActual, datInteger), dboEqual);}
+ Expression := NewBinaryExpression(NewField('', fld_ContactosID_EMPRESA),
+ NewConstant(dmUsuarios.IDEmpresaActual, datInteger), dboEqual);
end;
+}
end;
end.
diff --git a/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm b/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm
index 0247a34f..4742c75c 100644
--- a/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm
+++ b/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm
@@ -4050,23 +4050,23 @@ object srvContactos: TsrvContactos
DiagramData =
''#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' ' +
' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10''#13 +
+ 'Top="200" Width="400" Height="300">'#13#10' '#13#10' '#13#10' '#13#10' '#13#10''#13 +
#10
end
object bpContactos: TDABusinessProcessor
diff --git a/Source/Modulos/Contactos/Views/uEditorElegirProveedores.dfm b/Source/Modulos/Contactos/Views/uEditorElegirProveedores.dfm
index da38d0b6..e091d734 100644
--- a/Source/Modulos/Contactos/Views/uEditorElegirProveedores.dfm
+++ b/Source/Modulos/Contactos/Views/uEditorElegirProveedores.dfm
@@ -3,7 +3,7 @@ inherited fEditorElegirProveedores: TfEditorElegirProveedores
ClientHeight = 480
ClientWidth = 656
ExplicitWidth = 664
- ExplicitHeight = 514
+ ExplicitHeight = 507
PixelsPerInch = 96
TextHeight = 13
object JvgWizardHeader1: TJvgWizardHeader [0]
@@ -41,8 +41,6 @@ inherited fEditorElegirProveedores: TfEditorElegirProveedores
inherited JvNavPanelHeader: TJvNavPanelHeader
Width = 656
Visible = False
- ExplicitLeft = 8
- ExplicitTop = -12
ExplicitWidth = 656
inherited Image1: TImage
Left = 629
@@ -52,11 +50,10 @@ inherited fEditorElegirProveedores: TfEditorElegirProveedores
inherited TBXDock: TTBXDock
Top = 87
Width = 656
- Height = 49
+ ExplicitTop = 87
ExplicitWidth = 656
- ExplicitHeight = 49
inherited tbxMain: TTBXToolbar
- ExplicitWidth = 117
+ ExplicitWidth = 284
inherited TBXItem2: TTBXItem
Images = frViewProveedores1.PngImageList
end
@@ -65,11 +62,11 @@ inherited fEditorElegirProveedores: TfEditorElegirProveedores
end
end
inherited tbxFiltro: TTBXToolbar
- Left = 117
+ Left = 284
Top = 23
DockPos = 108
DockRow = 1
- ExplicitLeft = 117
+ ExplicitLeft = 284
ExplicitTop = 23
inherited TBXItem34: TTBXItem
Action = actQuitarFiltro2
@@ -83,8 +80,7 @@ inherited fEditorElegirProveedores: TfEditorElegirProveedores
Top = 461
Width = 656
Visible = False
- ExplicitLeft = 8
- ExplicitTop = 467
+ ExplicitTop = 461
ExplicitWidth = 656
end
inline frViewBarraSeleccion1: TfrViewBarraSeleccion [4]
@@ -133,26 +129,26 @@ inherited fEditorElegirProveedores: TfEditorElegirProveedores
end
end
inherited frViewProveedores1: TfrViewProveedores [5]
- Top = 136
+ Top = 162
Width = 656
- Height = 289
+ Height = 263
Padding.Left = 10
Padding.Top = 10
Padding.Right = 10
Padding.Bottom = 5
TabOrder = 4
- ExplicitTop = 136
+ ExplicitTop = 162
ExplicitWidth = 656
- ExplicitHeight = 289
+ ExplicitHeight = 263
inherited cxGrid: TcxGrid
Left = 10
- Top = 10
+ Top = 112
Width = 636
- Height = 274
+ Height = 120
ExplicitLeft = 10
- ExplicitTop = 10
+ ExplicitTop = 112
ExplicitWidth = 636
- ExplicitHeight = 274
+ ExplicitHeight = 120
inherited cxGridView: TcxGridDBTableView
DataController.Summary.FooterSummaryItems = <
item
@@ -164,6 +160,34 @@ inherited fEditorElegirProveedores: TfEditorElegirProveedores
OptionsView.Footer = False
end
end
+ inherited frViewFiltroBase1: TfrViewFiltroBase
+ Left = 10
+ Top = 10
+ Width = 636
+ ExplicitLeft = 10
+ ExplicitTop = 10
+ ExplicitWidth = 636
+ inherited TBXDockablePanel1: TTBXDockablePanel
+ ExplicitWidth = 636
+ inherited dxLayoutControl1: TdxLayoutControl
+ Width = 636
+ ExplicitWidth = 636
+ end
+ inherited TBXAlignmentPanel1: TTBXAlignmentPanel
+ Width = 636
+ inherited tbxBotones: TTBXToolbar
+ Width = 626
+ end
+ end
+ end
+ end
+ inherited pnlAgrupaciones: TTBXDockablePanel
+ Left = 10
+ Top = 232
+ inherited TBXAlignmentPanel1: TTBXAlignmentPanel
+ Width = 636
+ end
+ end
inherited dsDataSource: TDADataSource
Left = 144
Top = 56
@@ -181,6 +205,11 @@ inherited fEditorElegirProveedores: TfEditorElegirProveedores
Index = 0
end>
end
+ inherited dxPrintStyleManager1: TdxPrintStyleManager
+ inherited dxPrintStyleManager1Style1: TdxPSPrintStyle
+ BuiltInStyle = True
+ end
+ end
end
inherited EditorActionList: TActionList [6]
Left = 112
@@ -260,10 +289,14 @@ inherited fEditorElegirProveedores: TfEditorElegirProveedores
end
inherited StatusBarImages: TPngImageList [12]
end
- inherited GridPopupMenu: TPopupMenu
+ inherited GridPopupMenu: TPopupMenu [13]
Left = 80
Top = 192
end
+ inherited JsPrevisualizarDialog: TJSDialog [14]
+ end
+ inherited JsImprimirDialog: TJSDialog [15]
+ end
object EditorSeleccionActionList: TActionList
Images = SmallImages
Left = 200
diff --git a/Source/Modulos/Contactos/Views/uEditorElegirProveedores.pas b/Source/Modulos/Contactos/Views/uEditorElegirProveedores.pas
index 53e3686e..3c2c1abe 100644
--- a/Source/Modulos/Contactos/Views/uEditorElegirProveedores.pas
+++ b/Source/Modulos/Contactos/Views/uEditorElegirProveedores.pas
@@ -10,7 +10,8 @@ uses
uViewContactos, uViewProveedores, ComCtrls, TB2ExtItems, TBXExtItems, TBX,
TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent,
JvNavigationPane, uIEditorElegirProveedores, uViewBarraSeleccion, JvgWizardHeader,
- StdCtrls, uBizContactos, TBXStatusBars, JvExComCtrls, JvStatusBar;
+ StdCtrls, uBizContactos, TBXStatusBars, JvExComCtrls, JvStatusBar, JSDialog,
+ uDAInterfaces;
type
TfEditorElegirProveedores = class(TfEditorProveedores, IEditorElegirProveedores)
diff --git a/Source/Modulos/Contactos/Views/uEditorProveedor.dfm b/Source/Modulos/Contactos/Views/uEditorProveedor.dfm
index e3ca1eb8..106b9a7b 100644
--- a/Source/Modulos/Contactos/Views/uEditorProveedor.dfm
+++ b/Source/Modulos/Contactos/Views/uEditorProveedor.dfm
@@ -55,6 +55,7 @@ inherited fEditorProveedor: TfEditorProveedor
inherited pgPaginas: TPageControl
Width = 648
Height = 495
+ ActivePage = pagDatosComerciales
ExplicitWidth = 648
ExplicitHeight = 495
inherited pagGeneral: TTabSheet
@@ -166,6 +167,18 @@ inherited fEditorProveedor: TfEditorProveedor
ExplicitWidth = 227
Width = 227
end
+ inherited eDescripcionProveedor: TcxDBTextEdit
+ Top = 84
+ ExplicitTop = 84
+ ExplicitWidth = 221
+ Width = 221
+ end
+ inherited eCodigoAsignado: TcxDBTextEdit
+ Top = 111
+ ExplicitTop = 111
+ ExplicitWidth = 221
+ Width = 221
+ end
inherited eTlfParticular: TcxDBTextEdit
Left = 486
Top = 57
@@ -182,18 +195,6 @@ inherited fEditorProveedor: TfEditorProveedor
ExplicitWidth = 172
Width = 172
end
- inherited eDescripcionProveedor: TcxDBTextEdit
- Top = 84
- ExplicitTop = 84
- ExplicitWidth = 221
- Width = 221
- end
- inherited eCodigoAsignado: TcxDBTextEdit
- Top = 111
- ExplicitTop = 111
- ExplicitWidth = 221
- Width = 221
- end
inherited eTlfMovil: TcxDBTextEdit
Left = 486
Top = 84
@@ -277,6 +278,10 @@ inherited fEditorProveedor: TfEditorProveedor
Width = 640
LookAndFeel = dxLayoutOfficeLookAndFeel
ExplicitWidth = 640
+ inherited eEntidad: TcxDBTextEdit
+ ExplicitWidth = 114
+ Width = 114
+ end
inherited eSucursal: TcxDBTextEdit
Left = 325
ExplicitLeft = 325
@@ -318,9 +323,9 @@ inherited fEditorProveedor: TfEditorProveedor
LookAndFeel = dxLayoutOfficeLookAndFeel
ExplicitWidth = 640
inherited Label1: TLabel
- Left = 415
+ Left = 416
Top = 30
- ExplicitLeft = 415
+ ExplicitLeft = 416
ExplicitTop = 30
end
inherited cbRegimenIVA: TcxDBComboBox
@@ -332,7 +337,9 @@ inherited fEditorProveedor: TfEditorProveedor
ExplicitTop = 57
end
inherited bFormasPago: TButton
+ Left = 256
Top = 57
+ ExplicitLeft = 256
ExplicitTop = 57
end
inherited eIVA: TcxDBLookupComboBox
@@ -340,13 +347,15 @@ inherited fEditorProveedor: TfEditorProveedor
ExplicitTop = 84
end
inherited bTiposIVA: TButton
+ Left = 256
Top = 84
+ ExplicitLeft = 256
ExplicitTop = 84
end
inherited eDescuento: TcxDBSpinEdit
- Left = 459
+ Left = 460
Top = 62
- ExplicitLeft = 459
+ ExplicitLeft = 460
ExplicitTop = 62
end
end
@@ -381,15 +390,31 @@ inherited fEditorProveedor: TfEditorProveedor
Width = 640
ExplicitWidth = 640
inherited ToolButton1: TToolButton
+ Top = 0
+ ExplicitTop = 0
ExplicitWidth = 62
end
inherited ToolButton4: TToolButton
+ Top = 0
+ ExplicitTop = 0
ExplicitWidth = 74
end
+ inherited ToolButton5: TToolButton
+ Top = 0
+ ExplicitTop = 0
+ end
inherited ToolButton2: TToolButton
+ Top = 0
+ ExplicitTop = 0
ExplicitWidth = 67
end
+ inherited ToolButton6: TToolButton
+ Top = 0
+ ExplicitTop = 0
+ end
inherited ToolButton7: TToolButton
+ Top = 0
+ ExplicitTop = 0
ExplicitWidth = 117
end
end
diff --git a/Source/Modulos/Contactos/Views/uViewDatosYSeleccionCliente.pas b/Source/Modulos/Contactos/Views/uViewDatosYSeleccionCliente.pas
index 85df6bf2..cef04a9e 100644
--- a/Source/Modulos/Contactos/Views/uViewDatosYSeleccionCliente.pas
+++ b/Source/Modulos/Contactos/Views/uViewDatosYSeleccionCliente.pas
@@ -9,7 +9,7 @@ uses
ComCtrls, ToolWin, ActnList, ImgList, PngImageList, cxTextEdit, cxDBEdit,
pngimage, JvExControls, JvComponent, JvButton, JvTransparentButton, Mask,
DBCtrls,
- uClientesController, dxLayoutControl, Buttons;
+ uClientesController, dxLayoutControl, Buttons, uDAInterfaces;
type
IViewDatosYSeleccionCliente = interface(IViewBase)
diff --git a/Source/Modulos/Contactos/Views/uViewDatosYSeleccionProveedor.pas b/Source/Modulos/Contactos/Views/uViewDatosYSeleccionProveedor.pas
index fca681d5..58fa40f5 100644
--- a/Source/Modulos/Contactos/Views/uViewDatosYSeleccionProveedor.pas
+++ b/Source/Modulos/Contactos/Views/uViewDatosYSeleccionProveedor.pas
@@ -9,7 +9,7 @@ uses
ComCtrls, ToolWin, ActnList, ImgList, PngImageList, cxTextEdit, cxDBEdit,
pngimage, JvExControls, JvComponent, JvButton, JvTransparentButton, Mask,
DBCtrls,
- uProveedoresController, dxLayoutControl, Buttons;
+ uProveedoresController, dxLayoutControl, Buttons, uDAInterfaces;
type
IViewDatosYSeleccionProveedor = interface(IViewBase)
diff --git a/Source/Modulos/Contactos/Views/uViewProveedorDatosComerciales.pas b/Source/Modulos/Contactos/Views/uViewProveedorDatosComerciales.pas
index 5c2040f0..3e3d4b86 100644
--- a/Source/Modulos/Contactos/Views/uViewProveedorDatosComerciales.pas
+++ b/Source/Modulos/Contactos/Views/uViewProveedorDatosComerciales.pas
@@ -8,7 +8,7 @@ uses
cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxLookupEdit,
cxDBLookupEdit, cxDBLookupComboBox, cxControls, cxSpinEdit, cxDBEdit,
uBizContactos, cxCheckBox, StdCtrls, uFormasPagoController, uTiposIVAController,
- uDAInterfaces;
+ uDAInterfaces, uBizTiposIVA, uBizFormasPago;
type
IViewProveedorDatosComerciales = interface(IViewBase)
@@ -50,7 +50,8 @@ type
procedure bTiposIVAClick(Sender: TObject);
protected
FContacto : IBizContacto;
-// FAgentesController : IAgentesController;
+ FTiposIVA : IBizTipoIVA;
+ FFormasPago : IBizFormaPago;
FFormasPagoController : IFormasPagoController;
FTiposIVAController : ITiposIVAController;
function GetContacto: IBizContacto;
@@ -65,20 +66,22 @@ implementation
{$R *.dfm}
uses
- uRegimenIVAUtils, uBizFormasPago, uBizTiposIVA;
+ uRegimenIVAUtils;
{ TfrViewProveedorDatosComerciales }
procedure TfrViewProveedorDatosComerciales.bFormasPagoClick(Sender: TObject);
begin
inherited;
- FFormasPagoController.VerTodos((dsFormaPago.DataTable) as IBizFormaPago);
+ if Assigned(FFormasPago) then
+ FFormasPagoController.VerTodos(FFormasPago);
end;
procedure TfrViewProveedorDatosComerciales.bTiposIVAClick(Sender: TObject);
begin
inherited;
- FTiposIVAController.VerTodos((dsTiposIVA.DataTable) as IBizTipoIVA);
+ if Assigned(FTiposIVA) then
+ FTiposIVAController.VerTodos(FTiposIVA);
end;
procedure TfrViewProveedorDatosComerciales.cbRegimenIVAPropertiesInitPopup(
@@ -95,7 +98,9 @@ end;
procedure TfrViewProveedorDatosComerciales.CustomViewCreate(Sender: TObject);
begin
inherited;
-// FAgentesController := TAgentesController.Create;
+ FTiposIVA := Nil;
+ FFormasPago := Nil;
+ FContacto := Nil;
FFormasPagoController := TFormasPagoController.Create;
FTiposIVAController := TTiposIVAController.Create;
end;
@@ -103,7 +108,9 @@ end;
procedure TfrViewProveedorDatosComerciales.CustomViewDestroy(Sender: TObject);
begin
inherited;
-// FAgentesController := NIL;
+ FTiposIVA := Nil;
+ FFormasPago := Nil;
+ FContacto := Nil;
FFormasPagoController := NIL;
FTiposIVAController := NIL;
end;
@@ -119,16 +126,16 @@ begin
if Assigned(FContacto) then
begin
dsDatosComerciales.DataTable := FContacto.DataTable;
-// dsAgentes.DataTable := FAgentesController.BuscarTodos.DataTable;
-// dsAgentes.DataTable.Active := True;
- dsFormaPago.DataTable := FFormasPagoController.BuscarTodos.DataTable;
+ FFormasPago := FFormasPagoController.BuscarTodos;
+ dsFormaPago.DataTable := FFormasPago.DataTable;
dsFormaPago.DataTable.Active := True;
- dsTiposIVA.DataTable := FTiposIVAController.BuscarTodos.DataTable;
+
+ FTiposIVA := FTiposIVAController.BuscarTodos;
+ dsTiposIVA.DataTable := FTiposIVA.DataTable;
dsTiposIVA.DataTable.Active := True;
end
else begin
dsDatosComerciales.DataTable := NIL;
-// dsAgentes.DataTable := NIL;
dsFormaPago.DataTable := NIL;
dsTiposIVA.DataTable := NIL;
end
diff --git a/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.dproj b/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.dproj
index 636e3a5c..296825bf 100644
--- a/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.dproj
+++ b/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.dproj
@@ -49,14 +49,497 @@
-
-
+
+
+
diff --git a/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.res b/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.res
index 8b251f31..1641339f 100644
Binary files a/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.res and b/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.res differ
diff --git a/Source/Modulos/Tipos de IVA/Controller/uTiposIVAController.pas b/Source/Modulos/Tipos de IVA/Controller/uTiposIVAController.pas
index cfc673ff..3e81fad9 100644
--- a/Source/Modulos/Tipos de IVA/Controller/uTiposIVAController.pas
+++ b/Source/Modulos/Tipos de IVA/Controller/uTiposIVAController.pas
@@ -81,7 +81,7 @@ uses
uDAInterfaces, uDataTableUtils,
uDateUtils, uROTypes, DateUtils, Controls, Windows,
- schTiposIVAClient_Intf, uIEditorTiposIVA,
+ schTiposIVAClient_Intf, uIEditorTiposIVA, Dialogs,
uIEditorTipoIVA, uDataModuleTiposIVA;
{ TTiposIVAController }
diff --git a/Source/Servicios/FactuGES.RODL b/Source/Servicios/FactuGES.RODL
index 3abed122..90accbad 100644
--- a/Source/Servicios/FactuGES.RODL
+++ b/Source/Servicios/FactuGES.RODL
@@ -111,6 +111,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Servicios/FactuGES_Intf.pas b/Source/Servicios/FactuGES_Intf.pas
index eab5cc8f..a2b7f86c 100644
--- a/Source/Servicios/FactuGES_Intf.pas
+++ b/Source/Servicios/FactuGES_Intf.pas
@@ -31,6 +31,8 @@ const
IsrvFormasPago_IID : TGUID = '{38AA9F85-B454-4A87-B6E8-E9C8BB2A17D9}';
IsrvTiposIVA_IID : TGUID = '{09B44AB5-6212-448A-8DF2-A503E3F2C9B1}';
IsrvUsuarios_IID : TGUID = '{29388459-1A0B-46BE-AF9E-66A9E7AABB0B}';
+ IsrvArticulos_IID : TGUID = '{CFBE5841-DF0F-48AD-853E-A35FDA989E6E}';
+ IsrvPresupuestosCliente_IID : TGUID = '{8A06D5A7-8461-4F6E-8A8B-EC49C84C45D1}';
{ Event ID's }
@@ -44,6 +46,8 @@ type
IsrvFormasPago = interface;
IsrvTiposIVA = interface;
IsrvUsuarios = interface;
+ IsrvArticulos = interface;
+ IsrvPresupuestosCliente = interface;
TRdxEmpresasArray = class;
@@ -264,6 +268,44 @@ type
end;
+ { IsrvArticulos }
+ IsrvArticulos = interface(IDataAbstractService)
+ ['{CFBE5841-DF0F-48AD-853E-A35FDA989E6E}']
+ function GetNextAutoInc(const GeneratorName: String): Integer;
+ 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 GetNextAutoInc(const GeneratorName: String): Integer;
+ end;
+
+ { IsrvPresupuestosCliente }
+ IsrvPresupuestosCliente = interface(IDataAbstractService)
+ ['{8A06D5A7-8461-4F6E-8A8B-EC49C84C45D1}']
+ function GenerateReport(const ID: String): Binary;
+ end;
+
+ { CosrvPresupuestosCliente }
+ CosrvPresupuestosCliente = class
+ class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPresupuestosCliente;
+ end;
+
+ { TsrvPresupuestosCliente_Proxy }
+ TsrvPresupuestosCliente_Proxy = class(TDataAbstractService_Proxy, IsrvPresupuestosCliente)
+ protected
+ function __GetInterfaceName:string; override;
+
+ function GenerateReport(const ID: String): Binary;
+ end;
+
implementation
uses
@@ -730,6 +772,67 @@ 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.GetNextAutoInc(const GeneratorName: String): Integer;
+begin
+ try
+ __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoInc');
+ __Message.Write('GeneratorName', TypeInfo(String), GeneratorName, []);
+ __Message.Finalize;
+
+ __TransportChannel.Dispatch(__Message);
+
+ __Message.Read('Result', TypeInfo(Integer), result, []);
+ finally
+ __Message.UnsetAttributes(__TransportChannel);
+ __Message.FreeStream;
+ end
+end;
+
+{ CosrvPresupuestosCliente }
+
+class function CosrvPresupuestosCliente.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPresupuestosCliente;
+begin
+ result := TsrvPresupuestosCliente_Proxy.Create(aMessage, aTransportChannel);
+end;
+
+{ TsrvPresupuestosCliente_Proxy }
+
+function TsrvPresupuestosCliente_Proxy.__GetInterfaceName:string;
+begin
+ result := 'srvPresupuestosCliente';
+end;
+
+function TsrvPresupuestosCliente_Proxy.GenerateReport(const ID: String): Binary;
+begin
+ try
+ result := nil;
+ __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport');
+ __Message.Write('ID', TypeInfo(String), ID, []);
+ __Message.Finalize;
+
+ __TransportChannel.Dispatch(__Message);
+
+ __Message.Read('Result', TypeInfo(Binary), result, []);
+ finally
+ __Message.UnsetAttributes(__TransportChannel);
+ __Message.FreeStream;
+ end
+end;
+
initialization
RegisterROClass(TRdxLoginInfo);
RegisterROClass(TRdxEmpresasArray);
@@ -741,6 +844,8 @@ initialization
RegisterProxyClass(IsrvFormasPago_IID, TsrvFormasPago_Proxy);
RegisterProxyClass(IsrvTiposIVA_IID, TsrvTiposIVA_Proxy);
RegisterProxyClass(IsrvUsuarios_IID, TsrvUsuarios_Proxy);
+ RegisterProxyClass(IsrvArticulos_IID, TsrvArticulos_Proxy);
+ RegisterProxyClass(IsrvPresupuestosCliente_IID, TsrvPresupuestosCliente_Proxy);
finalization
@@ -754,5 +859,7 @@ finalization
UnregisterProxyClass(IsrvFormasPago_IID);
UnregisterProxyClass(IsrvTiposIVA_IID);
UnregisterProxyClass(IsrvUsuarios_IID);
+ UnregisterProxyClass(IsrvArticulos_IID);
+ UnregisterProxyClass(IsrvPresupuestosCliente_IID);
end.
diff --git a/Source/Servicios/FactuGES_Invk.pas b/Source/Servicios/FactuGES_Invk.pas
index 9ee8f81e..f7dcb3f9 100644
--- a/Source/Servicios/FactuGES_Invk.pas
+++ b/Source/Servicios/FactuGES_Invk.pas
@@ -90,6 +90,24 @@ type
end;
{$M-}
+ {$M+}
+ TsrvArticulos_Invoker = class(TDataAbstractService_Invoker)
+ private
+ protected
+ published
+ procedure Invoke_GetNextAutoInc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
+ end;
+ {$M-}
+
+ {$M+}
+ TsrvPresupuestosCliente_Invoker = class(TDataAbstractService_Invoker)
+ private
+ protected
+ published
+ procedure Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
+ end;
+ {$M-}
+
implementation
uses
@@ -241,4 +259,56 @@ begin
end;
end;
+{ TsrvArticulos_Invoker }
+
+procedure TsrvArticulos_Invoker.Invoke_GetNextAutoInc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
+{ function GetNextAutoInc(const GeneratorName: String): Integer; }
+var
+ GeneratorName: String;
+ lResult: Integer;
+begin
+ try
+ __Message.Read('GeneratorName', TypeInfo(String), GeneratorName, []);
+
+ lResult := (__Instance as IsrvArticulos).GetNextAutoInc(GeneratorName);
+
+ __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvArticulos', 'GetNextAutoIncResponse');
+ __Message.Write('Result', TypeInfo(Integer), lResult, []);
+ __Message.Finalize;
+ __Message.UnsetAttributes(__Transport);
+
+ finally
+ end;
+end;
+
+{ TsrvPresupuestosCliente_Invoker }
+
+procedure TsrvPresupuestosCliente_Invoker.Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
+{ function GenerateReport(const ID: String): Binary; }
+var
+ ID: String;
+ lResult: Binary;
+ __lObjectDisposer: TROObjectDisposer;
+begin
+ lResult := nil;
+ try
+ __Message.Read('ID', TypeInfo(String), ID, []);
+
+ lResult := (__Instance as IsrvPresupuestosCliente).GenerateReport(ID);
+
+ __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvPresupuestosCliente', 'GenerateReportResponse');
+ __Message.Write('Result', TypeInfo(Binary), lResult, []);
+ __Message.Finalize;
+ __Message.UnsetAttributes(__Transport);
+
+ finally
+ __lObjectDisposer := TROObjectDisposer.Create(__Instance);
+ try
+ __lObjectDisposer.Add(lResult);
+ finally
+ __lObjectDisposer.Free();
+ end;
+ end;
+end;
+
end.
diff --git a/Source/Servicios/RODLFILE.res b/Source/Servicios/RODLFILE.res
index 58c528d8..055e1d4f 100644
Binary files a/Source/Servicios/RODLFILE.res and b/Source/Servicios/RODLFILE.res differ
diff --git a/Source/Servidor/FactuGES_Server.RES b/Source/Servidor/FactuGES_Server.RES
index dc46115a..9b85ea80 100644
Binary files a/Source/Servidor/FactuGES_Server.RES and b/Source/Servidor/FactuGES_Server.RES differ
diff --git a/Source/Servidor/FactuGES_Server.dpr b/Source/Servidor/FactuGES_Server.dpr
index 5fe3dd08..29663f6a 100644
--- a/Source/Servidor/FactuGES_Server.dpr
+++ b/Source/Servidor/FactuGES_Server.dpr
@@ -46,7 +46,14 @@ uses
schTiposIVAClient_Intf in '..\Modulos\Tipos de IVA\Model\schTiposIVAClient_Intf.pas',
schUsuariosClient_Intf in '..\ApplicationBase\Usuarios\Model\schUsuariosClient_Intf.pas',
schUsuariosServer_Intf in '..\ApplicationBase\Usuarios\Model\schUsuariosServer_Intf.pas',
- schBase_Intf in '..\Base\schBase_Intf.pas';
+ schBase_Intf in '..\Base\schBase_Intf.pas',
+ srvPresupuestosCliente_Impl in '..\Modulos\Presupuestos de cliente\Servidor\srvPresupuestosCliente_Impl.pas' {srvPresupuestosCliente: TDataAbstractService},
+ schPedidosClienteClient_Intf in '..\Modulos\Presupuestos de cliente\Model\schPedidosClienteClient_Intf.pas',
+ schPedidosClienteServer_Intf in '..\Modulos\Presupuestos de cliente\Model\schPedidosClienteServer_Intf.pas',
+ uBizPresupuestosClienteServer in '..\Modulos\Presupuestos de cliente\Model\uBizPresupuestosClienteServer.pas',
+ srvArticulos_Impl in '..\Modulos\Articulos\Servidor\srvArticulos_Impl.pas',
+ schArticulosClient_Intf in '..\Modulos\Articulos\Model\schArticulosClient_Intf.pas',
+ schArticulosServer_Intf in '..\Modulos\Articulos\Model\schArticulosServer_Intf.pas';
{$R *.res}
{$R ..\Servicios\RODLFile.res}
diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj
index 88cdd1a0..4f0f7f45 100644
--- a/Source/Servidor/FactuGES_Server.dproj
+++ b/Source/Servidor/FactuGES_Server.dproj
@@ -1,107 +1,116 @@
-
+
-
- {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1}
- FactuGES_Server.dpr
- Debug
- AnyCPU
- DCC32
- ..\..\Output\Debug\Servidor\FactuGES_Server.exe
-
-
- 7.0
- False
- False
- 0
- 3
- ..\..\Output\Release\Servidor
- RELEASE
-
-
- 7.0
- 3
- ..\..\Output\Debug\Servidor
- DEBUG;
- True
-
-
- Delphi.Personality
-
-
- FalseTrueFalseTrueFalse3000FalseFalseFalseFalseFalse308212523.0.0.03.0.0.0domingo, 30 de septiembre de 2007 20:47
- RemObjects Pascal Script - RemObjects SDK 3.0 Integration
- FactuGES_Server.dpr
-
-
-
-
- MainSource
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1}
+ FactuGES_Server.dpr
+ Debug
+ AnyCPU
+ DCC32
+ ..\..\Output\Debug\Servidor\FactuGES_Server.exe
+
+
+ 7.0
+ False
+ False
+ 0
+ 3
+ ..\..\Output\Release\Servidor
+ RELEASE
+
+
+ 7.0
+ 3
+ ..\..\Output\Debug\Servidor
+ DEBUG;
+ True
+
+
+ Delphi.Personality
+
+
+FalseTrueFalseTrueFalse3000FalseFalseFalseFalseFalse308212523.0.0.03.0.0.0domingo, 30 de septiembre de 2007 20:47
+ RemObjects Pascal Script - RemObjects SDK 3.0 Integration
+ FactuGES_Server.dpr
+
+
+
+
+ MainSource
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+