unit uEditorDetallesSinRecibir; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, uCustomEditor, ImgList, PngImageList, StdActns, ActnList, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, JvExControls, JvComponent, JvNavigationPane, uViewDetallesSinRecibir, Menus, DB, uDADataTable, ComCtrls, uViewGrid, uDAScriptingProvider, uDACDSDataTable, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls, uCustomView, uViewBase, uViewBarraSeleccion, JvComponentBase, uEditorGridBase, uIEditorDetallesSinRecibir, uBizInventario, uViewGridBase, JvExComCtrls, JvStatusBar, uViewGrid2Niveles, JSDialog, uInventarioController, uBizAlmacenes; type TfEditorDetallesSinRecibir = class(TfEditorGridBase, IEditorDetallesSinRecibir) TBXSeparatorItem17: TTBXSeparatorItem; actExpandir: TAction; actContraer: TAction; frViewDetallesSinRecibir1: TfrViewDetallesSinRecibir; TBXItem38: TTBXItem; actRecibir: TAction; JvNavPanelHeader1: TJvNavPanelHeader; procedure FormShow(Sender: TObject); procedure actRecibirExecute(Sender: TObject); private FAlmacen: IBizAlmacen; function GetAlmacen: Integer; procedure SetAlmacen(const Value: Integer); protected // FArticulo: IBizInventario; FDetalles: IBizDetalleSinRecibir; FController : IInventarioController; // function GetArticulo: IBizInventario; // procedure SetArticulo(const Value: IBizInventario); function GetDetalles: IBizDetalleSinRecibir; procedure SetDetalles(const Value: IBizDetalleSinRecibir); { procedure SetMultiSelect (AValue : Boolean); function GetMultiSelect : Boolean; function GetArticulosSeleccionados: IBizDetallesSinRecibir; } function GetController : IInventarioController; procedure SetController (const Value : IInventarioController); procedure ImprimirInterno; override; procedure PrevisualizarInterno; override; public property Almacen: Integer read GetAlmacen write SetAlmacen; property DetallesSinRecibir: IBizDetalleSinRecibir read GetDetalles write SetDetalles; property Controller : IInventarioController read GetController write SetController; // property ArticulosSeleccionados: IBizDetallesSinRecibir read GetArticulosSeleccionados; // property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure PonerTitulos(const ATitulo: string = ''); override; end; implementation {$R *.DFM} uses cxControls, uGridUtils, uDataModuleInventario, uDataModuleUsuarios, uEditorBase, uDBSelectionListUtils, cxGridDBTableView, cxGridCustomTableView, uAlmacenesController, uGenerarAlbaranesProvUtils, schInventarioClient_Intf, uDialogUtils, uBizAlbaranesProveedor; {, uDBSelectionList, uDataModulePedidosProveedor, uBizPedidosProveedor, uBizMontajes, uDataModuleMontajes; } { TfEditorDetallesSinRecibir } { ***************************** TfEditorDetallesSinRecibir ***************************** } procedure TfEditorDetallesSinRecibir.actRecibirExecute(Sender: TObject); var ArticulosSeleccionados: IBizDetalleSinRecibir; AlbaranesProveedor: IBizAlbaranProveedor; begin inherited; try SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (DetallesSinRecibir as ISeleccionable).SelectedRecords); // En SelectedRecords tengo los ID de las filas seleccionadas del grid ArticulosSeleccionados := (Controller as IInventarioController).ExtraerSeleccionados(DetallesSinRecibir) as IBizDetalleSinRecibir; if (ArticulosSeleccionados.DataTable.RecordCount > 0) then begin GenerarAlbaranesProv(ArticulosSeleccionados, AlbaranesProveedor, Almacen); RefrescarInterno; end else ShowWarningMessage('Debe seleccionar los artículos que desea recibir'); finally ArticulosSeleccionados:= Nil; AlbaranesProveedor:= Nil; end; end; constructor TfEditorDetallesSinRecibir.Create(AOwner: TComponent); begin inherited; FAlmacen := Nil; ViewGrid := frViewDetallesSinRecibir1; end; { function TfEditorDetallesSinRecibir.DarIDAlmacenSeleccionado(Descripcion: String): Integer; var AAlmacenes : IBizAlmacen; AAlmacenesController : IAlmacenesController; Respuesta : integer; begin if (ViewGrid._Grid.ActiveLevel.Tag = -1) then Result := SeleccionarAlmacen(Descripcion) else Result := ViewGrid._Grid.ActiveLevel.Tag; end; } destructor TfEditorDetallesSinRecibir.Destroy; begin FDetalles := NIL; FAlmacen := NIL; inherited; end; procedure TfEditorDetallesSinRecibir.FormShow(Sender: TObject); begin inherited; if not Assigned(ViewGrid) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(DetallesSinRecibir) then raise Exception.Create('No hay ningún DetallesSinRecibir asignado'); DetallesSinRecibir.DataTable.Active := True; ViewGrid.GotoFirst; end; { function TfEditorDetallesSinRecibir.GetArticulosSeleccionados: IBizDetallesSinRecibir; begin SeleccionarFilasDesdeGrid((ViewGrid as IViewDetallesSinRecibir)._FocusedView, (DetallesSinRecibir as ISeleccionable).SelectedRecords); // En Presupuestos.SelectedRecords tengo los ID de las filas seleccionadas del grid Result := Controller.ExtraerSeleccionados(DetallesSinRecibir); end; function TfEditorDetallesSinRecibir.GetController: IDetallesSinRecibirController; begin Result := FController; end; } { function TfEditorDetallesSinRecibir.GetArticulo: IBizInventario; begin Result := FArticulo; end; } function TfEditorDetallesSinRecibir.GetAlmacen: Integer; begin if Assigned(FAlmacen) then Result := FAlmacen.ID else Result := -1; end; function TfEditorDetallesSinRecibir.GetController: IInventarioController; begin Result := FController; end; function TfEditorDetallesSinRecibir.GetDetalles: IBizDetalleSinRecibir; begin Result := FDetalles; end; { function TfEditorDetallesSinRecibir.GetMultiSelect: Boolean; begin Result := ViewGrid.MultiSelect; end; } procedure TfEditorDetallesSinRecibir.ImprimirInterno; begin inherited; end; procedure TfEditorDetallesSinRecibir.PonerTitulos(const ATitulo: string); var FTitulo : String; begin FTitulo := 'Detalle de artículos sin recibir - ' + dmUsuarios.EmpresaActual.NOMBRE; inherited PonerTitulos(FTitulo); JvNavPanelHeader1.Caption := 'Almacén de entrada: ' + FAlmacen.NOMBRE; end; procedure TfEditorDetallesSinRecibir.PrevisualizarInterno; begin inherited; end; { function TfEditorDetallesSinRecibir.SeleccionarAlmacen(Descripcion: String): Integer; var AAlmacenes : IBizAlmacen; Respuesta : integer; begin Result := -1; { JsElegirAlmacenDialog.Instruction.Text := Descripcion; with JsElegirAlmacenDialog.RadioButtons do begin Clear; AAlmacenes := (ViewGrid as IViewDetallesSinRecibir).Almacenes; AAlmacenes.First; while not AAlmacenes.EOF do begin with Add do begin Caption := AAlmacenes.NOMBRE; Value := 1000 + AAlmacenes.ID; end; //Asi sabemos que solo va a intentar chequear el primero si hemos añadido al menos un item Items[0].Checked := True; AAlmacenes.Next; end; end; //Sacar la pantalla de selección y devolver el almacén seleccionado. Respuesta := JsElegirAlmacenDialog.Execute; if Respuesta <> IDCANCEL then Result := JsElegirAlmacenDialog.RadioResult - 1000; end; } { procedure TfEditorDetallesSinRecibir.SetController(const Value: IDetallesSinRecibirController); begin FController := Value; if Assigned(FController) then begin if Assigned(ViewGrid) then (ViewGrid as IViewDetallesSinRecibir).Almacenes := FController.AlmacenesController.BuscarTodos; end; end; } { procedure TfEditorDetallesSinRecibir.SetArticulo(const Value: IBizInventario); begin FArticulo := Value; if Assigned(FArticulo) then begin tbxEditFiltro.Text := FArticulo.REFERENCIA; end; end; } procedure TfEditorDetallesSinRecibir.SetAlmacen(const Value: Integer); var AAlmacenesController : IAlmacenesController; begin AAlmacenesController := TAlmacenesController.Create; try FAlmacen := AAlmacenesController.Buscar(Value); FAlmacen.DataTable.Active := True; finally AAlmacenesController := NIL; end; end; procedure TfEditorDetallesSinRecibir.SetController(const Value: IInventarioController); begin FController := Value; end; procedure TfEditorDetallesSinRecibir.SetDetalles(const Value: IBizDetalleSinRecibir); begin FDetalles := Value; dsDataTable.DataTable := FDetalles.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewDetalleSinRecibir).Detalles := FDetalles; end; { procedure TfEditorDetallesSinRecibir.SetMultiSelect(AValue: Boolean); begin ViewGrid.MultiSelect := AValue; end; } end.