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 | |||
@@ -150,71 +150,147 @@ int Transaction::getMonth ( int id ) | |||
150 | int Transaction::getYear ( int id ) | 150 | int Transaction::getYear ( int id ) |
151 | { | 151 | { |
152 | char **results; | 152 | char **results; |
153 | sqlite_get_table_printf ( tdb, "select year from transactions where transid= %i;", &results, NULL, NULL, NULL, id ); | 153 | sqlite_get_table_printf ( tdb, "select year from transactions where transid= %i;", &results, NULL, NULL, NULL, id ); |
154 | QString yearstring = results [ 1 ]; | 154 | QString yearstring = results [ 1 ]; |
155 | return yearstring.toInt(); | 155 | return yearstring.toInt(); |
156 | } | 156 | } |
157 | 157 | ||
158 | void Transaction::displayTransactions ( QListView *listview, int id, bool children, const char *limit, QDate displaydate ) | 158 | char ** Transaction::selectAllTransactions ( QDate fromdate, bool children, const char *limit, int id ) |
159 | { | 159 | { |
160 | // initialize variables | ||
161 | char **results; | ||
160 | int showcleared = preferences->getPreference ( 3 ); | 162 | int showcleared = preferences->getPreference ( 3 ); |
161 | int year = ( displaydate.year() ) - 1; | 163 | QDate today = QDate::currentDate(); |
164 | int fromyear = fromdate.year(); | ||
165 | int toyear = today.year(); | ||
166 | int frommonth = fromdate.month(); | ||
167 | int tomonth = today.month(); | ||
168 | int fromday = fromdate.day(); | ||
162 | 169 | ||
163 | // select the transactions to display | 170 | // construct the first part of the string |
164 | // two different statements are used based on | 171 | QString query = "select day, month, year, payee, amount, transid, accountid from transactions where"; |
165 | // whether we are showing cleared transactions | 172 | |
166 | char **results; | 173 | if ( frommonth == tomonth && fromyear == toyear ) // our dates cross neither a month nor a year |
167 | int rows, columns; | ||
168 | if ( showcleared == 0 ) | ||
169 | { | 174 | { |
170 | if ( account->getParentAccountID ( id ) == -1 && children == TRUE ) | 175 | query.append ( " year = " ); |
171 | 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 ); | 176 | query.append ( QString::number ( toyear ) ); |
172 | else | 177 | query.append ( " and month = " ); |
173 | 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 ); | 178 | query.append ( QString::number ( tomonth ) ); |
179 | query.append ( " and day >= " ); | ||
180 | query.append ( QString::number ( fromday ) ); | ||
181 | query.append ( " and" ); | ||
174 | } | 182 | } |
175 | else | 183 | else if ( frommonth != tomonth && fromyear == toyear ) // our dates cross a month within the same year |
176 | { | 184 | { |
177 | if ( account->getParentAccountID ( id ) == -1 && children == TRUE ) | 185 | query.append ( " year = " ); |
178 | 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 ); | 186 | query.append ( QString::number ( toyear ) ); |
179 | else | 187 | query.append ( " and ( ( month <= " ); |
180 | 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 ); | 188 | query.append ( QString::number ( tomonth ) ); |
189 | query.append ( " and month > " ); | ||
190 | query.append ( QString::number ( frommonth ) ); | ||
191 | query.append ( " ) or ( month = " ); | ||
192 | query.append ( QString::number ( frommonth ) ); | ||
193 | query.append ( " and day >= " ); | ||
194 | query.append ( QString::number ( fromday ) ); | ||
195 | query.append ( " ) ) and " ); | ||
181 | } | 196 | } |
197 | else if ( fromyear != toyear && fromyear != 1900 ) // here we are showing transactions from an entire year | ||
198 | { | ||
199 | // divide this taks into two parts - get the transactions from the prior and then the current year | ||
200 | // current year part | ||
201 | int tmpfrommonth = 1; // set temporary from months and days to Jan. 1 | ||
202 | int tmpfromday = 1; | ||
203 | query.append ( " ( year >= " ); | ||
204 | query.append ( QString::number ( fromyear ) ); | ||
205 | query.append ( " and ( month <= " ); | ||
206 | query.append ( QString::number ( tomonth ) ); | ||
207 | query.append ( " and month > " ); | ||
208 | query.append ( QString::number ( tmpfrommonth ) ); | ||
209 | query.append ( " ) or ( month = " ); | ||
210 | query.append ( QString::number ( tmpfrommonth ) ); | ||
211 | query.append ( " and day >= " ); | ||
212 | query.append ( QString::number ( tmpfromday ) ); | ||
213 | query.append ( " ) ) or" ); | ||
214 | |||
215 | // prior year part | ||
216 | int tmptomonth = 12; | ||
217 | query.append ( " ( year = " ); | ||
218 | query.append ( QString::number ( fromyear ) ); | ||
219 | query.append ( " and ( ( month <= " ); | ||
220 | query.append ( QString::number ( tmptomonth ) ); | ||
221 | query.append ( " and month > " ); | ||
222 | query.append ( QString::number ( frommonth ) ); | ||
223 | query.append ( " ) or ( month = " ); | ||
224 | query.append ( QString::number ( frommonth ) ); | ||
225 | query.append ( " and day >= " ); | ||
226 | query.append ( QString::number ( fromday ) ); | ||
227 | query.append ( " ) ) ) and " ); | ||
228 | } | ||
229 | |||
230 | if ( account->getParentAccountID ( id ) == -1 && children == TRUE ) | ||
231 | query.append ( " parentid = %i and payee like '%q';" ); | ||
232 | else | ||
233 | query.append ( " accountid = %i and payee like '%q';" ); | ||
234 | |||
235 | sqlite_get_table_printf ( tdb, query, &results, &rows, &columns, NULL, id, limit ); | ||
236 | return results; | ||
237 | } | ||
238 | |||
239 | char ** Transaction::selectNonClearedTransactions ( QDate fromdate, bool children, const char *limit, int id ) | ||
240 | { | ||
241 | char **results; | ||
242 | if ( account->getParentAccountID ( id ) == -1 && children == TRUE ) | ||
243 | 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 ); | ||
244 | else | ||
245 | 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 ); | ||
246 | return results; | ||
247 | } | ||
248 | |||
249 | void Transaction::displayTransactions ( QListView *listview, int id, bool children, const char *limit, QDate displaydate ) | ||
250 | { | ||
251 | int showcleared = preferences->getPreference ( 3 ); | ||
252 | |||
253 | char **results; | ||
254 | if ( showcleared == 0 ) | ||
255 | results = selectNonClearedTransactions ( displaydate, children, limit, id ); | ||
256 | else | ||
257 | results = selectAllTransactions ( displaydate, children, limit, id ); | ||
182 | 258 | ||
183 | // iterate through the result list and display each item | 259 | // iterate through the result list and display each item |
184 | int counter = 7; | 260 | int counter = 7; |
185 | while ( counter < ( ( rows + 1 ) * columns ) ) | 261 | while ( counter < ( ( rows + 1 ) * columns ) ) |
186 | { | 262 | { |
187 | QDate displaydate ( atoi ( results [ counter + 2 ] ), atoi ( results [ counter + 1 ] ), atoi ( results [ counter ] ) ); | 263 | //QDate testdate ( atoi ( results [ counter + 2 ] ), atoi ( results [ counter + 1 ] ), atoi ( results [ counter ] ) ); |
188 | QString date = preferences->getDate ( atoi ( results [ counter + 2 ] ), atoi ( results [ counter + 1 ] ), atoi ( results [ counter ] ) ); | 264 | QString date = preferences->getDate ( atoi ( results [ counter + 2 ] ), atoi ( results [ counter + 1 ] ), atoi ( results [ counter ] ) ); |
189 | 265 | ||
190 | // construct transaction name, amount, id | 266 | // construct transaction name, amount, id |
191 | QString payee = results [ counter + 3 ]; | 267 | QString payee = results [ counter + 3 ]; |
192 | QString amount = results [ counter + 4 ]; | 268 | QString amount = results [ counter + 4 ]; |
193 | QString transferid = results [ counter + 5 ]; | 269 | QString transferid = results [ counter + 5 ]; |
194 | 270 | ||
195 | //determine the account name of the child accounts that we're displaying | 271 | //determine the account name of the child accounts that we're displaying |
196 | QString accountname = account->getAccountName ( atoi ( results [ counter + 6 ] ) ); | 272 | QString accountname = account->getAccountName ( atoi ( results [ counter + 6 ] ) ); |
197 | 273 | ||
198 | // fill in values | 274 | // fill in values |
199 | if ( account->getParentAccountID ( id ) != -1 ) // use these constructors if we're showing a child account | 275 | if ( account->getParentAccountID ( id ) != -1 ) // use these constructors if we're showing a child account |
200 | { | 276 | { |
201 | if ( showcleared == 1 && getCleared ( transferid.toInt() ) == 1 ) | 277 | if ( showcleared == 1 && getCleared ( transferid.toInt() ) == 1 ) |
202 | ColorListItem *item = new ColorListItem ( listview, date, payee, amount, transferid); | 278 | ColorListItem *item = new ColorListItem ( listview, date, payee, amount, transferid ); |
203 | else | 279 | else |
204 | QListViewItem *item = new QListViewItem ( listview, date, payee, amount, transferid ); | 280 | QListViewItem *item = new QListViewItem ( listview, date, payee, amount, transferid ); |
205 | } | 281 | } |
206 | else | 282 | else |
207 | { | 283 | { |
208 | if ( showcleared == 1 && getCleared ( transferid.toInt() ) == 1 ) | 284 | if ( showcleared == 1 && getCleared ( transferid.toInt() ) == 1 ) |
209 | ColorListItem *item = new ColorListItem ( listview, date, payee, amount, transferid, accountname ); | 285 | ColorListItem *item = new ColorListItem ( listview, date, payee, amount, transferid, accountname ); |
210 | else | 286 | else |
211 | QListViewItem *item = new QListViewItem ( listview, date, payee, amount, transferid, accountname ); | 287 | QListViewItem *item = new QListViewItem ( listview, date, payee, amount, transferid, accountname ); |
212 | } | 288 | } |
213 | 289 | ||
214 | // advance counter | 290 | // advance counter |
215 | counter = counter + 7; | 291 | counter = counter + 7; |
216 | } | 292 | } |
217 | } | 293 | } |
218 | 294 | ||
219 | QString Transaction::getBudgetTotal ( int budgetid, int lineitemid, int year, int month, int viewtype ) | 295 | QString Transaction::getBudgetTotal ( int budgetid, int lineitemid, int year, int month, int viewtype ) |
220 | { | 296 | { |