Tecsitel_FactuGES2/Source/Modulos/Inventario/Views/uEditorEntradaSalidaArticulos.pas
2008-09-04 11:46:32 +00:00

346 lines
12 KiB
ObjectPascal
Raw Permalink Blame History

unit uEditorEntradaSalidaArticulos;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorDBItem, DB, uDADataTable, JvAppStorage,
JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList,
PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock,
TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane, uCustomView,
uViewBase, uEditorItem, pngimage, uViewGridBase,
uViewGrid, JvComponentBase, uBizInventario, uViewEntradaSalidaArticulos,
uIEditorEntradaSalidaArticulos, uInventarioController, JvExComCtrls,
JvStatusBar, Grids, DBGrids, cxLabel, cxControls, cxContainer, cxEdit,
cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxMemo, ToolWin,
dxLayoutControl, cxStyles, StdCtrls, Buttons, TBXDkPanels, uBizPedidosProveedor,
uDAInterfaces;
type
TfEditorEntradaSalidaArticulos = class(TfEditorDBItem, IEditorEntradaSalidaArticulos)
actAnadirInventario: TAction;
actEliminarInventario: TAction;
actAnchoAuto: TAction;
TBXItem7: TTBXItem;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
TBXItem33: TTBXItem;
pnlMovimiento: TTBXDockablePanel;
Label1: TLabel;
eFechaMovimiento: TcxDateEdit;
eCausa: TcxTextEdit;
Label2: TLabel;
pnlEntradaPedido: TTBXDockablePanel;
Label3: TLabel;
Label4: TLabel;
TBXDockPaneles: TTBXDock;
edtFechaPedido: TLabel;
edtReferenciaPedido: TLabel;
Label6: TLabel;
edtSituacion: TLabel;
Label7: TLabel;
edtProveedor: TLabel;
frViewEntradaSalidaArticulos1: TfrViewEntradaSalidaArticulos;
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
procedure actAnadirInventarioExecute(Sender: TObject);
procedure actEliminarInventarioExecute(Sender: TObject);
procedure actAnchoAutoExecute(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure actEliminarInventarioUpdate(Sender: TObject);
private
FTitulo: String;
FHayCambios: Boolean;
FResultadoModalOK: Boolean;
FController : IInventarioController;
FArticulos: IBizInventario; //Los art<72>culos de entrada o salida
FInventario: IBizInventario; //Para sacar el stock
FPedidoProveedor: IBizPedidoProveedor;
function GetArticulos: IBizInventario;
procedure SetArticulos(const Value: IBizInventario);
function GetInventario: IBizInventario;
procedure SetInventario(const Value: IBizInventario);
function GetPedidoProveedor: IBizPedidoProveedor;
procedure SetPedidoProveedor(const Value: IBizPedidoProveedor);
function GetController : IInventarioController;
procedure SetController (const Value : IInventarioController);
function getResultadoModalOK: Boolean;
protected
procedure GuardarInterno; override;
// procedure CancelarCambiosInterno; override;
function GetModified: Boolean; override;
public
property Controller : IInventarioController read GetController write SetController;
property Articulos: IBizInventario read GetArticulos write SetArticulos;
property Inventario: IBizInventario read GetInventario write SetInventario;
property PedidoProveedor: IBizPedidoProveedor read GetPedidoProveedor write SetPedidoProveedor;
property ResultadoModalOK: Boolean read getResultadoModalOK;
constructor Create(AOwner: TComponent); override;
procedure PonerTitulos(const ATitulo: string = ''); override;
end;
implementation
uses uEditorBase, uBizAlmacenes, uBizObras, schAlmacenesClient_Intf;
{$R *.dfm}
//uses uEditorUtils;
{ TfEditorRecibirPedido }
function TfEditorEntradaSalidaArticulos.GetArticulos: IBizInventario;
begin
Result := FArticulos;
end;
function TfEditorEntradaSalidaArticulos.GetController: IInventarioController;
begin
Result := FController;
end;
function TfEditorEntradaSalidaArticulos.GetInventario: IBizInventario;
begin
Result := FInventario;
end;
function TfEditorEntradaSalidaArticulos.GetModified: Boolean;
begin
Result := FHayCambios;
end;
function TfEditorEntradaSalidaArticulos.GetPedidoProveedor: IBizPedidoProveedor;
begin
Result := FPedidoProveedor;
end;
function TfEditorEntradaSalidaArticulos.getResultadoModalOK: Boolean;
begin
Result := FResultadoModalOK;
end;
procedure TfEditorEntradaSalidaArticulos.GuardarInterno;
begin
inherited;
//En este punto se realizar<61> el applyupdates
if FController.Guardar(FArticulos, eFechaMovimiento.Date, eCausa.Text) then
FResultadoModalOK := True
else
FResultadoModalOK := False;
FHayCambios:= False;
end;
procedure TfEditorEntradaSalidaArticulos.PonerTitulos(const ATitulo: string);
begin
inherited PonerTitulos(FTitulo);
end;
procedure TfEditorEntradaSalidaArticulos.SetArticulos(const Value: IBizInventario);
begin
FArticulos := Value;
if Assigned(FArticulos) then
dsDataTable.DataTable := FArticulos.DataTable
else
dsDataTable.DataTable := NIL;
frViewEntradaSalidaArticulos1.dsDataSource.DataTable := dsDataTable.DataTable;
// PonerEtiquetasEnEditor
end;
procedure TfEditorEntradaSalidaArticulos.SetController(const Value: IInventarioController);
begin
FController := Value
end;
procedure TfEditorEntradaSalidaArticulos.SetInventario(const Value: IBizInventario);
begin
FInventario := Value;
end;
procedure TfEditorEntradaSalidaArticulos.SetPedidoProveedor(const Value: IBizPedidoProveedor);
begin
FPedidoProveedor := Value;
if Assigned(FPedidoProveedor) then
begin
edtFechaPedido.Caption := DateToStr(FPedidoProveedor.FECHA_PEDIDO);
edtReferenciaPedido.Caption := FPedidoProveedor.REFERENCIA;
edtSituacion.Caption := FPedidoProveedor.SITUACION;
edtProveedor.Caption := FPedidoProveedor.NOMBRE;
pnlEntradaPedido.Visible := True;
TBXItem7.Visible := True;
end
else
begin
pnlEntradaPedido.Visible := False;
TBXItem7.Visible := False;
end;
end;
procedure TfEditorEntradaSalidaArticulos.actAnadirInventarioExecute(Sender: TObject);
begin
//Todos los cambios ser<65>n en cach<63> hasta que el usuario decida guardar
FController.Anadir(Articulos, Inventario);
actAnchoAuto.Execute;
FHayCambios:= True;
end;
procedure TfEditorEntradaSalidaArticulos.CustomEditorClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
FController := Nil;
FArticulos:= Nil;
FInventario:= Nil;
FPedidoProveedor:= Nil;
end;
procedure TfEditorEntradaSalidaArticulos.FormShow(Sender: TObject);
var
AAlmacenOrigen: IBizAlmacen;
AAlmacenDestino: IBizAlmacen;
AObraOrigen: IBizObra;
AObraDestino: IBizObra;
begin
inherited;
FTitulo := '';
if Assigned(FArticulos) then
begin
//Titulos
try
AAlmacenOrigen := Controller.AlmacenesController.Buscar(FArticulos.IDAlmacenOrigen);
AAlmacenOrigen.DataTable.Active := True;
AObraOrigen := Controller.ObrasController.Buscar(FArticulos.IDAlmacenOrigen);
AObraOrigen.DataTable.Active := True;
AAlmacenDestino:= Controller.AlmacenesController.Buscar(FArticulos.IDAlmacenDestino);
AAlmacenDestino.DataTable.Active := True;
AObraDestino:= Controller.ObrasController.Buscar(FArticulos.IDAlmacenDestino);
AObraDestino.DataTable.Active := True;
case FArticulos.TipoMovimiento of
tEntradaLibre :
begin
if AAlmacenDestino.RecordCount > 0 then
FTitulo := 'Entrada de art<72>culos en "' + AAlmacenDestino.NOMBRE + '"'
else
FTitulo := 'Entrada de art<72>culos en "' + AObraDestino.NOMBRE + '"';
actGuardarCerrar.Caption := 'Realizar la entrada de los art<72>culos';
end;
tEntradaPedidoProveedor :
begin
if AAlmacenDestino.RecordCount > 0 then
FTitulo := 'Entrada por pedido de art<72>culos, en "' + AAlmacenDestino.NOMBRE + '"'
else
FTitulo := 'Entrada por pedido de art<72>culos, en "' + AObraDestino.NOMBRE + '"';
actGuardarCerrar.Caption := 'Realizar la entrada de los art<72>culos';
end;
tSalidaLibre, tSalidaAlbaranCliente :
begin
if AAlmacenOrigen.RecordCount > 0 then
FTitulo := 'Salida de art<72>culos en "' + AAlmacenOrigen.NOMBRE + '"'
else
FTitulo := 'Salida de art<72>culos en "' + AObraOrigen.NOMBRE + '"';
actGuardarCerrar.Caption := 'Realizar la salida de los art<72>culos';
end;
tTraslado:
begin
if AAlmacenOrigen.RecordCount > 0 then
FTitulo := 'Traslado de art<72>culos desde "' + AAlmacenOrigen.NOMBRE
else
FTitulo := 'Traslado de art<72>culos desde "' + AObraOrigen.NOMBRE;
if AAlmacenDestino.RecordCount > 0 then
FTitulo := FTitulo + '" hasta "' + AAlmacenDestino.NOMBRE + '"'
else
FTitulo := FTitulo + '" hasta "' + AObraDestino.NOMBRE + '"';
actGuardarCerrar.Caption := 'Realizar el traslado de los art<72>culos';
end;
tReserva:
begin
if AAlmacenOrigen.RecordCount > 0 then
FTitulo := 'Reserva de art<72>culos de "' + AAlmacenOrigen.NOMBRE
else
FTitulo := 'Reserva de art<72>culos de "' + AObraOrigen.NOMBRE;
if AAlmacenDestino.RecordCount > 0 then
FTitulo := FTitulo + '" para "' + AAlmacenDestino.NOMBRE + '"'
else
FTitulo := FTitulo + '" para "' + AObraDestino.NOMBRE + '"';
actGuardarCerrar.Caption := 'Realizar la reserva de los art<72>culos';
Label2.Caption := 'Fecha de la reserva:';
end;
end;
finally
AAlmacenOrigen := Nil;
AAlmacenDestino:= Nil;
AObraOrigen := Nil;
AObraDestino:= Nil;
end;
//Botones de a<>adir y eliminar
case FArticulos.TipoMovimiento of
tEntradaLibre, tSalidaLibre, tTraslado, tReserva :
begin
pnlMovimiento.Visible := True;
eFechaMovimiento.Date := Date;
actAnadirInventario.Enabled := True;
actAnadirInventario.Visible := True;
actEliminarInventario.Enabled := True;
actEliminarInventario.Visible := True;
frViewEntradaSalidaArticulos1.cxGridViewCANTIDAD.Properties.ReadOnly := False;
end;
tEntradaPedidoProveedor, tSalidaAlbaranCliente :
begin
if (FArticulos.TipoMovimiento = tEntradaPedidoProveedor) then
ToolBar1.Visible := False;
actAnadirInventario.Enabled := False;
actAnadirInventario.Visible := False;
actEliminarInventario.Enabled := False;
actEliminarInventario.Visible := False;
if (FArticulos.TipoMovimiento = tSalidaAlbaranCliente) then
frViewEntradaSalidaArticulos1.cxGridViewCANTIDAD.Properties.ReadOnly := True
else
frViewEntradaSalidaArticulos1.cxGridViewCANTIDAD.Properties.ReadOnly := False;
end;
end;
end;
end;
procedure TfEditorEntradaSalidaArticulos.actAnchoAutoExecute(Sender: TObject);
begin
frViewEntradaSalidaArticulos1.cxGridView.ApplyBestFit;
end;
procedure TfEditorEntradaSalidaArticulos.actEliminarInventarioExecute(Sender: TObject);
begin
//Todos los cambios ser<65>n en cach<63> hasta que el usuario decida guardar
Controller.Eliminar(Articulos, false, false);
FHayCambios:= True;
end;
procedure TfEditorEntradaSalidaArticulos.actEliminarInventarioUpdate(
Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := HayDatos;
end;
constructor TfEditorEntradaSalidaArticulos.Create(AOwner: TComponent);
begin
inherited;
FTitulo := '';
FHayCambios:= False;
FResultadoModalOK := False;
end;
end.