unit uViewDetallesPedidoProveedor;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uViewDetallesArticulos, cxStyles, cxCustomData, cxGraphics, cxFilter,
  cxData, cxDataStorage, cxEdit, DB, cxDBData, ImgList, PngImageList,
  uDADataTable, ActnList, ComCtrls, ToolWin, cxGridLevel, cxClasses, cxControls,
  cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
  cxGrid, cxImageComboBox, cxTextEdit, cxMaskEdit, cxCheckBox, cxCurrencyEdit,
  Grids, DBGrids, StdCtrls, ExtCtrls, cxRichEdit, ExtActns, StdActns,
  JvExStdCtrls, JvCombobox, JvColorCombo, TB2Item, SpTBXItem, TB2Dock, TB2Toolbar,
  uControllerDetallesArticulos, uBizPedidosProveedor, uDAInterfaces,
  cxButtonEdit, cxDropDownEdit, Menus, cxGridCustomPopupMenu, cxGridPopupMenu,
  cxEditRepositoryItems;

type
  IViewDetallesPedidoProveedor = interface(IViewDetallesArticulos)
  ['{4C82AADF-7FE2-47BC-88F1-2F2DA6DF0B57}']
    function GetPedido: IBizPedidoProveedor;
    procedure SetPedido(const Value: IBizPedidoProveedor);
    property Pedido: IBizPedidoProveedor read GetPedido write SetPedido;
  end;

  TfrViewDetallesPedidoProveedor = class(TfrViewDetallesArticulos, IViewDetallesPedidoProveedor)
    TBXItem18: TSpTBXItem;
    Artculosdelcatlogo1: TMenuItem;
    N2: TMenuItem;
    procedure CustomViewDestroy(Sender: TObject);
  protected
    FPedido: IBizPedidoProveedor;
    function GetPedido: IBizPedidoProveedor;
    procedure SetPedido(const Value: IBizPedidoProveedor);

    procedure AnadirArticulosInterno; override;
    procedure RellenarArticulosInterno; override;
    function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;

  public
    property Pedido: IBizPedidoProveedor read GetPedido write SetPedido;
  end;

implementation
{$R *.dfm}

uses uDetallesPedidoProveedorController;

{ TfrViewDetallesPedidoProveedor }

procedure TfrViewDetallesPedidoProveedor.AnadirArticulosInterno;
begin
//No sé porque está en este módulo hecho así, supongo que por seguridad.
  if Assigned(Pedido) and Assigned(Pedido.Proveedor)
  then (Controller as IDetallesPedidoProveedorController).AnadirArticulos(Detalles, Pedido.Proveedor)
  else (Controller as IDetallesPedidoProveedorController).AnadirArticulos(Detalles);
end;

procedure TfrViewDetallesPedidoProveedor.CustomViewDestroy(Sender: TObject);
begin
  FPedido := Nil;
  inherited;
end;

function TfrViewDetallesPedidoProveedor.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
begin
  Result := (Controller as IDetallesPedidoProveedorController).AnadirArticulo(Detalles, pReferencia, TipoReferencia);
end;

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

procedure TfrViewDetallesPedidoProveedor.RellenarArticulosInterno;
begin
//No sé porque está en este módulo hecho así, supongo que por seguridad.
  if Assigned(Pedido) and Assigned(Pedido.Proveedor)
  then (Controller as IDetallesPedidoProveedorController).AnadirArticulos(Detalles, Pedido.Proveedor, False)
  else (Controller as IDetallesPedidoProveedorController).AnadirArticulos(Detalles, False);
end;

procedure TfrViewDetallesPedidoProveedor.SetPedido(const Value: IBizPedidoProveedor);
begin
  FPedido := Value;
end;

end.
