unit uDataModuleClientes; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, DB, uDADataTable, uDAScriptingProvider, uDACDSDataTable, uDABINAdapter, uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, uROWinInetHttpChannel, uBizClientesDescuentos, uBizGruposCliente, uBizContactos, uDataModuleContactos, uIDataModuleClientes, uDADesigntimeCall, uDARemoteDataAdapter, uDADataStreamer, uRODynamicRequest, uDAInterfaces; type TDataModuleClientes = class(TDataModuleContactos, IDataModuleClientes) tbl_Clientes: TDACDSDataTable; ds_Clientes: TDADataSource; tbl_ClientesDescuentos: TDACDSDataTable; ds_ClientesDescuentos: TDADataSource; tbl_GruposCliente: TDACDSDataTable; ds_GruposCliente: TDADataSource; rda_clientes: TDARemoteDataAdapter; rda_clientesDescuentos: TDARemoteDataAdapter; rda_GruposCliente: TDARemoteDataAdapter; protected function _GetDescuentos: IBizClienteDescuentos; public function GetItem(const ID : Integer) : IBizCliente; function NewItem : IBizCliente; function GetItems : IBizCliente; function GetItemsTiendaWeb : IBizCliente; function GetNextID(const DataSetName : String) : Integer; override; function GetGruposCliente : IBizGrupoCliente; end; implementation {$R *.dfm} uses FactuGES_Intf, uBizContactosDatosBancarios, cxControls, schContactosClient_Intf, uDataTableUtils, Dialogs; { TdmClientes } function TDataModuleClientes.GetGruposCliente: IBizGrupoCliente; var AGrupoCliente : TDACDSDataTable; begin ShowHourglassCursor; try AGrupoCliente := _CloneDataTable(tbl_GruposCliente); AGrupoCliente.BusinessRulesID := BIZ_CLIENT_GRUPOSCLIENTE; Result := (AGrupoCliente as IBizGrupoCliente); finally HideHourglassCursor; end; end; function TDataModuleClientes.GetItem(const ID: Integer): IBizCliente; begin ShowHourglassCursor; try Result := Self.GetItems; with Result.DataTable.Where do begin if NotEmpty then AddOperator(opAND); OpenBraket; AddText(fld_ContactosID + ' = ' + IntToStr(ID)); CloseBraket; end; finally HideHourglassCursor; end; end; function TDataModuleClientes.GetItems: IBizCliente; var AContacto : TDACDSDataTable; begin ShowHourglassCursor; try AContacto := _CloneDataTable(tbl_Clientes); AContacto.BusinessRulesID := BIZ_CLIENT_CLIENTE; with TBizCliente(AContacto.BusinessEventsObj) do begin DatosBancarios := _GetDatosBancarios; Direcciones := _GetDirecciones; Descuentos := _GetDescuentos; _Categorias := _GetCategorias; end; Result := (AContacto as IBizCliente); finally HideHourglassCursor; end; end; function TDataModuleClientes.GetItemsTiendaWeb: IBizCliente; begin ShowHourglassCursor; try Result := Self.GetItems; with Result.DataTable.Where do begin if NotEmpty then AddOperator(opAND); OpenBraket; AddText(fld_ClientesTIENDA_WEB + ' = 1'); CloseBraket; end; finally HideHourglassCursor; end; end; function TDataModuleClientes.GetNextID(const DataSetName: String): Integer; var aDataSet : String; aGeneratorName : String; begin aDataSet := DataSetName; if aDataSet = nme_ClientesDescuentos then begin aGeneratorName := 'GEN_CLIENTES_DTOS_PROV_ID'; Result := _InternalGetNextID(aGeneratorName); Exit; end; if aDataSet = nme_Clientes then aDataSet := nme_Contactos; Result := inherited GetNextID(aDataSet); end; function TDataModuleClientes.NewItem: IBizCliente; begin Result := GetItem(ID_NULO) end; function TDataModuleClientes._GetDescuentos: IBizClienteDescuentos; var ADescuentos : TDACDSDataTable; begin ShowHourglassCursor; try ADescuentos := _CloneDataTable(tbl_ClientesDescuentos); with ADescuentos do begin BusinessRulesID := BIZ_CLIENT_CLIENTE_DESCUENTOS; DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; end; Result := (ADescuentos as IBizClienteDescuentos); finally HideHourglassCursor; end; end; end.