unit uEditorPedidosProveedor;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, DB, uDADataTable, JvAppStorage,
  JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList,
  PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems,
  TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls,
  JvNavigationPane, uViewGrid, pngimage, JvComponentBase,
  uEditorGridBase,
  uBizPedidosProveedor, uIEditorPedidosProveedor, uPedidosProveedorController,
  uCustomView, uViewBase, uViewBarraSeleccion, uViewGridBase,
  uViewPedidosProveedor, JvExComCtrls, JvStatusBar;

type
  TfEditorPedidosProveedor = class(TfEditorGridBase, IEditorPedidosProveedor)
    frViewPedidosProveedor1: TfrViewPedidosProveedor;
    procedure FormShow(Sender: TObject);

  protected
    FPedidos: IBizPedidoProveedor;
    FController : IPedidosProveedorController;

    function GetPedidos: IBizPedidoProveedor;
    procedure SetPedidos(const Value: IBizPedidoProveedor);

    function GetController : IPedidosProveedorController; virtual;
    procedure SetController (const Value : IPedidosProveedorController); virtual;
    procedure NuevoInterno; override;
    procedure ModificarInterno; override;
    procedure EliminarInterno; override;
    procedure DuplicarInterno; override;
  public
    procedure PonerTitulos(const ATitulo: string = ''); override;
    property Pedidos: IBizPedidoProveedor read GetPedidos write SetPedidos;
    property Controller : IPedidosProveedorController read GetController write SetController;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

implementation

uses
  uDataModulePedidosProveedor, uDataModuleUsuarios;

{$R *.dfm}

{
*************************** TfEditorPedidosProveedor ***************************
}
constructor TfEditorPedidosProveedor.Create(AOwner: TComponent);
begin
  inherited;
  ViewGrid := frViewPedidosProveedor1; //CreateView(TfrViewPedidosProveedor) as IViewPedidosProveedor;
end;

destructor TfEditorPedidosProveedor.Destroy;
begin
  FPedidos := NIL;
  FController := NIL;  
  inherited;
end;

procedure TfEditorPedidosProveedor.DuplicarInterno;
var
  APedido : IBizPedidoProveedor;
begin
  inherited;
  APedido := FController.Duplicar(Pedidos);
  try
    FController.Ver(APedido);
  finally
    actRefrescar.Execute;
  end;
end;

procedure TfEditorPedidosProveedor.EliminarInterno;
begin
  if (Application.MessageBox('¿Desea borrar esta factura de cliente?', 'Atención', MB_YESNO) = IDYES) then
  begin
    FController.Eliminar(Pedidos);
    inherited;
  end;
end;

procedure TfEditorPedidosProveedor.FormShow(Sender: TObject);
begin
  inherited;

  if not Assigned(ViewGrid) then
    raise Exception.Create('No hay ninguna vista asignada');

  if not Assigned(Pedidos) then
    raise Exception.Create('No hay ningún presupuesto asignado');

  Pedidos.DataTable.Active := True;
  ViewGrid.GotoFirst;
end;

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

function TfEditorPedidosProveedor.GetPedidos: IBizPedidoProveedor;
begin
  Result := FPedidos;
end;

procedure TfEditorPedidosProveedor.ModificarInterno;
begin
  inherited;
  FController.Ver(Pedidos);
end;

procedure TfEditorPedidosProveedor.NuevoInterno;
begin
  inherited;
  FController.Anadir(Pedidos);
  FController.Ver(Pedidos);
end;

procedure TfEditorPedidosProveedor.PonerTitulos(const ATitulo: string);
var
  FTitulo : String;
begin
  FTitulo := 'Lista de pedidos a proveedor - ' + dmUsuarios.EmpresaActual.NOMBRE;
  inherited PonerTitulos(FTitulo);
end;

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

procedure TfEditorPedidosProveedor.SetPedidos(const Value: IBizPedidoProveedor);
begin
  FPedidos := Value;
  dsDataTable.DataTable := FPedidos.DataTable;
  if Assigned(ViewGrid) then
    (ViewGrid as IViewPedidosProveedor).Pedidos := Pedidos;
end;

end.
