unit uViewDocumentosPedidoProveedor;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uViewDocumentos, ActnList,
  TB2Item, TBX, TB2Dock, TB2Toolbar, cxControls, cxContainer, 
  uBizPedidosProveedor, uPedidosProveedorController, ImgList,
  PngImageList, ComCtrls, Menus;

type
  IViewDocumentosPedidoProveedor = interface
  ['{83AFBD29-750D-4564-ADAE-468BDBE4C424}']
    function GetController : IPedidosProveedorController;
    procedure SetController (const Value : IPedidosProveedorController);
    property Controller : IPedidosProveedorController read GetController write SetController;

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

  TfrViewDocumentosPedidoProveedor = class(TfrViewDocumentos, IViewDocumentosPedidoProveedor)
  private
    FController : IPedidosProveedorController;
    FPedido: IBizPedidoProveedor;
    function GetController : IPedidosProveedorController;
    procedure SetController (const Value : IPedidosProveedorController);
    function GetPedido: IBizPedidoProveedor;
    procedure SetPedido(const Value: IBizPedidoProveedor);

  protected
    procedure Sincronizar; override;
    function RecuperarFicheroServidor(const NombreFichero: String; const DirectorioDestino: String): Boolean; override;

  public
    property Controller : IPedidosProveedorController read GetController write SetController;
    property Pedido: IBizPedidoProveedor read GetPedido write SetPedido;

  end;

var
  frViewDocumentosPedidoProveedor: TfrViewDocumentosPedidoProveedor;

implementation
{$R *.dfm}

{ TfrViewDocumentosContrato }

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

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

function TfrViewDocumentosPedidoProveedor.RecuperarFicheroServidor(const NombreFichero: String; const DirectorioDestino: String): Boolean;
begin
  inherited;
  Result := Controller.GestorDocumentosController.DescargarFichero(Pedido.ID, NombreFichero, DirectorioDestino);
end;

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

procedure TfrViewDocumentosPedidoProveedor.SetPedido(const Value: IBizPedidoProveedor);
begin
  FPedido := Value;
  //Inicializamos la lista de documentos local con los ficheros del servidor
  try
    ShowHourglassCursor;
    if Assigned(FPedido) and Assigned(FController) then
       ListaFicheros := Controller.GestorDocumentosController.DarListaDocumentos(Pedido.ID);
    RefrescarVisualizador;
  finally
    HideHourglassCursor;
  end;
end;

procedure TfrViewDocumentosPedidoProveedor.Sincronizar;
begin
  inherited;

//De momento el action actSincronizar con el servidor estará oculto y se activa, hay que tener en cuenta lo comentado
{
  if Contrato.EsNuevo then
  begin
    if (ShowConfirmMessage('Se han producido cambios', 'Se han producido cambios y no se puede sincronizar hasta que no se guarden.' + #10#13 +
      '¿Desea guardarlos ahora?') = IDYES) then
      actGuardar.Execute
    else
      ShowInfoMessage('Recuerde guardar los cambios si quiere previsualizar o imprimir.');
  end;
}
  if Assigned(FPedido) then
  begin
    try
      ShowHourglassCursor;
      Controller.GestorDocumentosController.SincronizarDocumentos(Pedido.ID, ListaFicheros, Directorio);
    finally
      HideHourglassCursor;
    end;
  end;
end;

end.
