unit uEditorDireccionEntregaPedidoProveedor;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
  Buttons, ExtCtrls, Mask, DBCtrls, DB, uDADataTable,
  cxControls, cxContainer, cxEdit, cxTextEdit, cxDBEdit,
  uIEditorDireccionEntregaPedidoProveedor, uBizPedidosProveedor;

type
  TfEditorDireccionEntregaPedidoProveedor = class(TForm, IEditorDireccionEntregaPedidoProveedor)
    OKBtn: TButton;
    CancelBtn: TButton;
    Bevel1: TBevel;
    eDireccion: TDBEdit;
    ePoblacion: TDBEdit;
    eProvincia: TDBEdit;
    eCodigoPostal: TDBEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    dsDireccion: TDADataSource;
    Label6: TLabel;
    ePersonaContacto: TDBEdit;
    Label7: TLabel;
    eTelefono: TDBEdit;

    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private
    pDireccion: String;
    pPoblacion: String;
    pProvincia: String;
    pCodigoPostal: String;
    pPersonaContacto: String;
    pTelefono: String;

    FPedido : IBizPedidoProveedor;
    function GetPedido: IBizPedidoProveedor;
    procedure SetPedido(const Value: IBizPedidoProveedor);
    property Pedido: IBizPedidoProveedor read GetPedido write SetPedido;
  end;

implementation
{$R *.dfm}


{ TfEditorDireccionEntrega }

procedure TfEditorDireccionEntregaPedidoProveedor.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  //En el caso de cancelar se recuperan los valores iniciales
  if (Self.ModalResult <> mrOk) and (dsDireccion.DataTable.State in dsEditModes) then
  begin
    eDireccion.Field.Value := pDireccion;
    ePoblacion.Field.Value := pPoblacion;
    eProvincia.Field.Value := pProvincia;
    eCodigoPostal.Field.Value := pCodigoPostal;
    ePersonaContacto.Field.Value := pPersonaContacto;
    eTelefono.Field.Value := pTelefono;
  end;
end;

procedure TfEditorDireccionEntregaPedidoProveedor.FormShow(Sender: TObject);
begin
  //Guardamos los valores iniciales por si al final el usuario cancela
  pDireccion := eDireccion.Text;
  pPoblacion := ePoblacion.Text;
  pProvincia := eProvincia.Text;
  pCodigoPostal := eCodigoPostal.Text;
  pPersonaContacto := ePersonaContacto.Text;
  pTelefono := eTelefono.Text;
end;

function TfEditorDireccionEntregaPedidoProveedor.GetPedido: IBizPedidoProveedor;
begin
  Result := FPedido;
end;

procedure TfEditorDireccionEntregaPedidoProveedor.SetPedido(
  const Value: IBizPedidoProveedor);
begin
  FPedido := Value;
  if Assigned(FPedido) then
    dsDireccion.DataTable := FPedido.DataTable
  else
    dsDireccion.DataTable := NIL;
end;

end.
