您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
расчет контрактов на основе емкости рынка
// ==UserScript== // @name Закупка с учетом объема рынка by ctsigma // @namespace virtonomica // @description расчет контрактов на основе емкости рынка // @version 1.01 // @include http*://*virtonomic*.*/*/main/unit/view/*/supply // @grant none // ==/UserScript== var run = function(){ var win = (typeof (unsafeWindow) != 'undefined' ? unsafeWindow : top.window); var $ = win.$; var realm = getRealm(location.href); var loc = {origin:location.origin,realm:realm}; var geo = APIget_geo(location.href); var geoinfo = geo.country_id+'/'+geo.region_id+'/'+geo.city_id; var FldVol = $('<input id="market_percent" type="text" value="30" style="width:34px">'); var BtnSet = $('<input type="button" value="Заказать" title="Установить объем контрактов в размере доли рынка"/>').click(function() { var market_percent= parseFloat($( '#market_percent' ).prop('value')); if(confirm('Расчитать поставку '+market_percent+'% от текущей емкости рынка для всех контрактов?')) { SetContractData(geoinfo, market_percent/100); } }); var panel = $('div.metro_header'); panel.append($('<table><tr>').append('<td>').append(BtnSet).append('<td> доля рынка(%) </td>').append(FldVol)); function getRealm(href){ var matches = href.match(/\/(\w+)\/main\/unit\/view\//); return matches[1]; } function APIget_geo(href){ var reg = new RegExp('(\\S+\\/)('+loc.realm+')\\/.+?(\\d+)'); reg.exec(href); var id = RegExp.$3; var apiGeoURL= loc.origin + '/api/%realm%/main/geo/city/browse'.replace('%realm%',loc.realm); var apiSummaryUrl = loc.origin + '/api/%realm%/main/unit/summary'.replace('%realm%',loc.realm); var city_id = ''; $.ajax({ url: apiSummaryUrl, dataType: 'json', async: false, data: {id:id}, success: function(data){city_id = data.city_id;} }) var geo = {}; $.ajax({ url: apiGeoURL, dataType: 'json', async: false, success: function(data){ for(var k in data){if(data[k].city_id==city_id)geo = data[k];}} }) return geo; } function APIget_market(product_id,geo){ var apiMetricsURL = loc.origin + '/api/%realm%/main/marketing/report/retail/metrics'.replace('%realm%',loc.realm); var metrics = {}; $.ajax({ url: apiMetricsURL, dataType: 'json', async: false, data: {product_id:product_id,geo:geo}, success: function(data){ metrics = data;} }) return metrics; } function SetContractData(geoinfo,prct){ $('.list .product_row').each(function(){ var product_id = /product_row_(\d+).+/.exec($(this).attr('id'))[1]; var vol=APIget_market(product_id,geoinfo).local_market_size; console.log(product_id+'->'+vol); if (vol != 0) { vol = parseInt(vol * prct); $('input[name^="supplyContractData[party_quantity]"]',this).val(vol); } }) } }; if(window.top == window) { var script = document.createElement("script"); script.textContent = '(' + run.toString() + ')();'; document.documentElement.appendChild(script); }