您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
управление складами
// ==UserScript== // @name warehouse+ // @description управление складами // @namespace virtonomic* // @include http://virtonomic*.*/*/main/unit/view/*/sale/offer // @include http://virtonomic*.*/*/main/unit/view/*/sale // @version 1.0.2 // ==/UserScript== var win = (typeof(unsafeWindow) != 'undefined' ? unsafeWindow : top.window); $=win.$; var sel=3;//Только для своей компании var hidd=1;//0-не прятать пустые ряды,1-прятать //склад/не склад? if(/(?:Склад)/.test($('div[class*="officePlace"]').prop('textContent'))){ var inp=$('<td><input id="xxx"></td>'); var show=hidd; /////////прячем/не прячем ряды по умолчанию if(hidd){$('table.grid>tbody>tr:gt(0)').each(function(){ if($('tr>td:contains("Себестоимость")',this).next().prop('textContent')=="---") {$(this).css('display','none')}})} /////////функция показать/спрятать пустые позиции $('table.grid>tbody>tr th:eq(3)').click(function(){ var disp=(show==0?'none':'table-row'); $('table.grid>tbody>tr:gt(0)').each(function(){ if($('tr>td:contains("Себестоимость")',this).next().prop('textContent')=="---"){$(this).css('display',disp);} }); //переносим форму ввода изменений цены в первую видимую строку после работы функции show==1?inp.insertBefore($('table.grid>tbody>tr td>input.money[ss]:first')):inp.insertBefore($('table.grid>tbody>tr td>input.money[ss!=""]:first')); $('input#xxx').css('width',"80px"); show+=1;show=show%2;}) //////////индикатор изменения цены и красные индикаторы $('table.grid>tbody>tr:gt(0)').each(function(){ var tdd=$('<td id="td1"></td><td id="td2"></td>'); tdd.insertAfter($('td>input.money',this)).css('textAlign',"left"); $('td#td1').css('width',"40px");$('td#td2').css('width',"40px"); var price=($('td>input.money',this).attr('value')-0).toFixed(2); $('td>input.money',this).attr('price1',price).attr('price2',price); var ss=$('tr>td:contains("Себестоимость")',this).next().prop('textContent').replace(/[^\d\.]/g,''); $('td>input.money',this).attr('ss',ss); if(ss>0&&price==0){$('td>input.money',this).css('background',"#ff9999")}; if($('td:last select',this).attr('selectedIndex')==0&&ss>0){$('td:last select',this).css('background',"#ff9999")}; }) /////////////переносим форму ввода изменений цены в первую видимую строку при загрузке hidd==0?inp.insertBefore($('table.grid>tbody>tr td>input.money[ss]:first')):inp.insertBefore($('table.grid>tbody>tr td>input.money[ss!=""]:first')); $('input#xxx').css('width',"80px"); ////////////////////////////Групповые изменения//////////////////////////////////////// $('table.grid>tbody>tr th:eq(6)').click(function(e){ $('table.grid>tbody>tr:gt(0)').each(function(){ var price=$('td>input.money',this).attr('value'); $('td>input.money',this).attr('price2',price); }) var izmen=$('input#xxx').attr('value'); if(izmen!=''){ var proc=izmen.slice(-1)=="%"?1:0; //проценты или сумма? var znak=izmen.slice(0,1)=="+"?0:(izmen.slice(0,1)=="-"?1:2); // +, - или =? var izmen_fix=izmen.replace(/[^\d\.]/g,''); if(e.altKey){set_ss_alt(izmen_fix,proc,znak);} else if(e.shiftKey){set_ss_shift();} else if(e.ctrlKey){set_ss_ctrl(izmen_fix,proc,znak);} else set_all_ss();} else if(e.shiftKey){set_ss_shift();} else set_all_ss()}); //всё по сс function set_all_ss(){ $('table.grid>tbody>tr:gt(0)').each(function(){ var elem=$('td>input.money',this); var ss=elem.attr('ss'); elem.attr('value',ss); if(elem.attr('value')!=elem.attr('price1')&&ss>0) {elem.css('background',"#99ff99");$('td#td1',this).prop('textContent',elem.attr('price1')); $('td#td2',this).prop('textContent',(elem.attr('value')-elem.attr('price1')).toFixed(2));}else {elem.css('background',"#ffffff");$('td#td1',this).prop('textContent',""); $('td#td2',this).prop('textContent',"");} })} /////////////////////////////////////вычисления по сс//////// function set_ss_ctrl(i,p,z){ $('table.grid>tbody>tr:gt(0)').each(function(){ var elem=$('td>input.money',this); var ss=elem.attr('ss'); var ss=ss>0?ss:0; var val; if((ss!=0)&&(p==0)) /////////работа с числами//////// {switch(z){ case 0:val=((ss-0)+(i-0)).toFixed(2);break; //сумма case 1:val=(ss-i).toFixed(2);break; //разность case 2:val=i;break;}} //установка введённой суммы else if ((ss!=0)&&(p==1)) //////////работа с процентами/////// {switch(z){ case 0:val=(ss*(1+i/100)).toFixed(2);break; //сумма case 1:val=(ss*(1-i/100)).toFixed(2);break; //разность case 2:val=(i*ss/100).toFixed(2);break;}} //установка elem.attr('value',val>0?val:(0-0)); if(elem.attr('value')!=elem.attr('price1')&&elem.attr('price1')>0) {elem.css('background',"#99ff99");$('td#td1',this).prop('textContent',elem.attr('price1')); $('td#td2',this).prop('textContent',(elem.attr('value')-elem.attr('price1')).toFixed(2));} else {elem.css('background',"#ffffff");$('td#td1',this).prop('textContent',""); $('td#td2',this).prop('textContent',"");} if(ss>0&&elem.attr('value')==0){elem.css('background',"#ff9999");} })} ///////////////////////////вычисления по предыдущему значению/////////// function set_ss_alt(i,p,z){ $('table.grid>tbody>tr:gt(0)').each(function(){ var elem=$('td>input.money',this); var ss=elem.attr('price2'); var val; if((ss!=0)&&(p==0)) /////////работа с числами//////// {switch(z){ case 0:val=((ss-0)+(i-0)).toFixed(2);break; //сумма case 1:val=(ss-i).toFixed(2);break; //разность case 2:val=i;break;}} //установка введённой суммы else if ((ss!=0)&&(p==1)) //////////работа с процентами/////// {switch(z){ case 0:val=(ss*(1+i/100)).toFixed(2);break; //сумма case 1:val=(ss*(1-i/100)).toFixed(2);break; //разность case 2:val=(i*ss/100).toFixed(2);break;}} //установка elem.attr('value',val>0?val:0); if(elem.attr('value')!=elem.attr('price1')&&elem.attr('price1')>0) {elem.css('background',"#99ff99");$('td#td1',this).prop('textContent',elem.attr('price1')); $('td#td2',this).prop('textContent',(elem.attr('value')-elem.attr('price1')).toFixed(2));}else {elem.css('background',"#ffffff");$('td#td1',this).prop('textContent',""); $('td#td2',this).prop('textContent',"");} if(ss>0&&elem.attr('value')==0){elem.css('background',"#ff9999");} })} //возврат прежних значений function set_ss_shift(){ $('table.grid>tbody>tr:gt(0)').each(function(){ var ss=$('td>input.money',this).attr('price1'); $('td>input.money',this).attr('value',ss).css('background',"#ffffff"); $('td#td1',this).prop('textContent',""); $('td#td2',this).prop('textContent',"");})} ////////////////////////////////////////////////////////Одиночные изменения//////////////////////////////////////// $('table.grid>tbody>tr:gt(0)>td>input.money').dblclick(function(e){ var elem=$(this); var price=elem.attr('value'); elem.attr('price2',price); var izmen=$('input#xxx').attr('value'); if(izmen!=''){ var proc=izmen.slice(-1)=="%"?1:0; //проценты или сумма? var znak=izmen.slice(0,1)=="+"?0:(izmen.slice(0,1)=="-"?1:2); // +, - или =? var izmen_fix=izmen.replace(/[^\d\.]/g,''); if(e.altKey){set_alt(izmen_fix,proc,znak,elem);} else if(e.shiftKey){set_shift(elem);} else if(e.ctrlKey){set_ctrl(izmen_fix,proc,znak,elem);} else set_ss(elem);} else if(e.shiftKey){set_shift(elem);} else set_ss(elem)}); ///////////////////////////вычисления по предыдущему значению/////////// function set_alt(i,p,z,e){ var ss=e.attr('price2'); var val; if((ss!=0)&&(p==0)) /////////работа с числами//////// {switch(z){ case 0:val=((ss-0)+(i-0)).toFixed(2);break; //сумма case 1:val=(ss-i).toFixed(2);break; //разность case 2:val=i;break;}} //установка введённой суммы else if ((ss!=0)&&(p==1)) //////////работа с процентами/////// {switch(z){ case 0:val=(ss*(1+i/100)).toFixed(2);break; //сумма case 1:val=(ss*(1-i/100)).toFixed(2);break; //разность case 2:val=(i*ss/100).toFixed(2);break;}} //установка e.attr('value',val>0?val:0); if(e.attr('value')!=e.attr('price1')&&e.attr('price1')>0) {e.css('background',"#99ff99");e.next().prop('textContent',e.attr('price1')); e.next().next().prop('textContent',(e.attr('value')-e.attr('price1')).toFixed(2));}else {e.css('background',"#ffffff");e.next().prop('textContent',""); e.next().next().prop('textContent',"");} if(e.attr('ss')>0&&e.attr('value')==0){e.css('background',"#ff9999");} } function set_ss(e){ var ss=e.attr('ss'); e.attr('value',ss); if(e.attr('value')!=e.attr('price1')&&e.attr('price1')>0) {e.css('background',"#99ff99");e.next().prop('textContent',e.attr('price1')); e.next().next().prop('textContent',(e.attr('value')-e.attr('price1')).toFixed(2));}else {e.css('background',"#ffffff");e.next().prop('textContent',""); e.next().next().prop('textContent',"");}} /////////////////////////////////////вычисления по сс//////// function set_ctrl(i,p,z,e){ var ss=e.attr('ss'); var ss=ss>0?ss:0; var val; if((ss!=0)&&(p==0)) /////////работа с числами//////// {switch(z){ case 0:val=((ss-0)+(i-0)).toFixed(2);break; //сумма case 1:val=(ss-i).toFixed(2);break; //разность case 2:val=i;break;}} //установка введённой суммы else if ((ss!=0)&&(p==1)) //////////работа с процентами/////// {switch(z){ case 0:val=(ss*(1+i/100)).toFixed(2);break; //сумма case 1:val=(ss*(1-i/100)).toFixed(2);break; //разность case 2:val=(i*ss/100).toFixed(2);break;}} //установка e.attr('value',val>0?val:0); if(e.attr('value')!=e.attr('price1')&&e.attr('price1')>0) {e.css('background',"#99ff99");e.next().prop('textContent',e.attr('price1')); e.next().next().prop('textContent',(e.attr('value')-e.attr('price1')).toFixed(2));}else {e.css('background',"#ffffff");e.next().prop('textContent',""); e.next().next().prop('textContent',"");} if(e.attr('ss')>0&&e.attr('value')==0){e.css('background',"#ff9999");}} //возврат прежнего значения function set_shift(e){ var ss=e.attr('price1'); e.attr('value',ss).css('background',"#ffffff"); e.next().prop('textContent',""); e.next().next().prop('textContent',"");} //////////////////////////////////////////////////////////////Политика сбыта////////////////////////////////////// $('table.grid>tbody>tr th:eq(7)').click(function(){set_pol_sb();}); function set_pol_sb(){ $('table.grid>tbody>tr:gt(0)').each(function(){ $('td:last select',this).attr('selectedIndex',sel); $.each($('td:last select>option',this),function(index,value){ index==sel?$(value).prop('selected','selected'):$(value).prop('selected','');}) sel==2?$('td:last select',this).next('div').css('display','block'):$('td:last select',this).next('div').css('display','none'); (sel==0&&$('td>input.money',this).attr('ss')>0)?$('td:last select',this).css('background',"#ff9999"):$('td:last select',this).css('background',"#ffffff"); }) sel+=1;sel=sel%4; }}
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址