⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lxaccount.cc

📁 LxBank是一个基于Qt/X的家庭储蓄应用程序
💻 CC
📖 第 1 页 / 共 5 页
字号:
  //     break;  //   case HBCI_JOB_RESULT_SUCCESS:  //     cerr << "\nJobTransfer: job was successfully performed" << endl;  //     break;  //   case HBCI_JOB_RESULT_FAILED:  //     cerr << "\nJobTransfer: job was executed and failed" << endl;  //   }  // check interactor state  if ( (*intActor).aborted() ){    (*intActor).abort(false);    //     cerr << "\nStatus of Interactor: aborted! Interactor reset!" << endl;  }  //   else{  //     cerr << "\nStatus of Interactor: not aborted!" << endl;  //   }  // check job result  if ( (*transferJob).result() == HBCI_JOB_RESULT_SUCCESS ){    cerr << "\nMoney Transfer job has been performed successfully!" << endl;    //       cerr << "\nSave HBCI stuff!" << endl;    hbciApi->save();    HBCI::Transaction procTransaction ( transaction );    // set execution date    QDate today ( QDate::currentDate () );    HBCI::Date todayHBCI ( today.day(), today.month(), today.year() );    procTransaction.setValutaDate ( todayHBCI );    LxRemittance *prm = new LxRemittance ( this, procTransaction, LxRemittance::processed );    removeRemittance ( rm );    addRemittance ( prm );  }else{    cerr << "\nMoney Transfer job has not been performed successfully!" << endl;  }  // clear queue  list<HBCI::Pointer<HBCI::OutboxJob> > qjobs = hbciApi->queuedJobs ();  list<HBCI::Pointer<HBCI::OutboxJob> >::iterator jb;  //   cerr << "\nClear queue!\n\nNumber of queued jobs = " << qjobs.size() << endl;  for ( jb = qjobs.begin(); jb != qjobs.end(); ++jb){    hbciApi->removeQueuedJob ( *jb );  }  //   qjobs = hbciApi->queuedJobs ();  //   cerr << "\nNumber of queued jobs = " << qjobs.size() << endl;}int LxAccount::checkForBank (unsigned long blz){  int nbanks;  const BankCodeVec & banksOfBLZ = hbciApi->getBanks (blz);  nbanks = banksOfBLZ.size();  return nbanks;}AccountNumberCheck::Result LxAccount::checkForAccount (const QString &blz, const QString &acc, string &met){  AccountNumberCheck::Result result;  met = "";  const BankCodeVec & banksOfBLZ = hbciApi->getBanks (blz);  if ( banksOfBLZ.empty() ){    result = AccountNumberCheck::BANK_NOT_KNOWN;    return result;  }//   AccountNumberCheck checker("/home/franz/progs/HBCI/lxbank/lib/LxBank/ktoblzcheckblz.txt");  AccountNumberCheck checker(KTOBLZFILE);  const LxBankCodeData &bcdat = banksOfBLZ.front();  string methode(bcdat.getPZmethode());  if ( methode == "09" ){    met = methode;    result = AccountNumberCheck::UNKNOWN;    return result;  }  if ( methode == "A1" ){    met = methode;    result = AccountNumberCheck::UNKNOWN;    return result;  }  string blzStr(blz.latin1());  string accStr(acc.latin1());  result = checker.check(blzStr, accStr, methode);  switch (result){  case AccountNumberCheck::OK:    met = methode;    result = AccountNumberCheck::OK;    break;  case AccountNumberCheck::UNKNOWN:    met = methode;    result = AccountNumberCheck::UNKNOWN;    break;  case AccountNumberCheck::ERROR:    met = methode;    result = AccountNumberCheck::ERROR;    break;  case AccountNumberCheck::BANK_NOT_KNOWN:    result = AccountNumberCheck::BANK_NOT_KNOWN;  }  return result;}void LxAccount::initAccount(){  if ( !(hbciAccount.isValid()) ){    return;  }  // we have an valid account  HBCI::Pointer<HBCI::Bank> bank = (*hbciAccount).bank();  if ( !(bank.isValid()) ) {    return;  }  // we have a valid bank  // account config file name  accConfigFile = hbciApi->getConfigDir() + "/account_" + (*bank).bankCode() + "_" + (*hbciAccount).accountId();  currRemConfigFile = accConfigFile + "_current_remittances";  procRemConfigFile = accConfigFile + "_processed_remittances";  // load account configuration  loadAccountConfig ( );  loadCurrentRemittances ( );  loadProcessedRemittances ( );  // currency  currency = (*hbciAccount).currency().c_str();  // BANK  institut = (*bank).name().c_str();  // BLZ  bankLeitZahl = (*bank).bankCode().c_str();  // country code  country = (*bank).countryCode ();  // KONTONUMMER  kontoNummer = (*hbciAccount).accountId().c_str();    // KONTONAME  accountName = (*hbciAccount).accountName().c_str();    // KONTOINHABER  inhaber = (*hbciAccount).name1().c_str();      // DATUMLETZTERAUSZUG  // KONTOSTAND  updateAccountData();}void LxAccount::updateAccountData(){  if ( !(hbciAccount.isValid()) ){    return;  }  // we have an valid account  // update last account statement date  if ( lastUpdated.isValid () ){    QDate tmpDate ( lastUpdated.year(), 		    lastUpdated.month(), 		    lastUpdated.day());    lastUpdatedStr = tmpDate.toString ();  }else{    lastUpdatedStr = "\0";  }  // update balance  HBCI::AccountBalance accBal = (*hbciAccount).balance();  HBCI::Balance        bal    = accBal.bookedBalance();  if ( bal.isDebit() ){//     cerr << "LxAccount::updateAccountData: isDebit returns true for BLZ/account "// 	 << bankLeitZahl << "/" << kontoNummer << "!" << endl;    HBCI::Value tval = bal.value();    double accval = tval.getValue();//     cerr << "accval = " << accval << endl;    accval *= -1.0;//     cerr << "accval = " << accval << endl;    HBCI::Value val( accval, tval.getCurrency () );    kontoStand = val.toReadableString().c_str();//     cerr << "kontoStand = '" << kontoStand << "'" << endl;    if ( kontoStand == "-0,00" ){      kontoStand = "0,00";    }  }else{//     cerr << "LxAccount::updateAccountData: isDebit returns false for BLZ/account "// 	 << bankLeitZahl << "/" << kontoNummer << "!" << endl;    HBCI::Value val = bal.value();    kontoStand = val.toReadableString().c_str();  }  bal = accBal.notedBalance();  HBCI::Value val = bal.value();  notedBalance = val.toReadableString().c_str();}void LxAccount::setupAccountStmtList ( ){  if ( !(hbciAccount.isValid()) ){    return;  }  QString skey;  int count;  double saldo;  LxAccountStmt *acStmtItem;  // get start balance  const HBCI::Value &val = startingBalance.value();  saldo = val.getValue();  // obtain transactions  const list<HBCI::Transaction> &transactions = (*hbciAccount).transactions();  list<HBCI::Transaction>::const_iterator trIt;  accountStmtList.clear ();  int sortKeyDigitCount = (int)(log10((double)transactions.size()) + 2.0);  for (trIt = transactions.begin(), count = 1; trIt != transactions.end(); ++trIt, ++count){    skey.sprintf ("%0*d", sortKeyDigitCount, count);    acStmtItem = new LxAccountStmt (count, skey, saldo, *trIt);    saldo = acStmtItem->getSaldo ();    accountStmtList.append ( acStmtItem );  }  LxAccountStmt *acs;  double umsatz, minUmsatz, maxUmsatz, minSaldo, maxSaldo;  for (acs = accountStmtList.first(), minUmsatz = maxUmsatz = minSaldo = maxSaldo = 0.0;       acs != 0; acs = accountStmtList.next()){    umsatz = acs->getUmsatz();    if ( umsatz > maxUmsatz )      maxUmsatz = umsatz;    else if ( umsatz < minUmsatz )      minUmsatz = umsatz;          saldo = acs->getSaldo();    if ( saldo > maxSaldo )      maxSaldo = saldo;    else if ( saldo < minSaldo )      minSaldo = saldo;  }  int minv, maxv, minDigits, maxDigits, uDigits, uBase, sDigits, sBase;      minv = (int)(minUmsatz * 100.0);  if ( minv )    minDigits = ((int) log10(fabs((double)minv))) + 1;  else    minDigits = 1;      maxv = (int)(maxUmsatz * 100.0);  if ( minv )    maxDigits = ((int) log10(fabs((double)maxv))) + 1;  else    maxDigits = 1;  if ( minDigits > maxDigits )    uDigits = minDigits + 1;  else    uDigits = maxDigits + 1;  uBase = (int)pow(10.0, (double)(uDigits-1));      minv = (int)(minSaldo * 100.0);  if ( minv )    minDigits = ((int) log10(fabs((double)minv))) + 1;  else    minDigits = 1;      maxv = (int)(maxSaldo * 100.0);  if ( minv )    maxDigits = ((int) log10(fabs((double)maxv))) + 1;  else    maxDigits = 1;  if ( minDigits > maxDigits )    sDigits = minDigits + 1;  else    sDigits = maxDigits + 1;  sBase = (int)pow(10.0, (double)(uDigits-1));  for (acs = accountStmtList.first(); acs != 0; acs = accountStmtList.next()){    acs->setUmsatzSortKey (uBase, uDigits, 100.0);    acs->setSaldoSortKey (sBase, sDigits, 100.0);  }  return;}// void LxAccount::setupRemittanceLists ( )// {// //   cerr << "LxAccount::setupRemittanceLists called!" << endl;//   if ( remittanceListsRead ){//     return;//   }//   currentRemittanceList.clear ();//   processedRemittanceList.clear ();//   QFile rm(remittanceFile);//   if ( rm.open(IO_ReadOnly) ) {      // file opened successfully//     QStringList remittanceData;//     QTextStream rmTxt( &rm );        // use a text stream//     QString txtLine;//     while ( !rmTxt.eof() ) {        // until end of file...//       txtLine = rmTxt.readLine();   // line of text excluding '\n'//       if ( LxAccount::isDataLine (txtLine) ){// 	  remittanceData.append(txtLine);//       }//     }//     rm.close();//     if ( !remittanceData.isEmpty () ){//       QString skey;//       QStringList::Iterator it;//       int count;//       LxRemittance *remittance;//       LxRemittance::RemittanceStatus rmType;//       for (it = remittanceData.begin(); it != remittanceData.end(); ++it){// 	remittance = new LxRemittance ( this, *it );// 	rmType = remittance->getStatus ();// 	switch (rmType){// 	case LxRemittance::current:// 	  currentRemittanceList.append ( remittance );// 	  break;// 	case LxRemittance::processed:// 	  processedRemittanceList.append ( remittance );// 	  break;// 	}//       }//       if ( !currentRemittanceList.isEmpty() ){// 	int digits = (int)(log10((double)currentRemittanceList.count()) + 2.0);// 	for (remittance = currentRemittanceList.first(), count = 1;// 	     remittance != 0; remittance = currentRemittanceList.next(), ++count){// 	  remittance->setNumberAndSortKey (count, digits);// 	}//       }//       if ( !processedRemittanceList.isEmpty() ){// 	int digits = (int)(log10((double)processedRemittanceList.count()) + 2.0);// 	for (remittance = processedRemittanceList.first(), count = 1;// 	     remittance != 0; remittance = processedRemittanceList.next(), ++count){// 	  remittance->setNumberAndSortKey (count, digits);// 	}//       }//     }    //     remittanceListsRead = true;//     return;//   }else{//     cerr << "LxAccount::addRemittance: Unable to open file \"" << remittanceFile << "\"" << endl;//     exit (1);//   }// }void LxAccount::addRemittance ( LxRemittance *rm ){//   if ( !remittanceListsRead ){//     setupRemittanceLists ( );//   }  HBCI::Error err;  int count, digits;  LxRemittance *remittance;  LxRemittance::RemittanceStatus rmType = rm->getStatus ();  switch ( rmType ){  case LxRemittance::current:    // insert remittance into list    currentRemittanceList.append ( rm );    digits = (int)(log10((double)currentRemittanceList.count()) + 2.0);    for (remittance = currentRemittanceList.first(), count = 1;	 remittance != 0; remittance = currentRemittanceList.next(), ++count){      remittance->setNumberAndSortKey (count, digits);    }    // save remittances to file     err = saveCurrentRemittances ();    // update the user interface    emit updateCurrentRemittanceView( currentRemittanceList );    break;  case LxRemittance::processed:    // insert remittance into list    processedRemittanceList.append ( rm );    digits = (int)(log10((double)processedRemittanceList.count()) + 2.0);    for (remittance = processedRemittanceList.first(), count = 1;	 remittance != 0; remittance = processedRemittanceList.next(), ++count){      remittance->setNumberAndSortKey (count, digits);    }    // save remittances to file     err = saveProcessedRemittances ();    // update the user interface    emit updateProcessedRemittanceView( processedRemittanceList );    break;  }}void LxAccount::modifyRemittance ( LxRemittance *rm, LxRemittance *rmm ){//   if ( !remittanceListsRead ){//     setupRemittanceLists ( );//   }  HBCI::Error err;  int index, count, digits;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -