This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
LuisLeon_FactuGES/Source/Modulos/Inventario/Views/uEditorInventario.pas
2007-06-11 15:29:06 +00:00

342 lines
9.8 KiB
ObjectPascal

unit uEditorInventario;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
uCustomEditor, ImgList, PngImageList, StdActns, ActnList, TB2ExtItems, TBXExtItems, TBX, TB2Item,
TB2Dock, TB2Toolbar, JvExControls, JvComponent, JvNavigationPane,
uViewInventario, Menus, DB, uDADataTable, ComCtrls, uViewGrid,
uDAScriptingProvider, uDACDSDataTable, JvAppStorage,
JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls, uCustomView,
uViewBase, uViewBarraSeleccion, JvComponentBase, uEditorGridBase,
uIEditorInventario, uBizInventario, uViewGridBase, uInventarioController,
JvExComCtrls, JvStatusBar, uViewGrid2Niveles, JSDialog;
type
TfEditorInventario = class(TfEditorGridBase, IEditorInventario)
actRecibirPedido: TAction;
actTrasladar: TAction;
actReservar: TAction;
actLiberar: TAction;
TBXSeparatorItem17: TTBXSeparatorItem;
rasladar1: TMenuItem;
Liberar1: TMenuItem;
Reservar1: TMenuItem;
actExpandir: TAction;
actContraer: TAction;
frViewInventario1: TfrViewInventario;
JsElegirAlmacenDialog: TJSDialog;
procedure actModificarExecute(Sender: TObject);
procedure actRecibirPedidoExecute(Sender: TObject);
procedure actTrasladarExecute(Sender: TObject);
procedure actReservarExecute(Sender: TObject);
procedure actLiberarExecute(Sender: TObject);
procedure actTrasladarUpdate(Sender: TObject);
procedure actReservarUpdate(Sender: TObject);
procedure actLiberarUpdate(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
FInventario: IBizInventario;
FController : IInventarioController;
function GetInventario: IBizInventario;
procedure SetInventario(const Value: IBizInventario);
function GetController : IInventarioController; virtual;
procedure SetController (const Value : IInventarioController); virtual;
procedure SetMultiSelect (AValue : Boolean);
function GetMultiSelect : Boolean;
function GetArticulosSeleccionados: IBizInventario;
procedure NuevoInterno; override;
procedure EliminarInterno; override;
procedure ImprimirInterno; override;
procedure PrevisualizarInterno; override;
public
property Inventario: IBizInventario read GetInventario write SetInventario;
property Controller : IInventarioController read GetController write SetController;
property ArticulosSeleccionados: IBizInventario 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, uBizAlmacenes, uGenerarAlbaranesProvUtils;
{, uDBSelectionList, uDataModulePedidosProveedor,
uBizPedidosProveedor, uBizMontajes, uDataModuleMontajes;
}
{ TfEditorInventario }
{
***************************** TfEditorInventario *****************************
}
constructor TfEditorInventario.Create(AOwner: TComponent);
begin
inherited;
ViewGrid := frViewInventario1;
end;
function TfEditorInventario.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 TfEditorInventario.Destroy;
begin
FInventario := NIL;
inherited;
end;
procedure TfEditorInventario.EliminarInterno;
var
IDAlmacenOrigen: Integer;
begin
IDAlmacenOrigen := darIDAlmacenSeleccionado('Elija el almacén donde se realizará la salida');
if IDAlmacenOrigen <> -1 then
begin
FController.SalidaArticulosLibre(FInventario, IDAlmacenOrigen);
RefrescarInterno;
end;
end;
procedure TfEditorInventario.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(ViewGrid) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Inventario) then
raise Exception.Create('No hay ningún inventario asignado');
Inventario.DataTable.Active := True;
actContraer.Execute;
ViewGrid.GotoFirst;
end;
procedure TfEditorInventario.actModificarExecute(Sender: TObject);
begin
// inherited;
end;
function TfEditorInventario.GetArticulosSeleccionados: IBizInventario;
begin
SeleccionarFilasDesdeGrid((ViewGrid as IViewInventario)._FocusedView, (Inventario as ISeleccionable).SelectedRecords);
// En Presupuestos.SelectedRecords tengo los ID de las filas seleccionadas del grid
Result := Controller.ExtraerSeleccionados(Inventario);
end;
function TfEditorInventario.GetController: IInventarioController;
begin
Result := FController;
end;
function TfEditorInventario.GetInventario: IBizInventario;
begin
Result := FInventario;
end;
function TfEditorInventario.GetMultiSelect: Boolean;
begin
Result := ViewGrid.MultiSelect;
end;
procedure TfEditorInventario.ImprimirInterno;
begin
inherited;
end;
procedure TfEditorInventario.NuevoInterno;
var
IDAlmacenDestino: Integer;
begin
IDAlmacenDestino := darIDAlmacenSeleccionado('Elija el almacén donde se realizará la entrada');
if IDAlmacenDestino <> -1 then
begin
FController.EntradaArticulosLibre(FInventario, IDAlmacenDestino);
RefrescarInterno;
end;
end;
procedure TfEditorInventario.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := 'Inventario de articulos en almacenes - ' + dmUsuarios.EmpresaActual.NOMBRE;
inherited PonerTitulos(FTitulo);
end;
procedure TfEditorInventario.PrevisualizarInterno;
begin
inherited;
end;
function TfEditorInventario.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 IViewInventario).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 TfEditorInventario.SetController(const Value: IInventarioController);
begin
FController := Value;
if Assigned(FController) then
begin
if Assigned(ViewGrid) then
(ViewGrid as IViewInventario).Almacenes := FController.AlmacenesController.BuscarTodos;
end;
end;
procedure TfEditorInventario.SetInventario(const Value: IBizInventario);
begin
FInventario := Value;
dsDataTable.DataTable := FInventario.DataTable;
if Assigned(ViewGrid) then
(ViewGrid as IViewInventario).Inventario := FInventario;
end;
procedure TfEditorInventario.SetMultiSelect(AValue: Boolean);
begin
ViewGrid.MultiSelect := AValue;
end;
procedure TfEditorInventario.actRecibirPedidoExecute(Sender: TObject);
begin
inherited;
RecibirPedidoProv;
RefrescarInterno;
end;
procedure TfEditorInventario.actTrasladarExecute(Sender: TObject);
var
IDAlmacenOrigen, IDAlmacenDestino: Integer;
begin
IDAlmacenOrigen := DarIDAlmacenSeleccionado('Elija el almacén de origen (de donde salen los artículos)');
if IDAlmacenOrigen <> -1 then
begin
IDAlmacenDestino := SeleccionarAlmacen('Elija el almacén de destino (donde entran los artículos)');
if IDAlmacenDestino <> -1 then
begin
FController.TrasladarArticulosLibre(FInventario, IDAlmacenOrigen, IDAlmacenDestino);
RefrescarInterno;
end;
end;
end;
procedure TfEditorInventario.actReservarExecute(Sender: TObject);
begin
Controller.Reservar(Inventario);
RefrescarInterno;
end;
procedure TfEditorInventario.actContraerExecute(Sender: TObject);
begin
if Assigned(ViewGrid) then
ViewGrid.ContraerTodo;
end;
procedure TfEditorInventario.actExpandirExecute(Sender: TObject);
begin
if Assigned(ViewGrid) then
ViewGrid.ExpandirTodo;
end;
procedure TfEditorInventario.actLiberarExecute(Sender: TObject);
begin
Controller.Liberar(Inventario);
RefrescarInterno;
end;
procedure TfEditorInventario.actTrasladarUpdate(Sender: TObject);
begin
inherited;
{
if Assigned(dsDataTable.DataTable) then
(Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty)
else
(Sender as TAction).Enabled := False;
}
end;
procedure TfEditorInventario.actReservarUpdate(Sender: TObject);
begin
inherited;
{
if Assigned(dsDataTable.DataTable) then
(Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty)
else
(Sender as TAction).Enabled := False;
}
end;
procedure TfEditorInventario.actLiberarUpdate(Sender: TObject);
begin
inherited;
{
if Assigned(dsDataTable.DataTable) then
(Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty)
else
(Sender as TAction).Enabled := False;
}
end;
end.