{
===============================================================================
  Copyright (©) 2001. 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: 08-11-2002
  Versión actual: 1.0.1
  Fecha versión actual: 25-06-2004
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
    25-06-2004    p272. Adaptación a multiempresa.

    25-06-2004    p274. Actualización del informe a FastReport.
===============================================================================
}

unit InformeEstadoObraHistorica;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  InformeBase, FR_IBXDB, FR_Shape, FR_Class, Db, IBCustomDataSet, IBQuery,
  IBDatabase, FR_DSet, FR_DBSet, Tipos;

type
  TdmInformeEstadoObraHistorica = class(TdmInformeBase)
    TablaEstado: TIBQuery;
    frdsTablaEstado: TfrDBDataSet;
  private
    FFamIni: string;
    FFamFin: string;
    FTipo: TTipoInforme;
    FDesIni: string;
    FDesFin: string;
    FFechaCierre: TDate;
    FCodigoObra: Integer;
    FNombreObra: string;
    procedure InformeGetParametersText(Memo : TStringList);
  protected
    procedure PrepararConsultas; override;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property Tipo : TTipoInforme read FTipo write FTipo;
    property DescripcionIni : string read FDesIni write FDesIni;
    property DescripcionFin : string read FDesFin write FDesFin;
    property FamiliaIni : string read FFamIni write FFamIni;
    property FamiliaFin : string read FFamFin write FFamFin;
    property CodigoObra : Integer read FCodigoObra write FCodigoObra;
    property NombreObra : string read FNombreObra write FNombreObra;
    property FechaCierre : TDate read FFechaCierre write FFechaCierre;
  end;

var
  dmInformeEstadoObraHistorica: TdmInformeEstadoObraHistorica;

implementation

{$R *.DFM}

{ TdmInformeEstadoAlmacen }

uses
  RdxEmpresaActiva, Literales;

constructor TdmInformeEstadoObraHistorica.Create(AOwner: TComponent);
begin
  inherited;
  FNombreInforme := 'ListadoEstadoObraHistorica.frf';
  OnGetParametersText := InformeGetParametersText;
  Tipo := tiTodo;
end;

procedure TdmInformeEstadoObraHistorica.InformeGetParametersText(
  Memo: TStringList);
begin
  with Memo do
  begin
    Add('Obra: ' + IntToStr(CodigoObra) + ' - ' + NombreObra);
    case Tipo of
      tiTodo            : Add(msgInfIntervaloTodosArt);
      tiPorDescripcion  : Add(SysUtils.Format(msgInfIntervaloDesArt, [FDesIni, FDesFin]));
      tiPorFamilias     : Add(SysUtils.Format(msgInfIntervaloFam, [FFamIni, FFamFin]));
    end;
  end;
end;

procedure TdmInformeEstadoObraHistorica.PrepararConsultas;
begin
  TablaEstado.Database := FBaseDatos;
  TablaEstado.Transaction := FTransaccion;

  with TablaEstado.SQL do
  begin
    Clear;
    case Tipo of
      tiTodo        : begin
                        Add('select CODIGOARTICULO, FAMILIA, DESCRIPCION, ');
                        Add('UNIDADESMEDIDA, EXISTENCIAS ');
                        Add('from ESTADOOBRASHISTORICAS ');
                        Add('where CODIGOOBRA = :CODIGOOBRA ');
                        Add('and FECHACIERRE = :FECHACIERRE ');
                        Add('and CODIGOEMPRESA = :CODIGOEMPRESA ');
                        Add('order by CODIGOARTICULO ');
                      end;
      tiPorDescripcion: begin
                        Add('select CODIGOARTICULO, FAMILIA, DESCRIPCION, ');
                        Add('UNIDADESMEDIDA, EXISTENCIAS ');
                        Add('from ESTADOOBRASHISTORICAS ');
                        Add('where CODIGOOBRA = :CODIGOOBRA ');
                        Add('and FECHACIERRE = :FECHACIERRE ');
                        Add('and CODIGOEMPRESA = :CODIGOEMPRESA ');
                        Add('and DESCRIPCION between :DESCRIPCIONINI and :DESCRIPCIONFIN ');
                        Add('order by CODIGOARTICULO ');
                        TablaEstado.ParamByName('DESCRIPCIONINI').AsString := FDesIni;
                        TablaEstado.ParamByName('DESCRIPCIONFIN').AsString := FDesFin;
                      end;
      tiPorFamilias : begin
                        Add('select CODIGOARTICULO, FAMILIA, DESCRIPCION, ');
                        Add('UNIDADESMEDIDA, EXISTENCIAS ');
                        Add('from ESTADOOBRASHISTORICAS ');
                        Add('where CODIGOOBRA = :CODIGOOBRA ');
                        Add('and FECHACIERRE = :FECHACIERRE ');
                        Add('and CODIGOEMPRESA = :CODIGOEMPRESA ');
                        Add('and FAMILIA between :FAMILIAINI and :FAMILIAFIN ');
                        Add('order by CODIGOARTICULO ');
                        TablaEstado.ParamByName('FAMILIAINI').AsString := FFamIni;
                        TablaEstado.ParamByName('FAMILIAFIN').AsString := FFamFin;
                      end;
    end;
    TablaEstado.ParambyName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
    TablaEstado.ParambyName('CODIGOOBRA').AsInteger := CodigoObra;
    TablaEstado.ParambyName('FECHACIERRE').AsDate := FechaCierre;
  end;
end;

end.
