17. Bank Balance Example

Checking account and Visa credit card transactions are combined into one spreadsheet:
% cat bank.ss
#if HTML
#define X "<font color=red>0</font>"
#else
#define X "X"
#endif

g2:j14 = {g1+(!c2&&d2)*(f2-e2), h1+!(c2&&d2)*(f2-e2), i1+(c2&&!d2)*e2, h2+i2};
format c:d "%g";
g1:j1 = { 1438.62, g1, 0.00, h1+i1 };
a0:j0 = {"2012","Desc","V","x","-","+","Bank","Real","Visa","TrueBal" };
fill a2:f3 {
"12/26",	"Kelly's",	1,	1,	19.97,		,
"12/25",	"Sfly",		1,	1,	25.00,		,
"12/25",	"Netflix",	1,	1,	8.47,		,
"01/03",	"Verizon",	,	1,	100.98,		,
"01/04",	"Mtg",		,	1,	436.58,		,
"01/06",	"AMC",		1,	,	58.63,		,
"01/06",	"Amazon",	1,	,	152.64,		,
"01/11",	"BMSS #2841",	,	X,	10,		,
"01/27",	"PECO",		,	X,	223.02,		,
"01/22",	"BSB",		,	1,	,		300,
"01/23",	"ATT",		,	X,	195.92,		,
};
eval; headers off; print;
% SS -c 10 --Table bank.ss
Visa charges are marked with a 1 in column C. Transactions which have been processed by the bank and Visa charges which have been paid are marked by a 1 in column D. The balances in columns G to J use the values from columns C and D in logical expressions such as !C2&&D2 meaning the item was not a credit card transaction and was processed by the bank.

The result shows the bank balance, real balance (including credit card charges and other transactions which have not yet been processed, i.e. how much money you really have left), Visa balance, and true balance (what the bank balance would be if all transactions were processed, not including credit card charges):

 
2012 Desc V x - + Bank Real Visa TrueBal
1438.62 1438.62 0.00 1438.62
12/26 Kelly's 1 1 19.97 1438.62 1438.62 0.00 1438.62
12/25 Sfly 1 1 25.00 1438.62 1438.62 0.00 1438.62
12/25 Netflix 1 1 8.47 1438.62 1438.62 0.00 1438.62
01/03 Verizon 1 100.98 1337.64 1337.64 0.00 1337.64
01/04 Mtg 1 436.58 901.06 901.06 0.00 901.06
01/06 AMC 1 58.63 901.06 842.43 58.63 901.06
01/06 Amazon 1 152.64 901.06 689.79 211.27 901.06
01/11 BMSS #2841 0 10.00 901.06 679.79 211.27 891.06
01/27 PECO 0 223.02 901.06 456.77 211.27 668.04
01/22 BSB 1 300.00 1201.06 756.77 211.27 968.04
01/23 ATT 0 195.92 1201.06 560.85 211.27 772.12
1201.06 560.85 211.27 772.12
1201.06 560.85 211.27 772.12