Отчет

Обобщение Финансовый отчёт->По статьям, Финансовый отчёт->По подразделениям

当前为 2015-05-26 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        Отчет
// @namespace   virtonomica
// @description Обобщение  Финансовый отчёт->По статьям, Финансовый отчёт->По подразделениям
// @include     http://*virtonomica*.*/*/main/company/view/*/finance_report/by_units*
// @include     http://*virtonomica*.*/*/main/company/view/*/finance_report/by_item
// @include     http://*virtonomica.*/*/main/unit/view/*/finans_report/by_item
// @version     1.21
// ==/UserScript==

var run = function() {
    var n = [[0,0,0,0,0],[0,0,0,0,0]],
    str = [
        [ // Доходы
            "Возвращение аукционного залога",
            "Прочие доходы",
            "Продажа товаров",
            "Оказание ремонтных услуг",
            "Продажа технологий",
            "Продажа имущества",
            "Продажа электроэнергии потребителям",
        
            "Продажа ценных бумаг",
            "Доход от купленных облигаций"
        ],
        [ // Расходы
            "Аукционный залог",
            "Ликвидация предприятий",
            "Налог на продажу имущества",
            "Остальные",
            "Сборы рынка технологий",
            "Покупка товаров",
            "Покупка сырья и материалов",
            "Покупка технологий",
            "Внедрение технологий",
            "Расходы на транспортировку",
            "Таможенные пошлины",
            "Заработная плата",
            "Топливо, энергия",
            "Реклама",
            "Расходы на персонал",
            "Складские расходы",
            "Брак, потери",
            "Налог на прибыль",
            "Налог на продажу технологий и технологических лицензий",
        
            "Общепроизводственные расходы",
            "Аренда помещений",
            "Управленческие расходы",
            "Выплаты по инновациям",
        
            "Покупка имущества",
            "Строительство и модернизация",
            "Закупка и ремонт оборудования",
            "Внедрение инноваций",
        
            "Покупка ценных бумаг",
            "Комиссия за выпуск ценных бумаг",
            "Погашение облигаций"
        ]
    ];

    for(var y in str) {
        for(var s in str[y]) {
            var i = 0;
            $("tr:contains(" + str[y][s] + ") > td.nowrap").each(function() {
                n[y][i] +=  parseFloat( $(this).html().replace(/\s+/g, '').replace(/\$/g, '') );
                i++;
            });
        }
    }

    // Выведем результат
    function int_str(a){
        return ('<td class="nowrap' + (a<0?' moneySmallerZero':'') + '" align="right">' + a.toFixed(2).replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ') + ' $</td>');
    }
    $( "#mainContent > table" ).append( '<tr><td class="title" colspan="6">Всего</td></tr>'
                                       +'<tr class=\'odd\' onmouseout="this.className = \'odd\'" onmouseover="this.className = \'selected\'">'
                                       +'<td style="padding-left: 30px">Доходы</td>'
                                       + int_str(n[0][0])
                                       + int_str(n[0][1])
                                       + int_str(n[0][2])
                                       + int_str(n[0][3])
                                       + int_str(n[0][4])
                                       +'</tr>'
                                       +'<tr class=\'even\' onmouseout="this.className = \'even\'" onmouseover="this.className = \'selected\'">'
                                       +'<td style="padding-left: 30px">Расходы</td>'
                                       + int_str(n[1][0])
                                       + int_str(n[1][1])
                                       + int_str(n[1][2])
                                       + int_str(n[1][3])
                                       + int_str(n[1][4])
                                       +'</tr>'
                                       +'<tr class=\'odd\' onmouseout="this.className = \'odd\'" onmouseover="this.className = \'selected\'">'
                                       +'<td style="padding-left: 30px">Сумма</td>'
                                       + int_str(n[0][0]-n[1][0])
                                       + int_str(n[0][1]-n[1][1])
                                       + int_str(n[0][2]-n[1][2])
                                       + int_str(n[0][3]-n[1][3]) 
                                       + int_str(n[0][4]-n[1][4])
                                       +'</tr>');
}

var run1 = function(){
    var int_str = function(a) {
          return ('<td class="nowrap' + (a<0?' moneySmallerZero':'') + '"  align="right">' + a.toFixed(2).replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ') + ' $</td>')
        },
        n = [[0,0,0,0,0],[0,0]];
    $('#mainContent > table.grid > tbody > tr').each(function() {
        if( $(this).hasClass('odd') || $(this).hasClass('even') ) {
            n[1][0]++;
            n[1][1] = 0;
            $(this).find('td.nowrap').each(function() {
                n[0][ n[1][1] ] += parseFloat( $(this).html().replace(/\s+/g, '').replace(/\$/g, '') );
                n[1][1]++;
            });
            n[0][3] = n[0][0]-n[0][1]-n[0][2];
        }
    }).find('td > table.paging').parent().parent().before(
        '<tr style="background: #EEFACA"> <td colspan="3">Итого:</td>'
        +'<td class="nowrap" align="center">' + n[1][0] + '</td>'
        + int_str(n[0][0])
        + int_str(n[0][1])
        + int_str(n[0][2])
        + int_str(n[0][3])
        +'<td class="nowrap"  align="right">' + Math.round(n[0][3]/(n[0][1]+n[0][2])*100).toFixed(2) + ' %</td> </tr>'
    );
}

window.onload = function()
{
    var url = window.location.href,
        script = document.createElement("script");
    if( url.indexOf('by_units') + 1 )
        script.textContent = '(' + run1.toString() + ')();';
    else
        script.textContent = '(' + run.toString() + ')();';
    
    document.documentElement.appendChild(script);
}