summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/ledger.11
-rw-r--r--src/report.cc19
-rw-r--r--src/report.h76
-rw-r--r--test/baseline/opt-dc.test16
-rw-r--r--test/baseline/opt-meta-width.test4
-rw-r--r--test/manual/transaction-codes-1.test4
-rw-r--r--test/manual/transaction-notes-1.test4
-rw-r--r--test/manual/transaction-notes-2.test2
-rw-r--r--test/manual/transaction-notes-3.test2
-rw-r--r--test/manual/transaction-status-1.test6
-rw-r--r--test/manual/transaction-status-2.test2
-rw-r--r--test/manual/transaction-status-3.test4
-rw-r--r--test/manual/transaction-status-4.test2
13 files changed, 119 insertions, 23 deletions
diff --git a/doc/ledger.1 b/doc/ledger.1
index 20369a78..d69d6c22 100644
--- a/doc/ledger.1
+++ b/doc/ledger.1
@@ -300,6 +300,7 @@ See
.It Fl \-date-format Ar DATEFMT Pq Fl y
.It Fl \-datetime-format Ar FMT
.It Fl \-date-width Ar INT
+.It Fl \-dc
.It Fl \-debug Ar STR
.It Fl \-decimal-comma
.It Fl \-depth Ar INT
diff --git a/src/report.cc b/src/report.cc
index 36865a75..8cfa7a59 100644
--- a/src/report.cc
+++ b/src/report.cc
@@ -204,10 +204,22 @@ void report_t::normalize_options(const string& verb)
! HANDLED(amount_width_) &&
! HANDLED(total_width_)) {
long total = (4 /* the spaces between */ + date_width + payee_width +
- account_width + amount_width + total_width);
- if (total > cols) {
+ account_width + amount_width + total_width +
+ (HANDLED(dc) ? 1 + amount_width : 0));
+ while (total > cols && account_width > 5 && payee_width > 5) {
DEBUG("auto.columns", "adjusting account down");
- account_width -= total - cols;
+ if (total > cols) {
+ --account_width;
+ --total;
+ if (total > cols) {
+ --account_width;
+ --total;
+ }
+ }
+ if (total > cols) {
+ --payee_width;
+ --total;
+ }
DEBUG("auto.columns", "account_width now = " << account_width);
}
}
@@ -1029,6 +1041,7 @@ option_t<report_t> * report_t::lookup_option(const char * p)
else OPT(date_);
else OPT(date_format_);
else OPT(datetime_format_);
+ else OPT(dc);
else OPT(depth_);
else OPT(deviation);
else OPT_(display_);
diff --git a/src/report.h b/src/report.h
index ed3aae2e..04fdcd45 100644
--- a/src/report.h
+++ b/src/report.h
@@ -215,7 +215,7 @@ public:
bool lots = HANDLED(lots) || HANDLED(lots_actual);
return keep_details_t(lots || HANDLED(lot_prices),
lots || HANDLED(lot_dates),
- lots || HANDLED(lot_tags),
+ lots || HANDLED(lot_notes),
HANDLED(lots_actual));
}
@@ -250,6 +250,7 @@ public:
HANDLER(date_).report(out);
HANDLER(date_format_).report(out);
HANDLER(datetime_format_).report(out);
+ HANDLER(dc).report(out);
HANDLER(depth_).report(out);
HANDLER(deviation).report(out);
HANDLER(display_).report(out);
@@ -277,7 +278,7 @@ public:
HANDLER(limit_).report(out);
HANDLER(lot_dates).report(out);
HANDLER(lot_prices).report(out);
- HANDLER(lot_tags).report(out);
+ HANDLER(lot_notes).report(out);
HANDLER(lots).report(out);
HANDLER(lots_actual).report(out);
HANDLER(market).report(out);
@@ -518,6 +519,73 @@ public:
OPTION(report_t, date_format_);
OPTION(report_t, datetime_format_);
+ OPTION_(report_t, dc, DO() {
+ OTHER(amount_).expr.set_base_expr
+ ("(amount > 0 ? amount : 0, amount < 0 ? amount : 0)");
+
+ OTHER(register_format_)
+ .on(none,
+ "%(ansify_if("
+ " ansify_if(justify(format_date(date), int(date_width)),"
+ " green if color and date > today),"
+ " bold if should_bold))"
+ " %(ansify_if("
+ " ansify_if(justify(truncated(payee, int(payee_width)), int(payee_width)), "
+ " bold if color and !cleared and actual),"
+ " bold if should_bold))"
+ " %(ansify_if("
+ " ansify_if(justify(truncated(display_account, int(account_width), "
+ " abbrev_len), int(account_width)),"
+ " blue if color),"
+ " bold if should_bold))"
+ " %(ansify_if("
+ " justify(scrub(abs(get_at(display_amount, 0))), int(amount_width), "
+ " 3 + int(meta_width) + int(date_width) + int(payee_width)"
+ " + int(account_width) + int(amount_width) + int(prepend_width),"
+ " true, color),"
+ " bold if should_bold))"
+ " %(ansify_if("
+ " justify(scrub(abs(get_at(display_amount, 1))), int(amount_width), "
+ " 4 + int(meta_width) + int(date_width) + int(payee_width)"
+ " + int(account_width) + int(amount_width) + int(amount_width) + int(prepend_width),"
+ " true, color),"
+ " bold if should_bold))"
+ " %(ansify_if("
+ " justify(scrub(get_at(display_total, 0) + get_at(display_total, 1)), int(total_width), "
+ " 5 + int(meta_width) + int(date_width) + int(payee_width)"
+ " + int(account_width) + int(amount_width) + int(amount_width) + int(total_width)"
+ " + int(prepend_width), true, color),"
+ " bold if should_bold))\n%/"
+ "%(justify(\" \", int(date_width)))"
+ " %(ansify_if("
+ " justify(truncated(has_tag(\"Payee\") ? payee : \" \", "
+ " int(payee_width)), int(payee_width)),"
+ " bold if should_bold))"
+ " %$3 %$4 %$5 %$6\n");
+
+ OTHER(balance_format_)
+ .on(none,
+ "%(ansify_if("
+ " justify(scrub(abs(get_at(display_total, 0))), 14,"
+ " 14 + int(prepend_width), true, color),"
+ " bold if should_bold)) "
+ "%(ansify_if("
+ " justify(scrub(abs(get_at(display_total, 1))), 14,"
+ " 14 + 1 + int(prepend_width) + int(total_width), true, color),"
+ " bold if should_bold)) "
+ "%(ansify_if("
+ " justify(scrub(get_at(display_total, 0) + get_at(display_total, 1)), 14,"
+ " 14 + 2 + int(prepend_width) + int(total_width) + int(total_width), true, color),"
+ " bold if should_bold))"
+ " %(!options.flat ? depth_spacer : \"\")"
+ "%-(ansify_if("
+ " ansify_if(partial_account(options.flat), blue if color),"
+ " bold if should_bold))\n%/"
+ "%$1 %$2 %$3\n%/"
+ "%(prepend_width ? \" \" * int(prepend_width) : \"\")"
+ "--------------------------------------------\n");
+ });
+
OPTION_(report_t, depth_, DO_(str) {
OTHER(display_).on(whence, string("depth<=") + str);
});
@@ -590,9 +658,7 @@ public:
OPTION_(report_t, gain, DO() { // -G
OTHER(revalued).on(whence);
-
OTHER(amount_).expr.set_base_expr("(amount, cost)");
- OTHER(total_).expr.set_base_expr("total");
// Since we are displaying the amounts of revalued postings, they
// will end up being composite totals, and hence a pair of pairs.
@@ -653,7 +719,7 @@ public:
OPTION(report_t, lot_dates);
OPTION(report_t, lot_prices);
- OPTION(report_t, lot_tags);
+ OPTION(report_t, lot_notes);
OPTION(report_t, lots);
OPTION(report_t, lots_actual);
diff --git a/test/baseline/opt-dc.test b/test/baseline/opt-dc.test
new file mode 100644
index 00000000..24a564dd
--- /dev/null
+++ b/test/baseline/opt-dc.test
@@ -0,0 +1,16 @@
+2012-03-10 Employer
+ Assets:Cash $100
+ Income:Employer
+
+2012-03-10 KFC
+ Expenses:Food $20
+ Assets:Cash
+
+2012-03-10 KFC - Rebate
+ Assets:Cash
+ Expenses:Food $-5
+
+2012-03-10 KFC - Food & Rebate
+ Expenses:Food $20
+ Expenses:Food $-5
+ Assets:Cash
diff --git a/test/baseline/opt-meta-width.test b/test/baseline/opt-meta-width.test
index ce751e24..893e175b 100644
--- a/test/baseline/opt-meta-width.test
+++ b/test/baseline/opt-meta-width.test
@@ -9,6 +9,6 @@
; :AnotherTag:
test reg --meta Sample --meta-width=15
-Another Value 04-May-27 Credit card com.. Liab:MasterCard $20.00 $20.00
-Value As:Ban:Checking $-20.00 0
+Another Value 04-May-27 Credit card co.. Liabi:MasterCard $20.00 $20.00
+Value As:Bank:Checking $-20.00 0
end test
diff --git a/test/manual/transaction-codes-1.test b/test/manual/transaction-codes-1.test
index 7a05b349..ff68e0ec 100644
--- a/test/manual/transaction-codes-1.test
+++ b/test/manual/transaction-codes-1.test
@@ -15,6 +15,6 @@
Liabilities:Credit Card
test reg --columns=60 food and code xfer
-09-Oct-29 Panera Bread Expenses:Food $4.50 $4.50
-09-Oct-30 Panera Bread Expenses:Food $4.50 $9.00
+09-Oct-29 Panera Bread Expenses:Food $4.50 $4.50
+09-Oct-30 Panera Bread Expenses:Food $4.50 $9.00
end test
diff --git a/test/manual/transaction-notes-1.test b/test/manual/transaction-notes-1.test
index 7c3d7200..05ab3412 100644
--- a/test/manual/transaction-notes-1.test
+++ b/test/manual/transaction-notes-1.test
@@ -17,6 +17,6 @@
Assets:Checking
test reg --columns=60 food and note eat
-09-Nov-01 Panera Bread Expenses:Food $4.50 $4.50
-09-Nov-01 Panera Bread Expenses:Food $4.50 $9.00
+09-Nov-01 Panera Bread Expenses:Food $4.50 $4.50
+09-Nov-01 Panera Bread Expenses:Food $4.50 $9.00
end test
diff --git a/test/manual/transaction-notes-2.test b/test/manual/transaction-notes-2.test
index 603fcbe1..a29eda6e 100644
--- a/test/manual/transaction-notes-2.test
+++ b/test/manual/transaction-notes-2.test
@@ -17,5 +17,5 @@
Assets:Checking
test reg --columns=60 food and tag eating
-09-Nov-01 Panera Bread Expenses:Food $4.50 $4.50
+09-Nov-01 Panera Bread Expenses:Food $4.50 $4.50
end test
diff --git a/test/manual/transaction-notes-3.test b/test/manual/transaction-notes-3.test
index 9b05334c..b83322b0 100644
--- a/test/manual/transaction-notes-3.test
+++ b/test/manual/transaction-notes-3.test
@@ -17,5 +17,5 @@
Assets:Checking
test reg --columns=60 food and tag type=dining
-09-Nov-01 Panera Bread Expenses:Food $4.50 $4.50
+09-Nov-01 Panera Bread Expenses:Food $4.50 $4.50
end test
diff --git a/test/manual/transaction-status-1.test b/test/manual/transaction-status-1.test
index 1f7ad095..8bfdd6d9 100644
--- a/test/manual/transaction-status-1.test
+++ b/test/manual/transaction-status-1.test
@@ -11,7 +11,7 @@
Assets
test reg --columns=60 food
-09-Oct-31 Panera Bread Expenses:Food $4.50 $4.50
-09-Nov-01 Panera Bread Expenses:Food $4.50 $9.00
-09-Nov-02 Panera Bread Expenses:Food $4.50 $13.50
+09-Oct-31 Panera Bread Expenses:Food $4.50 $4.50
+09-Nov-01 Panera Bread Expenses:Food $4.50 $9.00
+09-Nov-02 Panera Bread Expenses:Food $4.50 $13.50
end test
diff --git a/test/manual/transaction-status-2.test b/test/manual/transaction-status-2.test
index 6c6d4b8c..94c42a65 100644
--- a/test/manual/transaction-status-2.test
+++ b/test/manual/transaction-status-2.test
@@ -11,5 +11,5 @@
Assets
test reg --columns=60 food --cleared
-09-Oct-31 Panera Bread Expenses:Food $4.50 $4.50
+09-Oct-31 Panera Bread Expenses:Food $4.50 $4.50
end test
diff --git a/test/manual/transaction-status-3.test b/test/manual/transaction-status-3.test
index f50ea23c..f11cd0f7 100644
--- a/test/manual/transaction-status-3.test
+++ b/test/manual/transaction-status-3.test
@@ -11,6 +11,6 @@
Assets
test reg --columns=60 food --uncleared
-09-Nov-01 Panera Bread Expenses:Food $4.50 $4.50
-09-Nov-02 Panera Bread Expenses:Food $4.50 $9.00
+09-Nov-01 Panera Bread Expenses:Food $4.50 $4.50
+09-Nov-02 Panera Bread Expenses:Food $4.50 $9.00
end test
diff --git a/test/manual/transaction-status-4.test b/test/manual/transaction-status-4.test
index 2ae03c3e..c6f0419b 100644
--- a/test/manual/transaction-status-4.test
+++ b/test/manual/transaction-status-4.test
@@ -11,5 +11,5 @@
Assets
test reg --columns=60 food --pending
-09-Nov-01 Panera Bread Expenses:Food $4.50 $4.50
+09-Nov-01 Panera Bread Expenses:Food $4.50 $4.50
end test