git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@939 0c75b7a4-871f-7646-8a2f-f78d34cc349f
408 lines
13 KiB
ObjectPascal
408 lines
13 KiB
ObjectPascal
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.
|
||
|