Tecsitel_FactuGES2/Source/Modulos/Inventario/Views/uEditorDetalleReservas.pas

408 lines
13 KiB
ObjectPascal
Raw Blame History

unit uEditorDetalleReservas;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
uCustomEditor, ImgList, PngImageList, StdActns, ActnList, TB2ExtItems, TBXExtItems, TBX, TB2Item,
TB2Dock, TB2Toolbar, JvExControls, JvComponent, JvNavigationPane,
uViewDetalleReservas, Menus, DB, uDADataTable, ComCtrls, uViewGrid,
uDAScriptingProvider, uDACDSDataTable, JvAppStorage,
JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls, uCustomView,
uViewBase, uViewBarraSeleccion, JvComponentBase, uEditorGridBase,
uIEditorDetalleReservas, uBizInventario, uViewGridBase,
JvExComCtrls, JvStatusBar, uViewGrid2Niveles, JSDialog, uDAInterfaces,
uInventarioController, uEditorInventario;
type
TfEditorDetalleReservas = class(TfEditorGridBase, IEditorDetalleReservas)
TBXSeparatorItem17: TTBXSeparatorItem;
frViewDetalleReservas1: TfrViewDetalleReservas;
actCancelarReserva: TAction;
actTrasladarReservados: TAction;
TBXItem38: TTBXItem;
TBXItem39: TTBXItem;
procedure FormShow(Sender: TObject);
procedure actCancelarReservaExecute(Sender: TObject);
procedure actTrasladarReservadosExecute(Sender: TObject);
private
function Seleccionar(Descripcion: String; TipoSeleccion: TEnumSeleccion): Variant;
function DarIDAlmacenSeleccionado(Descripcion: String): Integer;
function DarIDObraSeleccionada(Descripcion: String): Integer;
function GetIdAlmacenObra: Integer;
procedure SetIdAlmacenObra(const Value: Integer);
protected
FTipoReservas: String;
FIdAlmacenObra: Integer;
FArticulo: IBizInventario;
FDetalleReservas: IBizDetalleReservas;
FController : IInventarioController;
function GetArticulo: IBizInventario;
procedure SetArticulo(const Value: IBizInventario);
function GetDetalleReservas: IBizDetalleReservas;
procedure SetDetalleReservas(const Value: IBizDetalleReservas);
function GetTipoReservas: String;
procedure SetTipoReservas(const Value: String);
function GetController : IInventarioController; virtual;
procedure SetController (const Value : IInventarioController); virtual;
{ procedure SetMultiSelect (AValue : Boolean);
function GetMultiSelect : Boolean;
function GetArticulosSeleccionados: IBizDetalleReservas;
}
procedure ImprimirInterno; override;
procedure PrevisualizarInterno; override;
public
property Articulo: IBizInventario read GetArticulo write SetArticulo;
property DetalleReservas: IBizDetalleReservas read GetDetalleReservas write SetDetalleReservas;
property Controller : IInventarioController read GetController write SetController;
property TipoReservas: String read GetTipoReservas write SetTipoReservas;
property IdAlmacenObra: Integer read GetIdAlmacenObra write SetIdAlmacenObra;
// property ArticulosSeleccionados: IBizDetalleReservas 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, Variants, uGridStatusUtils, uDataModuleInventario, uDataModuleUsuarios,
uEditorBase, uDBSelectionListUtils, cxGridDBTableView, cxGridCustomTableView,
uAlmacenesController, uBizAlmacenes, uFactuGES_App, uDialogUtils,
uEditorElegirAlmacenObraOperacion,
schInventarioClient_Intf;
{, uDBSelectionList, uDataModulePedidosProveedor,
uBizPedidosProveedor, uBizMontajes, uDataModuleMontajes;
}
{ TfEditorDetalleReservas }
{
***************************** TfEditorDetalleReservas *****************************
}
procedure TfEditorDetalleReservas.actCancelarReservaExecute(Sender: TObject);
var
ReservasSeleccionadas: IBizDetalleReservas;
begin
inherited;
try
SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (DetalleReservas as ISeleccionable).SelectedRecords);
// En SelectedRecords tengo los ID de las filas seleccionadas del grid
ReservasSeleccionadas := (Controller as IInventarioController).ExtraerSeleccionados(DetalleReservas) as IBizDetalleReservas;
if (ReservasSeleccionadas.DataTable.RecordCount > 0) then
begin
FController.CancelarReservas(ReservasSeleccionadas);
RefrescarInterno;
end
else
ShowWarningMessage('Debe seleccionar las reservas que desea cancelar');
finally
ReservasSeleccionadas:= Nil;
end;
end;
procedure TfEditorDetalleReservas.actTrasladarReservadosExecute(Sender: TObject);
var
ReservasSeleccionadas: IBizDetalleReservas;
begin
inherited;
try
SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (DetalleReservas as ISeleccionable).SelectedRecords);
// En SelectedRecords tengo los ID de las filas seleccionadas del grid
ReservasSeleccionadas := (Controller as IInventarioController).ExtraerSeleccionados(DetalleReservas) as IBizDetalleReservas;
if (ReservasSeleccionadas.DataTable.RecordCount > 0) then
begin
FController.TrasladarReservas(ReservasSeleccionadas);
RefrescarInterno;
end
else
ShowWarningMessage('Debe seleccionar las reservas que desea trasladar');
finally
ReservasSeleccionadas:= Nil;
end;
end;
constructor TfEditorDetalleReservas.Create(AOwner: TComponent);
begin
inherited;
ViewGrid := frViewDetalleReservas1;
end;
function TfEditorDetalleReservas.DarIDAlmacenSeleccionado(Descripcion: String): Integer;
var
IDAlmacen: Variant;
begin
IDAlmacen := (ViewGrid as IViewDetalleReservas).DarIDAlmacenObraSeleccionada;
if not VarIsNull(IDAlmacen) then
Result := IDAlmacen
else
Result := Seleccionar(Descripcion, tAlmacen)
end;
function TfEditorDetalleReservas.DarIDObraSeleccionada(Descripcion: String): Integer;
var
IDObra: Variant;
begin
IDObra := (ViewGrid as IViewDetalleReservas).DarIDAlmacenObraSeleccionada;
if not VarIsNull(IDObra) then
Result := IDObra
else
Result := Seleccionar(Descripcion, TObra)
end;
destructor TfEditorDetalleReservas.Destroy;
begin
FDetalleReservas := NIL;
inherited;
end;
procedure TfEditorDetalleReservas.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(ViewGrid) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(DetalleReservas) then
raise Exception.Create('No hay ning<6E>n DetalleReservas asignado');
DetalleReservas.DataTable.Active := True;
ViewGrid.GotoFirst;
end;
{
function TfEditorDetalleReservas.GetArticulosSeleccionados: IBizDetalleReservas;
begin
SeleccionarFilasDesdeGrid((ViewGrid as IViewDetalleReservas)._FocusedView, (DetalleReservas as ISeleccionable).SelectedRecords);
// En Presupuestos.SelectedRecords tengo los ID de las filas seleccionadas del grid
Result := Controller.ExtraerSeleccionados(DetalleReservas);
end;
function TfEditorDetalleReservas.GetController: IDetalleReservasController;
begin
Result := FController;
end;
}
function TfEditorDetalleReservas.GetArticulo: IBizInventario;
begin
Result := FArticulo;
end;
function TfEditorDetalleReservas.GetController: IInventarioController;
begin
Result := FController;
end;
function TfEditorDetalleReservas.GetDetalleReservas: IBizDetalleReservas;
begin
Result := FDetalleReservas;
end;
function TfEditorDetalleReservas.GetIdAlmacenObra: Integer;
begin
Result := FIdAlmacenObra;
end;
function TfEditorDetalleReservas.GetTipoReservas: String;
begin
Result := FTipoReservas;
end;
{
function TfEditorDetalleReservas.GetMultiSelect: Boolean;
begin
Result := ViewGrid.MultiSelect;
end;
}
procedure TfEditorDetalleReservas.ImprimirInterno;
begin
inherited;
end;
procedure TfEditorDetalleReservas.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := 'Detalle de reservas en almacen - ' + AppFactuGES.EmpresaActiva.NOMBRE;
inherited PonerTitulos(FTitulo);
end;
procedure TfEditorDetalleReservas.PrevisualizarInterno;
begin
inherited;
end;
{function TfEditorDetalleReservas.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 IViewDetalleReservas).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<63>n y devolver el almac<61>n seleccionado.
Respuesta := JsElegirAlmacenDialog.Execute;
if Respuesta <> IDCANCEL then
Result := JsElegirAlmacenDialog.RadioResult - 1000;
end;
{
procedure TfEditorDetalleReservas.SetController(const Value: IDetalleReservasController);
begin
FController := Value;
if Assigned(FController) then
begin
if Assigned(ViewGrid) then
(ViewGrid as IViewDetalleReservas).Almacenes := FController.AlmacenesController.BuscarTodos;
end;
end;
}
function TfEditorDetalleReservas.Seleccionar(Descripcion: String; TipoSeleccion: TEnumSeleccion): Variant;
var
ALista : TStringList;
AListaAux : TStringList;
Respuesta : Variant;
i: Integer;
begin
Result := Null;
with TfEditorElegirAlmacenObraOperacion.Create(NIL) do
try
case TipoSeleccion of
tAlmacen: begin
Caption := Descripcion;
eDescripcion.Caption := 'Elija sobre qu<71> almac<61>n desea realizar la operaci<63>n.';
eEtiqueta.Caption := 'Almac<61>n:';
ALista := Controller.AlmacenesController.DarListaAlmacenes;
end;
tObra: begin
Caption := Descripcion;
eDescripcion.Caption := 'Elija sobre qu<71> obra desea realizar la operaci<63>n.';
eEtiqueta.Caption := 'Obra:';
ALista := Controller.ObrasController.DarListaObras;
end;
tAlmacenObra: begin
Caption := Descripcion;
eDescripcion.Caption := 'Elija sobre qu<71> almac<61>n u obra desea realizar la operaci<63>n.';
eEtiqueta.Caption := 'Almac<61>n/Obra:';
ALista := Controller.AlmacenesController.DarListaAlmacenes;
AListaAux := Controller.ObrasController.DarListaObras;
for i := 0 to AListaAux.Count - 1 do
ALista.Add(Format('%s=%s', [AListaAux.Names[i], AListaAux.Values[AListaAux.Names[i]]]));
end;
end;
with cxListaAlmacenesObras.Properties.Items do
begin
BeginUpdate;
try
Clear;
for i := 0 to ALista.Count - 1 do
Add(ALista.Names[i]);
finally
EndUpdate;
end;
end;
if (ShowModal = mrOk) then
Result := ALista.Values[cxListaAlmacenesObras.EditValue];
finally
Free;
end;
end;
procedure TfEditorDetalleReservas.SetArticulo(const Value: IBizInventario);
begin
FArticulo := Value;
if Assigned(FArticulo)
and (FArticulo.RESERVA > 0) then
begin
tbxEditFiltro.Text := FArticulo.REFERENCIA;
end;
end;
procedure TfEditorDetalleReservas.SetController(const Value: IInventarioController);
begin
FController := Value;
end;
procedure TfEditorDetalleReservas.SetDetalleReservas(const Value: IBizDetalleReservas);
begin
FDetalleReservas := Value;
dsDataTable.DataTable := FDetalleReservas.DataTable;
if Assigned(ViewGrid) then
(ViewGrid as IViewDetalleReservas).DetalleReservas := FDetalleReservas;
end;
procedure TfEditorDetalleReservas.SetIdAlmacenObra(const Value: Integer);
begin
FIdAlmacenObra := Value;
if assigned (ViewGrid) then
(ViewGrid as IViewDetalleReservas).IdAlmacenObra := IdAlmacenObra;
end;
procedure TfEditorDetalleReservas.SetTipoReservas(const Value: String);
begin
FTipoReservas := Value;
if not Assigned(FController) then
raise Exception.Create('No hay ning<6E>n controlador asignado');
if (FTipoReservas = CTE_INV_ALMACEN) then
begin
if Assigned(ViewGrid) then
(ViewGrid as IViewDetalleReservas).Almacenes := FController.AlmacenesController.DarListaAlmacenes;
end
else if (FTipoReservas = CTE_INV_OBRA) then
begin
if Assigned(ViewGrid) then
(ViewGrid as IViewDetalleReservas).Obras := FController.ObrasController.DarListaObras;
end;
end;
{
procedure TfEditorDetalleReservas.SetMultiSelect(AValue: Boolean);
begin
ViewGrid.MultiSelect := AValue;
end;
}
end.