unit uDataModuleComisiones; interface uses SysUtils, Classes, DB, uDADataTable, uDABINAdapter, uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel, uROTypes, uRORemoteService, uROClient, uROBinMessage, uDADesigntimeCall, uIDataModuleComisiones, uBizComisiones, uDataModuleBase, uIDataModuleComisionesReport, uDARemoteDataAdapter, uDADataStreamer, uDABin2DataStreamer, uDAInterfaces; type TDataModuleComisiones = class(TDataModuleBase, IDataModuleComisiones, IDataModuleComisionesReport) RORemoteService: TRORemoteService; tbl_Comisiones: TDACDSDataTable; ds_Comisiones: TDADataSource; tbl_Facturas_Comision: TDACDSDataTable; ds_Facturas_Comision: TDADataSource; tbl_V_Detalles_Facturas_Comision: TDACDSDataTable; ds_V_Detalles_Facturas_Comision: TDADataSource; Bin2DataStreamer: TDABin2DataStreamer; rda_Comisiones: TDARemoteDataAdapter; procedure DAClientDataModuleCreate(Sender: TObject); protected function _GetFacturas : IBizFacturasComision; public function GetItems : IBizComisiones; overload; function GetFacturasDesglosadas : IBizFacturasComision; function GetItem(const ID : Integer) : IBizComisiones; function NewItem : IBizComisiones; // Report function GetReport(const AComisionID: Variant; const DesglosadoProv: Boolean; FechaIni: String; FechaFin: String; AAgenteID: Variant): Binary; end; implementation {$R *.DFM} uses FactuGES_Intf, uDataModuleConexion, uDataTableUtils, cxControls, uDAInterfaces, schComisionesClient_Intf; { TdmComisiones } procedure TDataModuleComisiones.DAClientDataModuleCreate(Sender: TObject); begin RORemoteService.Channel := dmConexion.Channel; RORemoteService.Message := dmConexion.Message; end; function TDataModuleComisiones.GetItems: IBizComisiones; var AComisiones : TDACDSDataTable; begin ShowHourglassCursor; try AComisiones := CloneDataTable(tbl_Comisiones); AComisiones.BusinessRulesID := BIZ_CLIENT_COMISIONES; // EL CAMPO REFERENCIA TIENE QUE SER AUTOREFRESH!!!!! AComisiones.FieldByName(fld_ComisionesREFERENCIA).ServerAutoRefresh := TRUE; with TBizComisiones(AComisiones.BusinessEventsObj) do begin Facturas := _GetFacturas; end; Result := (AComisiones as IBizComisiones); finally HideHourglassCursor; end; end; function TDataModuleComisiones._GetFacturas: IBizFacturasComision; var AFacturas : TDAMemDataTable; begin ShowHourglassCursor; try AFacturas := CloneDataTable(tbl_Facturas_Comision); with AFacturas do begin BusinessRulesID := BIZ_CLIENT_FACTURAS_COMISION; DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; end; Result := (AFacturas as IBizFacturasComision); finally HideHourglassCursor; end; end; function TDataModuleComisiones.GetFacturasDesglosadas: IBizFacturasComision; var AFacturasDesglosadas : TDAMemDataTable; begin ShowHourglassCursor; try AFacturasDesglosadas := CloneDataTable(tbl_V_Detalles_Facturas_Comision); AFacturasDesglosadas.BusinessRulesID := BIZ_CLIENT_FACTURAS_COMISION; Result := (AFacturasDesglosadas as IBizFacturasComision); finally HideHourglassCursor; end; end; function TDataModuleComisiones.GetItem(const ID: Integer): IBizComisiones; var Condicion: TDAWhereExpression; begin ShowHourglassCursor; try Result := Self.GetItems; with Result.DataTable.DynamicWhere do begin // (ID = :ID) Condicion := NewBinaryExpression(NewField('', fld_ComisionesID), NewConstant(ID, datInteger), dboEqual); if IsEmpty then Expression := Condicion else Expression := NewBinaryExpression(Expression, Condicion, dboAnd); end; finally HideHourglassCursor; end; end; function TDataModuleComisiones.GetReport(const AComisionID: Variant; const DesglosadoProv: Boolean; FechaIni: String; FechaFin: String; AAgenteID: Variant): Binary; begin // Result := (RORemoteService as IsrvComisiones).GenerateReport(AComisionID, DesglosadoProv, FechaIni, FechaFin, AAgenteID); end; function TDataModuleComisiones.NewItem: IBizComisiones; begin Result := GetItem(ID_NULO); end; end.