git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES/trunk@4 3f40d355-893c-4141-8e64-b1d9be72e7e7
872 lines
27 KiB
ObjectPascal
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.
|