unit uViewPedidoProveedor;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uViewBase, uBizPedidosProveedor, DB, uDADataTable, uCustomView,
  AppEvnts, StdCtrls, Mask, DBCtrls,

  uViewObservaciones,  uViewDatosPedidoProveedor, uViewDatosYSeleccionProveedor,
  cxGraphics, cxDropDownEdit, cxImageComboBox, cxDBEdit, cxContainer, cxEdit,
  cxTextEdit, cxMaskEdit, cxCalendar, dxLayoutControl, cxControls, cxMemo;

type
  IViewPedidoProveedor = interface(IViewBase)
  ['{C5385699-C1A4-4AEB-B3D0-EE3BDB322FE2}']
    function GetPedido: IBizPedidoProveedor;
    procedure SetPedido(const Value: IBizPedidoProveedor);
    property Pedido: IBizPedidoProveedor read GetPedido write SetPedido;

    function GetViewProveedorPedido: TfrViewDatosYSeleccionProveedor;
    procedure SetViewProveedorPedido(const Value: TfrViewDatosYSeleccionProveedor);
    property ViewProveedorPedido: TfrViewDatosYSeleccionProveedor read GetViewProveedorPedido write SetViewProveedorPedido;
  end;

  TfrViewPedidoProveedor = class(TfrViewBase, IViewPedidoProveedor)
    DADataSource: TDADataSource;
    frViewProveedorPedido: TfrViewDatosYSeleccionProveedor;
    dxLayoutControl1Group_Root: TdxLayoutGroup;
    dxLayoutControl1: TdxLayoutControl;
    dxLayoutControl1Item1: TdxLayoutItem;
    dxLayoutControl1Item2: TdxLayoutItem;
    edtFechaPedido: TcxDBDateEdit;
    dxLayoutControl1Item4: TdxLayoutItem;
    edtFechaConfirmacion: TcxDBDateEdit;
    dxLayoutControl1Item5: TdxLayoutItem;
    edtFechaEntrega: TcxDBDateEdit;
    dxLayoutControl1Group1: TdxLayoutGroup;
    dxLayoutControl1Group2: TdxLayoutGroup;
    dxLayoutControl1Item6: TdxLayoutItem;
    memObservaciones: TcxDBMemo;
    cbSituacion: TcxDBComboBox;
    dxLayoutControl1Item7: TdxLayoutItem;
    dxLayoutControl1Item3: TdxLayoutItem;
    eReferencia: TcxDBTextEdit;
    dxLayoutControl1Group5: TdxLayoutGroup;
    dxLayoutControl1Group6: TdxLayoutGroup;
    dxLayoutControl1Group7: TdxLayoutGroup;
    dxLayoutControl1Group8: TdxLayoutGroup;
    dxLayoutControl1Item8: TdxLayoutItem;
    memDireccionEntrega: TcxDBMemo;
    dxLayoutControl1Group3: TdxLayoutGroup;
    procedure cbSituacionPropertiesInitPopup(Sender: TObject);
    procedure CustomViewCreate(Sender: TObject);
    procedure CustomViewDestroy(Sender: TObject);
  protected
    FPedido : IBizPedidoProveedor;
    FViewProveedorPedido : TfrViewDatosYSeleccionProveedor;

    function GetPedido: IBizPedidoProveedor;
    procedure SetPedido(const Value: IBizPedidoProveedor); virtual;
    function GetViewProveedorPedido: TfrViewDatosYSeleccionProveedor;
    procedure SetViewProveedorPedido(const Value: TfrViewDatosYSeleccionProveedor);

  public
    property Pedido: IBizPedidoProveedor read GetPedido write SetPedido;
    property ViewProveedorPedido: TfrViewDatosYSeleccionProveedor read GetViewProveedorPedido;
  end;

implementation

{$R *.dfm}

{ TfrViewPedidoProveedor }

procedure TfrViewPedidoProveedor.cbSituacionPropertiesInitPopup(
  Sender: TObject);
begin
  inherited;
  with cbSituacion.Properties.Items do
  begin
    if Count = 0 then
    begin
      BeginUpdate;
      try
        Clear;
        AddStrings(Pedido.DarListaSituaciones);
      finally
        EndUpdate;
      end;
    end;
  end;
end;

procedure TfrViewPedidoProveedor.CustomViewCreate(Sender: TObject);
begin
  inherited;
  FViewProveedorPedido := frViewProveedorPedido;
  FViewProveedorPedido.MsgElegirProveedor := 'Elija el proveedor al que se le realizará el pedido.';
end;

procedure TfrViewPedidoProveedor.CustomViewDestroy(Sender: TObject);
begin
  FViewProveedorPedido := Nil;
  inherited;
end;

function TfrViewPedidoProveedor.GetPedido: IBizPedidoProveedor;
begin
  Result := FPedido;
end;

function TfrViewPedidoProveedor.GetViewProveedorPedido: TfrViewDatosYSeleccionProveedor;
begin
  Result := FViewProveedorPedido;
end;

procedure TfrViewPedidoProveedor.SetPedido(const Value: IBizPedidoProveedor);
begin
  FPedido := Value;
  if Assigned(FPedido) then
    DADataSource.DataTable := FPedido.DataTable
  else
    DADataSource.DataTable := NIL;

  frViewProveedorPedido.Proveedor := FPedido.Proveedor;
end;

procedure TfrViewPedidoProveedor.SetViewProveedorPedido(const Value: TfrViewDatosYSeleccionProveedor);
begin
  FViewProveedorPedido := Value;
end;

end.
