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

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

2015-05-01 일자. 최신 버전을 확인하세요.

질문, 리뷰하거나, 이 스크립트를 신고하세요.
// ==UserScript==
// @name        iks: virtonomica юнит/снабжение
// @namespace   virtonomica
// @description Показывает средний кач и цену закупаемого сырья. На складах не работает.
// @include     http://*virtonomica*.*/*/main/unit/view/*/supply
// @version     1.11
// @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;
        summa[1] += summa[0]/n2 * z;
      } else {
        zakaz[1] += n2;
        kach[1] += n1 * n2;
        summa[1] += parseFloat(sum[0]);
      }

      n++;
      if(n==p) {
        var str = ['',''];
        var str1 = '';
        var str2 = '';
        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>';
          
          str2 = '</span><br>&nbsp;$<span title="Стоимость реально свободного сырья" style="color:green">'+summa[1].toFixed(2).toString().replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ')+'</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];
        if(k) k = k.toFixed(2);
        else  k = '0.00';
        var s1 = summa[0]/zakaz[0];
        if(s1) s1 = s1.toFixed(2);
        else s1 = '0.00';
        if(summa[0]) summa[0] = summa[0].toFixed(2);
        else  summa[0] = '0.00';
        idTr.after('<tr><td nowrap="">Стоимость</td><td nowrap="" align="right">&nbsp;$'+str[0]+summa[0].replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ')+str2+'</td></tr>'
                   +'<tr><td nowrap="">Качество</td><td nowrap="" align="right">'+str[0]+k+str[1]+'</td></tr>'
                   +'<tr><td nowrap="">Себестоимость</td><td nowrap="" align="right">&nbsp;$'+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);
}