unit uDataModuleClientes; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, DB, uDADataTable, uDAScriptingProvider, uDACDSDataTable, uDABINAdapter, uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, uROWinInetHttpChannel, uBizClientesDescuentos, uBizGruposCliente, uBizContactos, uDataModuleContactos, uIDataModuleClientes, uDADesigntimeCall, uDARemoteDataAdapter, uDADataStreamer, uRODynamicRequest, uDAInterfaces, uDAMemDataTable, uDABin2DataStreamer; type TDataModuleClientes = class(TDataModuleContactos, IDataModuleClientes) tbl_Clientes: TDAMemDataTable; ds_Clientes: TDADataSource; tbl_ClientesDescuentos: TDAMemDataTable; ds_ClientesDescuentos: TDADataSource; tbl_GruposCliente: TDAMemDataTable; ds_GruposCliente: TDADataSource; protected function _GetDescuentos: IBizClienteDescuentos; public function GetItem(const ID : Integer) : IBizCliente; function NewItem : IBizCliente; function GetItems : IBizCliente; function GetItemsTiendaWeb : IBizCliente; function GetGruposCliente : IBizGrupoCliente; end; implementation {$R *.dfm} uses FactuGES_Intf, uBizContactosDatosBancarios, cxControls, schContactosClient_Intf, uDataTableUtils, Dialogs; { TdmClientes } function TDataModuleClientes.GetGruposCliente: IBizGrupoCliente; var AGrupoCliente : TDAMemDataTable; begin ShowHourglassCursor; try AGrupoCliente := CloneDataTable(tbl_GruposCliente); AGrupoCliente.BusinessRulesID := BIZ_CLIENT_GRUPOSCLIENTE; Result := (AGrupoCliente as IBizGrupoCliente); finally HideHourglassCursor; end; end; function TDataModuleClientes.GetItem(const ID: Integer): IBizCliente; begin ShowHourglassCursor; try Result := Self.GetItems; with Result.DataTable.DynamicWhere do begin Clear; // (ID = :ID) Expression := NewBinaryExpression(NewField('', fld_ContactosID), NewConstant(ID, datInteger), dboEqual); end; finally HideHourglassCursor; end; end; function TDataModuleClientes.GetItems: IBizCliente; var AContacto : TDAMemDataTable; begin ShowHourglassCursor; try AContacto := CloneDataTable(tbl_Clientes); AContacto.BusinessRulesID := BIZ_CLIENT_CLIENTE; with TBizCliente(AContacto.BusinessEventsObj) do begin DatosBancarios := _GetDatosBancarios; Direcciones := _GetDirecciones; Descuentos := _GetDescuentos; _Categorias := _GetCategorias; end; Result := (AContacto as IBizCliente); finally HideHourglassCursor; end; end; function TDataModuleClientes.GetItemsTiendaWeb: IBizCliente; begin ShowHourglassCursor; try Result := Self.GetItems; with Result.DataTable.DynamicWhere do begin Clear; // (TIENDA_WEB = 1) Expression := NewBinaryExpression(NewField('', fld_ClientesTIENDA_WEB), NewConstant(1, datInteger), dboEqual); end; finally HideHourglassCursor; end; end; function TDataModuleClientes.NewItem: IBizCliente; begin Result := GetItem(ID_NULO) end; function TDataModuleClientes._GetDescuentos: IBizClienteDescuentos; var ADescuentos : TDAMemDataTable; begin ShowHourglassCursor; try ADescuentos := CloneDataTable(tbl_ClientesDescuentos); with ADescuentos do begin BusinessRulesID := BIZ_CLIENT_CLIENTE_DESCUENTOS; DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; end; Result := (ADescuentos as IBizClienteDescuentos); finally HideHourglassCursor; end; end; end.