Greasy Fork is available in English.

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

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

נכון ליום 02-05-2015. ראה הגרסה האחרונה.

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

var run = function() {
  p=0, n=0, summa=[0,0], kach=[0,0], zakaz=[0,0], idTr=false, id=false;
  
  funZero = function() {
    p = 0;
    n = 0;
    summa = [0,0];
    kach = [0,0];
    zakaz = [0,0];
    idTr = false;
    id = false;
  }

  var img = $('div#unitImage > img').attr('src');
  img = img.substr(0,img.length-6);
  switch (img) {
    case '/img/v2/units/warehouse':
      $('div#mainContent > form > table.list').css('min-width', '100%');
      endT = function() {
        if(id) {
          var sumId = $(id).find('>td:nth-child(2) strong');
          if( zakaz[1] < parseInt( sumId.html().replace(/\s+/g, '').replace(/\$/g, '') ) ) {
            sumId.append('<br><span title="Значение реально свободного сырья" style="color:green">'+zakaz[1].toString().replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1&nbsp;')+'</span>');

            s = (summa[1]/zakaz[1]).toFixed(2);
            $(id).find('>td:nth-child(4) strong').append('<br>$<span title="Качество с учётом оценки запасов сырья" style="color:green">'+s+'</span>');

            if(summa[1]) sum = summa[1].toFixed(2).toString().replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1&nbsp;');
            else sum = '0.00';
            $(id).find('>td:nth-child(8) strong').append('<br>$<span title="С учётом оценки запасов сырья" style="color:green">'+sum+'</span>');

            if(kach[1]) kach[1] = (kach[1]/zakaz[1]).toFixed(2);
            else kach[1] = '0.00';
            $(id).find('>td:nth-child(6) strong').append('<br><span title="Качество с учётом оценки запасов сырья" style="color:green">'+kach[1]+'</span>');
          }
        }
        funZero();
      }
      $('div#mainContent > form > table.list > tbody > tr[class]').each(function() {

        strId = $(this).attr('class');
        switch (strId) {
          case 'p_title': // Титульная строка покупки товара
            endT();
            id = this;
            
            break;
          case 'odd':
          case 'even': // Строки покупки ресурсов
            // количество заказа
            z = parseInt( $(this).find('>td:nth-child(2) > input[type=text]').val() );
            // остаток на складе продавца
            t = $(this).find('>td:nth-child(9) span').html().replace('<br>','-').replace(/\s+/g, '').split('-');
            t = parseInt( t[0] );
            // общая стоимость заказа
            c = $(this).find('>td:nth-child(8)').html().replace(/\s+/g, '').replace(/\$/g, '');
            c = parseFloat( c );
            // качество
            k = $(this).find('>td:nth-child(6)').html();
            k = parseFloat( k );
            if(t < z) {
              zakaz[1] += t;
              summa[1] += c/z*t;
              kach[1] += t * k;
            } else {
              zakaz[1] += z;
              summa[1] += c;
              kach[1] += z * k;
            }
            
            break;
          default:

        }// end switch
      });
      if (id) endT();

      // Скрыть/показать поставщиков
      $('div#mainContent > form > table.list > tbody > tr:nth-child(1) > th:nth-child(1)').html('<div style="width:100%; text-align:center; color:blue; cursor:pointer"><strong name="showSeller"><span>Скрыть</span> поставщиков</strong></div>');
      $('strong[name=showSeller]').click(function() {s = $(this).find('span');
        $('div#mainContent > form > table.list > tbody > tr[class]').each(function() {
          switch ($(this).attr('class')) {
            case 'odd':
            case 'even': // Строки покупки ремурсов
              if(s.html() == 'Скрыть') $(this).css('display', 'none');
              else $(this).removeAttr('style');
          }// end switch
        });
        if( s.html() == 'Скрыть' ) s.html('Показать');
        else s.html('Скрыть');
      });

      break;
    default:
      $('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 = ['',''], str1 = '', 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&nbsp;')+'</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&nbsp;')+'</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&nbsp;')+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>');

            funZero();
          }
        }
      });
      
  } // end switch
}

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