unit uEditorFacturasCliente;

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,
  uBizFacturasCliente, uIEditorFacturasCliente, uFacturasClienteController,
  uCustomView, uViewBase, uViewBarraSeleccion, uViewGridBase,
  uViewFacturasCliente, JvExComCtrls, JvStatusBar;

type

  TfEditorFacturasCliente = class(TfEditorGridBase, IEditorFacturasCliente)
    frViewFacturasCliente1: TfrViewFacturasCliente;
    actCambiarSituacion: TAction;
    Cambiarlasituacin1: TMenuItem;
    procedure FormShow(Sender: TObject);
    procedure actCambiarSituacionExecute(Sender: TObject);
  private
    FFacturas: IBizFacturaCliente;
    FController : IFacturasClienteController;
  protected
    function GetFacturas: IBizFacturaCliente;
    procedure SetFacturas(const Value: IBizFacturaCliente);

    function GetController : IFacturasClienteController; virtual;
    procedure SetController (const Value : IFacturasClienteController); virtual;
    procedure NuevoInterno; override;
    procedure EliminarInterno; override;
    procedure ModificarInterno; override;
    procedure DuplicarInterno; override;
  public
    procedure PonerTitulos(const ATitulo: string = ''); override;
    property Facturas: IBizFacturaCliente read GetFacturas write SetFacturas;
    property Controller : IFacturasClienteController read GetController write SetController;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;


implementation

uses
  uDataModuleFacturasCliente, uDataModuleUsuarios;

{$R *.dfm}

{
*************************** TfEditorFacturasCliente ***************************
}
constructor TfEditorFacturasCliente.Create(AOwner: TComponent);
begin
  inherited;
  ViewGrid := frViewFacturasCliente1; //  CreateView(TfrViewFacturasCliente) as IViewFacturasCliente;
end;

destructor TfEditorFacturasCliente.Destroy;
begin
  FFacturas := NIL;
  inherited;
end;

procedure TfEditorFacturasCliente.DuplicarInterno;
var
  AFactura : IBizFacturaCliente;
begin
  inherited;
  AFactura := FController.Duplicar(FFacturas);
  try
    FController.Ver(AFactura);
  finally
    actRefrescar.Execute;
  end;
end;

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

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

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

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

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

procedure TfEditorFacturasCliente.actCambiarSituacionExecute(Sender: TObject);
begin
  inherited;
  FController.CambiarSituacion(FFacturas);
end;

function TfEditorFacturasCliente.GetController: IFacturasClienteController;
begin
  Result := FController;
end;

function TfEditorFacturasCliente.GetFacturas: IBizFacturaCliente;
begin
  Result := FFacturas;
end;

procedure TfEditorFacturasCliente.ModificarInterno;
begin
  inherited;
  FController.Ver(Facturas);
end;

procedure TfEditorFacturasCliente.NuevoInterno;
begin
  inherited;
  FController.Anadir(Facturas);
  FController.Ver(Facturas);
end;

procedure TfEditorFacturasCliente.PonerTitulos(const ATitulo: string);
var
  FTitulo : String;
begin
  FTitulo := 'Lista de facturas de cliente - ' + dmUsuarios.EmpresaActual.NOMBRE;
  inherited PonerTitulos(FTitulo);
end;

procedure TfEditorFacturasCliente.SetController(const Value: IFacturasClienteController);
begin
  FController := Value;
end;

procedure TfEditorFacturasCliente.SetFacturas(const Value: IBizFacturaCliente);
begin
  FFacturas := Value;
  dsDataTable.DataTable := FFacturas.DataTable;
  if Assigned(ViewGrid) then
    (ViewGrid as IViewFacturasCliente).Facturas := Facturas;
end;

end.
