author | allenforsythe <allenforsythe> | 2003-05-28 11:49:47 (UTC) |
---|---|---|
committer | allenforsythe <allenforsythe> | 2003-05-28 11:49:47 (UTC) |
commit | 52047fd3d3f30509d65834747c3a0c5c6760dc01 (patch) (side-by-side diff) | |
tree | 136945c2ffff2434ba1e3c8959b5335f5016e8f8 /noncore/apps/qashmoney/transaction.cpp | |
parent | 7c85b3e98921afa74c7c6a90da4dfd54631c89c5 (diff) | |
download | opie-52047fd3d3f30509d65834747c3a0c5c6760dc01.zip opie-52047fd3d3f30509d65834747c3a0c5c6760dc01.tar.gz opie-52047fd3d3f30509d65834747c3a0c5c6760dc01.tar.bz2 |
*** empty log message ***
Diffstat (limited to 'noncore/apps/qashmoney/transaction.cpp') (more/less context) (ignore whitespace changes)
-rwxr-xr-x | noncore/apps/qashmoney/transaction.cpp | 122 |
1 files changed, 99 insertions, 23 deletions
diff --git a/noncore/apps/qashmoney/transaction.cpp b/noncore/apps/qashmoney/transaction.cpp index 5ecc7ed..a3bd9e7 100755 --- a/noncore/apps/qashmoney/transaction.cpp +++ b/noncore/apps/qashmoney/transaction.cpp @@ -146,79 +146,155 @@ int Transaction::getMonth ( int id ) QString monthstring = results [ 1 ]; return monthstring.toInt(); } int Transaction::getYear ( int id ) { char **results; sqlite_get_table_printf ( tdb, "select year from transactions where transid= %i;", &results, NULL, NULL, NULL, id ); QString yearstring = results [ 1 ]; return yearstring.toInt(); } -void Transaction::displayTransactions ( QListView *listview, int id, bool children, const char *limit, QDate displaydate ) +char ** Transaction::selectAllTransactions ( QDate fromdate, bool children, const char *limit, int id ) { + // initialize variables + char **results; int showcleared = preferences->getPreference ( 3 ); - int year = ( displaydate.year() ) - 1; + QDate today = QDate::currentDate(); + int fromyear = fromdate.year(); + int toyear = today.year(); + int frommonth = fromdate.month(); + int tomonth = today.month(); + int fromday = fromdate.day(); - // select the transactions to display - // two different statements are used based on - // whether we are showing cleared transactions - char **results; - int rows, columns; - if ( showcleared == 0 ) + // construct the first part of the string + QString query = "select day, month, year, payee, amount, transid, accountid from transactions where"; + + if ( frommonth == tomonth && fromyear == toyear ) // our dates cross neither a month nor a year { - if ( account->getParentAccountID ( id ) == -1 && children == TRUE ) - sqlite_get_table_printf ( tdb, "select day, month, year, payee, amount, transid, accountid from transactions where cleared = 0 and year >= %i parentid = %i and payee like '%q';", &results, &rows, &columns, NULL, year, id, limit ); - else - sqlite_get_table_printf ( tdb, "select day, month, year, payee, amount, transid, accountid from transactions where cleared = 0 year >= %i accountid = %i and payee like '%q';", &results, &rows, &columns, NULL, year, id, limit ); + query.append ( " year = " ); + query.append ( QString::number ( toyear ) ); + query.append ( " and month = " ); + query.append ( QString::number ( tomonth ) ); + query.append ( " and day >= " ); + query.append ( QString::number ( fromday ) ); + query.append ( " and" ); } - else + else if ( frommonth != tomonth && fromyear == toyear ) // our dates cross a month within the same year { - if ( account->getParentAccountID ( id ) == -1 && children == TRUE ) - sqlite_get_table_printf ( tdb, "select day, month, year, payee, amount, transid, accountid from transactions where year >= %i and parentid = %i and payee like '%q';", &results, &rows, &columns, NULL, year, id, limit ); - else - sqlite_get_table_printf ( tdb, "select day, month, year, payee, amount, transid, accountid from transactions where accountid = %i and payee like '%q';", &results, &rows, &columns, NULL, id, limit ); + query.append ( " year = " ); + query.append ( QString::number ( toyear ) ); + query.append ( " and ( ( month <= " ); + query.append ( QString::number ( tomonth ) ); + query.append ( " and month > " ); + query.append ( QString::number ( frommonth ) ); + query.append ( " ) or ( month = " ); + query.append ( QString::number ( frommonth ) ); + query.append ( " and day >= " ); + query.append ( QString::number ( fromday ) ); + query.append ( " ) ) and " ); } + else if ( fromyear != toyear && fromyear != 1900 ) // here we are showing transactions from an entire year + { + // divide this taks into two parts - get the transactions from the prior and then the current year + // current year part + int tmpfrommonth = 1; // set temporary from months and days to Jan. 1 + int tmpfromday = 1; + query.append ( " ( year >= " ); + query.append ( QString::number ( fromyear ) ); + query.append ( " and ( month <= " ); + query.append ( QString::number ( tomonth ) ); + query.append ( " and month > " ); + query.append ( QString::number ( tmpfrommonth ) ); + query.append ( " ) or ( month = " ); + query.append ( QString::number ( tmpfrommonth ) ); + query.append ( " and day >= " ); + query.append ( QString::number ( tmpfromday ) ); + query.append ( " ) ) or" ); + + // prior year part + int tmptomonth = 12; + query.append ( " ( year = " ); + query.append ( QString::number ( fromyear ) ); + query.append ( " and ( ( month <= " ); + query.append ( QString::number ( tmptomonth ) ); + query.append ( " and month > " ); + query.append ( QString::number ( frommonth ) ); + query.append ( " ) or ( month = " ); + query.append ( QString::number ( frommonth ) ); + query.append ( " and day >= " ); + query.append ( QString::number ( fromday ) ); + query.append ( " ) ) ) and " ); + } + + if ( account->getParentAccountID ( id ) == -1 && children == TRUE ) + query.append ( " parentid = %i and payee like '%q';" ); + else + query.append ( " accountid = %i and payee like '%q';" ); + + sqlite_get_table_printf ( tdb, query, &results, &rows, &columns, NULL, id, limit ); + return results; + } + +char ** Transaction::selectNonClearedTransactions ( QDate fromdate, bool children, const char *limit, int id ) + { + char **results; + if ( account->getParentAccountID ( id ) == -1 && children == TRUE ) + sqlite_get_table_printf ( tdb, "select day, month, year, payee, amount, transid, accountid from transactions where cleared = 0 and parentid = %i and payee like '%q';", &results, &rows, &columns, NULL, id, limit ); + else + sqlite_get_table_printf ( tdb, "select day, month, year, payee, amount, transid, accountid from transactions where cleared = 0 and accountid = %i and payee like '%q';", &results, &rows, &columns, NULL, id, limit ); + return results; + } + +void Transaction::displayTransactions ( QListView *listview, int id, bool children, const char *limit, QDate displaydate ) + { + int showcleared = preferences->getPreference ( 3 ); + + char **results; + if ( showcleared == 0 ) + results = selectNonClearedTransactions ( displaydate, children, limit, id ); + else + results = selectAllTransactions ( displaydate, children, limit, id ); // iterate through the result list and display each item int counter = 7; while ( counter < ( ( rows + 1 ) * columns ) ) { - QDate displaydate ( atoi ( results [ counter + 2 ] ), atoi ( results [ counter + 1 ] ), atoi ( results [ counter ] ) ); + //QDate testdate ( atoi ( results [ counter + 2 ] ), atoi ( results [ counter + 1 ] ), atoi ( results [ counter ] ) ); QString date = preferences->getDate ( atoi ( results [ counter + 2 ] ), atoi ( results [ counter + 1 ] ), atoi ( results [ counter ] ) ); // construct transaction name, amount, id QString payee = results [ counter + 3 ]; QString amount = results [ counter + 4 ]; QString transferid = results [ counter + 5 ]; //determine the account name of the child accounts that we're displaying QString accountname = account->getAccountName ( atoi ( results [ counter + 6 ] ) ); - // fill in values + // fill in values if ( account->getParentAccountID ( id ) != -1 ) // use these constructors if we're showing a child account { if ( showcleared == 1 && getCleared ( transferid.toInt() ) == 1 ) - ColorListItem *item = new ColorListItem ( listview, date, payee, amount, transferid); + ColorListItem *item = new ColorListItem ( listview, date, payee, amount, transferid ); else QListViewItem *item = new QListViewItem ( listview, date, payee, amount, transferid ); } - else - { + else + { if ( showcleared == 1 && getCleared ( transferid.toInt() ) == 1 ) ColorListItem *item = new ColorListItem ( listview, date, payee, amount, transferid, accountname ); else QListViewItem *item = new QListViewItem ( listview, date, payee, amount, transferid, accountname ); - } + } // advance counter counter = counter + 7; } } QString Transaction::getBudgetTotal ( int budgetid, int lineitemid, int year, int month, int viewtype ) { // determine if we are viewing a years, months, or days budget // we have to pick a different sum for each char **results; switch ( viewtype ) |