unit uEditorSituacionPedidoProveedor;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,
  uIEditorSituacionPedidoProveedor, uPedidosProveedorController, uBizPedidosProveedor,
  JvExControls, JvComponent, cxControls, cxContainer, cxEdit,
  cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, ActnList;

type
  TfEditorSituacionPedidoProveedor = class(TForm, IEditorSituacionPedidoProveedor)
    pnlSeleccion: TPanel;
    bAceptar: TButton;
    bCancelar: TButton;
    lblTitle: TLabel;
    lblComments: TLabel;
    rbPendiente: TRadioButton;
    rbParcial: TRadioButton;
    ActionList1: TActionList;
    actPendiente: TAction;
    actParcial: TAction;
    actAceptar: TAction;
    Label4: TLabel;
    edtFechaPedidoProveedor: TEdit;
    Label3: TLabel;
    edtFechaParcial: TcxDateEdit;
    rbRecibido: TRadioButton;
    Label1: TLabel;
    eFechaRecibido: TcxDateEdit;
    actRecibido: TAction;
    procedure actPendienteExecute(Sender: TObject);
    procedure actParcialExecute(Sender: TObject);
    procedure actRecibidoExecute(Sender: TObject);
    procedure actRechazadoExecute(Sender: TObject);
    procedure actAceptarExecute(Sender: TObject);

  private
    FController: IPedidosProveedorController;
    FPedidoProveedor: IBizPedidoProveedor;
    function GetController : IPedidosProveedorController;
    procedure SetController (const Value : IPedidosProveedorController);

    function GetPedidoProveedor: IBizPedidoProveedor;
    procedure SetPedidoProveedor(const Value: IBizPedidoProveedor);
    procedure RefrescarEstado;
  public
    property PedidoProveedor: IBizPedidoProveedor read GetPedidoProveedor write SetPedidoProveedor;
    property Controller : IPedidosProveedorController read GetController
      write SetController;
  end;

implementation

{$R *.dfm}

uses
  uDateUtils, DateUtils;

{ TfEditorSituacionPedido }

procedure TfEditorSituacionPedidoProveedor.actParcialExecute(Sender: TObject);
begin
  RefrescarEstado;
end;

procedure TfEditorSituacionPedidoProveedor.actAceptarExecute(Sender: TObject);
begin
  if rbPendiente.Checked then
    FController.CambiarSituacion(FPedidoProveedor, SITUACION_PEDIDO_PENDIENTE);

  if rbParcial.Checked then
    FController.CambiarSituacion(FPedidoProveedor, SITUACION_PEDIDO_PARCIAL, edtFechaParcial.Date);

  if rbRecibido.Checked then
    FController.CambiarSituacion(FPedidoProveedor, SITUACION_PEDIDO_RECIBIDO, eFechaRecibido.Date);

  ModalResult := mrOk;
  Close;
end;

procedure TfEditorSituacionPedidoProveedor.actPendienteExecute(Sender: TObject);
begin
  RefrescarEstado;
end;

procedure TfEditorSituacionPedidoProveedor.actRechazadoExecute(Sender: TObject);
begin
  RefrescarEstado;
end;

procedure TfEditorSituacionPedidoProveedor.actRecibidoExecute(Sender: TObject);
begin
  RefrescarEstado;
end;

function TfEditorSituacionPedidoProveedor.GetController: IPedidosProveedorController;
begin
  Result := FController;
end;

function TfEditorSituacionPedidoProveedor.GetPedidoProveedor: IBizPedidoProveedor;
begin
  Result := FPedidoProveedor;
end;

procedure TfEditorSituacionPedidoProveedor.SetController(
  const Value: IPedidosProveedorController);
begin
  FController := Value;
end;

procedure TfEditorSituacionPedidoProveedor.SetPedidoProveedor(const Value: IBizPedidoProveedor);
begin
  FPedidoProveedor := Value;
  if not FPedidoProveedor.DataTable.Active then
    FPedidoProveedor.DataTable.Open;

  edtFechaPedidoProveedor.Text := DateToStr(FPedidoProveedor.FECHA_PEDIDO);

  rbPendiente.Checked := (FPedidoProveedor.Situacion = SITUACION_PEDIDO_PENDIENTE);
  rbParcial.Checked := (FPedidoProveedor.Situacion = SITUACION_PEDIDO_PARCIAL);
  rbRecibido.Checked := (FPedidoProveedor.Situacion = SITUACION_PEDIDO_RECIBIDO);

  if rbParcial.Checked then
  begin
    edtFechaParcial.Date := FPedidoProveedor.FECHA_ENTREGA;
    eFechaRecibido.Clear;
  end
  else if rbRecibido.Checked then
  begin
    eFechaRecibido.Date := FPedidoProveedor.FECHA_ENTREGA;
    edtFechaParcial.Clear;
  end
  else
  begin
    edtFechaParcial.Clear;
    eFechaRecibido.Clear;
  end;
end;

procedure TfEditorSituacionPedidoProveedor.RefrescarEstado;
begin
  //
end;

end.
