unit ElegirDireccionCliente;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxControls, cxContainer, 
  StdCtrls, ExtCtrls, RdxPaneles, cxListBox, RdxBotones,
  cxMemo, RdxRadioButton, TablaClientes, ActnList;

type
  TDireccionElegida = (dePrincipal, deSucursal);

  TfrElegirDireccionCliente = class(TForm)
    RdxPanel1: TRdxPanel;
    eTitulo: TLabel;
    bGuardar: TRdxBoton;
    DireccionSucursales: TcxListBox;
    rbDireccionPrincipal: TRdxRadioButton;
    rbDireccionSucursales: TRdxRadioButton;
    DireccionPrincipal: TLabel;
    ActionList1: TActionList;
    actDireccionPrincipal: TAction;
    Label2: TLabel;
    actDireccionSucursales: TAction;
    procedure actDireccionPrincipalExecute(Sender: TObject);
    procedure actDireccionSucursalesExecute(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure actDireccionPrincipalUpdate(Sender: TObject);
    procedure actDireccionSucursalesUpdate(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    FCliente: TDatosCliente;
    FDireccionElegida: TDireccionElegida;
    procedure SetCliente(const Value: TDatosCliente);
    function GetNumSucursal: Integer;
  public
    property Cliente : TDatosCliente read FCliente write SetCliente;
    property DireccionSeleccionada : TDireccionElegida read FDireccionElegida default dePrincipal;
    Property NumSucursal : Integer read GetNumSucursal default 0;
  published

  end;

var
  frElegirDireccionCliente: TfrElegirDireccionCliente;

implementation

{$R *.dfm}

Uses
  Configuracion, Entidades;

{ TfrElegirDireccionCliente }

procedure TfrElegirDireccionCliente.SetCliente(const Value: TDatosCliente);
var
  Contador : Integer;
  Texto : String;
begin
  FCliente := TDatosCliente.Create(Value.Codigo);
  with FCliente do
  begin
    Texto := Format('%s %s', [NIFCIF, Nombre]);
    Texto := Texto + #10 + #13;
    Texto := Texto + Format('%s %s %s', [Calle, Numero, Piso]);
    Texto := Texto + #10 + #13;
    Texto := Texto + Format('%s %s %s', [Poblacion, CodigoPostal, Provincia]);
    DireccionPrincipal.Caption := Texto;
  end;

  with DireccionSucursales.Items do
  begin
    for Contador := 0 to FCliente.Sucursales.Count - 1 do
      with FCliente.Sucursales.Sucursal[Contador] do
      begin
        Texto := Format('%s %s, ', [Nombre, NIFCIF]);
        Texto := Texto + Format('%s %s %s, ', [Calle, Numero, Piso]);
        Texto := Texto + Format(' %s %s %s ', [Poblacion, CodigoPostal, Provincia]);
        Add(Texto);
      end;
  end;
end;

procedure TfrElegirDireccionCliente.actDireccionPrincipalExecute(
  Sender: TObject);
begin
  FDireccionElegida := dePrincipal;
end;

procedure TfrElegirDireccionCliente.actDireccionSucursalesExecute(
  Sender: TObject);
begin
  FDireccionElegida := deSucursal;
  if (DireccionSucursales.ItemIndex < 0) then
    DireccionSucursales.ItemIndex := 0;
end;

procedure TfrElegirDireccionCliente.FormDestroy(Sender: TObject);
begin
  if Assigned(FCliente) then
    FCliente.Free;
  FCliente := NIL;
end;

procedure TfrElegirDireccionCliente.FormCreate(Sender: TObject);
begin
  ConfigurarFrame(Self, entPresupuestoCliente);
  FCliente := NIL;
end;

procedure TfrElegirDireccionCliente.actDireccionPrincipalUpdate(
  Sender: TObject);
begin
  DireccionPrincipal.Enabled := (Sender as TAction).Checked;
end;

procedure TfrElegirDireccionCliente.actDireccionSucursalesUpdate(
  Sender: TObject);
begin
  DireccionSucursales.Enabled := (Sender as TAction).Checked;
end;

function TfrElegirDireccionCliente.GetNumSucursal: Integer;
begin
  if not rbDireccionSucursales.Enabled then
    Result := -1
  else begin
    if (DireccionSucursales.ItemIndex < 0) then
      Result := 0
    else
      Result := DireccionSucursales.ItemIndex;
  end;
end;

procedure TfrElegirDireccionCliente.FormShow(Sender: TObject);
begin
  eTitulo.Caption := eTitulo.Caption + ' de ' + FCliente.Nombre; 
end;

end.
