// ==UserScript==
// @name Оптимизация налоговых выплат FactorNew
// @namespace Оптимизация налоговых выплат
// @version 1.1
// @description Оптимизация налоговых выплат
// @include http://virtonomic*.*/*/main/geo/regionENVD/*
// @include http://virtonomic*.*/*/main/geo/regionlist/*
// @include http://virtonomic*.*/*/main/geo/countrydutylist/*
// @include http://virtonomic*.*/*/main/common/main_page/game_info/world
// @include http://virtonomic*.*/*/main/unit/view/*/sale
// ==/UserScript==
var run = function() {
var win = (typeof(unsafeWindow) != 'undefined' ? unsafeWindow : top.window);
$ = win.$;
$(document).ready(function () {
var strn=window.location.href;
strn=strn.split("/")
console.log(strn)
//записываем envd**************************
if (strn[6]=='regionENVD'){
localStorage.removeItem("envd");
var envd={};
var tr=$('table.list>tbody>tr.odd, tr.even');
//console.log(tr.length)
for (i=0; i<tr.length; i++){
var td=$('td:has(img)', tr[i]);
// console.log(td.length)
for(z=0; z<td.length; z++){
var name=$(td[z]).next().text();
// console.log(name)
var proc=parseInt($(td[z]).next().next().text().replace(/\s/g, ""));
// console.log(proc)
envd[name]=proc;
localStorage.setItem("envd", JSON.stringify(envd));
}
}
// console.log(envd)
}
//налог на прибыль в регионе
if (strn[6]=='regionlist'){
var regnal = JSON.parse(localStorage.getItem("regnal"));
var foroptstr=JSON.parse(localStorage.getItem("foroptstr"));
// console.log(regnal)
if (regnal==null) regnal={};
if (foroptstr==null) foroptstr={};
var trreg=$('table.grid>tbody>tr.even, tr.odd');
// console.log(trreg.length)
var nameregforopt="";
for (i=0; i<trreg.length; i++){
var namereg=$('td:eq(0)>a', trreg[i]).text();
var procreg=parseInt($('td:eq(3)', trreg[i]).text());
// console.log(namereg)
//console.log(procreg)
regnal[namereg]=procreg;
nameregforopt=nameregforopt+namereg+';';
localStorage.setItem("regnal", JSON.stringify(regnal));
}
var nameforoptstr=$('div#headerInfoCenter>h1').text();
nameregforopt=nameregforopt.slice(0,-1) ;
foroptstr[nameforoptstr]= nameregforopt;
localStorage.setItem("foroptstr", JSON.stringify(foroptstr));
console.log(foroptstr)
}
// сбор экс имп иц
if (strn[6]=='countrydutylist'){
var expstran = JSON.parse(localStorage.getItem("expstran"));
var impstran = JSON.parse(localStorage.getItem("impstran"));
var icstran = JSON.parse(localStorage.getItem("icstran"));
var namestrani=$('div#headerInfoCenter>h1:eq(0)').text();
//console.log(namestrani)
if (expstran==null) expstran={};
if (impstran==null) impstran={};
if (icstran==null) icstran={};
// console.log(expstran)
var trstran=$('div#mainContent>table.list>tbody>tr.odd, tr.even');
// console.log(trstran.length)
expstran[namestrani]={};
impstran[namestrani]={};
icstran[namestrani]={};
for (i=0; i<trstran.length; i++){
var tdstran=$('td:has(img)', trstran[i]);
// console.log(tdstran.length)
for(z=0; z<tdstran.length; z++){
var nameprodstran=$(tdstran[z]).next().text();
// console.log(name)
var exp=parseInt($(tdstran[z]).next().next().text().replace(/\s/g, ""));
var imp=parseInt($(tdstran[z]).next().next().next().text().replace(/\s/g, ""));
var ic=parseFloat($(tdstran[z]).next().next().next().next().text().replace(/\s/g, "").replace(/\$/g, ""));
expstran[namestrani][nameprodstran]=exp;
impstran[namestrani][nameprodstran]=imp;
icstran[namestrani][nameprodstran]=ic;
localStorage.setItem("expstran", JSON.stringify(expstran));
localStorage.setItem("impstran", JSON.stringify(impstran));
localStorage.setItem("icstran", JSON.stringify(icstran));
/*console.log(nameprodstran)
console.log(exp)
console.log(imp)
console.log(ic)*/
}
}
//console.log(expstran)
// console.log(impstran)
// console.log(icstran)
}
//****проверка на странице всех стран
if (strn[8]=='world'){
$('div#mainContent>div.cfx>div.content').after('<div><input id="dialog" type="button" value="Посмотреть записанные дананные по странах"><input id="removedan" type="button" value="Очистить данные">')
$('#removedan').click(function() {
localStorage.removeItem("envd");
localStorage.removeItem("regnal");
localStorage.removeItem("expstran");
localStorage.removeItem("impstran");
localStorage.removeItem("icstran");
localStorage.removeItem("foroptstr");
})
$('#dialog').click(function() {
var regnal = JSON.parse(localStorage.getItem("regnal"));
var envd = JSON.parse(localStorage.getItem("envd"));
var expstran = JSON.parse(localStorage.getItem("expstran"));
var impstran = JSON.parse(localStorage.getItem("impstran"));
var icstran = JSON.parse(localStorage.getItem("icstran"));
if (regnal==null) {
var regnaluk="Нет данных.";
}
else{
regnaluk=Object.keys(regnal).length+' регионов.';
}
if (envd==null) {
var envduk="Нет данных.";
}
else{
envduk='Данные записаны.';
}
if (expstran==null) {
var expstranuk="Нет данных.";
}
else{
expstranuk=Object.keys(expstran).length+' стран.';
}
if (impstran==null) {
var impstranuk="Нет данных.";
}
else{
impstranuk=Object.keys(impstran).length+' стран.';
}
if (icstran==null) {
var icstranuk="Нет данных.";
}
else{
icstranuk=Object.keys(icstran).length+' стран.';
}
$('<div id="js-wall" style="position: fixed; top: 0px; left: 0px; background-color: black; z-index: 100001; opacity: 0.5;" />').height($(window).height()).width($(window).width()).prependTo('body');
$('<div id="js-progress" style=" background-color: #fcfbc0; height: 50%; width:50%; left:25%; top:25%; position: fixed; color: black; z-index: 1000000; font-size: 40pt; text-align: center;" >'+
'Налоги: '+regnaluk+ '<br>ЕНВД: '+envduk+'<br>Экспорт: '+expstranuk+'<br>Импорт: '+impstranuk+'<br>ИЦ: '+icstranuk+'</div>').prependTo('body');
$('div#js-wall').click(function(){
$('#js-progress').remove();
$('#js-wall').remove();
})
})
}
//***** расчет налогов на предпр************************
if (strn[8]=='sale'){
$('table.grid>tbody>tr:eq(0)>th:last-child').after('<th>Расчет налогов</th>')
var trsb=$('table.grid>tbody>tr.odd:visible, tr.even:visible');
// console.log(trsb.length)
for(i=0; i< trsb.length; i++) {
$('td:contains("Максимальный объем:")', trsb[i]).after('<td><input class="sbit" type="button" value="Экономия"></td>');
}
var zavod=$('div#unitImage>img').attr('src')
zavod=zavod.split('/');
zavod=zavod[4].slice(0,-6)
//*****если завод то добавляем ЕНВД
if (zavod=='workshop'){
for(i=0; i< trsb.length; i++) {
$('td>input.sbit', trsb[i]).after('<input class="sbit2" type="button" value="ЕНВД">');
}
$('.sbit2').click(function(){
var regnal = JSON.parse(localStorage.getItem("regnal"));
var envd = JSON.parse(localStorage.getItem("envd"));
var expstran = JSON.parse(localStorage.getItem("expstran"));
var impstran = JSON.parse(localStorage.getItem("impstran"));
var icstran = JSON.parse(localStorage.getItem("icstran"));
var td = $(this).parent().parent();
var provcena=$('input.money:eq(0)', td).attr('value');
// alert(provcena)
var kola=$('div.officePlace>a');
// console.log(kola.length)
if (kola.length==3){
var nameregsb=$('div.officePlace>a:eq(1)').text();
console.log(nameregsb)
}
if (kola.length==4){
var nameregsb=$('div.officePlace>a:eq(2)').text();
console.log(nameregsb)
}
if (regnal[nameregsb]==null){
alert ('Нет данных по налогу');
return;
}
if (provcena==0){
var u=0;
}
else{
u=1;
}
var nameprodsb=$('td:has(a):eq('+u+')',td).attr('title');
nameprodsb=nameprodsb.slice(0,-58);
if (envd[nameprodsb]==null){
alert ('Нет данных по ЕНВД');
return;
}
var sssb=parseFloat($('td.nowrap>table>tbody>tr>td:contains("Себестоимость")', td).next().text().replace(/\s/g, "").replace(/\$/g, ""));
// console.log(sssb)
// console.log(envd[nameprodsb])
// console.log(regnal[nameregsb])
var pricesb=sssb+sssb*(envd[nameprodsb]/100)-0.02;
pricesb=Math.round(pricesb * 100) / 100 ;
$('td>input.money', td).val(pricesb)
})
}
//********расчет для перевозки в другие страны
$('.sbit').click(function(){
var regnal = JSON.parse(localStorage.getItem("regnal"));
var envd = JSON.parse(localStorage.getItem("envd"));
var expstran = JSON.parse(localStorage.getItem("expstran"));
var impstran = JSON.parse(localStorage.getItem("impstran"));
var icstran = JSON.parse(localStorage.getItem("icstran"));
var td = $(this).parent().parent();
var provcena=$('input.money:eq(0)', td).attr('value');
if (provcena==0){
var u=0;
}
else{
u=1;
}
var nameprodsb=$('td:has(a):eq('+u+')',td).attr('title');
nameprodsb=nameprodsb.slice(0,-58);
/* if (envd[nameprodsb]==null){
alert ('Нет данных по ЕНВД');
return;
}*/
var kola=$('div.officePlace>a');
if (kola.length==3){
var nameregsb=$('div.officePlace>a:eq(1)').text();
// console.log(nameregsb)
}
if (kola.length==4){
var nameregsb=$('div.officePlace>a:eq(2)').text();
// console.log(nameregsb)
}
var namestransb=$('div.officePlace>a:eq(1)').text();
// console.log(namestransb)
if (regnal[nameregsb]==null){
alert ('Нет данных по налогу');
return;
}
if (expstran[namestransb][nameprodsb]==null){
alert ('Нет данных по экспорту');
return;
}
if (impstran[namestransb][nameprodsb]==null){
alert ('Нет данных по экспорту');
return;
}
if (icstran[namestransb][nameprodsb]==null){
alert ('Нет данных по экспорту');
return;
}
var sssb=parseFloat($('td.nowrap>table>tbody>tr>td:contains("Себестоимость")', td).next().text().replace(/\s/g, "").replace(/\$/g, ""));
/* console.log('налог региона='+regnal[nameregsb])
console.log('экспорт='+expstran[namestransb][nameprodsb])
console.log('импорт='+impstran[namestransb][nameprodsb])
console.log('иц='+icstran[namestransb][nameprodsb])*/
// console.log(sssb)
var optreg="";
// foroptstr
var foroptstr = JSON.parse(localStorage.getItem("foroptstr"));
var optstran="";
for (var key in foroptstr){
if (optstran==""){
optstran=optstran+'<option selected="selected" class="strana" >'+key+'</option>';
var namestransb2=key;
console.log( namestransb2)
//***************************
var vremennai=foroptstr[namestransb2];
vremennai=vremennai.split(';');
for (l=0; l< vremennai.length; l++){
if (optreg==""){
optreg=optreg+'<option selected="selected" class="region" >'+vremennai[0]+'</option>';
var namereg2=vremennai[0];
}
else {
optreg=optreg+'<option class="region">'+vremennai[l]+'</option>';
}
}
//******************
}
else {
optstran=optstran+'<option class="strana">'+key+'</option>';
}
}
$('<div id="js-wall" style="position: fixed; top: 0px; left: 0px; background-color: black; z-index: 100001; opacity: 0.5;" />').height($(window).height()).width($(window).width()).prependTo('body');
$('<div id="js-progress" align="center" style=" background-color: #e6e6e0; left:25%; top:25%; position: fixed; color: black; z-index: 1000000; font-size: 12pt; text-align: center;" >'+
'<div align="center" style="width:300px; float:left; margin: 5px; background-image:linear-gradient(to top, #b9f8c2, #49f761); border-radius:20px;-moz-border-radius:20px; padding:5px;"><table id="rass1"'+
'style="border-collapse: collapse;"><tr><th colspan="2" class="str1">Из</th></tr>'+
'<tr><td class="str1">Страна</td><td class="str1">'+namestransb+'</td></tr>'+
'<tr><td class="str1"> Регион</td><td class="str1">'+nameregsb+'</td></tr>'+
'<tr><td class="str1">Налог на прибыль</td><td class="str1">'+regnal[nameregsb]+'%</td></tr>'+
'<tr><td class="str1">Продукт</td><td class="str1">'+nameprodsb+'</td></tr>'+
'<tr><td class="str1">Иц</td><td id="icdalras" class="str1">'+icstran[namestransb][nameprodsb]+'</td></tr>'+
'<tr><td class="str1">Экспорт</td><td id="export" class="str1">'+expstran[namestransb][nameprodsb]+'%</td>'+
'</table></div><div align="center" style="width:500px; margin: 5px; float:left; background-image:linear-gradient(to top, #b9f8c2, #49f761); border-radius:20px;-moz-border-radius:20px; padding:5px;"><table style="border-collapse: collapse;">'+
'<tr><th colspan="2" class="str2">В</th></tr>'+
'<tr><td class="str2">Страна</td><td class="str2"><select id="strana" name="strana" >'+optstran+'</select></td></tr>'+
'<tr><td class="str2"> Регион</td><td class="str2"><select id="region" name="region" >'+optreg+'</select></td></tr>'+
'<tr><td class="str2">Налог на прибыль</td><td id="nalog2" class="str2">'+regnal[namereg2]+'</td></tr>'+
'<tr><td class="str2">Продукт</td><td class="str2">'+nameprodsb+'</td></tr>'+
'<tr><td class="str2">Импорт</td><td id="import" class="str2">'+impstran[namestransb2][nameprodsb]+'%</td></tr>'+
'<tr><td class="str2">Цена продажи</td><td class="str2"></td></tr>'+
'</table></div><div><input id="prov" type="button" value="Посчитать"></div></div>').prependTo('body');
$('td.str1, th.str1,td.str2, th.str2 ').css({ 'border': '2px dotted #818282',
})
$('option.strana').click(function(){
$("#import").replaceWith("<td id='import' class='str2'>"+impstran[this.value][nameprodsb]+"</td>");
var vremennai=foroptstr[this.value];
vremennai=vremennai.split(';');
optreg="";
for (l=0; l< vremennai.length; l++){
if (optreg==""){
optreg=optreg+'<option selected="selected" class="region" >'+vremennai[0]+'</option>';
var namereg2=vremennai[0];
}
else {
optreg=optreg+'<option class="region">'+vremennai[l]+'</option>';
}
}
// console.log(optreg)
$("select#region").replaceWith("<select id='region' name='region' >"+optreg+"</select></td>");
$('option.region').click(function(){
$("td#nalog2").replaceWith("<td id='nalog2' class='str2'>"+regnal[this.value]+"</td>");
$('td.str1, th.str1,td.str2, th.str2 ').css({ 'border': '2px dotted #818282',
})
})
$('option.region').click();
})
//******* расчет выплат**************************************************************************************
$('#prov').click(function(){
$('table#rasschet').remove();
var sssb=parseFloat($('td.nowrap>table>tbody>tr>td:contains("Себестоимость")', td).next().text().replace(/\s/g, "").replace(/\$/g, ""));
// console.log(sssb)
if (zavod=='workshop'){
sssb=sssb+sssb*(envd[nameprodsb]/100)-0.02;
sssb=Math.round(sssb * 100) / 100 ;
}
var icdlaras=parseFloat($('td#icdalras').text().replace(/\%/g, ""))
var stavtp=parseFloat($('td#export').text().replace(/\%/g, ""))+parseFloat($('td#import').text().replace(/\%/g, ""));
stavtp=stavtp/100;
if (sssb > icdlaras) {
var pricedlaras=sssb;
var pricedlaras2=icdlaras;
var tamsbor2=pricedlaras2*stavtp;
tamsbor2=Math.round(tamsbor2 * 100) / 100 ;
var ssposledostposs2=pricedlaras2+tamsbor2;
ssposledostposs2=Math.round(ssposledostposs2 * 100) / 100 ;
var ubitok=sssb-icdlaras;
var nalv=parseFloat($('td#nalog2').text().replace(/\%/g, ""))
nalv=nalv/100;
var sssponig=ubitok/(1-nalv)+ssposledostposs2;
sssponig=Math.round(sssponig * 100) / 100 ;
var ssbolic='<tr class="itog"><td >Понижение сс</td><td>'+pricedlaras2+'</td><td>'+pricedlaras2+'</td><td>'+tamsbor2+'</td><td>'+ssposledostposs2+'</td><td>'+sssponig+'</td></tr>';
}
else {
pricedlaras=icdlaras ;
ssbolic="";
}
var tamsbor=pricedlaras*stavtp;
tamsbor=Math.round(tamsbor * 100) / 100 ;
var ssposledostposs=sssb+tamsbor;
ssposledostposs=Math.round(ssposledostposs * 100) / 100 ;
if (sssb > icdlaras) {
var ssrazn=ssposledostposs-sssponig;
ssrazn=Math.round(ssrazn * 100) / 100 ;
var raznss='<tr class="itog"><td></td><td></td><td></td><td></td><td>Разница</td><td id="tdrazn">'+ssrazn+'</td></tr>';
}
else{
raznss="";
}
$('input#prov').after('<table id="rasschet" style="margin:0 auto"><tr class="itog"><th>Способ</th><th >Цена</th><th >Цена для таможни</th><th>Таможенный сбор</th><th>СС после доставки</th><th title=" Цена отгрузки со склада, с учетом убытка при понижении сс до иц и налога в конечной стране">Итого СС</th></tr>'+
'<tr class="itog"><td >По СС</td><td>'+sssb+'</td><td>'+pricedlaras+'</td><td>'+tamsbor+'</td><td>'+ssposledostposs+'</td><td>'+ssposledostposs+'</td></tr>'+
ssbolic+raznss+
'</table>')
$("tr.itog").css({ 'border': '1px solid #d5d7d4',
'background': '#f4fa9b' , })
if (ssrazn>0){
$("td#tdrazn").css({ 'background': '#82f58a' , })
}
else {
$("td#tdrazn").css({ 'background': '#fd1c1c' , })
}
})
$('div#js-wall').click(function(){
$('#js-progress').remove();
$('#js-wall').remove();
})
})
}
})
}
if(window.top == window) {
var script = document.createElement("script");
script.textContent = '(' + run.toString() + ')();';
document.documentElement.appendChild(script);
}