unit uViewReciboProveedor;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uViewBase, uBizRecibosProveedor, DB, uDADataTable, dxLayoutControl,
  cxControls, cxCurrencyEdit, cxDBEdit, cxMemo, cxMaskEdit, cxDropDownEdit,
  cxCalendar, cxContainer, cxEdit, cxTextEdit, dxLayoutLookAndFeels, ExtCtrls,
  uDAInterfaces, uCustomView, uViewDatosYSeleccionProveedor, uRecibosProveedorController, uViewTienda,
  uViewProveedorRecibo;

type
  IViewReciboProveedor = interface(IViewBase)
  ['{3EDDAF2C-2A99-43AE-8DBB-3AC300660D94}']
    function GetController : IRecibosProveedorController;
    procedure SetController (const Value : IRecibosProveedorController);
    property Controller : IRecibosProveedorController read GetController  write SetController;

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


  TfrViewReciboProveedor = class(TfrViewBase, IViewReciboProveedor)
    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;
    dxLayoutControl1Group8: TdxLayoutGroup;
    dxLayoutControl1Item16: TdxLayoutItem;
    eRemesa: TcxDBTextEdit;
    dxLayoutControl1Group2: TdxLayoutGroup;
    dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
    dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
    dxLayoutControl1Group7: TdxLayoutGroup;
    dxLayoutControl1Group9: TdxLayoutGroup;
    dxLayoutControl1Item19: TdxLayoutItem;
    edtFechaEmision: TcxDBDateEdit;
    dxLayoutControl1Item20: TdxLayoutItem;
    eReferenciaProveedor: TcxDBTextEdit;
    dxLayoutControl1Item21: TdxLayoutItem;
    rReferenciaFacturaProv: TcxDBTextEdit;
    dxLayoutControl1Item4: TdxLayoutItem;
    rRefReciboCompensado: TcxDBTextEdit;
    dxLayoutControlProveedorModif: TdxLayoutGroup;
    dxLayoutControl1Item17: TdxLayoutItem;
    frViewTienda1: TfrViewTienda;
    dxLayoutControl1Group3: TdxLayoutGroup;
    dxLayoutControl1Item18: TdxLayoutItem;
    eDescripcion: TcxDBTextEdit;
    dxLayoutControl1Item8: TdxLayoutItem;
    eNifCif: TcxDBTextEdit;
    dxLayoutControl1Item6: TdxLayoutItem;
    frViewProveedorRecibo1: TfrViewProveedorRecibo;
    dxLayoutControl1Group4: TdxLayoutGroup;
  private
    FRecibo : IBizRecibosProveedor;
    FController : IRecibosProveedorController;
    function GetRecibo: IBizRecibosProveedor;
    procedure SetRecibo(const Value: IBizRecibosProveedor);
    function GetController : IRecibosProveedorController;
    procedure SetController (const Value : IRecibosProveedorController);

  public
    property Recibo: IBizRecibosProveedor read GetRecibo write SetRecibo;
    property Controller : IRecibosProveedorController read GetController  write SetController;
  end;

var
  frViewReciboProveedor: TfrViewReciboProveedor;

implementation

{$R *.dfm}

{ TfrViewReciboProveedor }

function TfrViewReciboProveedor.GetController: IRecibosProveedorController;
begin
  Result := FController;
end;

function TfrViewReciboProveedor.GetRecibo: IBizRecibosProveedor;
begin
  Result := FRecibo;
end;

procedure TfrViewReciboProveedor.SetController(const Value: IRecibosProveedorController);
begin
  FController := Value;

  if Assigned(FController) then
     frViewProveedorRecibo1.Controller := FController.ProveedorController;
end;

procedure TfrViewReciboProveedor.SetRecibo(const Value: IBizRecibosProveedor);
begin
  FRecibo := Value;

  //Por defecto
  dxLayoutControlFactura.Visible := true;
  dxLayoutControlProveedorModif.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;
       dxLayoutControlProveedorModif.Visible := true;
       eDescripcion.Enabled := True;
    end;
  end
  else
    DADataSource.DataTable := NIL;
end;

end.
