unit uDataModuleClientes; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, DB, uDADataTable, uDAScriptingProvider, uDACDSDataTable, uDABINAdapter, uRORemoteService, uROClient, uROBinMessage, uROWinInetHttpChannel, uBizClientesDescuentos, uBizGruposCliente, uBizProcedenciasCliente, uBizContactos, uBizSubCuentasContacto, uDataModuleContactos, uIDataModuleClientes, uDADesigntimeCall, uDARemoteDataAdapter, uDADataStreamer, uRODynamicRequest, uDAInterfaces, uDAMemDataTable, uDABin2DataStreamer, uControllerBase, uBizContactosDatosBancarios, uIDataModuleContactos; type TDataModuleClientes = class(TDataModuleContactos, IDataModuleClientes) tbl_Clientes: TDAMemDataTable; ds_Clientes: TDADataSource; tbl_ClientesDescuentos: TDAMemDataTable; ds_ClientesDescuentos: TDADataSource; tbl_GruposCliente: TDAMemDataTable; ds_GruposCliente: TDADataSource; tbl_SubCuentasContacto: TDAMemDataTable; ds_SubCuentasContacto: TDADataSource; tbl_ProcedenciasCliente: TDAMemDataTable; ds_ProcedenciasCliente: TDADataSource; protected function _GetDescuentos: IBizClienteDescuentos; function _GetSubCuentas: IBizSubCuentasContacto; public function GetItem(const ID : Integer) : IBizCliente; function NewItem : IBizCliente; function GetItems : IBizCliente; function GetItemsTiendaWeb : IBizCliente; function GetGruposCliente : IBizGrupoCliente; function GetProcedenciasCliente : IBizProcedenciaCliente; end; implementation {$R *.dfm} uses FactuGES_Intf, cxControls, schContactosClient_Intf, uDataTableUtils, Dialogs, DataAbstract4_Intf; { 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; var Condicion: TDAWhereExpression; begin ShowHourglassCursor; try Result := Self.GetItems; with Result.DataTable.DynamicWhere do begin // (ID = :ID) Condicion := NewBinaryExpression(NewField('', fld_ContactosID), NewConstant(ID, datInteger), dboEqual); if IsEmpty then Expression := Condicion else Expression := NewBinaryExpression(Expression, Condicion, dboAnd); 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; Personal := _GetPersonal; Descuentos := _GetDescuentos; SubCuentas := _GetSubCuentas; end; Result := (AContacto as IBizCliente); finally HideHourglassCursor; end; end; function TDataModuleClientes.GetItemsTiendaWeb: IBizCliente; var Condicion: TDAWhereExpression; begin ShowHourglassCursor; try Result := Self.GetItems; with Result.DataTable.DynamicWhere do begin // (ID = :ID) Condicion := NewBinaryExpression(NewField('', fld_ClientesTIENDA_WEB), NewConstant(1, datInteger), dboEqual); Clear; Expression := Condicion end; finally HideHourglassCursor; end; end; function TDataModuleClientes.GetProcedenciasCliente: IBizProcedenciaCliente; var AProcedenciaCliente : TDAMemDataTable; begin ShowHourglassCursor; try AProcedenciaCliente := CloneDataTable(tbl_ProcedenciasCliente); AProcedenciaCliente.BusinessRulesID := BIZ_CLIENT_PROCEDENCIASCLIENTE; Result := (AProcedenciaCliente as IBizProcedenciaCliente); 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; function TDataModuleClientes._GetSubCuentas: IBizSubCuentasContacto; var ASubCuentas : TDAMemDataTable; begin ShowHourglassCursor; try ASubCuentas := CloneDataTable(tbl_SubCuentasContacto); with ASubCuentas do begin BusinessRulesID := BIZ_CLIENT_SUBCUENTAS_CONTACTO; DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; end; Result := (ASubCuentas as IBizSubCuentasContacto); finally HideHourglassCursor; end; end; end.