Greasy Fork is available in English.

iks: virtonomica юнит/снабжение

Показывает средний кач и цену закупаемого сырья. На складах не работает.

Från och med 2015-05-01. Se den senaste versionen.

// ==UserScript==
// @name        iks: virtonomica юнит/снабжение
// @namespace   virtonomica
// @description Показывает средний кач и цену закупаемого сырья. На складах не работает.
// @include     http://*virtonomica*.*/*/main/unit/view/*/supply
// @version     1.05
// @grant       none
// ==/UserScript==

var run = function() {
  p = 0;
  n = 0;
  summa = [0,0];
  kach = [0,0];
  zakaz = [0,0];
  idTr = false;
  id = false;
  $('div#mainContent > form > table.list > tbody > tr[id]').each(function() {
    id = $(this).attr('id');
    if( id.indexOf('product_') + 1 ) {
      if( id.indexOf('product_row_') + 1 ) {
        p = parseInt( $(this).find('th[rowspan]').attr('rowspan') );
        idTr = $(this).find('table td:contains("Заказ")').parent();
        
        zakaz[0] = $(this).find('table td:contains("Заказ")').next().html().replace(/\s+/g, '');
        zakaz[0] = parseFloat( zakaz[0] );
      }
      
      var n1 = $(this).find('table tr:nth-child(2) > td:nth-child(1):contains("Стоимость")').next().next().html().replace(/\s+/g, '').replace(/\$/g, '');
      if(n1) sum = n1.split('/');
      else sum = [0,0];
      summa[0] += parseFloat(sum[0]);

      n1 = $(this).find('table tr:nth-child(3) > td:nth-child(1):contains("Качество")').next().html().replace(/\s+/g, '');
      if(n1) n1 = parseFloat( n1 );
      else n1 = 0;
      var n2 = parseFloat( $(this).find('input[type="type"]').val() );
      if(!n2) n2 = 0;
      kach[0] += n1 * n2;
      
      var z = $(this).find('table tr:nth-child(2) > td:nth-child(1):contains("Свободно")').next().html().replace(/\s+/g, '');
      if(!z) z = 0;
      else if(z == 'Неогр.') z = n2;
      else z = parseFloat( z );

      if(n2 > z) {
        zakaz[1] += z;
        kach[1] += n1 * z;
        var cena = $(this).find('table tr:nth-child(1) > td:nth-child(1):contains("Цена")').next().next().html().replace(/\s+/g, '').replace(/\$/g, '');
        summa[1] += parseFloat(cena) * z;
      } else {
        zakaz[1] += n2;
        kach[1] += n1 * n2;
        summa[1] += parseFloat(sum[0]);
      }

      n++;
      if(n==p) {
        var str = ['',''];
        var str1 = '';
        if(zakaz[0]>zakaz[1]) {
          str[0] = '<span title="Значение при сделаном заказе" style="color:red">';
          str[1] = '</span>&nbsp;/&nbsp;<span title="Качесто ед. реально свободного сырья" style="color:green">'+(kach[1]/zakaz[1]).toFixed(2)+'</span>';
            
          str1 = '</span>&nbsp;/&nbsp;$<span title="Цена ед. реально свободного сырья" style="color:green">'+(summa[1]/zakaz[1]).toFixed(2)+'</span>';
            
          var strZakaz = idTr.find('td:contains("Заказ")').next();
          strZakaz.html(str[0]+strZakaz.html()+'</span><br><span title="Значение реально свободного сырья" style="color:green">'+zakaz[1].toString().replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ') )+'</span>';
        }
        var k = (kach[0]/zakaz[0]).toFixed(2);
        if(k=="NaN") k = '0.00';
        var s1 = (summa[0]/zakaz[0]).toFixed(2);
        if(s1=="NaN") s1 = '0.00';
        idTr.after('<tr><td nowrap="">Качество</td><td nowrap="" align="right">'+str[0]+k+str[1]+'</td></tr>'
                   +'<tr><td nowrap="">Себестоимость</td><td nowrap="" align="right">$'+str[0]+s1+str1+'</td></tr>');
        
        p = 0;
        n = 0;
        summa = [0,0];
        kach = [0,0];
        zakaz = [0,0];
        idTr = false;
        id = false;
      }
    }
  });
}

if(window.top == window) {
    var script = document.createElement("script");
    script.textContent = '(' + run.toString() + ')();';
    document.documentElement.appendChild(script);
}