Virtonomica: управление закупками на склад

Корректирует закупки на склад при условии что поставщиков у каждого товара может быть несколько. Учитывает доступные остатки/ограничения_количества и пропорционально увеличивает/уменьшает закупку.

目前為 2015-05-29 提交的版本,檢視 最新版本

// ==UserScript==
// @name           Virtonomica: управление закупками на склад
// @version        1.0
// @namespace      Virtonomica
// @description    Корректирует закупки на склад при условии что поставщиков у каждого товара может быть несколько. Учитывает доступные остатки/ограничения_количества и пропорционально увеличивает/уменьшает закупку.
// @include        http://*virtonomic*.*/*/main/unit/view/*/supply
// ==/UserScript==

var run = function() {
	var win = (typeof(unsafeWindow) != 'undefined' ? unsafeWindow : top.window);
	$ = win.$;

	var img = $('#unitImage > img');
	var lookingForImg = '/img/v2/units/warehouse';
	//если это не склад, выходим
	if(img.attr('src').substr(0, lookingForImg.length) != lookingForImg) {
	   	return;
	}
	
	function toFloat(spNum){
		//console.log('spNum = ' + spNum);
		if(spNum == null || spNum == '') {
			return 0;
		}
		return parseFloat(spNum.replace('$','').replace(/\s+/g,''),10);
	}
	function priceToFloat(spNum){
		//console.log('spNum = ' + spNum);
		if(spNum == null || spNum == '') {
			return 0;
		}
		var nvSlashPos = spNum.indexOf("/");
		if(nvSlashPos > -1){
			return toFloat(spNum.substr(nvSlashPos + 1));
		} else {
			return toFloat(spNum);
		}
	}
	function remainToFloat(spNum){
		//console.log('spNum = ' + spNum);
		if(spNum == null || spNum == '') {
			return 0;
		}
		var nvSlashPos = spNum.indexOf("/");
		if(nvSlashPos > -1){
			return toFloat(spNum.substr(nvSlashPos + 1));
		} else {
			return toFloat(spNum);
		}
	}
	var data = [];
	function addProduct(spProductTitle, npQtyNeed){
		data[spProductTitle] = {
			aContras : []
		   ,nQtyNeed : npQtyNeed
		};
	}
	function addContras(spProductTitle, opInputOrderQty, npOrderedQty, npPrice, npQuality, npRemain){
		data[spProductTitle].aContras.push({
			oInputOrderQty : opInputOrderQty
		   ,nOrderedQty    : npOrderedQty
		   ,nPrice    	   : npPrice
		   ,nQuality       : npQuality
		   ,nRemain        : npRemain
		});
	}
	function oneToOne(){
		var svProductTitle = '';
		data = [];
		$("table.list > tbody > tr[class]").each( function() {
			var row = $(this);
			if(row.attr('class') == 'p_title'){
				//Отгрузки по контрактам
				var nvQtyNeed = toFloat($('> td.p_title_l > div:nth-child(2) > table > tbody > tr:nth-child(3) > td:nth-child(2) > strong', row).text());
				var ovProductImg = $('> td.p_title_l > div:nth-child(1) > div:nth-child(1) > div > img', row);
				
				svProductTitle = ovProductImg.attr('title');
				addProduct(svProductTitle, nvQtyNeed);
			} else if (row.attr('class') == 'odd' || row.attr('class') == 'even'){
				var ovInputOrderQty = $('> td:nth-child(2) > input[type="text"]:nth-child(1)', row);
				var nvOrderedQty = toFloat($('> td:nth-child(3)', row).text());
				var nvPrice = priceToFloat($('> td:nth-child(4)', row).text());
				var nvQuality = toFloat($('> td:nth-child(6)', row).text());
				var nvRemain = remainToFloat($('> td:nth-child(9)', row).text());
				
				addContras(svProductTitle, ovInputOrderQty, nvOrderedQty, nvPrice, nvQuality, nvRemain);
			}
		});
	}
	// кнопки
	 var oneToOneBtn = $('<button>1:1</button>').click(function() {
		 oneToOne();
	});
	$('#mainContent form').first().before(oneToOneBtn);
}

// Хак, что бы получить полноценный доступ к DOM >:]
var script = document.createElement("script");
script.textContent = '(' + run.toString() + ')();';
document.documentElement.appendChild(script);

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址