120 lines
4.8 KiB
C++
120 lines
4.8 KiB
C++
//---------------------------------------------------------------------------
|
|
|
|
#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" );
|
|
}
|
|
|
|
}
|
|
//---------------------------------------------------------------------------
|