//--------------------------------------------------------------------------- #include #include #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" ); } } //---------------------------------------------------------------------------