unit uViewDetallesPedidoCliente;

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, TBX, TB2Dock, TB2Toolbar,
  uControllerDetallesArticulos, uBizPedidosCliente, uDAInterfaces,
  cxButtonEdit, cxDropDownEdit, Menus, cxGridCustomPopupMenu, cxGridPopupMenu,
  cxEditRepositoryItems;

type
  IViewDetallesPedidoCliente = interface(IViewDetallesArticulos)
  ['{0DDE8FC8-100E-4429-9A8B-49D6B24BB396}']
    function GetPedido: IBizPedidoCliente;
    procedure SetPedido(const Value: IBizPedidoCliente);
    property Pedido: IBizPedidoCliente read GetPedido write SetPedido;
  end;

  TfrViewDetallesPedidoCliente = class(TfrViewDetallesArticulos, IViewDetallesPedidoCliente)
    TBXItem18: TTBXItem;
    Artculosdelcatlogo1: TMenuItem;
    N2: TMenuItem;
    procedure CustomViewDestroy(Sender: TObject);
  protected
    FPedido: IBizPedidoCliente;
    function GetPedido: IBizPedidoCliente;
    procedure SetPedido(const Value: IBizPedidoCliente);

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

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

implementation
{$R *.dfm}

uses uDetallesPedidoClienteController;

{ TfrViewDetallesPedidoCliente }

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

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

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

function TfrViewDetallesPedidoCliente.GetPedido: IBizPedidoCliente;
begin
  Result := FPedido;
end;

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

procedure TfrViewDetallesPedidoCliente.SetPedido(const Value: IBizPedidoCliente);
begin
  FPedido := Value;
end;

end.
