Beispiel #1
0
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;
}