{
===============================================================================
  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: 31-12-2002
  Versión actual: 1.0.0
  Fecha versión actual: 31-12-2002
===============================================================================
  Modificaciones:

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

unit ImprimirInformeTrimestral;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  RDXFRAME, StdCtrls, RdxComboBox, RdxBotones, RdxCampos,
  ExtCtrls, RdxBarras, RdxTitulos, Configuracion,
  Grids, DBGrids, RdxPaneles, RdxRadioButton, VistaPrevia, AdvPanel,
  cxDBEdit, cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit,
  cxButtonEdit, Entidades, InformeTrimestralVentas, InformeTrimestralCompras,
  TablaTrimestres, cxDropDownEdit;

type
  TfrImprimirInformeTrimestral = class(TRdxFrame)
    pnlTitulo: TRdxPanelTituloOperacion;
    pnlVistaPrevia: TPanel;
    pnlCuerpo: TPanel;
    pnlProveedor: TAdvPanel;
    Panel1: TPanel;
    pnlCompras: TPanel;
    rbGeneral: TRdxRadioButton;
    rbInmovilizado: TRdxRadioButton;
    eTrimestre: TLabel;
    cbxTrimestres: TcxComboBox;
    procedure bCancelarClick(Sender: TObject);
    procedure bImprimirClick(Sender: TObject);
    procedure cbxTrimestresPropertiesEditValueChanged(Sender: TObject);
    procedure rbGeneralClick(Sender: TObject);
    procedure rbInmovilizadoClick(Sender: TObject);
  private
    FListaTrimestres : TListaTrimestres;
    FCodigoTrimestre : Variant;
    FInformeTrimestralVentas : TdmInformeTrimestralVentas;
    FInformeTrimestralCompras : TdmInformeTrimestralCompras;
    FVistaPrevia : TfrVistaPrevia;
    procedure GenerarInforme;
  protected
    function CambiarEntidad(EntidadAnterior, Entidad : TRdxEntidad): Boolean; override;
    function CloseFrame : Boolean; override;
  public
    constructor Create(AOwner : TComponent); override;
    destructor Destroy; override;
  published
    property CodigoTrimestre : Variant read FCodigoTrimestre write FCodigoTrimestre;
  end;

var
  frImprimirInformeTrimestral: TfrImprimirInformeTrimestral;

implementation

{$R *.DFM}

uses
  Variants, BaseDatos, Clientes, Mensajes, StrFunc,
  TablaFacturasCliente, TablaFacturasProveedor;

constructor TfrImprimirInformeTrimestral.Create(AOwner : TComponent);
var
  i : Integer;
begin
  inherited Create(AOwner);
  FVistaPrevia := TfrVistaPrevia.Create(Self);
  FVistaPrevia.Parent := pnlVistaPrevia;
  FInformeTrimestralVentas := TdmInformeTrimestralVentas.Create(Self);
  FInformeTrimestralCompras := TdmInformeTrimestralCompras.Create(Self);

  FListaTrimestres := TListaTrimestres.Create(tlcTriTodos);
  cbxTrimestres.ItemIndex := FListaTrimestres.cargarLista(cbxTrimestres.Properties.Items);
end;

procedure TfrImprimirInformeTrimestral.bCancelarClick(Sender: TObject);
begin
  CloseFrame;
end;

destructor TfrImprimirInformeTrimestral.Destroy;
begin
  FInformeTrimestralVentas.Free;
  FInformeTrimestralVentas:= Nil;
  FInformeTrimestralCompras.Free;
  FInformeTrimestralCompras:= Nil;

  FListaTrimestres.Free;
  FListaTrimestres := Nil;

  inherited;
end;

procedure TfrImprimirInformeTrimestral.bImprimirClick(Sender: TObject);
begin
  if (Entidad = entInformeTrimestralVentas) then
    FInformeTrimestralVentas.Imprimir
  else if (Entidad = entInformeTrimestralCompras) then
    FInformeTrimestralCompras.Imprimir;
end;

function TfrImprimirInformeTrimestral.CloseFrame: Boolean;
begin
  FInformeTrimestralVentas.Preview := NIL;
  FInformeTrimestralCompras.Preview := NIL;
  (FVistaPrevia as TRdxFrame).CloseFrame;
  Result := inherited CloseFrame;
end;

procedure TfrImprimirInformeTrimestral.GenerarInforme;
begin
  //Realizamos la operacion
  if (Entidad = entInformeTrimestralVentas) then
  begin
    FInformeTrimestralVentas.CodigoTrimestre := CodigoTrimestre;
    FInformeTrimestralVentas.Preview := FVistaPrevia.Preview;
    FInformeTrimestralVentas.Previsualizar;
  end
  else if (Entidad = entInformeTrimestralCompras) then
  begin
    FInformeTrimestralCompras.CodigoTrimestre := CodigoTrimestre;
    if rbGeneral.Checked
    then FInformeTrimestralCompras.Tipo := tipGeneral
    else FInformeTrimestralCompras.Tipo := tipInmovilizado;
    FInformeTrimestralCompras.Preview := FVistaPrevia.Preview;
    FInformeTrimestralCompras.Previsualizar;
  end;
end;

procedure TfrImprimirInformeTrimestral.cbxTrimestresPropertiesEditValueChanged(Sender: TObject);
begin
  CodigoTrimestre := FListaTrimestres.getCodItem(cbxTrimestres.ItemIndex);
  GenerarInforme;
end;

function TfrImprimirInformeTrimestral.CambiarEntidad(EntidadAnterior, Entidad: TRdxEntidad): Boolean;
begin
  inherited CambiarEntidad(EntidadAnterior, Entidad);

  if (Entidad = entInformeTrimestralVentas) then
    pnlCompras.Visible := False
  else if (Entidad = entInformeTrimestralCompras) then
    pnlCompras.Visible := True;

  GenerarInforme;
end;

procedure TfrImprimirInformeTrimestral.rbGeneralClick(Sender: TObject);
begin
    GenerarInforme;
end;

procedure TfrImprimirInformeTrimestral.rbInmovilizadoClick(
  Sender: TObject);
begin
    GenerarInforme;
end;

end.
