CAP/cap_gestion/capg_gfact.cpp
2021-09-01 18:53:06 +02:00

120 lines
4.8 KiB
C++
Raw Permalink Blame History

//---------------------------------------------------------------------------
#include <vcl.h>
#include <inifiles.hpp>
#pragma hdrstop
#include "capg_gfact.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TgFact *gFact;
//---------------------------------------------------------------------------
__fastcall TgFact::TgFact(TComponent* Owner)
: TForm(Owner)
{
TIniFile *ini;
ini = new TIniFile( ExtractFileDir( Application->ExeName ) + "\\CAP.INI" );
// Cargamos los importes del periodo (Mes/biM/triM/Anual)
ImportesPeriodo[0] = ini->ReadFloat( "CAP_g", "ImporteMensual", 0.0 );
ImportesPeriodo[1] = ini->ReadFloat( "CAP_g", "ImporteBimestral", 0.0 );
ImportesPeriodo[2] = ini->ReadFloat( "CAP_g", "ImporteTrimestral", 0.0 );
ImportesPeriodo[3] = ini->ReadFloat( "CAP_g", "ImporteAnual", 0.0 );
delete ini;
TbFacturas->Active = true;
TbAbonados->Active = true;
}
//---------------------------------------------------------------------------
TDateTime __fastcall TgFact::DiasEnPeriodoDesde( TDateTime fechaE )
{
TDateTime NuevaFechaS;
unsigned short YY, MM, DD;
fechaE.DecodeDate( &YY, &MM, &DD );
// Le asignamos un nuevo periodo...
switch( TbAbonados->FieldByName("fperiodo")->AsInteger )
{
case 0: // Mensual
NuevaFechaS = EncodeDate( (MM==12)?(YY+1):YY, (MM==12)?1:(MM+1), 1 );
break;
case 1: // BiMestral
NuevaFechaS = EncodeDate( (MM>=11)?(YY+1):YY, (MM==11)?1:( (MM==12)?2:(MM+2) ), 1 );
break;
case 2: // TriMestral
NuevaFechaS = EncodeDate( (MM>=10)?(YY+1):YY, (MM==10)?1:( (MM==11)?2:( (MM==12)? 3: (MM+3) )), 1 );
break;
case 3: // Anual
NuevaFechaS = EncodeDate( YY+1, MM+1, 1 );
break;
default:
NuevaFechaS = fechaE + 15;
break;
}
return NuevaFechaS;
}
//---------------------------------------------------------------------------
Currency __fastcall TgFact::ImporteDelPeriodo()
{
if ( TbAbonados->FieldByName("fperiodo")->AsInteger >= 0 &&
TbAbonados->FieldByName("fperiodo")->AsInteger <= 3 )
return ImportesPeriodo[ TbAbonados->FieldByName("fperiodo" )->AsInteger ];
return 0;
}//---------------------------------------------------------------------------
void __fastcall TgFact::BitBtn1Click(TObject *Sender)
{
if ( ComboBox1->ItemIndex >=0 && ComboBox2->ItemIndex >= 0 )
{
TDateTime FechaInicioFacturas = EncodeDate( ComboBox2->ItemIndex+2002, ComboBox1->ItemIndex+1, 1 );
ComboBox1->Visible = false;
ComboBox2->Visible = false;
BitBtn1->Visible = false;
ProgressBar1->Position=0;
ProgressBar1->Visible=true;
TbAbonados->Active = true;
ProgressBar1->Max = TbAbonados->RecordCount;
TbAbonados->First();
while ( !TbAbonados->Eof )
{
// Si el estado es -ALTA-
if ( TbAbonados->FieldByName("estado")->AsInteger == 0 )
{
TbFacturas->Filter = "[idc] = '" + TbAbonados->FieldByName("ida")->AsString+"'";
TbFacturas->Filtered = true;
// Si tuviera alguna factura impagada
if ( TbFacturas->Locate( "pagado", false, TLocateOptions() << loCaseInsensitive ) )
{
TbAbonados->Edit();
TbAbonados->FieldByName("estado")->AsInteger = 2; // Baja-Temporal
TbAbonados->Post();
} else {
// Todas las facturas las tiene pagadas...
// Si su ultimo abono NO ESTARA VIGENTE en la fecha seleccionada
if ( TbFacturas->FieldByName("fechaS")->AsDateTime <= FechaInicioFacturas )
{
// Insertamos la nueva factura...
TbFacturas->Insert();
TbFacturas->FieldByName("idc")->AsInteger = TbAbonados->FieldByName("ida")->AsInteger;
TbFacturas->FieldByName("pagado")->AsBoolean = false;
TbFacturas->FieldByName("fechaE")->AsDateTime = FechaInicioFacturas;
TbFacturas->FieldByName("fechaS")->AsDateTime = DiasEnPeriodoDesde( FechaInicioFacturas );
TbFacturas->FieldByName("importe")->AsCurrency = ImporteDelPeriodo();
TbFacturas->Post();
}
TbFacturas->Filtered = false;
}
}
ProgressBar1->Position++;
TbAbonados->Next();
}
Close();
} else {
ShowMessage( "El Mes y/o A<>o seleccionados no son correctos" );
}
}
//---------------------------------------------------------------------------