unit uEditorHistoricoMovimientos; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, uCustomEditor, ImgList, PngImageList, StdActns, ActnList, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, JvExControls, JvComponent, JvNavigationPane, uViewHistoricoMovimientos, Menus, DB, uDADataTable, ComCtrls, uViewGrid, uDAScriptingProvider, uDACDSDataTable, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls, uCustomView, uViewBase, uViewBarraSeleccion, JvComponentBase, uEditorGridBase, uIEditorHistoricoMovimientos, uBizHistoricoMovimientos, uViewGridBase, uHistoricoMovimientosController, JvExComCtrls, JvStatusBar, uViewGrid2Niveles, JSDialog, uDAInterfaces; type TfEditorHistoricoMovimientos = class(TfEditorGridBase, IEditorHistoricoMovimientos) rasladar1: TMenuItem; Liberar1: TMenuItem; Reservar1: TMenuItem; actExpandir: TAction; actContraer: TAction; JsElegirAlmacenDialog: TJSDialog; frViewHistoricoMovimientos1: TfrViewHistoricoMovimientos; procedure actModificarExecute(Sender: TObject); procedure actExpandirExecute(Sender: TObject); procedure actContraerExecute(Sender: TObject); procedure FormShow(Sender: TObject); private function SeleccionarAlmacen(Descripcion: String): Integer; function DarIDAlmacenSeleccionado(Descripcion: String): Integer; protected FHistoricoMovimientos: IBizHistoricoMovimientos; FController : IHistoricoMovimientosController; function GetHistoricoMovimientos: IBizHistoricoMovimientos; procedure SetHistoricoMovimientos(const Value: IBizHistoricoMovimientos); function GetController : IHistoricoMovimientosController; virtual; procedure SetController (const Value : IHistoricoMovimientosController); virtual; procedure SetMultiSelect (AValue : Boolean); function GetMultiSelect : Boolean; function GetArticulosSeleccionados: IBizHistoricoMovimientos; procedure NuevoInterno; override; procedure EliminarInterno; override; procedure ImprimirInterno; override; procedure PrevisualizarInterno; override; public property HistoricoMovimientos: IBizHistoricoMovimientos read GetHistoricoMovimientos write SetHistoricoMovimientos; property Controller : IHistoricoMovimientosController read GetController write SetController; property ArticulosSeleccionados: IBizHistoricoMovimientos 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, uDataModuleHistoricoMovimientos, uDataModuleUsuarios, uEditorBase, uDBSelectionListUtils, cxGridDBTableView, cxGridCustomTableView, uAlmacenesController, uBizAlmacenes, uFactuGES_App; //, uGenerarAlbaranesProvUtils; {, uDBSelectionList, uDataModulePedidosProveedor, uBizPedidosProveedor, uBizMontajes, uDataModuleMontajes; } { TfEditorHistoricoMovimientos } { ***************************** TfEditorHistoricoMovimientos ***************************** } constructor TfEditorHistoricoMovimientos.Create(AOwner: TComponent); begin inherited; ViewGrid := frViewHistoricoMovimientos1; end; function TfEditorHistoricoMovimientos.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 TfEditorHistoricoMovimientos.Destroy; begin FHistoricoMovimientos := NIL; inherited; end; procedure TfEditorHistoricoMovimientos.EliminarInterno; begin // end; procedure TfEditorHistoricoMovimientos.FormShow(Sender: TObject); begin inherited; if not Assigned(ViewGrid) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(HistoricoMovimientos) then raise Exception.Create('No hay ningún HistoricoMovimientos asignado'); HistoricoMovimientos.DataTable.Active := True; actContraer.Execute; ViewGrid.GotoFirst; //Para que coja el ancho automático actAnchoAuto.Execute; end; procedure TfEditorHistoricoMovimientos.actModificarExecute(Sender: TObject); begin // inherited; end; function TfEditorHistoricoMovimientos.GetArticulosSeleccionados: IBizHistoricoMovimientos; begin SeleccionarFilasDesdeGrid((ViewGrid as IViewHistoricoMovimientos)._FocusedView, (HistoricoMovimientos as ISeleccionable).SelectedRecords); // En Presupuestos.SelectedRecords tengo los ID de las filas seleccionadas del grid // Result := Controller.ExtraerSeleccionados(HistoricoMovimientos); end; function TfEditorHistoricoMovimientos.GetController: IHistoricoMovimientosController; begin Result := FController; end; function TfEditorHistoricoMovimientos.GetHistoricoMovimientos: IBizHistoricoMovimientos; begin Result := FHistoricoMovimientos; end; function TfEditorHistoricoMovimientos.GetMultiSelect: Boolean; begin Result := ViewGrid.MultiSelect; end; procedure TfEditorHistoricoMovimientos.ImprimirInterno; begin inherited; end; procedure TfEditorHistoricoMovimientos.NuevoInterno; begin // end; procedure TfEditorHistoricoMovimientos.PonerTitulos(const ATitulo: string); var FTitulo : String; begin FTitulo := 'Histórico de movimientos de artículos en almacén - ' + AppFactuGES.EmpresaActiva.NOMBRE; inherited PonerTitulos(FTitulo); end; procedure TfEditorHistoricoMovimientos.PrevisualizarInterno; begin inherited; end; function TfEditorHistoricoMovimientos.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 IViewHistoricoMovimientos).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 TfEditorHistoricoMovimientos.SetController(const Value: IHistoricoMovimientosController); begin FController := Value; if Assigned(FController) then begin if Assigned(ViewGrid) then (ViewGrid as IViewHistoricoMovimientos).Almacenes := FController.AlmacenesController.BuscarTodos; end; end; procedure TfEditorHistoricoMovimientos.SetHistoricoMovimientos(const Value: IBizHistoricoMovimientos); begin FHistoricoMovimientos := Value; dsDataTable.DataTable := FHistoricoMovimientos.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewHistoricoMovimientos).HistoricoMovimientos := FHistoricoMovimientos; end; procedure TfEditorHistoricoMovimientos.SetMultiSelect(AValue: Boolean); begin ViewGrid.MultiSelect := AValue; end; procedure TfEditorHistoricoMovimientos.actContraerExecute(Sender: TObject); begin if Assigned(ViewGrid) then ViewGrid.ContraerTodo; end; procedure TfEditorHistoricoMovimientos.actExpandirExecute(Sender: TObject); begin if Assigned(ViewGrid) then ViewGrid.ExpandirTodo; end; end.