{
===============================================================================
  Copyright (©) 2006. Rodax Software.
===============================================================================
  Los contenidos de este fichero son propiedad de Rodax Software titular del
  copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
  en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
  acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
  bajo el que se suministra.
  -----------------------------------------------------------------------------
  Web:  www.rodax-software.com
===============================================================================
  Fecha primera versión: 22-05-2006
  Versión actual: 1.0.0
  Fecha versión actual: 22-05-2006
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
===============================================================================
}

unit uViewPresupuestoContacto;

interface

uses
  cxGraphics, DB, uDADataTable, dxLayoutControl, cxLookupEdit, cxDBLookupEdit,
  cxDBLookupComboBox, cxMemo, cxDBEdit, cxSpinEdit, cxCalc, cxCheckBox,
  cxDropDownEdit, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxCalendar,
  Classes, Controls, cxControls, uViewBase, uBizObra, ComCtrls, ToolWin,
  ImgList, PngImageList, ActnList;


type
  IViewPresupuestoContacto = interface(IViewBase)
  ['{B1E1FA89-25F5-48FF-81ED-A7301D3DCCA5}']
    function GetPresupuestoContacto: IBizPresupuestosObra;
    procedure SetPresupuestoContacto(const Value: IBizPresupuestosObra);
    property PresupuestoContacto: IBizPresupuestosObra read GetPresupuestoContacto write SetPresupuestoContacto;
  end;

  TfrViewPresupuestoContacto = class(TfrViewBase, IViewPresupuestoContacto)
    dxLayoutControl1Group_Root: TdxLayoutGroup;
    dxLayoutControl1: TdxLayoutControl;
    dxLayoutControl1Group1: TdxLayoutGroup;
    dxLayoutControl1Item1: TdxLayoutItem;
    edtFecIni: TcxDBDateEdit;
    DADataSource: TDADataSource;
    cbTipoPresupuesto: TcxDBComboBox;
    dxLayoutControl1Item3: TdxLayoutItem;
    edtAceptado: TcxDBCheckBox;
    dxLayoutControl1Item2: TdxLayoutItem;
    edtPrecioIni: TcxDBCalcEdit;
    edtPrecioFin: TcxDBCalcEdit;
    edtTiempo: TcxDBSpinEdit;
    edtAplicaRetencion: TcxDBCheckBox;
    dxLayoutControl1Item5: TdxLayoutItem;
    dxLayoutControl1Item7: TdxLayoutItem;
    dxLayoutControl1Group3: TdxLayoutGroup;
    dxLayoutControl1Group4: TdxLayoutGroup;
    dxLayoutControl1Item8: TdxLayoutItem;
    dxLayoutControl1Item9: TdxLayoutItem;
    dxLayoutControl1Group5: TdxLayoutGroup;
    DADataSource2: TDADataSource;
    edtDescripcion: TcxDBMemo;
    dxLayoutControl1Item10: TdxLayoutItem;
    edtRetencion: TcxDBSpinEdit;
    dxLayoutControl1Item11: TdxLayoutItem;
    edtContacto: TcxDBLookupComboBox;
    dxLayoutControl1Item12: TdxLayoutItem;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    dxLayoutControl1Item6: TdxLayoutItem;
    dxLayoutControl1Group7: TdxLayoutGroup;
    PngImageList: TPngImageList;
    ActionList1: TActionList;
    actAnadirContacto: TAction;
    dxLayoutControl1Item13: TdxLayoutItem;
    edtImporteRet: TcxDBTextEdit;
    dxLayoutControl1Group8: TdxLayoutGroup;
    dxLayoutControl1Group6: TdxLayoutGroup;
    dxLayoutControl1Group2: TdxLayoutGroup;
    procedure CustomViewCreate(Sender: TObject);
    procedure edtRetencionPropertiesChange(Sender: TObject);
    procedure edtContactoPropertiesChange(Sender: TObject);
    procedure actAnadirContactoExecute(Sender: TObject);
  private
    FPresupuestoContacto: IBizPresupuestosObra;
    function GetPresupuestoContacto: IBizPresupuestosObra;
    procedure SetPresupuestoContacto(const Value: IBizPresupuestosObra);
  public
    property PresupuestoContacto: IBizPresupuestosObra read GetPresupuestoContacto write SetPresupuestoContacto;
  end;

var
  frViewPresupuestoContacto: TfrViewPresupuestoContacto;

implementation
{$R *.dfm}

uses uDataModuleContactos, uBizContacto;

procedure TfrViewPresupuestoContacto.CustomViewCreate(Sender: TObject);
begin
  inherited;
  cbTipoPresupuesto.Properties.Items.Add(TIPO_OBRA);
  cbTipoPresupuesto.Properties.Items.Add(TIPO_DECORACION);
end;

function TfrViewPresupuestoContacto.GetPresupuestoContacto: IBizPresupuestosObra;
begin
  Result := FPresupuestoContacto;
end;

procedure TfrViewPresupuestoContacto.SetPresupuestoContacto(const Value: IBizPresupuestosObra);
begin
  FPresupuestoContacto := Value;

  if Assigned(FPresupuestoContacto) then
  begin
    DADataSource.DataTable := FPresupuestoContacto.DataTable;
    DADataSource2.DataTable := FPresupuestoContacto.Obra.Contactos.DataTable;

    //En caso de no tener contacto asignado se podrá modificar
    if FPresupuestoCONTACTO.datatable.fieldbyname(edtContacto.DataBinding.DataField).isnull then
    begin
       edtContacto.Enabled := True;
       edtContacto.Properties.OnChange := edtContactoPropertiesChange;
       edtContacto.DataBinding.Field.AsVariant := DADataSource2.DataTable.FieldByName(edtContacto.DataBinding.DataField).AsVariant;
       actAnadirContacto.Visible := True;
    end
    else
    begin
       edtContacto.Enabled := False;
       edtContacto.Properties.OnChange := Nil;
       actAnadirContacto.Visible := False;
    end;
  end
  else
  begin
    DADataSource.DataTable := Nil;
    DADataSource2.DataTable := Nil;
  end;
end;

procedure TfrViewPresupuestoContacto.edtRetencionPropertiesChange(Sender: TObject);
begin
  inherited;
  if edtAplicaRetencion.Checked then
  begin
    edtRetencion.Enabled := True;
    edtTiempo.Enabled := True;
  end
  else
  begin
//    edtRetencion.DataBinding.Field.AsInteger := 0;
    edtRetencion.Enabled := False;
    edtTiempo.Enabled := False;
  end;
end;

procedure TfrViewPresupuestoContacto.edtContactoPropertiesChange(Sender: TObject);
begin
  inherited;
  if PresupuestoContacto.DataTable.State in dsEditModes then
     PresupuestoContacto.NOMBRE := edtContacto.Text;
end;

procedure TfrViewPresupuestoContacto.actAnadirContactoExecute(Sender: TObject);
begin
  PresupuestoContacto.AdjuntarContacto;
end;

end.
