unit uEditorInformeFacturasProveedorPendientesReport;

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,
  TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls,
  JvExControls, JvNavigationPane, uCustomView,
  uViewBase, uViewPeriodoFechas, 
  uViewFiltroProveedores, dxLayoutControl, cxControls, uViewFiltroImportes,
  FactuGES_Intf, TBXDkPanels, uEditorInformeBase,
  uIEditorInformeBase, uViewParametrosInforme,
  uIEditorInformeFacturasProveedorPendientesReport, dxLayoutLookAndFeels,
  frxExportCSV;

type
  TfEditorInformeFacturasProveedorPendientesReport = class(TfEditorInformeBase, IEditorInformeFacturasProveedorPendientesReport)
    TBXItem58: TTBXItem;
    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 TfEditorInformeFacturasProveedorPendientesReport.actRefrescarExecute(Sender: TObject);
begin
  inherited;
  RefrescarInforme;
end;

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

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

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

function TfEditorInformeFacturasProveedorPendientesReport.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 TfEditorInformeFacturasProveedorPendientesReport.GetFechaInicio: Variant;
begin
  Result := frViewPeriodoFechas1.edtFechaIni.EditValue;
end;

function TfEditorInformeFacturasProveedorPendientesReport.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 TfEditorInformeFacturasProveedorPendientesReport.GetFechaVenInicio: Variant;
begin
  Result := frViewPeriodoFechas1.edtFechaVenIni.EditValue;
end;

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

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

  Result := FListaIDProveedores;
end;

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

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

end.
