489
int show_recent_adjustments(char * account, int no_of_transactions,
490
char column_separator)
492
int retval,col,cols,row,i;
493
char database_filename[STRING_BLOCK];
494
char receive_str[STRING_BLOCK];
495
char spend_str[STRING_BLOCK], date_str[STRING_BLOCK];
496
char query[] = "select transaction_number, date, receive, spend, " \
497
"status, description, supplier, " \
498
"adjustment_date, adjustment_type" \
499
" from adjustments " \
500
"order by adjustment_date desc;";
501
char * date_format = settings_get_date_format();
507
if (account_exists(account)==0) {
511
/* if no account is specified use the default one */
512
if (strlen(account)==0) {
513
settings_set_account(get_text_from_identifier(SETTINGS_DEFAULT_CURRENT_ACCOUNT));
514
if (strlen(get_text_from_identifier(SETTINGS_DEFAULT_CURRENT_ACCOUNT))==0) {
515
printf("Unable to get default account name\n");
518
account = settings_get_account();
521
if (strlen(account)==0) {
522
printf("No account specified\n");
525
database_name(account, (char*)database_filename);
526
retval = sqlite3_open_v2((char*)database_filename,
527
&handle,SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE,
529
/* If connection failed, handle returns NULL */
531
printf("Sqlite3 database connection failed\n");
532
sqlite3_close(handle);
536
retval = sqlite3_prepare_v2(handle,query,-1,&stmt,0);
538
printf("Selecting recent adjustments from %s account failed\n",
540
sqlite3_close(handle);
544
cols = sqlite3_column_count(stmt);
546
for (i=0;i<MAX_ROW_LENGTH;i++) {
552
if (column_separator!=' ') {
553
printf("%c",column_separator);
555
printf(get_text_from_identifier(TITLE_ADJUSTMENTS),
556
column_separator,column_separator,column_separator,
557
column_separator,column_separator,column_separator,
560
if (column_separator!=' ') {
561
printf("%c",column_separator);
563
for (i=0;i<MAX_ROW_LENGTH;i++) {
564
if ((column_separator==' ') ||
565
((i!=1) && (i!=13) && (i!=23) && (i!=33) && (i!=start_column))) {
572
if (column_separator!=' ') {
573
printf("%c",column_separator);
579
retval = sqlite3_step(stmt);
581
if(retval == SQLITE_ROW) {
582
if (column_separator!=' ') {
583
printf("%c",column_separator);
586
if ((char*)sqlite3_column_text(stmt,8)!=NULL) {
588
(char*)sqlite3_column_text(stmt,8),
592
printf("-%c",column_separator);
596
if (column_separator==' ') {
597
str = (char*)sqlite3_column_text(stmt,8);
599
if (str[0]==ADJUSTMENT_TYPE_BEFORE) {
600
printf("%s",COLOUR_BEFORE);
602
if (str[0]==ADJUSTMENT_TYPE_AFTER) {
603
printf("%s",COLOUR_AFTER);
605
if (str[0]==ADJUSTMENT_TYPE_DELETE) {
606
printf("%s",COLOUR_DELETE);
612
for(col=1;col<cols-2;col++) {
613
char * val = (char*)sqlite3_column_text(stmt,col);
615
pad_value(val, (char *)receive_str,
616
LEADING_SPACES, TRAILING_ZEROS);
617
printf("%s %c",receive_str,column_separator);
621
pad_value(val, (char *)spend_str,
622
LEADING_SPACES, TRAILING_ZEROS);
623
printf("%s %c",spend_str,column_separator);
632
convert_standard_to_date(val,
635
printf("%s %c",date_str,column_separator);
638
printf("%s %c",val,column_separator);
643
description_multiline(val,
649
printf("(%s)%c",val,column_separator);
659
if (column_separator==' ') {
665
if (row>=no_of_transactions) break;
667
else if(retval == SQLITE_DONE) {
671
printf("Some error encountered while running " \
672
"adjustments summary query\n");
673
sqlite3_close(handle);
678
sqlite3_close(handle);