{
===============================================================================
  Copyright (©) 2007. Rodax Software.
===============================================================================
  Los contenidos de este fichero son propiedad de Rodax Software titular del
  copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
  en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
  acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
  bajo el que se suministra.
  -----------------------------------------------------------------------------
  Web:  www.rodax-software.com
===============================================================================
  Fecha primera versión: 02-04-2007
  Versión actual: 1.0.0
  Fecha versión actual: 02-04-2007
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
===============================================================================
}

unit InformeListadoContratacionProcedencia;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, InformeBase, FR_IBXDB, FR_Shape, FR_Class, DB, IBCustomDataSet,
  IBQuery, FR_DSet, FR_DBSet, RdxEmpresaActiva;

type
  TdmInformeListadoContratacionProcedencia = class(TdmInformeBase)
    dsTablaInforme: TfrDBDataSet;
    TablaInforme: TIBQuery;
  private
    FFechaIni: TDateTime;
    FFechaFin: TDateTime;
  protected
    procedure RellenarCabecera(Band: TfrBand); override;
    procedure PrepararConsultas; override;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property FechaIni : TDateTime read FFechaIni write FFechaIni;
    property FechaFin : TDateTime read FFechaFin write FFechaFin;
  end;

var
  dmInformeListadoContratacionProcedencia: TdmInformeListadoContratacionProcedencia;

implementation
{$R *.dfm}

{ TdmInformeListadoFacturacionProcedencia }

constructor TdmInformeListadoContratacionProcedencia.Create(AOwner: TComponent);
begin
  inherited;
  FNombreInforme := 'ListadoContratacionProcedencia.frf';
end;

procedure TdmInformeListadoContratacionProcedencia.PrepararConsultas;
begin
  inherited;
  with TablaInforme do
  begin
    Database := FBaseDatos;
    Transaction := FTransaccion;
    SQL.Clear;

    SQL.Add('select coalesce(procedencias.codigo, ''-1''), coalesce(procedencias.descripcion, ''DESCONOCIDA'') as DESCRIPCION, ');
    SQL.Add('count(contratoscliente.codigo) as NUM_CONTRATOS, ');
    SQL.Add('coalesce(sum(contratoscliente.importetotal), 0) as IMPORTE_TOTAL ');
    SQL.Add('from procedencias ');
    SQL.Add('full outer join clientes on (clientes.procedencia = procedencias.codigo) ');
    SQL.Add('left join contratoscliente on ((contratoscliente.codigocliente = clientes.codigo) ');
    SQL.Add('                           and(contratoscliente.FECHACONTRATO between :FECHAINI and :FECHAFIN)) ');
    SQL.Add('group by 1,2 ');
    SQL.Add('order by 3 DESC ');

    ParamByName('FECHAINI').AsDate := FFechaIni;
    ParamByName('FECHAFIN').AsDate := FFechaFin;
    Prepare;
  end;
end;

procedure TdmInformeListadoContratacionProcedencia.RellenarCabecera(Band: TfrBand);
var
  iCont : Integer;
  Objeto : TfrView;
begin
  inherited;
  with Band do
  begin
     for iCont := 0 to Objects.Count - 1 do
      begin
        Objeto := Objects[iCont];
        if ((Objeto is TfrMemoView) and (Objeto.Name = 'CabParametros')) then
        begin
          with (Objeto as TfrMemoView) do
          begin
            Memo.Clear;
            Memo.Add('Rango de fechas: ' + DateToStr(FFechaIni) + ' - ' + DateToStr(FFechaFin));
          end;
        end;
      end;
  end;
end;

end.

