unit uEditorDetallesSinAlbaran; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, uCustomEditor, ImgList, PngImageList, StdActns, ActnList, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, JvExControls, JvComponent, JvNavigationPane, uViewDetallesSinAlbaran, Menus, DB, uDADataTable, ComCtrls, uViewGrid, uDAScriptingProvider, uDACDSDataTable, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls, uCustomView, uViewBase, uViewBarraSeleccion, JvComponentBase, uEditorGridBase, uIEditorDetallesSinAlbaran, uBizInventario, uViewGridBase, JvExComCtrls, JvStatusBar, uViewGrid2Niveles, JSDialog, uInventarioController, uBizAlmacenes; type TfEditorDetallesSinAlbaran = class(TfEditorGridBase, IEditorDetallesSinAlbaran) TBXSeparatorItem17: TTBXSeparatorItem; actExpandir: TAction; actContraer: TAction; frViewDetallesSinAlbaran1: TfrViewDetallesSinAlbaran; TBXItem38: TTBXItem; actAlbaranar: TAction; JvNavPanelHeader1: TJvNavPanelHeader; procedure FormShow(Sender: TObject); procedure actAlbaranarExecute(Sender: TObject); private FAlmacen: IBizAlmacen; function GetAlmacen: Integer; procedure SetAlmacen(const Value: Integer); protected FDetalles: IBizDetalleSinAlbaran; FController : IInventarioController; // function GetArticulo: IBizInventario; // procedure SetArticulo(const Value: IBizInventario); function GetDetalles: IBizDetalleSinAlbaran; procedure SetDetalles(const Value: IBizDetalleSinAlbaran); { procedure SetMultiSelect (AValue : Boolean); function GetMultiSelect : Boolean; function GetArticulosSeleccionados: IBizDetallesSinAlbaran; } function GetController : IInventarioController; procedure SetController (const Value : IInventarioController); procedure ImprimirInterno; override; procedure PrevisualizarInterno; override; public property Almacen: Integer read GetAlmacen write SetAlmacen; property DetallesSinAlbaran: IBizDetalleSinAlbaran read GetDetalles write SetDetalles; property Controller : IInventarioController read GetController write SetController; // property ArticulosSeleccionados: IBizDetallesSinAlbaran 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, uBizAlbaranesCliente, uGenerarAlbaranesCliUtils; {, uDBSelectionList, uDataModulePedidosProveedor, uBizPedidosProveedor, uBizMontajes, uDataModuleMontajes; } { TfEditorDetallesSinAlbaran } { ***************************** TfEditorDetallesSinAlbaran ***************************** } procedure TfEditorDetallesSinAlbaran.actAlbaranarExecute(Sender: TObject); var ArticulosSeleccionados: IBizDetalleSinAlbaran; AlbaranesCliente: IBizAlbaranCliente; begin inherited; try SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (DetallesSinAlbaran as ISeleccionable).SelectedRecords); // En SelectedRecords tengo los ID de las filas seleccionadas del grid ArticulosSeleccionados := (Controller as IInventarioController).ExtraerSeleccionados(DetallesSinAlbaran) as IBizDetalleSinAlbaran; if (ArticulosSeleccionados.DataTable.RecordCount > 0) then begin GenerarAlbaranesCli(ArticulosSeleccionados, AlbaranesCliente, Almacen); RefrescarInterno; end else ShowWarningMessage('Debe seleccionar los artículos que desea albaranar'); finally ArticulosSeleccionados:= Nil; AlbaranesCliente:= Nil; end; end; constructor TfEditorDetallesSinAlbaran.Create(AOwner: TComponent); begin inherited; FAlmacen := Nil; ViewGrid := frViewDetallesSinAlbaran1; end; { function TfEditorDetallesSinAlbaran.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 TfEditorDetallesSinAlbaran.Destroy; begin FDetalles := NIL; FAlmacen := NIL; inherited; end; procedure TfEditorDetallesSinAlbaran.FormShow(Sender: TObject); begin inherited; if not Assigned(ViewGrid) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(DetallesSinAlbaran) then raise Exception.Create('No hay ningún DetallesSinAlbaran asignado'); DetallesSinAlbaran.DataTable.Active := True; ViewGrid.GotoFirst; end; { function TfEditorDetallesSinAlbaran.GetArticulosSeleccionados: IBizDetallesSinAlbaran; begin SeleccionarFilasDesdeGrid((ViewGrid as IViewDetallesSinAlbaran)._FocusedView, (DetallesSinAlbaran as ISeleccionable).SelectedRecords); // En Presupuestos.SelectedRecords tengo los ID de las filas seleccionadas del grid Result := Controller.ExtraerSeleccionados(DetallesSinAlbaran); end; function TfEditorDetallesSinAlbaran.GetController: IDetallesSinAlbaranController; begin Result := FController; end; } { function TfEditorDetallesSinAlbaran.GetArticulo: IBizInventario; begin Result := FArticulo; end; } function TfEditorDetallesSinAlbaran.GetAlmacen: Integer; begin if Assigned(FAlmacen) then Result := FAlmacen.ID else Result := -1; end; function TfEditorDetallesSinAlbaran.GetController: IInventarioController; begin Result := FController; end; function TfEditorDetallesSinAlbaran.GetDetalles: IBizDetalleSinAlbaran; begin Result := FDetalles; end; { function TfEditorDetallesSinAlbaran.GetMultiSelect: Boolean; begin Result := ViewGrid.MultiSelect; end; } procedure TfEditorDetallesSinAlbaran.ImprimirInterno; begin inherited; end; procedure TfEditorDetallesSinAlbaran.PonerTitulos(const ATitulo: string); var FTitulo : String; begin FTitulo := 'Detalle de artículos sin albaranar - ' + dmUsuarios.EmpresaActual.NOMBRE; inherited PonerTitulos(FTitulo); JvNavPanelHeader1.Caption := 'Almacén de salida: ' + FAlmacen.NOMBRE; end; procedure TfEditorDetallesSinAlbaran.PrevisualizarInterno; begin inherited; end; { function TfEditorDetallesSinAlbaran.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 IViewDetallesSinAlbaran).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 TfEditorDetallesSinAlbaran.SetController(const Value: IDetallesSinAlbaranController); begin FController := Value; if Assigned(FController) then begin if Assigned(ViewGrid) then (ViewGrid as IViewDetallesSinAlbaran).Almacenes := FController.AlmacenesController.BuscarTodos; end; end; } { procedure TfEditorDetallesSinAlbaran.SetArticulo(const Value: IBizInventario); begin FArticulo := Value; if Assigned(FArticulo) then begin tbxEditFiltro.Text := FArticulo.REFERENCIA; end; end; } procedure TfEditorDetallesSinAlbaran.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 TfEditorDetallesSinAlbaran.SetController(const Value: IInventarioController); begin FController := Value; end; procedure TfEditorDetallesSinAlbaran.SetDetalles(const Value: IBizDetalleSinAlbaran); begin FDetalles := Value; dsDataTable.DataTable := FDetalles.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewDetalleSinAlbaran).Detalles := FDetalles; end; { procedure TfEditorDetallesSinAlbaran.SetMultiSelect(AValue: Boolean); begin ViewGrid.MultiSelect := AValue; end; } end.