void TimetableWarning::toParametersMap( ParametersMap& pm, bool withDates ) const { pm.insert(DATA_NUMBER, getNumber()); pm.insert(DATA_TEXT, getText()); // Active days const Calendar& calendar(getCalendar()); date firstDate(calendar.getFirstActiveDate()); date lastDate(calendar.getLastActiveDate()); if(withDates) { for(date day(firstDate); day <lastDate; day += days(1)) { // Jump over inactive days if(!calendar.isActive(day)) { continue; } // Writing the active date to a sub map boost::shared_ptr<ParametersMap> datePM(new ParametersMap); datePM->insert(ATTR_DATE, day); pm.insert(TAG_DAY, datePM); } } // Active days bounds pm.insert(DATA_FIRST_DATE, firstDate); pm.insert(DATA_LAST_DATE, firstDate); // Active days bounds (old schema - deprecated) pm.insert(DATA_FIRST_DAY, firstDate.day()); pm.insert(DATA_FIRST_MONTH, firstDate.month()); pm.insert(DATA_FIRST_YEAR, firstDate.year()); pm.insert(DATA_LAST_DAY, lastDate.day()); pm.insert(DATA_LAST_MONTH, lastDate.month()); pm.insert(DATA_LAST_YEAR, lastDate.year()); // Calendar template if(_calendarTemplate) { boost::shared_ptr<ParametersMap> calendarPM(new ParametersMap); _calendarTemplate->toParametersMap(*calendarPM, true); pm.insert(TAG_CALENDAR, calendarPM); } }
bool TransactionFilterWidget::filterTransaction(Transaction *trans, bool checkdate) { if(trans->type() == TRANSACTION_TYPE_SECURITY_BUY || trans->type() == TRANSACTION_TYPE_SECURITY_SELL) { if(transtype == TRANSACTION_TYPE_TRANSFER && ((SecurityTransaction*) trans)->account()->type() != ACCOUNT_TYPE_ASSETS) return true; if(transtype == TRANSACTION_TYPE_EXPENSE && ((SecurityTransaction*) trans)->account()->type() != ACCOUNT_TYPE_EXPENSES) return true; if(transtype == TRANSACTION_TYPE_INCOME && ((SecurityTransaction*) trans)->account()->type() != ACCOUNT_TYPE_INCOMES) return true; } else if(trans->type() != transtype) { return true; } if(includeButton->isChecked()) { if(toCombo->currentIndex() > 0 && tos[toCombo->currentIndex() - 1] != trans->toAccount()) { return true; } if(fromCombo->currentIndex() > 0 && froms[fromCombo->currentIndex() - 1] != trans->fromAccount()) { return true; } #if QT_VERSION >= 0x030200 if(!descriptionEdit->text().isEmpty() && !trans->description().startsWith(descriptionEdit->text(), Qt::CaseInsensitive)) { #else if(!descriptionEdit->text().isEmpty() && !trans->description().startsWith(descriptionEdit->text())) { #endif return true; } #if QT_VERSION >= 0x030200 if(payeeEdit && transtype == TRANSACTION_TYPE_EXPENSE && !payeeEdit->text().isEmpty() && !((Expense*) trans)->payee().startsWith(payeeEdit->text(), Qt::CaseInsensitive)) { #else if(payeeEdit && transtype == TRANSACTION_TYPE_EXPENSE && !payeeEdit->text().isEmpty() && !((Expense*) trans)->payee().startsWith(payeeEdit->text())) { #endif return true; } #if QT_VERSION >= 0x030200 if(payeeEdit && transtype == TRANSACTION_TYPE_INCOME && !payeeEdit->text().isEmpty() && !((Income*) trans)->payer().startsWith(payeeEdit->text(), Qt::CaseInsensitive)) { #else if(payeeEdit && transtype == TRANSACTION_TYPE_INCOME && !payeeEdit->text().isEmpty() && !((Income*) trans)->payer().startsWith(payeeEdit->text())) { #endif return true; } } else { if(toCombo->currentIndex() > 0 && tos[toCombo->currentIndex() - 1] == trans->toAccount()) { return true; } if(fromCombo->currentIndex() > 0 && froms[fromCombo->currentIndex() - 1] == trans->fromAccount()) { return true; } #if QT_VERSION >= 0x030200 if(!descriptionEdit->text().isEmpty() && trans->description().startsWith(descriptionEdit->text(), Qt::CaseInsensitive)) { #else if(!descriptionEdit->text().isEmpty() && trans->description().startsWith(descriptionEdit->text())) { #endif return true; } #if QT_VERSION >= 0x030200 if(payeeEdit && transtype == TRANSACTION_TYPE_EXPENSE && !payeeEdit->text().isEmpty() && ((Expense*) trans)->payee().startsWith(payeeEdit->text(), Qt::CaseInsensitive)) { #else if(payeeEdit && transtype == TRANSACTION_TYPE_EXPENSE && !payeeEdit->text().isEmpty() && ((Expense*) trans)->payee().startsWith(payeeEdit->text())) { #endif return true; } #if QT_VERSION >= 0x030200 if(payeeEdit && transtype == TRANSACTION_TYPE_INCOME && !payeeEdit->text().isEmpty() && ((Income*) trans)->payer().startsWith(payeeEdit->text(), Qt::CaseInsensitive)) { #else if(payeeEdit && transtype == TRANSACTION_TYPE_INCOME && !payeeEdit->text().isEmpty() && ((Income*) trans)->payer().startsWith(payeeEdit->text())) { #endif return true; } } if(minButton->isChecked() && trans->value() < minEdit->value()) { return true; } if(maxButton->isChecked() && trans->value() > maxEdit->value()) { return true; } if(checkdate && dateFromButton->isChecked() && trans->date() < from_date) { return true; } if(checkdate && trans->date() > to_date) { return true; } return false; } QDate TransactionFilterWidget::startDate() { if(!dateFromButton->isChecked()) return QDate(); return from_date; } QDate TransactionFilterWidget::endDate() { return to_date; } void TransactionFilterWidget::transactionsReset() { descriptionEdit->completionObject()->clear(); if(payeeEdit) payeeEdit->completionObject()->clear(); switch(transtype) { case TRANSACTION_TYPE_EXPENSE: { Expense *expense = budget->expenses.first(); while(expense) { if(!expense->description().isEmpty()) { descriptionEdit->completionObject()->addItem(expense->description()); } if(payeeEdit && !expense->payee().isEmpty()) { payeeEdit->completionObject()->addItem(expense->payee()); } expense = budget->expenses.next(); } break; } case TRANSACTION_TYPE_INCOME: { Income *income = budget->incomes.first(); while(income) { if(!income->description().isEmpty()) { descriptionEdit->completionObject()->addItem(income->description()); } if(payeeEdit && !income->payer().isEmpty()) { payeeEdit->completionObject()->addItem(income->payer()); } income = budget->incomes.next(); } break; } case TRANSACTION_TYPE_TRANSFER: { Transfer *transfer= budget->transfers.first(); while(transfer) { if(!transfer->description().isEmpty()) { descriptionEdit->completionObject()->addItem(transfer->description()); } transfer = budget->transfers.next(); } break; } } } void TransactionFilterWidget::transactionAdded(Transaction *trans) { if(descriptionEdit && trans->type() == transtype && (transtype != TRANSACTION_TYPE_INCOME || !((Income*) trans)->security())) { if(!trans->description().isEmpty()) descriptionEdit->completionObject()->addItem(trans->description()); if(payeeEdit && transtype == TRANSACTION_TYPE_EXPENSE && !((Expense*) trans)->payee().isEmpty()) payeeEdit->completionObject()->addItem(((Expense*) trans)->payee()); if(payeeEdit && transtype == TRANSACTION_TYPE_INCOME && !((Income*) trans)->payer().isEmpty()) payeeEdit->completionObject()->addItem(((Income*) trans)->payer()); } } void TransactionFilterWidget::transactionModified(Transaction *trans) { if(descriptionEdit && trans->type() == transtype && (transtype != TRANSACTION_TYPE_INCOME || !((Income*) trans)->security())) { if(!trans->description().isEmpty()) descriptionEdit->completionObject()->addItem(trans->description()); if(payeeEdit && transtype == TRANSACTION_TYPE_EXPENSE && !((Expense*) trans)->payee().isEmpty()) payeeEdit->completionObject()->addItem(((Expense*) trans)->payee()); if(payeeEdit && transtype == TRANSACTION_TYPE_INCOME && !((Income*) trans)->payer().isEmpty()) payeeEdit->completionObject()->addItem(((Income*) trans)->payer()); } } void TransactionFilterWidget::toChanged(const QDate &date) { bool error = false; if(!date.isValid()) { KMessageBox::error(this, i18n("Invalid date.")); error = true; } if(!error && dateFromEdit->date() > date) { if(dateFromButton->isChecked()) { KMessageBox::error(this, i18n("To date is before from date.")); } from_date = date; dateFromEdit->blockSignals(true); dateFromEdit->setDate(from_date); dateFromEdit->blockSignals(false); } if(error) { dateToEdit->setFocus(); dateToEdit->blockSignals(true); dateToEdit->setDate(to_date); dateToEdit->blockSignals(false); dateToEdit->lineEdit()->selectAll(); return; } to_date = date; emit filter(); } void TransactionFilterWidget::fromChanged(const QDate &date) { bool error = false; if(!date.isValid()) { KMessageBox::error(this, i18n("Invalid date.")); error = true; } if(!error && date > dateToEdit->date()) { KMessageBox::error(this, i18n("From date is after to date.")); to_date = date; dateToEdit->blockSignals(true); dateToEdit->setDate(to_date); dateToEdit->blockSignals(false); } if(error) { dateFromEdit->setFocus(); dateFromEdit->blockSignals(true); dateFromEdit->setDate(from_date); dateFromEdit->blockSignals(false); dateFromEdit->lineEdit()->selectAll(); return; } from_date = date; if(dateFromButton->isChecked()) emit filter(); } double TransactionFilterWidget::countYears() { QDate first_date = firstDate(); if(first_date.isNull()) return 0.0; return yearsBetweenDates(first_date, to_date); } double TransactionFilterWidget::countMonths() { QDate first_date = firstDate(); if(first_date.isNull()) return 0.0; return monthsBetweenDates(first_date, to_date); } int TransactionFilterWidget::countDays() { QDate first_date = firstDate(); if(first_date.isNull()) return 0; return first_date.daysTo(to_date) + 1; }