{
===============================================================================
  Copyright (©) 2002. 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: 01-03-2003
  Versión actual: 1.0.1
  Fecha versión actual: 02-04-2004
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
    02-04-2004    Se ha eliminado el atributo SERIE (P8 MULTIEMPRESA)
===============================================================================
}

unit InformeListadoBeneficiosContrato;

interface

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

type
  TdmInformeListadoBeneficiosContrato = class(TdmInformeBase)
    dsTablaBeneficios: TfrDBDataSet;
    TablaBeneficios: TIBQuery;
  protected
    procedure RellenarCabecera(Band: TfrBand); override;
    procedure PrepararConsultas; override;
  public
    constructor Create(AOwner: TComponent); override;
  end;

var
  dmInformeListadoBeneficiosContrato: TdmInformeListadoBeneficiosContrato;

implementation

{$R *.dfm}

uses
  Types, StrFunc, BaseDatos, Constantes, mensajes;

{ TdmInformePagoCliente }

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

procedure TdmInformeListadoBeneficiosContrato.PrepararConsultas;
begin
  inherited;

  with TablaBeneficios do
  begin
    Database := FBaseDatos;
    Transaction := FTransaccion;
    SQL.Clear;
    SQL.Add('select cc.codigo, cc.fechacontrato, cc.NIFCIF, cc.nombre, cc.importetotal,');
    SQL.Add('(select sum(fpc.importe)');
    SQL.Add('from detallesfacturasprovcontratos fpc');
    SQL.Add('where fpc.codigocontrato = cc.codigo');
    SQL.Add('and fpc.codigoempresa = :CODIGOEMPRESA');
    SQL.Add('group by fpc.codigocontrato) as IMPPROV,');

    SQL.Add('(select sum(otg.importe)');
    SQL.Add('from obrasgastos otg');
    SQL.Add('where otg.codigocontrato = cc.codigo');
    SQL.Add('group by otg.codigocontrato) as IMPOTROS,');

    SQL.Add('(select sum(fcc.importetotal)');
    SQL.Add('from facturascliente fcc');
    SQL.Add('where fcc.codigocontrato = cc.codigo');
    SQL.Add('and fcc.codigoempresa = :CODIGOEMPRESA');
    SQL.Add('group by fcc.codigocontrato) as IMPCLI,');

    SQL.Add('0 as BENEFICIO, 0 as PORCENTAJE');
    SQL.Add('from contratoscliente cc');
    SQL.Add('order by cc.fechacontrato, cc.nombre');
    ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
    Prepare;
  end;
end;

procedure TdmInformeListadoBeneficiosContrato.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) then
        begin
          if (Objeto.Name = 'Empresa') then
          begin
            with (Objeto as TfrMemoView) do
            begin
              Memo.Clear;
              Memo.Add('Empresa: ' + EmpresaActiva.NombreComercial);
            end;
          end;
        end;
      end;
  end;
end;

end.
