Revision 326331346166 () - Diff

Link to this snippet: https://friendpaste.com/1sESq3KI7MccphOzGIXudT
Embed:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
function(doc) {
if (doc.Transactions) {
for each (var txn in doc.Transactions) {
emit(txn.Date.substr(0,8)+'01', [txn.Account, txn.Amount]);
}
}
}

function (keys, values, rereduce) {

if (rereduce) {
// We could do this check in the loop below in rereduce but better to know quickly
for (j in values) {
if (values[j] == null)
{
return null;
}
}
}

var accounts = {};
if (rereduce) {
for (j in values) {
var intermediate_results = values[j];
for (i in intermediate_results) {
var key = intermediate_results[i].period + '-' + intermediate_results[i].account;
if (accounts[key] !== undefined) {
accounts[key].amount += intermediate_results[i].amount;
}
else {
accounts[key] = intermediate_results[i];
}}
}
} else {
for (i in values) {
// <date in key> + '-' + <account number>
var key = keys[i][0] + '-' + values[i][0];
//log('Reduce Key:' + key)

if (accounts[key] !== undefined) {
// Sum up the amount
accounts[key].amount += values[i][1];
}
else {
accounts[key] = {
amount : values[i][1],
period : keys[i][0],
account : values[i][0]};
}}
}

var result = [];
for (n in accounts) {
result.push(accounts[n]);
}
return result;
}