unit uEditorInformeFacturasProveedorReport;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uEditorPreview, frxExportText, frxExportRTF, frxExportMail,
  frxExportXLS, frxExportImage, frxExportPDF, frxClass, frxDCtrl, frxGradient,
  frxChBox, frxCross, frxRich, frxOLE, frxBarcode, JvAppStorage,
  JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList,
  StdActns, ActnList, ComCtrls, JvExComCtrls, JvStatusBar, TB2ExtItems,
   SpTBXItem, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls,
  JvExControls, JvNavigationPane, uCustomView,
  uViewBase, uViewPeriodoFechas, 
  uViewFiltroProveedores, dxLayoutControl, cxControls, uViewFiltroImportes,
  FactuGES_Intf, SpTBXDkPanels, uEditorInformeBase,
  uIEditorInformeBase, uViewParametrosInforme, uIEditorInformeFacturasProveedorReport;

type
  TfEditorInformeFacturasProveedorReport = class(TfEditorInformeBase, IEditorInformeFacturasProveedorReport)
    TBXItem58: TSpTBXItem;
    frViewPeriodoFechas1: TfrViewPeriodoFechas;
    frViewFiltroImportes1: TfrViewFiltroImportes;
    frViewFiltroProveedores1: TfrViewFiltroProveedores;
    procedure actRefrescarExecute(Sender: TObject);
  private
    FListaIDProveedores: TIntegerArray;
    function GetFechaFin: Variant;
    function GetFechaInicio: Variant;
    function GetFechaVenFin: Variant;
    function GetFechaVenInicio: Variant;
    function GetListaIDProveedores: TIntegerArray;
    function GetImporteMinimo: Currency;
    function GetDesglosadoProveedor: Boolean;

    procedure RefrescarInforme;

  public
    property FechaInicio: Variant read GetFechaInicio;
    property FechaFin: Variant read GetFechaFin;
    property FechaVenInicio: Variant read GetFechaVenInicio;
    property FechaVenFin: Variant read GetFechaVenFin;
    property ListaIDProveedores: TIntegerArray read GetListaIDProveedores;
    property DesglosadoProveedor: Boolean read GetDesglosadoProveedor;
    property ImporteMinimo: Currency read GetImporteMinimo;

    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;


implementation

{$R *.dfm}

uses uROTypes, DateUtils, uGestorInformesController, uFactuGES_App;

{ TfEditorGestorInformesReport }

procedure TfEditorInformeFacturasProveedorReport.actRefrescarExecute(Sender: TObject);
begin
  inherited;
  RefrescarInforme;
end;

constructor TfEditorInformeFacturasProveedorReport.Create(AOwner: TComponent);
begin
  inherited;
  FListaIDProveedores := TIntegerArray.Create;
end;

destructor TfEditorInformeFacturasProveedorReport.Destroy;
begin
  FListaIDProveedores.Free;
  inherited;
end;

function TfEditorInformeFacturasProveedorReport.GetDesglosadoProveedor: Boolean;
begin
  if frViewFiltroImportes1.cbxDesglosado.Enabled then
    Result := frViewFiltroProveedores1.cbxDesglosado.Checked
  else
     Result := False;
end;

function TfEditorInformeFacturasProveedorReport.GetFechaFin: Variant;
begin
  Result := frViewPeriodoFechas1.edtFechaFin.EditValue;

  //Esto es para quitar la hora del timestamp para que luego no me redondee al dia siguiente
  if not VarIsNull(Result) then
     Result := DateOf(frViewPeriodoFechas1.edtFechaFin.Date);
end;

function TfEditorInformeFacturasProveedorReport.GetFechaInicio: Variant;
begin
  Result := frViewPeriodoFechas1.edtFechaIni.EditValue;
end;

function TfEditorInformeFacturasProveedorReport.GetFechaVenFin: Variant;
begin
  Result := frViewPeriodoFechas1.edtFechaVenFin.EditValue;

  //Esto es para quitar la hora del timestamp para que luego no me redondee al dia siguiente
  if not VarIsNull(Result) then
     Result := DateOf(frViewPeriodoFechas1.edtFechaVenFin.Date);
end;

function TfEditorInformeFacturasProveedorReport.GetFechaVenInicio: Variant;
begin
  Result := frViewPeriodoFechas1.edtFechaVenIni.EditValue;
end;

function TfEditorInformeFacturasProveedorReport.GetImporteMinimo: Currency;
begin
  if frViewFiltroImportes1.eImporte.Enabled then
     Result := frViewFiltroImportes1.eImporte.Value
  else
     Result := 0;
end;

function TfEditorInformeFacturasProveedorReport.GetListaIDProveedores: TIntegerArray;
begin
  FListaIDProveedores.Clear;
  if Assigned(frViewFiltroProveedores1.Proveedor) then
     FListaIDProveedores.Add(frViewFiltroProveedores1.Proveedor.ID);

  Result := FListaIDProveedores;
end;

procedure TfEditorInformeFacturasProveedorReport.RefrescarInforme;
var
  AStream: Binary;
begin
  ShowHourglassCursor;
  try
    AStream := (Controller as IGestorInformesController).DataModule.GenerarInformeListadoFacturasProv(
      AppFactuGES.EmpresaActiva.ID,
      FechaInicio,
      FechaFin,
      FechaVenInicio,
      FechaVenFin,
      ListaIDProveedores,
      DesglosadoProveedor,
      ImporteMinimo);

    LoadFromStream(AStream);
    Report.ShowPreparedReport;
  finally
    FreeAndNil(AStream);
    HideHourglassCursor;
  end;
end;

end.
