300 lines
9.9 KiB
ObjectPascal
300 lines
9.9 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;
|
|||
|
|
|
|||
|
|
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.
|