Tecsitel_FactuGES2/Source/Modulos/Pedidos a proveedor/Views/uViewObraReserva.pas

194 lines
5.3 KiB
ObjectPascal

unit uViewObraReserva;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewBase, uBizPedidosProveedor, cxGraphics, dxLayoutControl, cxMemo,
cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxLookupEdit,
cxDBLookupEdit, cxDBLookupComboBox, StdCtrls, cxControls, DB, uDADataTable,
ActnList, uBizAlmacenes, uAlmacenesController, uPedidosProveedorController,
Buttons, uDAInterfaces, uBizObras, uObrasController, cxButtonEdit, cxDBEdit,
ExtCtrls, ImgList, PngImageList;
type
IViewDireccionEntregaPedidoProv = interface(IViewBase)
['{7467855C-066F-4A60-B88F-2837C8050B1E}']
function GetPedidoProveedor: IBizPedidoProveedor;
procedure SetPedidoProveedor(const Value: IBizPedidoProveedor);
property PedidoProveedor: IBizPedidoProveedor read GetPedidoProveedor write SetPedidoProveedor;
end;
TfrViewObraReserva = class(TfrViewBase, IViewDireccionEntregaPedidoProv)
dxLayoutControl1: TdxLayoutControl;
dxLayoutGroup1: TdxLayoutGroup;
dsPedido: TDADataSource;
Label1: TLabel;
dxLayoutControl1Item1: TdxLayoutItem;
dxLayoutControl1Item2: TdxLayoutItem;
Button3: TBitBtn;
PngImageList: TPngImageList;
ActionList1: TActionList;
actVerObra: TAction;
cbObraReserva: TComboBox;
dxLayoutControl1Item5: TdxLayoutItem;
dxLayoutControl1Group1: TdxLayoutGroup;
procedure actVerObraExecute(Sender: TObject);
procedure actVerObraUpdate(Sender: TObject);
procedure cbObraReservaChange(Sender: TObject);
procedure CustomViewShow(Sender: TObject);
protected
FObrasController : IObrasController;
FListaObras : TStringList;
//FObras: IBizObra;
FPedido : IBizPedidoProveedor;
FController : IPedidosProveedorController;
function GetPedidoProveedor: IBizPedidoProveedor;
procedure SetPedidoProveedor(const Value: IBizPedidoProveedor);
procedure CargarObra;
procedure SalvarObra;
procedure SetReadOnly(Value: Boolean); override;
public
property PedidoProveedor: IBizPedidoProveedor read GetPedidoProveedor write SetPedidoProveedor;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
{$R *.dfm}
uses
uEditorRegistryUtils, uCustomView, uEditorElegirPersonaContactoPedido,
uStringsUtils;
procedure TfrViewObraReserva.actVerObraExecute(Sender: TObject);
var
AObra : IBizObra;
AID : Integer;
begin
inherited;
AID := StrToInt(FListaObras.Values[FListaObras.Names[cbObraReserva.ItemIndex-1]]);
AObra := FObrasController.Buscar(AID);
if Assigned(AObra) then
try
FObrasController.Ver(AObra);
finally
AObra := NIL;
end;
end;
procedure TfrViewObraReserva.actVerObraUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := Assigned(FListaObras) and
(not EsCadenaVacia(cbObraReserva.Text));
end;
procedure TfrViewObraReserva.CargarObra;
var
i : integer;
begin
cbObraReserva.ItemIndex := 0;
if not FPedido.Active then
FPedido.Open;
if not FPedido.ID_OBRAIsNull then
begin
for i := 0 to FListaObras.Count - 1 do
begin
if IntToStr(FPedido.ID_OBRA) = FListaObras.Values[FListaObras.Names[i]] then
begin
cbObraReserva.ItemIndex := i + 1;
Exit;
end;
end;
end;
end;
procedure TfrViewObraReserva.cbObraReservaChange(Sender: TObject);
begin
inherited;
SalvarObra;
end;
constructor TfrViewObraReserva.Create(AOwner: TComponent);
var
i: Integer;
begin
inherited;
FController := TPedidosProveedorController.Create;
FObrasController := TObrasController.Create;
FListaObras := FObrasController.DarListaObras;
cbObraReserva.Items.BeginUpdate;
try
cbObraReserva.Items.Add(''); // Para poder indicar sin obra
for i := 0 to FListaObras.Count - 1 do
cbObraReserva.Items.Add(FListaObras.Names[i]);
finally
cbObraReserva.Items.EndUpdate;
end;
end;
procedure TfrViewObraReserva.CustomViewShow(Sender: TObject);
begin
inherited;
cbObraReserva.Enabled := not Self.ReadOnly;
end;
destructor TfrViewObraReserva.Destroy;
begin
FObrasController := Nil;
FController := NIL;
FreeANDNIL(FListaObras);
inherited;
end;
function TfrViewObraReserva.GetPedidoProveedor: IBizPedidoProveedor;
begin
Result := FPedido;
end;
procedure TfrViewObraReserva.SalvarObra;
var
AID : String;
begin
// En el item 0 no hay nada
if (cbObraReserva.ItemIndex > 0) then
begin
AID := FListaObras.Values[FListaObras.Names[cbObraReserva.ItemIndex-1]];
FPedido.Edit;
FPedido.ID_OBRA := StrToInt(AID);
FPedido.NOMBRE_OBRA := FListaObras.Names[cbObraReserva.ItemIndex-1];
end
else begin
FPedido.Edit;
FPedido.ClearField('ID_OBRA');
FPedido.ClearField('NOMBRE_OBRA');
end;
end;
procedure TfrViewObraReserva.SetPedidoProveedor(
const Value: IBizPedidoProveedor);
begin
dsPedido.DataTable := nil;
FPedido := Value;
dsPedido.DataTable := FPedido.DataTable;
CargarObra;
end;
procedure TfrViewObraReserva.SetReadOnly(Value: Boolean);
begin
inherited;
if (csLoading in Self.ComponentState) then
Exit;
cbObraReserva.Enabled := not Self.ReadOnly;
end;
end.