unit uViewReciboCliente;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uViewBase, uBizRecibosCliente, DB, uDADataTable, dxLayoutControl,
  cxControls, cxCurrencyEdit, cxDBEdit, cxMemo, cxMaskEdit, cxDropDownEdit,
  cxCalendar, cxContainer, cxEdit, cxTextEdit, dxLayoutLookAndFeels, ExtCtrls,
  uDAInterfaces, uCustomView, uViewDatosYSeleccionCliente, uRecibosClienteController,
  uViewTienda, uViewClienteRecibo;

type
  IViewReciboCliente = interface(IViewBase)
  ['{5DDA0CF0-1A57-492E-B7AE-614E6A7236B5}']
    function GetController : IRecibosClienteController;
    procedure SetController (const Value : IRecibosClienteController);
    property Controller : IRecibosClienteController read GetController  write SetController;

    function GetRecibo: IBizRecibosCliente;
    procedure SetRecibo(const Value: IBizRecibosCliente);
    property Recibo: IBizRecibosCliente read GetRecibo write SetRecibo;
  end;


  TfrViewReciboCliente = class(TfrViewBase, IViewReciboCliente)
    DADataSource: TDADataSource;
    dxLayoutControl1Group_Root: TdxLayoutGroup;
    dxLayoutControl1: TdxLayoutControl;
    dxLayoutControl1Item1: TdxLayoutItem;
    eReferencia: TcxDBTextEdit;
    dxLayoutControl1Item2: TdxLayoutItem;
    eSituacion: TcxDBTextEdit;
    dxLayoutControl1Item3: TdxLayoutItem;
    edtFechaVencimiento: TcxDBDateEdit;
    dxLayoutControl1Item5: TdxLayoutItem;
    memObservaciones: TcxDBMemo;
    dxLayoutControl1Group1: TdxLayoutGroup;
    dxLayoutControl1Item7: TdxLayoutItem;
    eFechaEmision: TcxDBTextEdit;
    dxLayoutControl1Item9: TdxLayoutItem;
    eImporteTotal: TcxDBCurrencyEdit;
    dxLayoutControlFactura: TdxLayoutGroup;
    dxLayoutControl1Item10: TdxLayoutItem;
    eNombreCliente: TcxDBTextEdit;
    dxLayoutControl1Item11: TdxLayoutItem;
    eNifCif: TcxDBTextEdit;
    dxLayoutControl1Group8: TdxLayoutGroup;
    dxLayoutControl1Item16: TdxLayoutItem;
    eRemesa: TcxDBTextEdit;
    dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
    dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
    dxLayoutControl1Group7: TdxLayoutGroup;
    dxLayoutControl1Item19: TdxLayoutItem;
    edtFechaEmision: TcxDBDateEdit;
    dxLayoutControl1Item4: TdxLayoutItem;
    rRefReciboCompensado: TcxDBTextEdit;
    dxLayoutControl1Group2: TdxLayoutGroup;
    dxLayoutControl1Group3: TdxLayoutGroup;
    dxLayoutControlClienteModif: TdxLayoutGroup;
    dxLayoutControl1Item17: TdxLayoutItem;
    eDescripcion: TcxDBTextEdit;
    dxLayoutControl1Item18: TdxLayoutItem;
    frViewTienda1: TfrViewTienda;
    dxLayoutControl1Group5: TdxLayoutGroup;
    dxLayoutControl1Item6: TdxLayoutItem;
    frViewClienteRecibo1: TfrViewClienteRecibo;
    dxLayoutControl1Group4: TdxLayoutGroup;
  private
    FRecibo : IBizRecibosCliente;
    FController : IRecibosClienteController;
    function GetRecibo: IBizRecibosCliente;
    procedure SetRecibo(const Value: IBizRecibosCliente);
    function GetController : IRecibosClienteController;
    procedure SetController (const Value : IRecibosClienteController);

  public
    property Recibo: IBizRecibosCliente read GetRecibo write SetRecibo;
    property Controller : IRecibosClienteController read GetController  write SetController;
  end;

var
  frViewReciboCliente: TfrViewReciboCliente;

implementation

{$R *.dfm}

{ TfrViewReciboCliente }

function TfrViewReciboCliente.GetController: IRecibosClienteController;
begin
  Result := FController;
end;

function TfrViewReciboCliente.GetRecibo: IBizRecibosCliente;
begin
  Result := FRecibo;
end;

procedure TfrViewReciboCliente.SetController(const Value: IRecibosClienteController);
begin
  FController := Value;

  if Assigned(FController) then
     frViewClienteRecibo1.Controller := FController.ClienteController;
end;

procedure TfrViewReciboCliente.SetRecibo(const Value: IBizRecibosCliente);
begin
  FRecibo := Value;

  //Por defecto
  dxLayoutControlFactura.Visible := true;
  dxLayoutControlClienteModif.Visible := false;
  eDescripcion.Enabled := False;

  if Assigned(FRecibo) then
  begin
    DADataSource.DataTable := FRecibo.DataTable;
    frViewTienda1.DataItem := FRecibo.DataTable;

    if FRecibo.SinFactura then
    begin
       dxLayoutControlFactura.Visible := false;
       dxLayoutControlClienteModif.Visible := true;
       eDescripcion.Enabled := True;
    end;
  end
  else
    DADataSource.DataTable := NIL;
end;

end.
