master
Raw Download raw file
  1// ________                                                _________
  2// \________\--------___       ___         ____----------/_________/
  3//     \_______\----\\\\\\   //_ _ \\    //////-------/________/
  4//         \______\----\\|| (( ~|~ )))  ||//------/________/
  5//             \_____\---\\ ((\ = / ))) //----/_____/
  6//                  \____\--\_)))  \ _)))---/____/
  7//                        \__/  (((     (((_/
  8// ヾღ彡                   |  -)))  -  ))
  9// =================================================================
 10// acct_sum.js
 11// -----------------------------------------------------------------
 12// author:  @archangel
 13// SEC LVL: 3 -- WARNING --
 14// Chars:   1330
 15// Descr:   Returns formated inforamtion from your transaction log
 16// Syntax:  acct_sum{from:"starting timecode" , to:"ending timecode"}
 17// Syntax:  acct_sum{count:_int}
 18// Syntax:  acct_sum{count:"all"}
 19// =================================================================
 20
 21function (context, args)
 22{
 23    //{from:"starting timecode" , to:"ending timecode"}
 24
 25    // we'll wrap the analytics in a try-catch, so that a failure during recording doesn't break the rest of the script
 26    try
 27    {
 28        // Those calls are for logging purposes. Check dtr.man{page:"soron.arch_data"} and dtr.man{page:"ada.haxfax"} in-game for more info.
 29        #s.soron.arch_data({log:{c:context}});
 30        #s.ada.haxfax({log:{c:context}});
 31    }
 32    catch (e)
 33    {
 34        // oh well, we can live with this. Congrats, user-who-is-not-tracked!
 35    }
 36
 37    //SEC LVL 3
 38    var trans = #s.accts.transactions({count:"all"});
 39    var results = [];
 40    var ret;
 41    var earned = 0;
 42    var m_earned = 0;
 43    var spent = 0;
 44    var m_spent = 0;
 45    var net = 0;
 46    var l = #s.scripts.lib();
 47    
 48    if(args.count)
 49    {
 50        if (args.count == "all")
 51        {
 52            results = trans;
 53        }
 54        else
 55        {
 56            for (var i=0; i<args.count; i++)
 57            {
 58                results.push(trans[i]);
 59            }
 60        }
 61        
 62    }
 63    else
 64    {
 65        for (var i=0; i<trans.length; i++)
 66        {
 67            if (l.to_game_timestr(trans[i].time)>=args.from && l.to_game_timestr(trans[i].time)<=args.to)
 68                results.push(trans[i]);
 69        }
 70    }
 71
 72    ret = "Range from\t: " + args.from + "\nRange to\t: " + args.to +"\n\n";
 73
 74    for (var i=0; i<results.length; i++)
 75    {
 76        ret += (results[i].memo) ? "[M]\t" : "\t";
 77        //ret += "\t" + results[i].time + "\t\t";
 78        ret += "\t" + l.to_game_timestr(results[i].time) + "\t\t";
 79        if(results[i].sender == context.caller) 
 80        {
 81            ret += "`D-`";
 82            spent += results[i].amount;
 83            m_spent += (results[i].memo) ? results[i].amount : 0;
 84        }
 85        else
 86        {
 87            ret += "`2+`";
 88            earned += results[i].amount;
 89            m_earned += (results[i].memo) ? results[i].amount : 0;
 90        }
 91        ret += l.to_gc_str(results[i].amount) + "\n";
 92    }
 93
 94    net = earned - spent;
 95
 96    ret += "\n" + "=".repeat(40) + "\n"
 97    ret += "\nEarned total\t:\t\t" + l.to_gc_str(earned).toString() + "\n[M]Earned total\t:\t\t" + l.to_gc_str(m_earned) + "\n[!M]Earned total:\t\t" + l.to_gc_str(earned - m_earned) + "\nSpent total\t\t:\t\t" + l.to_gc_str(spent) + "\n[M]Spent total\t:\t\t" + l.to_gc_str(m_spent) + "\n[!M]Spent total\t:\t\t" + l.to_gc_str(spent - m_spent) +"\nNet total\t\t:\t\t" + l.to_gc_str(net) +"\n"
 98
 99    return ret;
100}