Virtonomica:Итого в отчете по подразделениям

Итоговая строка в отчете по подразделениям. Origin By Izumrud_AO, http://userscripts-mirror.org/scripts/show/137698

// ==UserScript==
// @name           Virtonomica:Итого в отчете по подразделениям
// @namespace      virtonomica
// @description    Итоговая строка в отчете по подразделениям. Origin By Izumrud_AO, http://userscripts-mirror.org/scripts/show/137698
// @include	   http*://*virtonomic*.*/*/main/company/view/*/finance_report/by_units*
// @include	   http*://*virtonomic*.*/*/main/company/view/*/marketing_report/shops/*
// @include	   http*://*virtonomic*.*/*/main/company/view/*/marketing_report/services
// @include	   http*://*virtonomic*.*/*/main/company/view/*/marketing_report/services/*
// @version        1.9
// ==/UserScript==

var run = function() {
  var win = (typeof(unsafeWindow) != 'undefined' ? unsafeWindow : top.window);
  $ = win.$;
  
  //резделитель разрядов
  function commaSeparateNumber(val, sep){
    var separator = sep || ',';
    while (/(\d+)(\d{3})/.test(val.toString())){
      val = val.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1"+separator);
    }
    return val;
  }
  function edit_summ(pr) {	
    return commaSeparateNumber( parseFloat(pr).toFixed(2), ' ');
  }

	function cleanNumber(spNum) {
		return spNum.replace('$','').replace(/\s+/g,'');
	}
	
  if (/\/main\/company\/view\/\d+\/finance_report\/by_units\//.test(window.location)) {
    var nvInSum = 0;
    var nvOutSum = 0;
    var nvTaxSum = 0;
    var nvProfit = 0;
    var nvProfitPercent = 0;
    var numrow = 0;
    
    $( '#mainContent tr[class]' ).each( function() {
      var cells = $( 'td', this );
      console.log(cleanNumber($( cells[4] ).text()));
      
      nvInSum = nvInSum + parseFloat( cleanNumber($( cells[4] ).text()) );
      nvOutSum = nvOutSum + parseFloat( cleanNumber($( cells[5] ).text()) );
      nvTaxSum = nvTaxSum + parseFloat( cleanNumber($( cells[6] ).text()) );
      nvProfit = nvProfit + parseFloat( cleanNumber($( cells[7] ).text()) );
      nvProfitPercent = nvProfitPercent + parseFloat( cleanNumber($( cells[8] ).text()) );
      numrow = numrow + 1;
    });
    //avg
	nvProfitPercent = (nvProfitPercent / numrow).toFixed(2);
    
    var tclass ="nowrap";
    if (nvProfit < 0) {
      tclass="moneySmallerZero";
    }
    var svQty = "Кол-во: " + numrow + " шт.";

    var text = "<tr style='background: #EEFACA'> <td style='font-size:14px'>"+"Итого :"+"</td> <td> </td> <td> </td> <td>"+ svQty +"</td>";
    text += "<td align=\"right\" class=\"nowrap\">$" + edit_summ(nvInSum) + "</td>";
    text += "<td align=\"right\" class=\"nowrap\">$" + edit_summ(nvOutSum) + "</td>";
    text += "<td align=\"right\" class=\"nowrap\">$" + edit_summ(nvTaxSum) + "</td>";
    text += "<td align=\"right\" class=\"nowrap\"><span class='"+ tclass +"'>$" + edit_summ(nvProfit) + "</span></td>";
    text += "<td align=\"right\" class=\"nowrap\">" + edit_summ(nvProfitPercent) + " %</td>  </tr>";

    $(text).insertBefore($('table.grid > tbody > tr:last'));
  }
  
  if (/\/main\/company\/view\/\d+\/marketing_report\/shops\//.test(window.location)) {
    var nvVolume = 0;
    var nvSum = 0;
    var nvPrc = 0;
    var nvQual = 0;
    var nvBrand = 0;
    var numrow = 0;
    var avVolAndSum=[];
    
    $( 'table[class^="unit-list"] > tbody > tr[class]' ).each( function() {
      var cells = $( 'td', this );
      console.log(cleanNumber($( cells[4] ).text()));
      
	  avVolAndSum = $( cells[4] ).html().split('<br>');
      nvVolume = nvVolume + parseFloat( cleanNumber(avVolAndSum[0]) );
      nvSum = nvSum + parseFloat( cleanNumber(avVolAndSum[1]) );
      nvPrc = nvPrc + parseFloat( cleanNumber($( cells[5] ).text()) );
      nvQual = nvQual + parseFloat( cleanNumber($( cells[6] ).text()) );
      nvBrand = nvBrand + parseFloat( cleanNumber($( cells[7] ).text()) );
      numrow = numrow + 1;
    });
    //avg
	nvPrc = (nvPrc / numrow).toFixed(2);
	nvQual = (nvQual / numrow).toFixed(2);
	nvBrand = (nvBrand / numrow).toFixed(2);
    
    var svQty = "Кол-во: " + numrow + " шт.";

    var text = "<tr style='background: #EEFACA'> <td style='font-size:14px'>"+"Итого :"+"</td> <td> </td> <td> </td> <td>"+ svQty +"</td>";
    text += "<td align=\"right\" class=\"nowrap\">" + edit_summ(nvVolume) + " ед.<br>$" + edit_summ(nvSum) + "</td>";
    text += "<td align=\"right\" class=\"nowrap\">$" + edit_summ(nvPrc) + "</td>";
    text += "<td align=\"right\" class=\"nowrap\">" + edit_summ(nvQual) + "</td>";
    text += "<td align=\"right\" class=\"nowrap\">" + edit_summ(nvBrand) + "</td>  </tr>";
    
    $(text).insertAfter($('table[class^="unit-list"] > tbody > tr:last'));
  }
  
  if (/\/main\/company\/view\/\d+\/marketing_report\/services/.test(window.location)) {
    var nvVolume = 0;
    var nvSum = 0;
    var nvPrc = 0;
    var nvQ1 = 0;
    var nvQ2 = 0;
    var nvQ3 = 0;
    var numrow = 0;
    var avVolAndSum=[];
    
    $( 'table[class^="unit-list"] > tbody > tr[class]' ).each( function() {
      var cells = $( 'td', this );
      console.log(cleanNumber($( cells[4] ).text()));
      
	  avVolAndSum = $( cells[4] ).html().split('<br>');
      nvVolume = nvVolume + parseFloat( cleanNumber(avVolAndSum[0]) );
      nvSum = nvSum + parseFloat( cleanNumber(avVolAndSum[1]) );
      nvPrc = nvPrc + parseFloat( cleanNumber($( cells[5] ).text()) );
      nvQ1 = nvQ1 + parseFloat( cleanNumber($( cells[6] ).text()) );
      nvQ2 = nvQ2 + parseFloat( cleanNumber($( cells[7] ).text()) );
      nvQ3 = nvQ3 + parseFloat( cleanNumber($( cells[8] ).text()) );
      numrow = numrow + 1;
    });
    //avg
	nvPrc = (nvPrc / numrow).toFixed(2);
	nvQ1 = (nvQ1 / numrow).toFixed(2);
	nvQ2 = (nvQ2 / numrow).toFixed(2);
	nvQ3 = (nvQ3 / numrow).toFixed(2);
    
    var svQty = "Кол-во: " + numrow + " шт.";

    var text = "<tr style='background: #EEFACA'> <td style='font-size:14px'>"+"Итого :"+"</td> <td> </td> <td> </td> <td>"+ svQty +"</td>";
    text += "<td align=\"right\" class=\"nowrap\">" + edit_summ(nvVolume) + " ед.<br>$" + edit_summ(nvSum) + "</td>";
    text += "<td align=\"right\" class=\"nowrap\">$" + edit_summ(nvPrc) + "</td>";
    text += "<td align=\"right\" class=\"nowrap\">" + edit_summ(nvQ1) + "</td>";
    text += "<td align=\"right\" class=\"nowrap\">" + edit_summ(nvQ2) + "</td>";
    text += "<td align=\"right\" class=\"nowrap\">" + edit_summ(nvQ3) + "</td>  </tr>";
    
    $(text).insertAfter($('table[class^="unit-list"] > tbody > tr:last'));
  }

}

var script = document.createElement("script");
script.textContent = '(' + run.toString() + ')();';
document.documentElement.appendChild(script);