AbetoDesign_FactuGES2/Source/Modulos/Inventario/Views/uEditorEntradaSalidaArticulos.pas

300 lines
9.9 KiB
ObjectPascal
Raw 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;
type
TfEditorEntradaSalidaArticulos = class(TfEditorDBItem, IEditorEntradaSalidaArticulos)
frViewListaArticulos: TfrViewEntradaSalidaArticulos;
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;
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, 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;
frViewListaArticulos.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
end
else
pnlEntradaPedido.Visible := False;
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;
begin
inherited;
FTitulo := '';
if Assigned(FArticulos) then
begin
//Titulos
try
AAlmacenOrigen := Controller.AlmacenesController.Buscar(FArticulos.IDAlmacenOrigen);
AAlmacenDestino:= Controller.AlmacenesController.Buscar(FArticulos.IDAlmacenDestino);
AAlmacenOrigen.DataTable.Active := True;
AAlmacenDestino.DataTable.Active := True;
case FArticulos.TipoMovimiento of
tEntradaLibre :
begin
FTitulo := 'Entrada de art<72>culos en el almac<61>n "' + AAlmacenDestino.NOMBRE + '"';
actGuardarCerrar.Caption := 'Realizar la entrada de los art<72>culos';
end;
tEntradaPedidoProveedor :
begin
FTitulo := 'Entrada por pedido de art<72>culos, en el almac<61>n "' + AAlmacenDestino.NOMBRE + '"';
actGuardarCerrar.Caption := 'Realizar la entrada de los art<72>culos';
end;
tSalidaLibre, tSalidaAlbaranCliente :
begin
FTitulo := 'Salida de art<72>culos en el almac<61>n "' + AAlmacenOrigen.NOMBRE + '"';
actGuardarCerrar.Caption := 'Realizar la salida de los art<72>culos';
end;
tTraslado:
begin
FTitulo := 'Traslado de art<72>culos desde el almac<61>n "' + AAlmacenOrigen.NOMBRE + '" hasta el almac<61>n "' + AAlmacenDestino.NOMBRE + '"';
actGuardarCerrar.Caption := 'Realizar el traslado de los art<72>culos';
end;
end;
finally
AAlmacenOrigen := Nil;
AAlmacenDestino:= Nil;
end;
//Botones de a<>adir y eliminar
case FArticulos.TipoMovimiento of
tEntradaLibre, tSalidaLibre, tTraslado :
begin
pnlMovimiento.Visible := True;
eFechaMovimiento.Date := Date;
actAnadirInventario.Enabled := True;
actAnadirInventario.Visible := True;
actEliminarInventario.Enabled := True;
actEliminarInventario.Visible := True;
frViewListaArticulos.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
frViewListaArticulos.cxGridViewCANTIDAD.Properties.ReadOnly := True
else
frViewListaArticulos.cxGridViewCANTIDAD.Properties.ReadOnly := False;
end;
end;
end;
end;
procedure TfEditorEntradaSalidaArticulos.actAnchoAutoExecute(Sender: TObject);
begin
frViewListaArticulos.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.