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

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

unit ListadoBeneficios;

interface

uses
  Windows, Db, StdCtrls, RdxMemo, RdxCampos, RdxTitulos, Forms, RdxPaneles,
  RdxBotones, Controls, ExtCtrls, RdxBarras, Classes, RdxFrameComisiones,
  RdxFrame, RXDBCtrl, RxMemDS, ComCtrls, cxDBEdit, cxMaskEdit, cxButtonEdit,
  Configuracion, cxControls, cxContainer, cxEdit, cxTextEdit, cxMemo, AdvPanel,
  cxSpinEdit, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDBData,
  cxGridLevel, cxClasses, cxGridCustomView, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxGrid, cxDropDownEdit, cxCalendar,
  InformeComisionesVendedores, vistaPrevia,
  RdxDBFrame, RdxFrameListadoBeneficios, InformeListadoPagosCliente,
  InformeListadoPagosClientes, RdxPageControl, IBCustomDataSet, IBDatabase,
  cxDataStorage, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, ActnList,
  Grids, DBGrids, InformeListadoBeneficiosContrato, InformeDetalleBeneficiosContrato;

type
  TfrListadoBeneficios = class(TRdxFrameListadoBeneficios)
    dsFacturasCliente: TDataSource;
    Titulo: TRdxPanelTituloOperacion;
    pnlCuerpo: TPanel;
    dsFacturasProveedor: TDataSource;
    Paginas: TRdxPagesControl;
    pagBeneficiosContrato: TTabSheet;
    pnlDatos: TAdvPanel;
    Panel3: TPanel;
    eCodigoContrato: TLabel;
    eNIFCIF: TLabel;
    NIFCIF: TcxTextEdit;
    Panel2: TPanel;
    Panel1: TPanel;
    Splitter1: TSplitter;
    gridFacturasProveedor: TcxGrid;
    gridFacturasProveedorDBTableView1: TcxGridDBTableView;
    gridFacturasProveedorLevel1: TcxGridLevel;
    gridFacturasCliente: TcxGrid;
    gridFacturasClienteDBTableView1: TcxGridDBTableView;
    gridFacturasClienteLevel1: TcxGridLevel;
    Panel5: TPanel;
    dsObrasGastos: TDataSource;
    eNombre: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    Panel4: TPanel;
    pagListaBeneficiosContrato: TTabSheet;
    Panel6: TPanel;
    brSimple: TRdxBarraInferior;
    bVistaPrevia: TRdxBoton;
    bImprimir: TRdxBoton;
    bCancelar: TRdxBoton;
    dsTablaBeneficios: TDataSource;
    gridBeneficios: TcxGrid;
    gridBeneficiosDBTableView1: TcxGridDBTableView;
    gridBeneficiosLevel1: TcxGridLevel;
    TablaBeneficiosAux: TIBDataSet;
    TablaBeneficiosAuxCODIGO: TIBStringField;
    TablaBeneficiosAuxFECHACONTRATO: TDateField;
    TablaBeneficiosAuxIMPCLI: TIBBCDField;
    TablaBeneficiosAuxIMPORTETOTAL: TIBBCDField;
    TablaBeneficiosAuxPORCENTAJE: TIBBCDField;
    TablaBeneficiosAuxBENEFICIO: TIBBCDField;
    Nombre: TcxTextEdit;
    Panel8: TPanel;
    Panel11: TPanel;
    Label3: TLabel;
    Panel9: TPanel;
    bEliminar: TRdxBoton;
    bAnadir: TRdxBoton;
    bEliminarTodo: TRdxBoton;
    TablaBeneficiosAuxNIFCIF: TIBStringField;
    TablaBeneficiosAuxNOMBRE: TIBStringField;
    CodContrato: TcxTextEdit;
    Acciones: TActionList;
    actAnadir: TAction;
    actEliminar: TAction;
    actEliminarTodo: TAction;
    gridObrasGastos: TcxGrid;
    gridObrasGastosDBTableView1: TcxGridDBTableView;
    gridObrasGastosLevel1: TcxGridLevel;
    Panel10: TPanel;
    PorcentajeBeneficio: TLabel;
    eePorcentajeBeneficio: TLabel;
    eeTotalFacProveedor: TLabel;
    eeTotalObrasGastos: TLabel;
    eeTotalFacCliente: TLabel;
    eeTotalBeneficio: TLabel;
    eTotalFacCliente: TLabel;
    eTotalFacProveedor: TLabel;
    eTotalObrasGastos: TLabel;
    ePorcentajeBeneficio: TLabel;
    eTotalBeneficio: TLabel;
    TablaBeneficiosAuxIMPOTROS: TIBBCDField;
    TablaBeneficiosAuxIMPPROV: TIBBCDField;
    RdxBoton1: TRdxBoton;
    actRecalcular: TAction;
    procedure bCancelarClick(Sender: TObject);
    procedure bImprimirClick(Sender: TObject);
    procedure bVistaPreviaClick(Sender: TObject);
    procedure Panel1Resize(Sender: TObject);
    procedure gridFacturasDBTableView1CustomDrawCell(
      Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
      AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
    procedure IBDataSet1CalcFields(DataSet: TDataSet);
    procedure gridFacturasProveedorResize(Sender: TObject);
    procedure actAnadirExecute(Sender: TObject);
    procedure actEliminarExecute(Sender: TObject);
    procedure actEliminarTodoExecute(Sender: TObject);
    procedure gridObrasGastosExit(Sender: TObject);
    procedure gridBeneficiosDBTableView1DblClick(Sender: TObject);
    procedure PaginasChange(Sender: TObject);
    procedure actRecalcularExecute(Sender: TObject);
  private
    ContadorAux: Integer;
    FInformeListadoBeneficiosContrato : TdmInformeListadoBeneficiosContrato;
    FInformeDetalleBeneficiosContrato : TdmInformeDetalleBeneficiosContrato;

    procedure Filtrar;
    procedure BuscarFacturasCliente;
    procedure BuscarFacturasProveedor;
    procedure BuscarObrasGastos;
  protected
    procedure ActivarModoConsultar; override;
    procedure RecargarDatosDetalle; override;
  public
    constructor Create (AOwner : TComponent); override;
    destructor Destroy; override;
  published
  end;

var
  frListadoBeneficios: TfrListadoBeneficios;

implementation
{$R *.DFM}

uses
  Mensajes, IB, Colores, BaseDatos, Sysutils, Constantes,
  StrFunc, TablaPoblaciones, Excepciones, IBErrorCodes,
  Variants, Entidades, NumFunc, Literales, TablaFacturasCliente,
  TablaPagosCliente, DateFunc, cxCheckBox, cxDateUtils, Graphics,
  ContratosClientes, RdxFrameContratos, TablaClientes, TablaContratos,
  TablaFacturasProveedor, RdxEmpresaActiva, TablaObrasGastos;


procedure TfrListadoBeneficios.ActivarModoConsultar;
begin
  Visible := True;
end;

procedure TfrListadoBeneficios.BuscarFacturasCliente;
begin
  if Transaccion = NIL then
    Exit;
  try
    TablaFacturasCliente.Close;

    // Buscar la fila a tratar si es necesario
    if not EsCadenaVacia(CodigoContrato) then begin
        TablaFacturasCliente.Params.ByName('CODIGOCONTRATO').AsString  := CodigoContrato;
        TablaFacturasCliente.Params.ByName('CODIGOEMPRESA').AsInteger  := EmpresaActiva.Codigo;
    end;

    TablaFacturasCliente.Prepare;
    TablaFacturasCliente.Open;
    dmTablaFacturasCliente.InicializarTablaFacturas(@TablaFacturasCliente);
    gridFacturasCliente.ActiveView.DataController.GotoFirst;
  except
    on E : EIBError do
      TratarExcepcion(E);
    on E : Exception do
      TratarExcepcion(E);
  end;
end;

procedure TfrListadoBeneficios.BuscarFacturasProveedor;
begin
  if Transaccion = NIL then
    Exit;
  try
    TablaFacturasProveedor.Close;

    // Buscar la fila a tratar si es necesario
    if not EsCadenaVacia(CodigoContrato) then begin
        TablaFacturasProveedor.Params.ByName('CODIGOCONTRATO').AsString := CodigoContrato;
        TablaFacturasProveedor.Params.ByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
    end;

    TablaFacturasProveedor.Prepare;
    TablaFacturasProveedor.Open;
    dmTablaFacturasProveedor.InicializarTablaFacturas(@TablaFacturasProveedor);
    gridFacturasProveedor.ActiveView.DataController.GotoFirst;
  except
    on E : EIBError do
      TratarExcepcion(E);
    on E : Exception do
      TratarExcepcion(E);
  end;
end;

constructor TfrListadoBeneficios.Create (AOwner : TComponent);
var
  Columna : TcxGridDBColumn;

begin
  inherited Create(AOwner);
  FInformeListadoBeneficiosContrato := TdmInformeListadoBeneficiosContrato.Create(Self);
  FInformeDetalleBeneficiosContrato := TdmInformeDetalleBeneficiosContrato.Create(Self);

  Entidad := entListadoBeneficios;
  BaseDatos := dmBaseDatos.BD;
  Transaccion := dmBaseDatos.Transaccion;

  TablaBeneficios := TablaBeneficiosAux;
  TablaFacturasProveedor := TIBDataSet.Create(Self);
  TablaFacturasCliente := TIBDataSet.Create(Self);
  TablaObrasGastos := TIBDataSet.Create(Self);

  dsTablaBeneficios.DataSet := TablaBeneficios;
  dsFacturasProveedor.DataSet := TablaFacturasProveedor;
  dsFacturasCliente.DataSet := TablaFacturasCliente;
  dsObrasGastos.DataSet := TablaObrasGastos;

  with TablaBeneficios do
  begin
    Database := BaseDatos;
    Transaction := Transaccion;
    SelectSQL.Assign(dmTablaContratos.sqlConsultarGridBeneficios);
    RefreshSQL.Assign(dmTablaContratos.sqlConsultarGridBeneficios);
    AutoCalcFields := True;
    OnCalcFields := IBDataSet1CalcFields;
    ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
    Prepare;
    Open;
  end;

  with TablaFacturasProveedor do
  begin
    Database := BaseDatos;
    Transaction := Transaccion;
    SelectSQL.Assign(dmTablaFacturasProveedor.sqlConsultarGridFacturasProvContrato);
    RefreshSQL.Assign(dmTablaFacturasProveedor.sqlConsultarGridFacturasProvContrato);
  end;

  with TablaFacturasCliente do
  begin
    Database := BaseDatos;
    Transaction := Transaccion;
    SelectSQL.Assign(dmTablaFacturasCliente.sqlConsultarGridFacturasCliContrato);
    RefreshSQL.Assign(dmTablaFacturasCliente.sqlConsultarGridFacturasCliContrato);
  end;

  with TablaObrasGastos do
  begin
    Database := BaseDatos;
    Transaction := Transaccion;
    SelectSQL.Assign(dmTablaObrasGastos.sqlGrid);
    InsertSQL.Assign(dmTablaObrasGastos.sqlInsertar);
    ModifySQL.Assign(dmTablaObrasGastos.sqlModificar);
    DeleteSQL.Assign(dmTablaObrasGastos.sqlEliminar);
  end;

  dmTablaContratos.InicializarGridBeneficios(gridBeneficios);
  dmTablaContratos.InicializarTablaBeneficios(@TablaBeneficios);
  dmTablaFacturasCliente.InicializarGridFacturasCliContrato(gridFacturasCliente);
  dmTablaFacturasProveedor.InicializarGridFacturasProvContrato(gridFacturasProveedor);
  dmTablaObrasGastos.InicializarGrid(gridObrasGastosDBTableView1);

  Filtrar;
  Paginas.ActivePageIndex := 0;
end;

destructor TfrListadoBeneficios.Destroy;
begin
  FInformeListadoBeneficiosContrato.Free;
  FInformeDetalleBeneficiosContrato.Free;

  TablaBeneficios.Close;
  TablaBeneficios.UnPrepare;
  TablaBeneficios.Free;

  TablaFacturasProveedor.Close;
  TablaFacturasProveedor.UnPrepare;
  TablaFacturasProveedor.Free;

  TablaFacturasCliente.Close;
  TablaFacturasCliente.UnPrepare;
  TablaFacturasCliente.Free;

  TablaObrasGastos.Close;
  TablaObrasGastos.UnPrepare;
  TablaObrasGastos.Free;

  inherited;
end;

procedure TfrListadoBeneficios.bImprimirClick(Sender: TObject);
begin
  if (Paginas.ActivePageIndex = 0) then
  begin
    FInformeListadoBeneficiosContrato.Preview := nil;
    FInformeListadoBeneficiosContrato.Imprimir;
  end
  else begin
    FInformeDetalleBeneficiosContrato.CodigoContrato := CodigoContrato;
    FInformeDetalleBeneficiosContrato.NIFCIF := NIFCIF.Text;
    FInformeDetalleBeneficiosContrato.Nombre := Nombre.Text;
    FInformeDetalleBeneficiosContrato.Preview := nil;
    FInformeDetalleBeneficiosContrato.Imprimir;
  end;
end;

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

procedure TfrListadoBeneficios.bVistaPreviaClick(Sender: TObject);
var
  FVistaPrevia : TfrVistaPrevia;

begin
  if (Paginas.ActivePageIndex = 0) then
  begin
    FVistaPrevia := TfrVistaPrevia.Create(Self);
    FInformeListadoBeneficiosContrato.Preview := FVistaPrevia.Preview;
    FInformeListadoBeneficiosContrato.Previsualizar;
    CaptionModal := 'Informe de lista de beneficios por contrato';
  end
  else begin
    FInformeDetalleBeneficiosContrato.CodigoContrato := CodigoContrato;
    FInformeDetalleBeneficiosContrato.NIFCIF := NIFCIF.Text;
    FInformeDetalleBeneficiosContrato.Nombre := Nombre.Text;
    FVistaPrevia := TfrVistaPrevia.Create(Self);
    FInformeDetalleBeneficiosContrato.Preview := FVistaPrevia.Preview;
    FInformeDetalleBeneficiosContrato.Previsualizar;
    CaptionModal := 'Informe de detalle de beneficios por contrato';
  end;

  WidthModal := 800;
  HeightModal := 600;
  ModoModal := Consultar;
  EntidadModal := entListadoPagosCliente;
  ContenidoModal := FVistaPrevia;
end;

procedure TfrListadoBeneficios.gridFacturasDBTableView1CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
  IndiceCol : Integer;
begin
  if not AViewInfo.Selected then
  begin
    IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName('BENEFICIO').Index;
    if Copy(Trim(AViewInfo.GridRecord.DisplayTexts[IndiceCol]), 1, 1) = '-' then
      ACanvas.Canvas.Font.Color := $000000CC;
  end;
end;

procedure TfrListadoBeneficios.Panel1Resize(Sender: TObject);
begin
  gridFacturasProveedor.Width := (Panel1.ClientWidth - Splitter1.Width) div 2;
  gridFacturasCliente.Width := gridFacturasProveedor.Width;
  gridObrasGastos.Width := gridFacturasProveedor.Width;
end;

procedure TfrListadoBeneficios.RecargarDatosDetalle;
var
  TotalProv: double;
  TotalObrasGastos: double;
  TotalCli: double;
  TotalBeneficio: double;
  TotalPorcentaje: double;

begin
  CodContrato.Text := CodigoContrato;
  NifCif.Text := TablaBeneficios.FieldByName('NIFCIF').AsString;
  Nombre.Text := TablaBeneficios.FieldByName('Nombre').AsString;

  BuscarFacturasCliente;
  BuscarFacturasProveedor;
  BuscarObrasGastos;

  if (not varIsNull(gridFacturasProveedor.ActiveView.DataController.Summary.FooterSummaryValues[0])) then
    TotalProv := gridFacturasProveedor.ActiveView.DataController.Summary.FooterSummaryValues[0]
  else
    TotalProv := 0;
  eeTotalFacProveedor.Caption := msgCliListBeneCon1;
  eTotalFacProveedor.Caption := '- ' + FormatFloat(DISPLAY_EUROS2, TotalProv);

  if (not varIsNull(gridObrasGastos.ActiveView.DataController.Summary.FooterSummaryValues[0])) then
    TotalObrasGastos := gridObrasGastos.ActiveView.DataController.Summary.FooterSummaryValues[0]
  else
    TotalObrasGastos := 0;
  eeTotalObrasGastos.Caption := msgCliListBeneCon2;
  eTotalObrasGastos.Caption := '- ' + FormatFloat(DISPLAY_EUROS2, TotalObrasGastos);

  if (not varIsNull(gridFacturasCliente.ActiveView.DataController.Summary.FooterSummaryValues[0])) then
    TotalCli := gridFacturasCliente.ActiveView.DataController.Summary.FooterSummaryValues[0]
  else
    TotalCli := 0;
  eeTotalFacCliente.Caption := msgCliListBeneCon3;
  eTotalFacCliente.Caption := FormatFloat(DISPLAY_EUROS2, TotalCli);

  TotalBeneficio := TotalCli - (TotalProv + TotalObrasGastos);
  TotalPorcentaje := darPorcentaje(TotalCli, TotalBeneficio);
  eeTotalBeneficio.Caption := msgCliListBeneCon4;
  eTotalBeneficio.Caption := FormatFloat(DISPLAY_EUROS2, TotalBeneficio);
  eePorcentajeBeneficio.Caption := msgCliListBeneCon5;
  if (TotalPorcentaje = -1) then
    ePorcentajeBeneficio.Caption := 'N/A'
  else
    ePorcentajeBeneficio.Caption := FormatFloat(DISPLAY_CTO, TotalPorcentaje);
end;

procedure TfrListadoBeneficios.Filtrar;
var
  Columna1, Columna2 : TcxGridDBColumn;
  AItemList: TcxFilterCriteriaItemList;

begin
  with gridBeneficios.ActiveView.DataController.Filter do
  begin
    BeginUpdate;
    try
      Root.Clear;
      Columna1 := (gridBeneficios.ActiveView as TcxGridDBTableView).GetColumnByFieldName('IMPPROV');
      Columna2 := (gridBeneficios.ActiveView as TcxGridDBTableView).GetColumnByFieldName('IMPCLI');
      AItemList := Root.AddItemList(fboOr);
      AItemList.AddItem(Columna1, foNotEqual, '0', 'Nulo');
      AItemList.AddItem(Columna2, foNotEqual, '0', 'Nulo');
      Active := True;
    finally
      EndUpdate;
      gridBeneficios.ActiveView.DataController.GotoFirst;
    end;
  end;
end;

procedure TfrListadoBeneficios.IBDataSet1CalcFields(DataSet: TDataSet);
var
  Aux: Double;

begin
  with DataSet do
  begin
    if VarIsNull(FieldByName('IMPPROV').AsVariant) then
       FieldByName('IMPPROV').AsFloat := 0;

    if VarIsNull(FieldByName('IMPCLI').AsVariant) then
       FieldByName('IMPCLI').AsFloat := 0;

    FieldByName('BENEFICIO').AsFloat := (FieldByName('IMPCLI').AsFloat - FieldByName('IMPPROV').AsFloat) - FieldByName('IMPOTROS').AsFloat;

    Aux := darPorcentaje(FieldByName('IMPCLI').AsFloat, FieldByName('BENEFICIO').AsFloat);
    if (Aux = -1) then
//    then FieldByName('PORCENTAJE').AsString := 'N/A';
    else FieldByName('PORCENTAJE').AsFloat := darPorcentaje(FieldByName('IMPCLI').AsFloat, FieldByName('BENEFICIO').AsFloat);
  end;
end;

procedure TfrListadoBeneficios.gridBeneficiosDBTableView1DblClick(Sender: TObject);
begin
  CodigoContrato := TablaBeneficios.FieldByName('CODIGO').AsString;
  Paginas.ActivePageIndex := 1;
end;

procedure TfrListadoBeneficios.gridFacturasProveedorResize(Sender: TObject);
begin
  gridObrasGastos.Width := gridFacturasProveedor.Width;
end;

procedure TfrListadoBeneficios.BuscarObrasGastos;
begin
  try
    TablaObrasGastos.Close;
    // Buscar la fila a tratar si es necesario
    if not EsCadenaVacia(CodigoContrato) then begin
        TablaObrasGastos.Params.ByName('CODIGOCONTRATO').AsString  := CodigoContrato;
    end;
    TablaObrasGastos.Prepare;
    TablaObrasGastos.Open;
//    dmTablaObrasGastos.InicializarTablaObrasGastos(@TablaObrasGastos);
    if TablaObrasGastos.RecordCount = -1 then
      ContadorAux := 0
    else
      ContadorAux := TablaObrasGastos.RecordCount;
  except
    on E : EIBError do
      TratarExcepcion(E);
    on E : Exception do
      TratarExcepcion(E);
  end;
end;

procedure TfrListadoBeneficios.actAnadirExecute(Sender: TObject);
begin
  try
    with TablaObrasGastos do
    begin
      Next;
      if EOF then Append
      else begin
        Prior;
        Insert;
      end;

      TablaObrasGastos.FieldByName('CODIGOCONTRATO').AsString := CodigoContrato;
      TablaObrasGastos.FieldByName('CODIGO').AsInteger := ContadorAux;
      TablaObrasGastos.FieldByName('FECHAALTA').AsDateTime := dmBaseDatos.DarFecha;
      TablaObrasGastos.FieldByName('USUARIO').AsString := dmBaseDatos.Usuario;
      TablaObrasGastos.FieldByName('FECHA').AsDateTime := dmBaseDatos.DarFecha;
      Inc(ContadorAux);
    end;
    gridObrasGastos.SetFocus;
  except
    on E : EIBError do
      TratarExcepcion(E);
    on E : Exception do
      TratarExcepcion(E);
  end;
end;

procedure TfrListadoBeneficios.actEliminarExecute(Sender: TObject);
begin
  if (VerMensajePregunta(msgDeseaBorrar) <> IDYES) then
    Exit;

  if TablaObrasGastos.RecordCount = 0 then begin
    { Hacemos un cancel de la tabla por si el registro actual estuviera
      recien creado }
    TablaObrasGastos.Cancel;
    Exit
  end;
  try
    TablaObrasGastos.Delete;
    commit;    
  except
    on E : EIBError do
      TratarExcepcion(E);
    on E : Exception do
      TratarExcepcion(E);
  end;
end;

procedure TfrListadoBeneficios.actEliminarTodoExecute(Sender: TObject);
begin
  if (VerMensajePregunta(msgDeseaBorrarTodo) <> IDYES) then
    Exit;

  try
    with TablaObrasGastos do
    begin
      if IsEmpty then
         Exit;
      DisableControls;
      Last;
      while not BOF do
      begin
        Delete;
        Prior;
      end;
      if not IsEmpty then
        Delete;
      EnableControls;
      commit;      
    end;
  except
    on E : EIBError do
      TratarExcepcion(E);
    on E : Exception do
      TratarExcepcion(E);
  end;
end;

procedure TfrListadoBeneficios.gridObrasGastosExit(Sender: TObject);
begin
  commit;
end;

procedure TfrListadoBeneficios.PaginasChange(Sender: TObject);
begin
  if gridBeneficiosDBTableView1.ViewData.RecordCount = 0 then
  begin
    Paginas.ActivePageIndex := 0;
    exit;
  end;
      
  if (Paginas.ActivePageIndex = 1) then
    CodigoContrato := TablaBeneficios.FieldByName('CODIGO').AsString;
end;

procedure TfrListadoBeneficios.actRecalcularExecute(Sender: TObject);
begin
  RecargarDatosDetalle;
end;

end.
