unit uDataModulePedidosProveedor; interface uses {vcl:} SysUtils, Classes, DB, DBClient, {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, uBizPedidosProveedor, uROTypes; type TdmPedidos = class(TDAClientDataModule) RORemoteService: TRORemoteService; DABinAdapter: TDABINAdapter; tbl_DetallesPedidosProveedor: TDACDSDataTable; ds_DetallesPedidosProveedor: TDADataSource; tbl_PedidosProveedor: TDACDSDataTable; ds_PedidosProveedor: TDADataSource; tbl_ListaAnosPedidos: TDACDSDataTable; ds_ListaAnosPedidos: TDADataSource; procedure DAClientDataModuleCreate(Sender: TObject); { private procedure Fax (AFile : String);} public procedure Print(Const Codigo: Integer); procedure Preview(Const Codigo: Integer); function GetNextAutoinc : integer; function GetItems: IBizPedidosProveedor; function GetDataTableItems(Const IDBusiness: String): TDACDSDataTable; function GetItemsPendientesRecepcion: IBizPedidosProveedor; function GetItem(Codigo : Integer): IBizPedidosProveedor; function DarNuevaReferencia : String; function PuedoEliminarPedido(Codigo : Integer) : Boolean; function DarListaAnosPedidos: TStringList; procedure FiltrarAno(APedidos: IBizPedidosProveedor; AWhereDataTable: String; const Ano: String); end; var dmPedidos: TdmPedidos; implementation {$R *.DFM} uses Forms, Controls, cxControls, uDataTableUtils, uBizContacto, FactuGES_Intf, uDataModuleContactos, uDataModuleBase, schPedidosProveedorClient_Intf, uDAInterfaces, uEditorPreview, Dialogs; { TDAClientDataModule1 } function TdmPedidos.GetItems: IBizPedidosProveedor; begin Result := (GetDataTableItems(BIZ_PEDIDOSPROVEEDOR) as IBizPedidosProveedor); end; procedure TdmPedidos.DAClientDataModuleCreate(Sender: TObject); begin RORemoteService.Channel := dmBase.Channel; RORemoteService.Message := dmBase.Message; end; function TdmPedidos.GetNextAutoinc: integer; begin Result := (RORemoteService as IsrvPedidosProveedor).GetNextAutoinc; end; function TdmPedidos.DarNuevaReferencia: String; begin Result := (RORemoteService as IsrvPedidosProveedor).DarNuevaReferencia; end; function TdmPedidos.GetItem(Codigo: Integer): IBizPedidosProveedor; var APedido: IBizPedidosProveedor; begin APedido := GetItems; with APedido.DataTable do begin if Active then Active := False; Where.Clear; Where.OpenBraket; Where.AddText('PED.' + fld_pedidosproveedorCODIGO + ' = ' + IntToStr(Codigo), False); Where.CloseBraket; end; Result := APedido; end; function TdmPedidos.GetItemsPendientesRecepcion: IBizPedidosProveedor; var dsPedidos : IBizPedidosProveedor; begin dsPedidos := GetItems; with dsPedidos.DataTable.Where do begin if not Empty then AddOperator(opAND); Clear; OpenBraket; AddText('PEDIDOS.' + fld_PedidosProveedorSITUACION + '=' + '''' + SITUACION_PENDIENTE + '''', False); CloseBraket; AddOperator(opOR); OpenBraket; AddText('PEDIDOS.' + fld_PedidosProveedorSITUACION + '=' + '''' + SITUACION_PARCIAL + '''', False); CloseBraket; end; Result := dsPedidos; end; procedure TdmPedidos.Preview(const Codigo: Integer); var AStream: TROBinaryMemoryStream; AEditorPreview : TfEditorPreview; begin AEditorPreview := TfEditorPreview.Create(Application); try AStream := (RORemoteService as IsrvPedidosProveedor).GenerateReport(Codigo); AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); AEditorPreview.ShowModal; finally AEditorPreview.Release; AStream.Free; end; end; procedure TdmPedidos.Print(const Codigo: Integer); var AStream: TROBinaryMemoryStream; AEditorPreview : TfEditorPreview; AFile : String; begin AEditorPreview := TfEditorPreview.Create(Application); try AStream := (RORemoteService as IsrvPedidosProveedor).GenerateReport(Codigo); AEditorPreview.LoadFromStream(AStream); AFile := AEditorPreview.ExportToFile; AEditorPreview.Print; finally AEditorPreview.Release; AStream.Free; end; end; function TdmPedidos.PuedoEliminarPedido(Codigo: Integer): Boolean; begin Result := (RORemoteService as IsrvPedidosProveedor).PuedoEliminarPedido(Codigo); end; function TdmPedidos.GetDataTableItems(Const IDBusiness: String): TDACDSDataTable; var dtPedidos: TDACDSDataTable; dtDetalles: TDACDSDataTable; ACursor: TCursor; begin ACursor := Screen.Cursor; Screen.Cursor := crHourGlass; try dtPedidos := TDACDSDataTable.Create(NIL); CloneDataTable(tbl_PedidosProveedor, dtPedidos); with dtPedidos do begin BusinessRulesID := IDBusiness; end; dtDetalles := TDACDSDataTable.Create(NIL); CloneDataTable(tbl_DetallesPedidosProveedor, dtDetalles); with dtDetalles do begin BusinessRulesID := BIZ_DETALLESPEDIDOSPROVEEDOR; DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; FieldByName(fld_DetallesPedidosProveedorCANTIDAD).BusinessRulesID := 'Client.Field.Cantidad'; FieldByName(fld_DetallesPedidosProveedorIMPORTEUNIDAD).BusinessRulesID := 'Client.Field.ImporteUnidad'; FieldByName(fld_DetallesPedidosProveedorTIPO).BusinessRulesID := 'Client.Field.TipoDetalle'; end; (dtPedidos as IBizPedidosProveedor).Detalles := (dtDetalles as IBizDetallesPedidoProveedor); Result := dtPedidos; finally Screen.Cursor := ACursor; end; end; {procedure TdmPedidos.Fax (AFile : String); var FxDoc: TFaxDocument; FaxServer: TFaxService; begin FaxServer := TFaxService.Create(Self); FaxServer.ActiveDeviceID := 0; FaxServer.Connect(''); try FxDoc := FaxServer.CreateFaxDocument; //fxDoc.DocumentName := 'aa'; fxDoc.FileName := AFile; FxDoc.RecipientNumber := '12345678'; FxDoc.RecipientName := 'Bo Berglund'; FxDoc.Send(nil); finally FaxServer.Disconnect; end; end;} function TdmPedidos.DarListaAnosPedidos: 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; procedure TdmPedidos.FiltrarAno(APedidos: IBizPedidosProveedor; AWhereDataTable: String; const Ano: String); var FechaIni: String; FechaFin: String; begin APedidos.DataTable.Where.Clear; APedidos.DataTable.Where.AddText(AWhereDataTable); if (Ano <> 'Todos') then begin // Filtrar los pedidos actuales por aņos FechaIni := '01.01.' + Ano; FechaFin := '31.12.' + Ano; with APedidos.DataTable.Where do begin if NotEmpty then AddOperator(opAND); AddCondition(fld_PedidosProveedorFECHAPEDIDO, cMajorOrEqual, FechaIni); AddOperator(opAND); AddCondition(fld_PedidosProveedorFECHAPEDIDO, cLessOrEqual, FechaFin); end; end; end; initialization dmPedidos := TdmPedidos.Create(nil); finalization FreeAndNil(dmPedidos); end.