This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
FactuGES/BaseDatos/TablaTrimestres.pas
2007-06-26 08:08:27 +00:00

872 lines
27 KiB
ObjectPascal

{
===============================================================================
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-12-2002
Versión actual: 1.0.0
Fecha versión actual: 01-12-2002
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
===============================================================================
}
unit TablaTrimestres;
interface
uses
//Generales
SysUtils, Classes, Controls, IBSQL, cxGridDBTableView, cxCustomData, DB,
//Particulares
//Aplicacion
Framework, StrFunc, Entidades, Constantes, BaseDatos, RdxEmpresaActiva;
const
CTE_ABIERTO = 'A';
CTE_CERRADO = 'C';
type
//Trimestres
//Tipo enumerado correspondientes a los trimestres que manejara la aplicacion
TTrimestres = (entPrimerTrimestre,
entSegundoTrimestre,
entTercerTrimestre,
entCuartoTrimestre
);
////////////////////////////////////////////////////////////////////////////////
//TListaTrimestres
////////////////////////////////////////////////////////////////////////////////
TListaComboTrimestres = (tlcTriDefecto, tlcTriTodos, tlcTriAbiertos);
TSituacionTrimestre = (tstAbierto, tstCerrado);
TDatosTrimestre = class(TPersistent)
public
Codigo : String;
Nombre : String;
NombreCompleto : String; // Año + nombre
Situacion : TSituacionTrimestre;
FechaIni : TDate;
FechaFin : TDate;
Predeterminado : Boolean;
end;
TListaTrimestres = class(TListaObjetos)
private
FSQL: TStringList;
FTipo: TListaComboTrimestres;
property Tipo: TListaComboTrimestres Read FTipo;
function GetTrimestre(Index: Integer): TDatosTrimestre;
procedure inicializarSQL;
protected
procedure AssignTo(Dest: TPersistent); override;
procedure ObtenerLista; override;
procedure ObtenerListaBD;
public
property Items[Index: Integer] : TDatosTrimestre read GetTrimestre;
constructor Create(TipoLista: TListaComboTrimestres); overload;
destructor Destroy; override;
function getNumItem(Codigo: String): Integer;
function getCodItem(NumOrden: Integer): String;
function cargarLista(pItems: TStrings): Integer;
end;
////////////////////////////////////////////////////////////////////////////////
//TdmTablaTrimestres
////////////////////////////////////////////////////////////////////////////////
TdmTablaTrimestres = class(TDataModule)
private
function darCodigoTrimestre(Trimestre: TTrimestres; Ano: Variant): String; overload;
function darDescripcionTrimestre(Entidad: TTrimestres) : String; overload;
function darFechaIniTrimestre(Trimestre: TTrimestres; Ano: Integer): TDateTime; overload;
function darFechaFinTrimestre(Trimestre: TTrimestres; Ano: Integer): TDateTime; overload;
function existenTrimestres(CodigoEmpresa: Variant; Ano: Variant): Boolean;
function insertarTrimestre(Trimestre: TTrimestres; CodigoEmpresa: Variant; Ano: Variant) : Boolean;
function insertarTrimestres(CodigoEmpresa: Variant; Ano: Variant) : Boolean;
function darDatosTrimestre(var Datos: TDatosTrimestre): Boolean;
procedure IniciarSQLGrids;
public
sqlConsultarGridTrimestres : TStrings;
function crearTrimestres(CodigoEmpresa: Variant; Ano: Variant): boolean;
function darCodigoTrimestre(Ano: Variant; Trimestre: Integer): String; overload;
function darAnoTrimestre(CodigoEmpresa: Variant; CodigoTrimestre : Variant): TDateTime; overload;
function darDescripcionTrimestre(CodigoTrimestre : String): String; overload;
function darTrimestreActual : String;
function darDescripcionTrimestreActual : String;
function darDescripcionCompletaTrimestre(CodigoTrimestre : String): String;
function darFechaIniTrimestre(CodigoTrimestre : String): TDateTime; overload;
function darFechaFinTrimestre(CodigoTrimestre : String): TDateTime; overload;
function EstaTrimestreAbierto(CodigoTrimestre: String): boolean;
procedure AbrirTrimestre(CodigoTrimestre : String);
procedure CerrarTrimestre(CodigoTrimestre : String);
procedure PredeterminarTrimestre(CodigoTrimestre : String);
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
end;
var
dmTablaTrimestres: TdmTablaTrimestres;
const
//TRIMESTRES
CaptionsTrimestres : array [TTrimestres] of string = (
('Primer trimestre'), //entPrimerTrimestre
('Segundo trimestre'), //entSegundoTrimestre
('Tercer trimestre'), //entTercerTrimestre
('Cuarto trimestre') //entCuartoTrimestre
);
////////////////////////////////////////////////////////////////////////////////
// TRIMESTRES
////////////////////////////////////////////////////////////////////////////////
PRIMERO_INI = '01/01/';
PRIMERO_FIN = '31/03/';
SEGUNDO_INI = '01/04/';
SEGUNDO_FIN = '30/06/';
TERCERO_INI = '01/07/';
TERCERO_FIN = '30/09/';
CUARTO_INI = '01/10/';
CUARTO_FIN = '31/12/';
implementation
{$R *.DFM}
uses
TablaEmpresas, Variants;
////////////////////////////////////////////////////////////////////////////////
//TdmTablaTrimestres
////////////////////////////////////////////////////////////////////////////////
constructor TdmTablaTrimestres.Create (AOwner : TComponent);
begin
inherited;
{ Grids }
sqlConsultarGridTrimestres := TStringList.Create;
IniciarSQLGrids;
end;
destructor TdmTablaTrimestres.Destroy;
begin
{ Grids }
sqlConsultarGridTrimestres.Free;
inherited;
end;
function TdmTablaTrimestres.existenTrimestres(CodigoEmpresa: Variant; Ano: Variant): Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
if VarIsNull(CodigoEmpresa) then
exit;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select count(CODIGO) as NUMTRIMESTRES');
SQL.Add('from TRIMESTRES');
SQL.Add(' where SUBSTR(FECHAINI, 3, 4) = :ANO');
SQL.Add(' and CODIGOEMPRESA = :CODIGOEMPRESA');
try
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
if VarIsNull(Ano)
then ParamByName('ANO').AsString := Copy(dmBaseDatos.darAno,3,2)
else ParamByName('ANO').AsString := Copy(Ano,3,2);
Prepare;
ExecQuery;
Result := (FieldByName('NUMTRIMESTRES').AsInteger <> 0);
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaTrimestres.DarDatosTrimestre(var Datos: TDatosTrimestre): Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
if EsCadenaVacia(Datos.Codigo) then
Exit;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select TR.CODIGOEMPRESA, TR.CODIGO, TR.NOMBRE, TR.SITUACION, ');
SQL.Add('TR.FECHAINI, TR.FECHAFIN, EM.CODIGOTRIMESTRE ');
SQL.Add('from TRIMESTRES TR, EMPRESAS EM');
SQL.Add('where TR.CODIGOEMPRESA = :CODIGOEMPRESA ');
SQL.Add('and EM.CODIGO = TR.CODIGOEMPRESA ');
SQL.Add('and TR.CODIGO = :CODIGO');
try
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGO').AsString := Datos.Codigo;
Prepare;
ExecQuery;
if (RecordCount > 0) then
begin
with Datos do
begin
NOMBRE := FieldByName('NOMBRE').AsString;
if FieldByName('SITUACION').AsString = CTE_ABIERTO then
Situacion := tstAbierto
else
Situacion := tstCerrado;
FECHAINI := FieldByName('FECHAINI').AsDate;
FECHAFIN := FieldByName('FECHAFIN').AsDate;
Predeterminado := (FieldByName('CODIGOTRIMESTRE').AsString = Datos.Codigo);
NombreCompleto := FormatDateTime('yyyy', FechaIni) + ' ' + Nombre;
Result := True;
end;
end;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaTrimestres.crearTrimestres(CodigoEmpresa: Variant; Ano: Variant): boolean;
begin
Result := True;
if not existenTrimestres(CodigoEmpresa, Ano) then
Result := insertarTrimestres(CodigoEmpresa, Ano);
end;
function TdmTablaTrimestres.insertarTrimestre(Trimestre: TTrimestres; CodigoEmpresa: Variant; Ano: Variant): Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
if VarIsNull(CodigoEmpresa) then
exit;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('insert into TRIMESTRES');
SQL.Add('(CODIGOEMPRESA, CODIGO, NOMBRE, SITUACION, FECHAINI, FECHAFIN) ');
SQL.Add('VALUES ');
SQL.Add('(:CODIGOEMPRESA, :CODIGO, :NOMBRE, :SITUACION, :FECHAINI, :FECHAFIN)');
ParamByName('CODIGOEMPRESA').AsVariant := CodigoEmpresa;
ParamByName('CODIGO').AsString := darCodigoTrimestre(Trimestre, Ano);
ParamByName('SITUACION').AsString := CTE_ABIERTO;
ParamByName('NOMBRE').AsString := darDescripcionTrimestre(Trimestre);
ParamByName('FECHAINI').AsDateTime := darFechaIniTrimestre(Trimestre, Ano);
ParamByName('FECHAFIN').AsDateTime := darFechaFinTrimestre(Trimestre, Ano);
try
Prepare;
ExecQuery;
Result := True;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaTrimestres.insertarTrimestres(CodigoEmpresa: Variant; Ano: Variant): Boolean;
var
AuxAno: Variant;
begin
Result := False;
if VarIsNull(Ano)
then AuxAno := dmBaseDatos.DarAno
else AuxAno := Ano;
if not insertarTrimestre(entPrimerTrimestre, CodigoEmpresa, AuxAno) then begin
exit;
end;
if not insertarTrimestre(entSegundoTrimestre, CodigoEmpresa, AuxAno) then begin
exit;
end;
if not insertarTrimestre(entTercerTrimestre, CodigoEmpresa, AuxAno) then begin
exit;
end;
if not insertarTrimestre(entCuartoTrimestre, CodigoEmpresa, AuxAno) then begin
exit;
end;
Result := True;
end;
function TdmTablaTrimestres.darFechaIniTrimestre(Trimestre: TTrimestres; Ano: Integer): TDateTime;
begin
case Trimestre of
entPrimerTrimestre: if (Ano = -1)
then Result := StrToDateTime(PRIMERO_INI + dmBaseDatos.darAno)
else Result := StrToDateTime(PRIMERO_INI + IntToStr(Ano));
entSegundoTrimestre: if (Ano = -1)
then Result := StrToDateTime(SEGUNDO_INI + dmBaseDatos.darAno)
else Result := StrToDateTime(SEGUNDO_INI + IntToStr(Ano));
entTercerTrimestre: if (Ano = -1)
then Result := StrToDateTime(TERCERO_INI + dmBaseDatos.darAno)
else Result := StrToDateTime(TERCERO_INI + IntToStr(Ano));
entCuartoTrimestre: if (Ano = -1)
then Result := StrToDateTime(CUARTO_INI + dmBaseDatos.darAno)
else Result := StrToDateTime(CUARTO_INI + IntToStr(Ano));
end;
end;
function TdmTablaTrimestres.darFechaFinTrimestre(Trimestre: TTrimestres; Ano: Integer): TDateTime;
begin
case Trimestre of
entPrimerTrimestre: if (Ano = -1)
then Result := StrToDateTime(PRIMERO_FIN + dmBaseDatos.darAno)
else Result := StrToDateTime(PRIMERO_FIN + IntToStr(Ano));
entSegundoTrimestre: if (Ano = -1)
then Result := StrToDateTime(SEGUNDO_FIN + dmBaseDatos.darAno)
else Result := StrToDateTime(SEGUNDO_FIN + IntToStr(Ano));
entTercerTrimestre: if (Ano = -1)
then Result := StrToDateTime(TERCERO_FIN + dmBaseDatos.darAno)
else Result := StrToDateTime(TERCERO_FIN + IntToStr(Ano));
entCuartoTrimestre: if (Ano = -1)
then Result := StrToDateTime(CUARTO_FIN + dmBaseDatos.darAno)
else Result := StrToDateTime(CUARTO_FIN + IntToStr(Ano));
end;
end;
procedure TdmTablaTrimestres.IniciarSQLGrids;
begin
with sqlConsultarGridTrimestres do
begin
Add('select CODIGO, cast(substr(extract(year from FECHAINI),3,4) as varchar(2)), NOMBRE, SITUACION, ');
Add('FECHAINI, FECHAFIN ');
Add('from TRIMESTRES ');
Add('where CODIGOEMPRESA = :CODIGOEMPRESA');
Add('union ');
Add('select cast(substr(extract(year from FECHAINI),3,4) as varchar(3)), cast(''-1'' as varchar(2)), ');
Add('cast(''Año ''||extract(year from FECHAINI) as varchar(100)), cast(''1'' as varchar(1)), ');
Add('cast(''01.01.'' || extract(year from FECHAINI) as Date), cast(''31.12.'' || extract(year from FECHAINI) as Date) ');
Add('from TRIMESTRES ');
end;
end;
function TdmTablaTrimestres.EstaTrimestreAbierto(CodigoTrimestre: String): boolean;
var
FTrimestre : TDatosTrimestre;
begin
Result := False;
if EsCadenaVacia(CodigoTrimestre) then
Exit;
FTrimestre := TDatosTrimestre.Create;
try
Result := (FTrimestre.Situacion = tstAbierto);
finally
FTrimestre.Free;
end;
end;
function TdmTablaTrimestres.DarTrimestreActual: String;
var
Ano : String;
Fecha : TDateTime;
CodTri : String;
begin
Ano := Copy(dmBaseDatos.DarAno, 3, 2);
Fecha := dmBaseDatos.DarFecha;
if (Fecha >= DarFechaIniTrimestre(entPrimerTrimestre, -1)) and
(Fecha <= DarFechaFinTrimestre(entPrimerTrimestre, -1)) then
CodTri := '0';
if (Fecha >= DarFechaIniTrimestre(entSegundoTrimestre, -1)) and
(Fecha <= DarFechaFinTrimestre(entSegundoTrimestre, -1)) then
CodTri := '1';
if (Fecha >= DarFechaIniTrimestre(entTercerTrimestre, -1)) and
(Fecha <= DarFechaFinTrimestre(entTercerTrimestre, -1)) then
CodTri := '2';
if (Fecha >= DarFechaIniTrimestre(entCuartoTrimestre, -1)) and
(Fecha <= DarFechaFinTrimestre(entCuartoTrimestre, -1)) then
CodTri := '3';
Result := Ano + CodTri;
end;
procedure TdmTablaTrimestres.AbrirTrimestre(CodigoTrimestre: String);
var
oSQL : TIBSQL;
begin
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('update TRIMESTRES set ');
SQL.Add('SITUACION = :SITUACION ');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add('and CODIGO = :CODIGO');
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGO').AsString := CodigoTrimestre;
ParamByName('SITUACION').AsString := CTE_ABIERTO;
try
Prepare;
ExecQuery;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TdmTablaTrimestres.CerrarTrimestre(CodigoTrimestre: String);
var
oSQL : TIBSQL;
begin
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('update TRIMESTRES set ');
SQL.Add('SITUACION = :SITUACION ');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add(' and CODIGO = :CODIGO');
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGO').AsString := CodigoTrimestre;
ParamByName('SITUACION').AsString := CTE_CERRADO;
try
Prepare;
ExecQuery;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TdmTablaTrimestres.PredeterminarTrimestre(
CodigoTrimestre: String);
var
oSQL : TIBSQL;
begin
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
try
SQL.Clear;
SQL.Add('update EMPRESAS set ');
SQL.Add('CODIGOTRIMESTRE = :CODIGOTRIMESTRE');
SQL.Add('where CODIGO = :CODIGOEMPRESA');
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGOTRIMESTRE').AsString := CodigoTrimestre;
Prepare;
ExecQuery;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
{ TListaTrimestres }
function TdmTablaTrimestres.darFechaFinTrimestre(
CodigoTrimestre: String): TDateTime;
var
FDatosTrimestre : TDatosTrimestre;
begin
FDatosTrimestre := TDatosTrimestre.Create;
try
FDatosTrimestre.Codigo := CodigoTrimestre;
darDatosTrimestre(FDatosTrimestre);
Result := FDatosTrimestre.FechaFin;
finally
FDatosTrimestre.Free;
end;
end;
function TdmTablaTrimestres.darFechaIniTrimestre(
CodigoTrimestre: String): TDateTime;
var
FDatosTrimestre : TDatosTrimestre;
begin
FDatosTrimestre := TDatosTrimestre.Create;
try
FDatosTrimestre.Codigo := CodigoTrimestre;
darDatosTrimestre(FDatosTrimestre);
Result := FDatosTrimestre.FechaIni;
finally
FDatosTrimestre.Free;
end;
end;
////////////////////////////////////////////////////////////////////////////////
//TListaTrimestres
////////////////////////////////////////////////////////////////////////////////
function TListaTrimestres.GetTrimestre(Index: Integer): TDatosTrimestre;
begin
Result := TDatosTrimestre(FLista.Items[Index]);
end;
procedure TListaTrimestres.ObtenerListaBD;
var
oSQL : TIBSQL;
FTrimestre : TDatosTrimestre;
begin
oSQL := TIBSQL.Create(nil);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Text := FSQL.Text;
try
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Prepare;
ExecQuery;
while not EOF do begin
FTrimestre := TDatosTrimestre.Create();
FTrimestre.Codigo := FieldByName('CODIGO').AsString;
FTrimestre.Nombre := FieldByName('NOMBRE').AsString;
if FieldByName('SITUACION').AsString = CTE_ABIERTO
then FTrimestre.Situacion := tstAbierto
else FTrimestre.Situacion := tstCerrado;
FTrimestre.FechaIni := FieldByName('FECHAINI').AsDate;
FTrimestre.FechaFin := FieldByName('FECHAFIN').AsDate;
FTrimestre.Predeterminado := (FieldByName('CODIGOTRIMESTRE').AsString = FTrimestre.Codigo);
FTrimestre.NombreCompleto := FormatDateTime('yyyy', FTrimestre.FechaIni) + ' - ' + FTrimestre.Nombre;
FLista.Add(FTrimestre);
Next;
end;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TListaTrimestres.AssignTo(Dest: TPersistent);
begin
//
end;
function TListaTrimestres.cargarLista(pItems: TStrings): Integer;
//Carga todos los trimestres en el combox y devuelve el elemento determinado por defecto
var i: integer;
begin
Result := 0;
for i := 0 to FLista.Count - 1 do
begin
Case Tipo of
tlcTriDefecto : pItems.Add(Self.Items[i].Nombre);
tlcTriTodos,
tlcTriAbiertos : pItems.Add(Self.Items[i].NombreCompleto);
end;
if Self.Items[i].Predeterminado then
Result := i;
end;
end;
destructor TListaTrimestres.Destroy;
begin
FSQL.Free;
FSQL := nil;
inherited;
end;
constructor TListaTrimestres.Create(TipoLista: TListaComboTrimestres);
begin
inherited Create;
FSQL := TStringList.Create;
fTipo := TipoLista;
case (Tipo) of
tlcTriDefecto : ObtenerLista;
tlcTriTodos,
tlcTriAbiertos: begin
inicializarSQL;
ObtenerListaBD;
end;
end;
end;
procedure TListaTrimestres.ObtenerLista;
var
FTrimestre : TDatosTrimestre;
begin
FTrimestre := TDatosTrimestre.Create();
FTrimestre.Nombre := dmTablaTrimestres.darDescripcionTrimestre(entPrimerTrimestre);
FTrimestre.Situacion := tstAbierto;
FTrimestre.NombreCompleto := dmTablaTrimestres.darDescripcionTrimestre(entPrimerTrimestre);
FLista.Add(FTrimestre);
FTrimestre := TDatosTrimestre.Create();
FTrimestre.Nombre := dmTablaTrimestres.darDescripcionTrimestre(entSegundoTrimestre);
FTrimestre.Situacion := tstAbierto;
FTrimestre.NombreCompleto := dmTablaTrimestres.darDescripcionTrimestre(entSegundoTrimestre);
FLista.Add(FTrimestre);
FTrimestre := TDatosTrimestre.Create();
FTrimestre.Nombre := dmTablaTrimestres.darDescripcionTrimestre(entTercerTrimestre);
FTrimestre.Situacion := tstAbierto;
FTrimestre.NombreCompleto := dmTablaTrimestres.darDescripcionTrimestre(entTercerTrimestre);
FLista.Add(FTrimestre);
FTrimestre := TDatosTrimestre.Create();
FTrimestre.Nombre := dmTablaTrimestres.darDescripcionTrimestre(entCuartoTrimestre);
FTrimestre.Situacion := tstAbierto;
FTrimestre.NombreCompleto := dmTablaTrimestres.darDescripcionTrimestre(entCuartoTrimestre);
FLista.Add(FTrimestre);
end;
procedure TListaTrimestres.inicializarSQL;
begin
case Tipo of
tlcTriTodos : Begin
with FSQL do
begin
Add('select TR.CODIGOEMPRESA, TR.CODIGO, TR.NOMBRE, TR.SITUACION, ');
Add('TR.FECHAINI, TR.FECHAFIN, EM.CODIGOTRIMESTRE ');
Add('from TRIMESTRES TR, EMPRESAS EM ');
Add('where TR.CODIGOEMPRESA = :CODIGOEMPRESA ');
Add('and EM.CODIGO = TR.CODIGOEMPRESA ');
Add('order by TR.FECHAINI');
end;
end;
tlcTriAbiertos : Begin
with FSQL do
begin
Add('select TR.CODIGOEMPRESA, TR.CODIGO, TR.NOMBRE, TR.SITUACION, ');
Add('TR.FECHAINI, TR.FECHAFIN, EM.CODIGOTRIMESTRE ');
Add('from TRIMESTRES TR, EMPRESAS EM ');
Add('where TR.CODIGOEMPRESA = :CODIGOEMPRESA ');
Add('and EM.CODIGO = TR.CODIGOEMPRESA ');
Add('and TR.SITUACION = ''A'' ');
Add('order by TR.FECHAINI');
end;
end;
end;
end;
function TdmTablaTrimestres.darCodigoTrimestre(Trimestre: TTrimestres; Ano: Variant): String;
begin
case Trimestre of
entPrimerTrimestre : Result := copy(Ano,3,2) + '0';
entSegundoTrimestre : Result := copy(Ano,3,2) + '1';
entTercerTrimestre : Result := copy(Ano,3,2) + '2';
entCuartoTrimestre : Result := copy(Ano,3,2) + '3';
end;
end;
////////////////////////////////////////////////////////////////////////////////
//ENTIDADES
////////////////////////////////////////////////////////////////////////////////
function TdmTablaTrimestres.darDescripcionTrimestre (Entidad : TTrimestres) : string;
begin
Result := StrCapitalize(CaptionsTrimestres [Entidad]);
end;
function TdmTablaTrimestres.darCodigoTrimestre(Ano: Variant; Trimestre: Integer): String;
begin
Result := (copy(Ano,3,2) + IntToStr(Trimestre));
end;
function TdmTablaTrimestres.DarDescripcionTrimestreActual: String;
var
Ano : String;
Fecha : TDateTime;
begin
Result := '';
Ano := Copy(dmBaseDatos.DarAno, 3, 2);
Fecha := dmBaseDatos.DarFecha;
if (Fecha >= DarFechaIniTrimestre(entPrimerTrimestre, -1)) and
(Fecha <= DarFechaFinTrimestre(entPrimerTrimestre, -1)) then
Result := darDescripcionTrimestre(entPrimerTrimestre);
if (Fecha >= DarFechaIniTrimestre(entSegundoTrimestre, -1)) and
(Fecha <= DarFechaFinTrimestre(entSegundoTrimestre, -1)) then
Result := darDescripcionTrimestre(entSegundoTrimestre);
if (Fecha >= DarFechaIniTrimestre(entTercerTrimestre, -1)) and
(Fecha <= DarFechaFinTrimestre(entTercerTrimestre, -1)) then
Result := darDescripcionTrimestre(entTercerTrimestre);
if (Fecha >= DarFechaIniTrimestre(entCuartoTrimestre, -1)) and
(Fecha <= DarFechaFinTrimestre(entCuartoTrimestre, -1)) then
Result := darDescripcionTrimestre(entCuartoTrimestre);
end;
{
function TListaTrimestres.getElemPredeterminado: TDatosTrimestre;
var i, j : integer;
begin
Result := Nil;
//Recorremos lista
i := 0;
while ((not Self.Items[i].Predeterminado) and (i < FLista.Count - 1)) do
inc (i);
if Self.Items[i].Predeterminado then
Result := Self.Items[i];
end;
}
function TdmTablaTrimestres.darDescripcionTrimestre(CodigoTrimestre: String): String;
var
Codigo : Integer;
begin
Result := '';
if esCadenaVacia(CodigoTrimestre) then
exit;
Codigo := StrToInt(Copy(CodigoTrimestre,3,1));
Case Codigo of
0: Result := darDescripcionTrimestre(entPrimerTrimestre);
1: Result := darDescripcionTrimestre(entSegundoTrimestre);
2: Result := darDescripcionTrimestre(entTercerTrimestre);
3: Result := darDescripcionTrimestre(entCuartoTrimestre);
end;
end;
function TdmTablaTrimestres.darAnoTrimestre(CodigoEmpresa: Variant; CodigoTrimestre: Variant): TDateTime;
var
oSQL : TIBSQL;
begin
Result := dmBaseDatos.DarFecha;
if VarIsNull(CodigoEmpresa) or VarIsNull(CodigoTrimestre) then
Exit;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select CODIGOEMPRESA, CODIGO, FECHAINI ');
SQL.Add('from TRIMESTRES');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA ');
SQL.Add('and CODIGO = :CODIGO');
try
ParamByName('CODIGOEMPRESA').AsVariant := CodigoEmpresa;
ParamByName('CODIGO').AsString := CodigoTrimestre;
Prepare;
ExecQuery;
if (RecordCount > 0) then
Result := FieldByName('FECHAINI').AsDate;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TListaTrimestres.getNumItem(Codigo: String): Integer;
var
i : integer;
begin
i := 0;
while ((Self.Items[i].Codigo <> Codigo) and (i < FLista.Count - 1)) do
inc (i);
if Self.Items[i].Codigo = Codigo
then Result := i
else Result := -1;
end;
function TListaTrimestres.getCodItem(NumOrden: Integer): String;
var i, j : integer;
begin
Result := Self.Items[NumOrden].Codigo;
end;
function TdmTablaTrimestres.darDescripcionCompletaTrimestre(CodigoTrimestre: String): String;
var
oSQL : TIBSQL;
begin
if esCadenaVacia(CodigoTrimestre) then
exit;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select NOMBRE, FECHAINI ');
SQL.Add('from TRIMESTRES ');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA');
SQL.Add('and CODIGO = :CODIGO');
try
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGO').AsString := CodigoTrimestre;
Prepare;
ExecQuery;
if (RecordCount > 0) then
Result := copy (FieldByName('FECHAINI').AsString, 7,4) + ' - ' + FieldByName('NOMBRE').AsString;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
end.