unit uDataModulePedidosCliente; interface uses DB, Classes, SysUtils, uDADesigntimeCall, uROTypes, uRORemoteService, uROClient, uROBinMessage, uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel, uDADataTable, uDABINAdapter, uIDataModulePedidosCliente, uBizPedidosCliente, uBizDetallesPedidoCliente, uBizDetalleColoresPedidoCliente, uIDataModulePedidosClienteReport, uDataModuleBase, uDABin2DataStreamer, uDAMemDataTable, uDAInterfaces, uDADataStreamer, uDARemoteDataAdapter, uIntegerListUtils, uDADataAdapter; type TDataModulePedidosCliente = class(TDataModuleBase, IDataModulePedidosCliente, IDataModulePedidosClienteReport) RORemoteService: TRORemoteService; tbl_PedidosCliente: TDAMemDataTable; ds_PedidosCliente: TDADataSource; tbl_PedidosCliente_Detalles: TDAMemDataTable; ds_PedidosCliente_Detalles: TDADataSource; tbl_PedidoCliente_Articulos_Pendientes: TDAMemDataTable; ds_PedidoCliente_Articulos_Pendientes: TDADataSource; tbl_PedidoCliente_ArticulosPendientesPedirAProv: TDAMemDataTable; ds_PedidoCliente_ArticulosPendientesPedirAProv: TDADataSource; tbl_ListaAnosPedidos: TDAMemDataTable; ds_ListaAnosPedidos: TDADataSource; Bin2DataStreamer: TDABin2DataStreamer; rda_PedidosCliente: TDARemoteDataAdapter; tbl_PedidosCliente_Detalle_Color: TDAMemDataTable; ds_PedidosCliente_Detalle_Color: TDADataSource; tbl_PedidoCliente_Art_Colores_Pendientes: TDAMemDataTable; ds_PedidoCliente_Art_Colores_Pendientes: TDADataSource; procedure DAClientDataModuleCreate(Sender: TObject); private function _GetDetalles : IBizDetallesPedidoCliente; function _GetDetalleColores : IBizDetalleColoresPedidoCliente; protected procedure AsignarClaseNegocio(var APedido: TDAMemDataTable); virtual; public function GetItems : IBizPedidoCliente; virtual; function GetItem(const ID : Integer) : IBizPedidoCliente; function NewItem : IBizPedidoCliente; function GetArticulosPendientesPedirAProv(const IDPedido: Integer): IBizPedidoClienteArticulosPendientesPedirAProv; function GetArticulosPendientes(const IDPedido: Integer): IBizPedidoClienteArticulosPend; function GetArtColoresPendientes: IBizPedidoClienteArtColoresPend; // Report function GetRptPedidos(const ListaID: TIntegerList): Binary; function GetAnosItems : TStringList; end; implementation {$R *.DFM} uses cxControls, FactuGES_Intf, uDataModuleConexion, uDataTableUtils, schPedidosClienteClient_Intf, uBizContactos; { TdmPedidosCliente } procedure TDataModulePedidosCliente.AsignarClaseNegocio(var APedido: TDAMemDataTable); begin APedido.BusinessRulesID := BIZ_CLIENT_PEDIDO_CLIENTE; end; procedure TDataModulePedidosCliente.DAClientDataModuleCreate(Sender: TObject); begin RORemoteService.Channel := dmConexion.Channel; RORemoteService.Message := dmConexion.Message; end; function TDataModulePedidosCliente.GetRptPedidos(const ListaID: TIntegerList): Binary; var AParam : TIntegerArray; begin AParam := ListaID.ToIntegerArray; try Result := (RORemoteService as IsrvPedidosCliente).GenerarInforme(AParam); finally FreeAndNil(AParam); end; end; function TDataModulePedidosCliente.NewItem: IBizPedidoCliente; begin Result := GetItem(ID_NULO) end; function TDataModulePedidosCliente._GetDetalleColores: IBizDetalleColoresPedidoCliente; var ADetalleColores : TDAMemDataTable; begin ShowHourglassCursor; try ADetalleColores := CloneDataTable(tbl_PedidosCliente_Detalle_Color); with ADetalleColores do begin BusinessRulesID := BIZ_CLIENT_DETALLE_COLORES_PEDIDO_CLIENTE; DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; end; Result := (ADetalleColores as IBizDetalleColoresPedidoCliente); finally HideHourglassCursor; end; end; function TDataModulePedidosCliente._GetDetalles: IBizDetallesPedidoCliente; var ADetalles : TDAMemDataTable; begin ShowHourglassCursor; try ADetalles := CloneDataTable(tbl_PedidosCliente_Detalles); with ADetalles do begin BusinessRulesID := BIZ_CLIENT_DETALLES_PEDIDO_CLIENTE; DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; end; Result := (ADetalles as IBizDetallesPedidoCliente); finally HideHourglassCursor; end; end; function TDataModulePedidosCliente.GetAnosItems: TStringList; var AListaAnos: TStringList; begin AListaAnos := TStringList.Create; ShowHourglassCursor; try with tbl_ListaAnosPedidos do begin 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 TDataModulePedidosCliente.GetArtColoresPendientes: IBizPedidoClienteArtColoresPend; var AArtColores : TDAMemDataTable; begin ShowHourglassCursor; try AArtColores := CloneDataTable(tbl_PedidoCliente_Art_Colores_Pendientes); AArtColores.BusinessRulesID := BIZ_CLIENT_ARTCOLORES_PEND_PEDIDO_CLIENTE; Result := (AArtColores as IBizPedidoClienteArtColoresPend); finally HideHourglassCursor; end; end; function TDataModulePedidosCliente.GetArticulosPendientes( const IDPedido: Integer): IBizPedidoClienteArticulosPend; var AArticulos : TDAMemDataTable; begin ShowHourglassCursor; try AArticulos := CloneDataTable(tbl_PedidoCliente_Articulos_Pendientes); AArticulos.BusinessRulesID := BIZ_CLIENT_ARTICULOS_PEND_PEDIDO_CLIENTE; AArticulos.ParamByName('ID_PEDIDO').AsInteger := IDPedido; Result := (AArticulos as IBizPedidoClienteArticulosPend); finally HideHourglassCursor; end; end; function TDataModulePedidosCliente.GetArticulosPendientesPedirAProv( const IDPedido: Integer): IBizPedidoClienteArticulosPendientesPedirAProv; var AArticulos : TDAMemDataTable; begin { ShowHourglassCursor; try AArticulos := _CloneDataTable(tbl_PedidoCliente_ArticulosPendientesPedirAProv); AArticulos.BusinessRulesID := BIZ_CLIENT_PEDIDO_CLIENTE_ARTICULOS_PENDIENTES_PEDIR_A_PROV; AArticulos.ParamByName('ID_PEDIDO').AsInteger := IDPedido; Result := (AArticulos as IBizPedidoClienteArticulosPendientesPedirAProv); finally HideHourglassCursor; end; } end; function TDataModulePedidosCliente.GetItem(const ID: Integer): IBizPedidoCliente; var Condicion: TDAWhereExpression; begin ShowHourglassCursor; try Result := Self.GetItems; with Result.DataTable.DynamicWhere do begin // (ID = :ID) Condicion := NewBinaryExpression(NewField('', fld_PedidosClienteID), NewConstant(ID, datInteger), dboEqual); if IsEmpty then Expression := Condicion else Expression := NewBinaryExpression(Expression, Condicion, dboAnd); end; finally HideHourglassCursor; end; end; function TDataModulePedidosCliente.GetItems: IBizPedidoCliente; var APedido : TDAMemDataTable; begin ShowHourglassCursor; try APedido := CloneDataTable(tbl_PedidosCliente); AsignarClaseNegocio(APedido); // EL CAMPO REFERENCIA Y SITUACIÓN TIENEN QUE SER AUTOREFRESH!!!!! APedido.FieldByName(fld_PedidosClienteREFERENCIA).ServerAutoRefresh := TRUE; APedido.FieldByName(fld_PedidosClienteSITUACION).ServerAutoRefresh := TRUE; with TBizPedidoCliente(APedido.BusinessEventsObj) do begin Detalles := _GetDetalles; Detalles.DetalleColores := _GetDetalleColores; end; Result := (APedido as IBizPedidoCliente); finally HideHourglassCursor; end; end; end.