unit uDataModuleAgentes; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uDataModuleContactos, DB, uDADataTable, uDAScriptingProvider, uDACDSDataTable, uDABINAdapter, uRORemoteService, uROClient, uROBinMessage, uROWinInetHttpChannel, uBizGruposEmpleado, uROTypes, uIDataModuleAgentes, uBizContactos, uDADesigntimeCall, uDAInterfaces, uDAMemDataTable, uDADataStreamer, uDABin2DataStreamer, uDARemoteDataAdapter, uIntegerListUtils, uBizAgentesComisiones, uBizAgentesObjetivosAlbaranes, uBizAgentesObjetivosFacturas; type TDataModuleAgentes = class(TDataModuleContactos, IDataModuleAgentes) tbl_Agentes: TDAMemDataTable; ds_Agentes: TDADataSource; tbl_Agentes_Comisiones: TDAMemDataTable; ds_Agentes_Comisiones: TDADataSource; tbl_Agentes_Objetivos_albaranes: TDAMemDataTable; ds_Agentes_Objetivos_albaranes: TDADataSource; tbl_Agentes_Objetivos_facturas: TDAMemDataTable; ds_Agentes_Objetivos_facturas: TDADataSource; tbl_ListaAnosObjetivosFac: TDAMemDataTable; ds_ListaAnosObjetivosFac: TDADataSource; protected function _GetComisiones: IBizAgentesComisiones; function _GetObjetivosAlbaranes: IBizAgentesObjetivosAlbaranes; function _GetObjetivosFacturas: IBizAgentesObjetivosFacturas; public function GetItem(const ID : Integer) : IBizAgente; function NewItem : IBizAgente; function GetItems : IBizAgente; function GetAnosObjetivosAlbaranesItems(ID_AGENTE:Integer) : TStringList; function GetAnosObjetivosFacturasItems(ID_AGENTE:Integer) : TStringList; end; implementation {$R *.dfm} uses FactuGES_Intf, cxControls, schContactosClient_Intf, uDataTableUtils, uStringsUtils; { TDataModuleVendedores } function TDataModuleAgentes.GetAnosObjetivosAlbaranesItems(ID_AGENTE: Integer): TStringList; var AListaAnos: TStringList; begin AListaAnos := TStringList.Create; ShowHourglassCursor; try with tbl_ListaAnosObjetivosAlb do begin ParamByName(fld_Agentes_Objetivos_albaranesID_AGENTE).AsInteger := ID_AGENTE; Open; First; while not eof do begin AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString])); Next; end; Close; end; Result := AListaAnos; finally HideHourglassCursor; end; end; function TDataModuleAgentes.GetAnosObjetivosFacturasItems(ID_AGENTE: Integer): TStringList; var AListaAnos: TStringList; begin AListaAnos := TStringList.Create; ShowHourglassCursor; try with tbl_ListaAnosObjetivosFac do begin ParamByName(fld_Agentes_Objetivos_facturasID_AGENTE).AsInteger := ID_AGENTE; Open; First; while not eof do begin AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString])); Next; end; Close; end; Result := AListaAnos; finally HideHourglassCursor; end; end; function TDataModuleAgentes.GetItem(const ID: Integer): IBizAgente; 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 TDataModuleAgentes.GetItems: IBizAgente; var AContacto : TDAMemDataTable; begin ShowHourglassCursor; try AContacto := CloneDataTable(tbl_Agentes); AContacto.BusinessRulesID := BIZ_CLIENT_AGENTE; with TBizAgente(AContacto.BusinessEventsObj) do begin DatosBancarios := _GetDatosBancarios; Comisiones := _GetComisiones; ObjetivosAlbaranes := _GetObjetivosAlbaranes; ObjetivosFacturas := _GetObjetivosFacturas; end; Result := (AContacto as IBizAgente); finally HideHourglassCursor; end; end; function TDataModuleAgentes.NewItem: IBizAgente; begin Result := GetItem(ID_NULO) end; function TDataModuleAgentes._GetComisiones: IBizAgentesComisiones; var AComisiones : TDAMemDataTable; begin ShowHourglassCursor; try AComisiones := CloneDataTable(tbl_Agentes_Comisiones); with AComisiones do begin BusinessRulesID := BIZ_CLIENT_AGENTE_COMISIONES; DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; end; Result := (AComisiones as IBizAgentesComisiones); finally HideHourglassCursor; end; end; function TDataModuleAgentes._GetObjetivosAlbaranes: IBizAgentesObjetivosAlbaranes; var AObjetivosAlbaranes : TDAMemDataTable; begin ShowHourglassCursor; try AObjetivosAlbaranes := CloneDataTable(tbl_Agentes_Objetivos_albaranes); with AObjetivosAlbaranes do begin BusinessRulesID := BIZ_CLIENT_AGENTE_OBJETIVOS_ALB; DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; end; Result := (AObjetivosAlbaranes as IBizAgentesObjetivosAlbaranes); finally HideHourglassCursor; end; end; function TDataModuleAgentes._GetObjetivosFacturas: IBizAgentesObjetivosFacturas; var AObjetivosFacturas : TDAMemDataTable; begin ShowHourglassCursor; try AObjetivosFacturas := CloneDataTable(tbl_Agentes_Objetivos_facturas); with AObjetivosFacturas do begin BusinessRulesID := BIZ_CLIENT_AGENTE_OBJETIVOS_FAC; DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; end; Result := (AObjetivosFacturas as IBizAgentesObjetivosFacturas); finally HideHourglassCursor; end; end; end.