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