您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
На странице управления персоналом
// ==UserScript== // @name salary&supply public // @namespace virtonomica // @description На странице управления персоналом // @description Облегчает установку зарплат 100% (среднегородская), 1:1 (по требуемой квалификации) // @description Облегчает установку обучения // @description Сортировка по квалификации: меньше треб., больше треб., равна требуемой. // @description Сортировка по зарплате: <100%, >=100%, >=150% // @description на основе скрипта Crocuta http://userscripts.org/scripts/show/174468 // @version 1.35 // @include http*://virtonomic*.*/*/main/company/view/*/unit_list/employee* // @grant none // ==/UserScript== var run = function(type) { //globals var win = (typeof (unsafeWindow) != 'undefined' ? unsafeWindow : top.window); $ = win.$; var arr_envd={"Алмазы":100,"Бокситы":100,"Глина":100,"Древесина":30,"Железная руда":100,"Золото":100,"Кремний":100,"Марганец":100,"Медный колчедан":100,"Нефть":100,"Полиметаллическая руда":100,"Природные минералы":100,"Титановая руда":100,"Уголь":100,"Хром":100,"LED":20,"Авиадвигатель":10,"Авиашасси":10,"Авионика":10,"Автозапчасти":20,"Алюминий":20,"Бумага":5,"Двигатель":15,"Зеркальный лист":20,"Интерьер самолета":10,"Кожа":5,"Комплектующие":20,"Корпус яхты":15,"Косметическое масло":20,"Краска":5,"Литий":10,"Литий-ионный аккумулятор":15,"Медь":20,"Микропроцессор":20,"Натуральные лекарственные компоненты":20,"Оснащение яхты":15,"Отходы хлопчатника":10,"Парфюмерная эссенция":20,"Пластмасса":10,"Резина":10,"Рыболовная сеть":10,"Сверхлёгкий алюминиевый сплав":20,"Светочувствительная матрица":20,"Секция фюзеляжа":10,"Синтетическая ткань":5,"Синтетические лекарственные компоненты":20,"Сталь":10,"Стекло":20,"Термопластик":10,"Термоэлемент":15,"Титан":20,"Ткань":20,"Углепластик":10,"Химикаты":20,"Хлопковая ткань":20,"Хлопковое волокно":10,"Цинк":10,"Шерсть":20,"Электронные компоненты":20,"Электропривод":15,"Элементы авиакрыла":10,"Элементы авиаоперения":10,"Этанол":20,"Апельсин":5,"Воск":10,"Вощина":10,"Зерно":10,"Какао":10,"Картофель":10,"Комбикорм":10,"Кормовые культуры":10,"Кофе":10,"Кукуруза":5,"Маточное молочко":20,"Молоко":15,"Мясо":20,"Мёд":10,"Оливки":10,"Подсолнечник":15,"Помидоры":5,"Рыбная мука":10,"Сахар":10,"Соя":10,"Табак":5,"Фрукты":5,"Хлопок":10,"Цветы и эфиромасличные культуры":5,"Чайный лист":5,"Яйца":15,"Бурбон":10,"Джем":10,"Зеленый чай":10,"Зефир":15,"Кисель":10,"Колбасные изделия":15,"Кондитерские изделия":15,"Консервированная кукуруза":15,"Консервированные оливки":15,"Консервы":15,"Конфеты":10,"Красная икра":20,"Кукурузная мука":10,"Кукурузные хлопья":5,"Ликер":10,"Макаронные изделия":5,"Масло":10,"Мисо-суп":5,"Молочные продукты":10,"Мороженое":15,"Мука":10,"Натуральный кофе":20,"Оливковое масло":20,"Печень трески":15,"Пиво":10,"Продукты быстрого приготовления":5,"Прохладительные напитки":10,"Пуэр":50,"Растворимый кофе":5,"Рыбные деликатесы":20,"Рыбные консервы":15,"Соевый соус":15,"Сок":10,"Соусы":5,"Специи":5,"Спиртные напитки":10,"Суфле":15,"Сыр":10,"Сыр фета":10,"Тофу":10,"Фри":10,"Фруктовый чай":10,"Хлеб":10,"Черная икра":50,"Черный чай":10,"Чипсы":5,"Шоколад":10,"Энергетические напитки":10,"GPS-навигаторы":20,"LED-телевизоры":50,"USB-флэш-накопитель":20,"Автомобиль":100,"Автомобильное сиденье":15,"Автомобильные багажники":20,"Автомобильные диски":20,"Автосигнализация":20,"Антифриз":20,"Аудиотехника":50,"Бейсболка":20,"Бижутерия":20,"Бриллианты":30,"Бронзовый декор":30,"Бытовая химия":20,"Велосипед":20,"Верхняя одежда":20,"Внедорожник":100,"Водный скутер":30,"Газонокосилка":20,"Гироскутер":15,"Гриль для дачи":20,"Деловая одежда":20,"Детская коляска":20,"Детская кроватка":5,"Детское питание":15,"Джинсы":20,"Душевые кабинки":5,"Жемчужные украшения":50,"Заварочный чайник":20,"Зеркало":20,"Зонт":20,"Игровые консоли":50,"Игрушки":20,"Канцтовары":20,"Керамическая посуда":20,"Книги":15,"Кованая садовая мебель":30,"Ковер":20,"Кожгалантерея":20,"Коммерческий автомобиль":100,"Компьютер":30,"Компьютерные аксессуары":20,"Кондиционер":50,"Консервированный корм для животных":15,"Конструктор":20,"Косметика":15,"Кофе-машина":50,"Кузовные запчасти":20,"Кухонная мебель":20,"Кухонные плиты":50,"Мебель":20,"Мобильный телефон":20,"Моторное масло":20,"Мотоцикл":30,"Нижнее белье":20,"Носки":10,"Ноутбук":30,"Обувь":20,"Одежда":20,"Одежда для малышей":20,"Одеяло":20,"Омыватель стекол":20,"Офисная мебель":20,"Офисное кресло":20,"Парфюмерия":20,"Планшет":30,"Подарки и Сувениры":20,"Подгузники":10,"Полотенце":20,"Пончо":20,"Посуда":20,"Посудомоечные машины":50,"Пресса":15,"Принтер":30,"Пылесос":50,"Радионяня":10,"Развивающие игрушки":20,"Садовый декор":20,"Садовый инвентарь":20,"Сантехника":20,"Сапоги":20,"Светильник":20,"Светодиодная лампа":15,"Седан":100,"Сигареты":20,"Сигары":10,"Сковородки":20,"Смартфон":20,"Снюс":20,"Сомбреро":20,"Спальная мебель":20,"Спорт-кар":100,"Спортинвентарь":20,"Стиральные машины":50,"Столовое и постельное бельё":20,"Сумки и портфели":20,"Сухой корм для животных":15,"Телевизоры":50,"Товары для творчества":20,"Тренажер":20,"Утюг":20,"Фен":20,"Фольктдрект":20,"Фототехника":20,"Холодильники":50,"Цифровая видеокамера":20,"Цифровой фотоаппарат":20,"Чайник":20,"Часы":30,"Чистящие средства":20,"Шины":20,"Электроинструмент":20,"Электромобиль":100,"Элемент питания":15,"Ювелирные украшения":50,"Витамины":20,"Гормональные препараты":10,"Косметические маски":20,"Лекарственные травы":20,"Медицинский антисептик":10,"Медицинский инструментарий":20,"Никотиновый пластырь":15,"Природные лекарства":20,"Рыбий жир":20,"Синтетические лекарства":10,"Спортивное питание":10,"Средства гигиены":20,"Электронный тонометр":20,"IT-оборудование":30,"Автозаправочное оборудование":30,"Авторемонтное оборудование":30,"Гелиостат":30,"Горно-шахтное оборудование":30,"Интерьер дошкольных учреждений":30,"Коммуникационное оборудование":30,"Мазутный энергоблок":30,"Медицинское оборудование":30,"Мусороприёмное оборудование":30,"Мусоросжигательный энергоблок":30,"Парикмахерское оборудование":30,"Паровая турбина":30,"Паровой котёл":30,"Пилорама":30,"Прибор":30,"Ресторанное оборудование":30,"Рыболовецкий траулер":30,"Серверная платформа":30,"Система очистки дымовых газов":30,"Солнечный энергоблок":30,"Станок":30,"Теплообменное оборудование":30,"Топливное оборудование":30,"Топливораздаточная колонка":30,"Трактор":30,"Угольная мельница":30,"Угольный энергоблок":30,"Узкофюзеляжный самолет":10,"Жемчуг":100,"Крабы":20,"Лосось":20,"Осетр":10,"Промысловая рыба":20,"Треска":20,"Устрицы":20,"Домашняя птица":20,"Коровы":20,"Овцы":20,"Пчёлы":20,"Свиньи":20,"Арт декор":30,"Интерьер яхты":100,"Шагрень":15,"Яхта":100,"Бензин Нормаль-80":100,"Бензин Премиум-95":100,"Бензин Регуляр-92":100,"Биодизель":100,"Дизельное топливо":100,"Мазут":100}; var realm = readCookie('last_realm'); var today = $('#server-time').next().text(); var shop_price = JSON.parse( window.localStorage.getItem('shop_price') ); if (shop_price == null) shop_price =new Object(); // utils function f2(val) {return parseFloat(Math.floor(val *100)/100);} // "округляем" до 2х знаков function paging(pages){ // добавить пагинацию $('.pager_options > .selected').removeClass('selected').text('').append($('.pager_options a:eq(0)').parent().html()); var links = $('.pager_options a'); var cookieName = /^\/\w+\/main\/company\/view\/\d+\/unit_list$/.test(location.pathname) ? 'mainUPP' : 'UPP'; var upp = readCookie(cookieName); if (upp == null) {upp = 50;} links.each(function (i) { var a = $(this); a.attr('href', a.attr('href').replace(pages[i][0], pages[i][1])); a.text(pages[i][1]); }); } //end of paging function APIgetSummary(href,refresh){ //считать данныепо предприятию через API var reg = new RegExp('(\\S+\\/)('+realm+')\\/.+?(\\d+)'); var re = reg.exec(href); var id = RegExp.$3; var apiSummaryUrl = RegExp.$1 + 'api/%realm%/main/unit/summary'.replace('%realm%',RegExp.$2); var apiToken = RegExp.$1 + 'api/%realm%/main/token'.replace('%realm%',RegExp.$2); var apiRefresh = RegExp.$1 + 'api/%realm%/main/unit/refresh'.replace('%realm%',RegExp.$2); if (refresh){ var token; $.ajax({ type:'GET', async:false, url:apiToken, success:function(data){token = data;} }); $.ajax({ // сброс кэша type:'POST', async:false, url:apiRefresh, data:{id:id,token:token} }) }; var summary = {}; $.ajax({ url: apiSummaryUrl, dataType: 'json', async: false, data: {id:id}, success: function(data){summary = data;} }) return summary; } function wall(title,total){ typeof(total) != 'undefined' ? total = '/'+total : total = 'анализ'; $('<div id="js-wall" style="position: fixed; top: 0px; left: 0px; background-color: black; z-index: 100000; opacity: 0.2;" />').height($(window).height()).width($(window).width()).prependTo('body'); $('<div id="js-progress" style="color: black; top: ' + $(window).height() / 2 + 'px; position: fixed; z-index: 10000; font-size: 40pt; text-align: center;" >Выполнено '+title+': <span id="js-curr"></span>' + total + '</div>').width($(window).width()).prependTo('body'); }// end of wall() function remove_wall(){ $('#js-progress').remove(); $('#js-wall').remove(); }//end of remove_wall() function doit(arr, action, title, process) { try { wall(title,arr.length); promise = $.when(); $.each(arr, function (index, obj) { promise = promise.then(function () { $('#js-curr').text(index); process(obj, action); return; }); }); remove_wall(); return; } catch (ex) { alert(ex); } } //end of doit() function setPriceENVD(workCell,action){ var UnitType = $('td:eq(2)',workCell).attr('class'); var UnitHref = $('td:eq(2)>a',workCell).attr('href'); switch(UnitType){ case "u-c i-service_light":UnitType="services_light";break; case "u-c i-restaurant":UnitType="services";break; case "u-c i-medicine":UnitType="services";break; case "u-c i-shop":UnitType="shop";break; //магазин case "u-c i-power":UnitType="i-power";break; //электростанция case "u-c i-orchard":UnitType="production";break; //плантация case "u-c i-fishingbase":UnitType="production";break; //рыбная база case "u-c i-farm":UnitType="production";break; //землеферма case "u-c i-animalfarm":UnitType="production";break; //животноводческая ферма case "u-c i-mill":UnitType="production";break; //мельница case "u-c i-workshop":UnitType="production";break; //завод case "u-c i-sawmill":UnitType="production";break; //лесопилка case "u-c i-mine":UnitType="production";break; //рудник case "u-c i-repair":UnitType="services";break; case "u-c i-fuel":UnitType="shop";break; //Заправка } if (UnitType == "production") { $.ajax({ type:"GET", async: false, url:UnitHref+'/sale', success:function(data){ var page = $(data); var setPrice = false; $('.grid>tbody>tr:gt(0)',page).each( function () { var sellOption = $('[selected="selected"]',this).val(); // 3=только своей компании if (sellOption==3) { //ставим цену автоматом, только если продаем сами себе var altt=$('td[title*="маркетинг"]>a>img',this).attr('alt'); var sbst=$('td.nowrap td:contains("Себестоимость")',this).next().prop('textContent').replace(/[^\d\.]/g,''); var newPrice = (sbst*(1+arr_envd[altt]/100)).toFixed(2); var price = parseFloat($('.money:eq(0)',this).val().replace(/[^\d\.]/g,'')).toFixed(2); if (price != newPrice && newPrice > 0) {$('.money:eq(0)',this).prop("value",newPrice);setPrice=true;} } }); if (setPrice) { var postData = $('form[name="storageForm"]',page).serialize(); $.ajax({ type:"POST", async: false, url:UnitHref+'/sale', data:postData }); } } }); } var id_shop = /(\d+)/.exec(UnitHref)[0]; if (shop_price[id_shop] == null) shop_price[id_shop] = new Object(); if (UnitType == "shop" && shop_price[id_shop] != today) { console.log("setting prices in shop " + id_shop); var recalcPrice=$('#recalcPrice:checked').val()=="X"?"X":""; //полный пересчет цен $.ajax({ type:"GET", async: false, url:UnitHref+'/trading_hall', success:function(data){ var page = $(data); var setPrice = false; $('.grid tr input[type="text"]',page).each( function() { var sell = parseFloat($(this).val().replace(/[^\d\.]/g,'')); var buy = parseFloat($(this).parent().prev().text().trim().replace(/[^\d\.]/g,'')); var share = parseFloat($(this).parent().next().text().trim().replace(/[^\d\.]/g,'').replace('%','')); var vol_sold = parseFloat($(this).parent().prevAll('td:eq(5)').text().replace(/[^\d\.]/g,'')); var last_lot = parseFloat(/(\d+)\[(\d+)]/.exec($(this).parent().prevAll('td:eq(4)').text().replace(/\s/g,''))[2]); var warehouse = parseFloat($(this).parent().prevAll('td:eq(3)').text().replace(/[^\d\.]/g,'')); var good = $(this).parent().prevAll('td:eq(6)').attr('title').replace(' (кликните для просмотра подробного маркетингового отчёта)',''); //Автомобиль, Автозапчасти... if (!isNaN(buy)) { if (sell < buy || recalcPrice=='X') {var newPrice = 1.02*buy;$(this).val(f2(newPrice));setPrice=true;} // продавать надо дороже, чем купили else { // if (good == 'Автомобиль') {var newPrice = 1.02*buy;$(this).val(newPrice);setPrice=true;} // продаем по себестоимости // остальное исходя из доли рынка if (share > 50) {var newPrice = Math.max(sell*1.10,sell+1.00);$(this).val(f2(newPrice));setPrice=true;} // если доля рынка больше 50% поднимаем цену, шаг 10% или 100с else if (share > 20) {var newPrice = Math.max(sell*1.05,sell+0.10);$(this).val(f2(newPrice));setPrice=true;} // если доля рынка больше 10% поднимаем цену, шаг 5% или 10с else if (share > 10 ) {var newPrice = Math.max(sell*1.01,sell+0.01);$(this).val(f2(newPrice));setPrice=true;} // если доля рынка больше 3% поднимаем цену, шаг 1% или 1с else if (share < 5 && last_lot != warehouse) {var newPrice = Math.max(Math.min(sell*0.95,sell-0.01),buy+0.01);$(this).val(f2(newPrice));setPrice=true;} // если доля рынка близка к нулю опускаем цену, шаг 1% или 1с. Не ниже чем сс } } }); if (setPrice) { $('form[name="tradingHallForm"] input[name="action"]',page).val("setprice"); var postData = $('form[name="tradingHallForm"]',page).serialize(); $.ajax({ type:"POST", async: false, url:UnitHref+'/trading_hall', data:postData }); } } }); shop_price[id_shop] = today; window.localStorage.setItem( 'shop_price', JSON.stringify( shop_price ) ); //запишем, что уже обработали магазин } }//end function setPriceENVD function setSuply(workCell,action){ if ($('td:eq(10)>a',workCell).length > 0) return; //не обрабатывать предприятия в отпуске var UnitType = $('td:eq(2)',workCell).attr('class'); var UnitCode = $('td:eq(0)>input',workCell).attr('value'); var UnitName = $('td:eq(2)>a',workCell).text(); var UnitHref = $('td:eq(2)>a',workCell).attr('href'); var UnitWorkers = $('td:eq(4)>input',workCell).attr('value'); var UnitWorkersTotal = $('td:eq(5)>input',workCell).attr('value'); var UnitSalary = parseFloat($('td:eq(6)',workCell).text()); var UnitSalaryTotal = $('td:eq(7)>input',workCell).attr('value'); var UnitQuantity = $('td:eq(8)>input',workCell).attr('value'); var UnitQuantityTotal = parseFloat($('td:eq(9)',workCell).text()); switch(UnitType){ case "u-c i-restaurant":UnitType="services";break; case "u-c i-medicine":UnitType="services";break; case "u-c i-shop":UnitType="shop";break; case "u-c i-power":UnitType="production";break; case "u-c i-animalfarm":UnitType="animalfarm";break; case "u-c i-mill":UnitType="production";break; case "u-c i-workshop":UnitType="production";break; case "u-c i-repair":UnitType="services";break; case "u-c i-fuel":UnitType="shop";break; //Заправка case "u-c i-educational":UnitType="services";break; } if (!((UnitType == 'production')||(UnitType == 'animalfarm')||(UnitType == 'shop')||(UnitType == 'services'))) return false; $.ajax({ type:"GET", async: false, url:UnitHref+'/supply', success:function(data){ var severity = 0; // ошибки var postData = ''; //формируем post-строку var field = ''; var max_pos = 0; switch (UnitType){ case 'services': // посещаемость сервисных предприятий var summary = APIgetSummary(UnitHref,true); if (summary.equipment_count === 0 || summary.employee_count === 0) return; var k_max = summary.equipment_count / summary.equipment_max * Math.min(summary.employee_required_by_equipment,summary.employee_count) / summary.employee_required_by_equipment; k_max = isNaN(k_max)?1:k_max; var pos = ''; $.ajax({ type:"GET", async: false, url:UnitHref, success:function(data){pos = $("td.title:contains('Количество посетителей')",data).next().text().replace(/\s+/g,'').match(/\d+/g);} }); max_pos = (pos[1]*k_max); max_pos = isNaN(max_pos)?summary.employee_count:max_pos; field = 'Расход'; break; case 'shop': // в торговой точке field = 'Продано'; break; default: field = 'Требуется'; break; } $("tr[id^='product_row']",data).each( function() { // Требуется var sales = parseInt ( $('tr:contains("'+field+'"):last', this).text().replace(/\D+/g,'') ); var warehouse = parseInt ( $('tr:contains("Количество"):last', this).text().replace(/\D+/g,'') ); var purchase = parseInt ( $('tr:contains("Закупка"):last', this).text().replace(/\D+/g,'') ); var material = $("th [alt]",this).attr("alt"); var max_sales = 0; switch (UnitType){ case 'services': var sales_per_pos = parseInt ( $('tr:contains("Расх. на клиента"):last', this).text().replace(/\D+/g,'') ); max_sales = sales_per_pos * max_pos; break; case 'shop': max_sales = parseInt( (sales<10?10:sales) * 1.25 );break; // максимальный расход в ход. если оборот маленький, то закупка 10ед default: max_sales = parseInt( sales );break; // максимальный расход в ход } if ((UnitType == 'animalfarm')&&(sales > warehouse)) severity=2; // если остатков не хватает для питания var max_available = 0; // доступный остаток для заказа var limit = 0; var suppliers = 0; var order = 0; var good = $(this); var good_id = /\d+-?\d+/.exec(good.attr('id'))[0]; var good_id_ = good_id; do{ if ($('td:last',this).text()=='Выбрать поставщика') break; //поставщики отсутствуют max_available = $('tr:contains("Свободно"):last', good).text().replace(/\D+/g,''); max_available = parseInt ( (max_available=='')?999999999999:max_available ); //Неогр. = 99999... limit = parseInt($('td[id^="quantityField"] input[name^="supplyContractData"]', good).next().next().text().replace(/\D+/g,'')); limit = isNaN(limit)?999999999999:limit; // если лимита поставки нет, то лимит = 99999... max_available = Math.min(max_available,limit); // определим сколько закупается сейчас order = order + Math.min(max_available,parseInt ( $('td[id^="quantityField"] input[name^="supplyContractData"]', good).val() )); ++suppliers; good = $(good).next(); good_id_ = /\d+-?\d+/.exec(good.attr('id')); good_id_ = (good_id_ === null)?-1:good_id_[0]; }while (good_id_ == good_id); if (suppliers != 1) { //поставщиков нет или несколько if ((max_sales + sales > warehouse + order)||(suppliers == 0)) severity = 2; //если не достаточно товара, поставим ссылку return; // let's check next material } var OrderQuantity=0; // console.log(material+': sales='+sales+', warehouse='+warehouse+', purchase='+purchase+', order='+order+', max_sales='+max_sales); switch(action){ case 'x1': //поставка с учетом остатков на один день x1 if (UnitType=='shop' || UnitType=='services') { if (warehouse <= purchase * 1.02) sales = Math.max(sales,purchase,order); //если все распродали, то требуется закупить не меньше, чем заказывали ранее } OrderQuantity = Math.max(max_sales + sales - warehouse,0); // Закупка с учетом остатков на складе OrderQuantity = Math.min(OrderQuantity,max_sales); // Закупка не больше, чем может понадобиться break; case '1:1': //поставка по требованию 1:1 OrderQuantity = max_sales; break; } if (OrderQuantity > max_available) severity=1; // если остатков не хватает для поставки if (OrderQuantity != order){ // меняем данные, если они изменились var lVal=''; $("select[name^='supplyContractData']", this).each( function() { lVal = $(this).attr('name').indexOf('party_quantity') > 0 ? OrderQuantity : $(this).val(); postData = postData + $(this).attr('name') + '=' + lVal + "&"; }); $("input[name^='supplyContractData']", this).each( function() { lVal = $(this).attr('name').indexOf('party_quantity') > 0 ? OrderQuantity : $(this).val(); postData = postData + $(this).attr('name') + '=' + lVal + "&"; }); } }); switch(severity){ case 1:var obj1 = $('<a href="'+UnitHref+'/supply'+'">').append($('<img>').attr({'src': '/img/unit_indicator/unit_possible_shortage_material.gif', 'height': 16, 'width': 16}));break; // возможен недостаток товара case 2:obj1 = $('<a href="'+UnitHref+'/supply'+'">').append($('<img>').attr({'src': '/img/unit_indicator/unit_insufficient_supply_material.gif', 'height': 16, 'width': 16}));break; // не хватает для питания default:obj1 = $('<a href="https://virtonomica.ru/vera/main/user/privat/persondata/pay_service/list">').append('<div class="lock">');break; } if (postData.length>0){ //отправим на сервер, только если что-то надо менять $('td:eq(11)',workCell).empty().append($('<img>').attr({'src': 'http://s3.devels.info/load.gif', 'height': 16, 'width': 16})); $.ajax({ type:"POST", async: false, url:UnitHref+'/supply', data:postData + 'applyChanges=Изменить', success:function(){ $('td:eq(11)',workCell).attr('class','nowrap').empty().append(obj1); if (severity > 0) $('td:eq(11)',workCell).attr('class','highLight'); } }); } else if(severity > 0) {$('td:eq(11)',workCell).attr('class','nowrap').empty().append(obj1);$('td:eq(11)',workCell).attr('class','highLight');} } }); } // End of function SetSupply() function setAll(){ var qualification=$('input[name="qualification"]:checked').val(); var supply=$('input[name="supply"]:checked').val(); var setPrice=$('input[name="setPrice"]:checked').val()=="X"?"X":""; var arr = new Array(); arr.length=0; $('table.list>tbody>tr>th:eq(0)>input').attr('checked',false); //uncheck group flag $('table.list>tbody>tr:gt(0):has(:checkbox) input:checked').each(function(){ $(this).attr('checked',false); //uncheck var objCell = $(this).parent().parent(); arr[arr.length] = objCell; }) if(supply!="") doit(arr,supply,' (setSuply'+supply+')',function(objCell,action){setSuply(objCell,action);}); if(setPrice!="") doit(arr,'',' (setPrice)',function(objCell,action){setPriceENVD(objCell,action);}); return false; } //end of setAll() // Добавить кнопку фиксс. цен для магазина $("table.list tr:gt(0):has(:checkbox)").each(function(){ var unit_id = /(\d+)/.exec($('td:eq(2)>a',this).attr('href'))[0]; if (shop_price[unit_id] == today) { var container = $("td:eq(2)", this); container.append($('<img id="' + unit_id + '" border="0" align="middle" style="margin-right: 1px" title="отменить фиксацию цен" src="/img/smallX.gif">').click(function(){ delete shop_price[unit_id]; window.localStorage.setItem( 'shop_price', JSON.stringify( shop_price ) ); $('#' + unit_id).remove(); })); } }); // Добавить фильтр поставок var sup = false; $('table.list>tbody>tr:eq(0) th:contains("Персонал")').attr('colspan',7); $('table.list>tbody>tr:eq(0)').append($('<th>Пост.</th>').click(function(){ sup = ~sup; $('table.list>tbody>tr:gt(2):not([id*="steward"]):not(:last)>td [class="lock"]').parent().parent().parent().each(function(){sup?$(this).css('display','none'):$(this).css('display','table-row')}); })); var m_block = $('<td width="235" id="id_unitsManage"><fieldset style="height: 110px;"><legend>"Управление"</legend>' +'<table><tbody>' +'<tr>' +'<td height="10" title="автоматический расчет поставок на предприятия, в магазинах, ресторанах и медцентрах">Sup</td>' +'<td><input type="radio" value="" name="supply">X</td>' +'<td><input type="radio" value="1:1" name="supply">1:1</td>' +'<td><input type="radio" checked="true" value="x1" name="supply">x1</td>' +'</tr>' +'<tr>' +'<td>' +'<table><tbody>' +'<tr>' +'<td><input type="checkbox" value="X" name="setPrice" id="setPrice" title="автоматически перечистать цены в магазинах, ресторанах и сервисных предприятиях">Цены</td>' +'</tr>' +'<tr>' +'<td><input type="checkbox" value="X" name="recalcPrice" id="recalcPrice" title="При авто установке цен, цены в магазинах будут пересчитаны для ВСЕХ позиций">rePrice</td>' +'</tr>' +'<tr>' +'<td></td>' +'</tr>' +'</tbody></table>' +'</td>' +'<td colspan="2" align="center"><input type="button" id="btn_calc" value="Расчет"></td>' +'</tr>' +'</tbody></table>' +'</fieldset></td>'); $('legend:contains("Управление персоналом выбранных подразделений")').parent().parent().after(m_block); $('#btn_calc').click(function(){setAll();}); var pages = [[10,10],[25,25],[50,200],[100,400],[200,800],[400,1000]]; paging(pages); } // end of run() // Хак, что бы получить полноценный доступ к DOM >:] var script = document.createElement("script"); script.textContent = '(' + run.toString() + ')();'; document.documentElement.appendChild(script);