Advertisement
konyakov

Исходный код коэффициентов расчета пенсии РФ 2013 год

Jun 30th, 2013
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var calcParams = {
  2.     MROT: 5205, // МРОТ в 2013, руб.
  3.     ZPS: 29907, // Средняя зарплата в 2012 году, руб.
  4.     ZPMcoeff: 2.3, // Коэффициент расчета макс. зарплаты, с которой берутся страховые взносы по новой формуле
  5.     ZPOSV2013: 47333, // Зарплата, облагаемая страховыми взносами сегодня, руб.
  6.     T: 19, // Период выплаты пенсии для рассчета ТП по старой формуле и накопительной пенсии по новой формуле, лет
  7.     FBR: 3610.31, // Размер ФБР, руб.
  8.     CPK: 57.91, // Стоимость 1го пенс. коэфф., руб.
  9.     KNPG: {
  10.         0: 1,
  11.         2: 0.91,
  12.         6: 0.727
  13.     },
  14.     BPKop: {
  15.         0: 1,
  16.         1: 1.056,
  17.         2: 1.12,
  18.         3: 1.19,
  19.         4: 1.27,
  20.         5: 1.36,
  21.         6: 1.46,
  22.         7: 1.58,
  23.         8: 1.73,
  24.         9: 1.9,
  25.         10: 2.11
  26.     },
  27.     SPKop: {
  28.         0: 1,
  29.         1: 1.066,
  30.         2: 1.15,
  31.         3: 1.24,
  32.         4: 1.34,
  33.         5: 1.45,
  34.         6: 1.59,
  35.         7: 1.74,
  36.         8: 1.9,
  37.         9: 2.09,
  38.         10: 2.32
  39.     },
  40.     TPNG: {
  41.         0: 0,
  42.         2: 0.02,
  43.         6: 0.06
  44.     },
  45.     pensionAge: {
  46.         0: 60,
  47.         1: 55
  48.     },
  49.     VSkoef: 0.85
  50. }
  51.  
  52. $(document).ready(function() {
  53.     var pensionForm=$("form#pensionForm");
  54.     var pensionFormLis=pensionForm.find(".qText");
  55.     var persionFormInputs=pensionFormLis.find("input,select");
  56.     var pensionCalcResult=$("#pensionCalcResult");
  57.     var pensionParamsTable=$("#pensionParams");
  58.     var socialPensionWarning=$("#socialPensionWarning");
  59.     var enterParamsWarning=$("#enterParamsWarning");
  60.     var enterGenderWarning=$("#enterGenderWarning");
  61.     var enterBYWarning=$("#enterBYWarning");
  62.     var alreadyPensioneer=$("#alreadyPensioneer");
  63.     var wrongFee=$("#wrongFee");
  64.     var pensionParamsCont=pensionParamsTable.find("tr");
  65.     var calcColumn=pensionCalcResult.parent().parent();
  66.     var rightBlockCont=$("#rightBlockCont");
  67.     var leftColumn=pensionForm.parent();
  68.     var calcParamsRow=$("#calcParamsCont").parent();
  69.  
  70.     var dialogCont=$("<div id='dialogCont'></div>").dialog({
  71.         modal: true,
  72.         autoOpen: false,
  73.         resizable: false,
  74.         maxWidth: 800
  75.     });
  76.  
  77.     $(".helpRevealer").click(function(e) {
  78.         e.preventDefault();
  79.         dialogCont.html($("#"+$(this).attr("data-reveal-id")).html()).dialog({width:pensionForm.width()*0.8}).dialog("open");
  80.     });
  81.  
  82.     persionFormInputs.filter("input[type='text']").blur(function() {
  83.         $(this).val($(this).val().toString().replace(/,/,'.').replace(/[^\d.,]+/,''));
  84.     });
  85.  
  86.     scrollBinder();
  87.     $(window).resize(function() {
  88.         positionRecalc();
  89.         scrollBinder();
  90.     });
  91.  
  92.     function scrollBinder() {
  93.         if(calcColumn.position().top==calcColumn.parent().position().top) {
  94.             $(document).bind("scroll",function(e) {
  95.                 return positionRecalc();
  96.             });
  97.         }
  98.         else {
  99.             $(document).unbind("scroll");
  100.             rightBlockCont.css("top",0+"px");
  101.         }
  102.     }
  103.  
  104.     function positionRecalc() {
  105.         var scrollBy=$(document).scrollTop()-parseInt(calcColumn.offset().top);
  106.         var leftBlocksHeight=leftColumn.outerHeight(true)+calcParamsRow.outerHeight(true);
  107.         if(scrollBy>0) {
  108.             if(leftBlocksHeight-rightBlockCont.outerHeight(true)-scrollBy>0 || scrollBy<parseInt(rightBlockCont.css('top'))) {
  109.                 rightBlockCont.css("top",scrollBy+"px");
  110.             }
  111.         }
  112.         else rightBlockCont.css("top",0+"px");
  113.     }
  114.  
  115.     $("#performCalc").click(function(e) {
  116.         e.preventDefault();
  117.         pensionForm.children(".submitCont").hide();
  118.         rightBlockCont.children(".submitCont").show();
  119.         recalculateForm();
  120.     });
  121.  
  122.     $("#performNewCalc").click(function(e) {
  123.         e.preventDefault();
  124.         recalculateForm();
  125.     });
  126.  
  127.     pensionCalcResult.show();
  128.     enterGenderWarning.hide();
  129.     enterBYWarning.hide();
  130.     socialPensionWarning.hide();
  131.     pensionParamsTable.hide();
  132.     alreadyPensioneer.hide();
  133.     wrongFee.hide();
  134.  
  135.     function recalculateForm() {
  136.         enterParamsWarning.hide();
  137.         pensionParamsTable.hide();
  138.         pensionCalcResult.show();
  139.         enterGenderWarning.hide();
  140.         enterBYWarning.hide();
  141.         socialPensionWarning.hide();
  142.         alreadyPensioneer.hide();
  143.         wrongFee.hide();
  144.         var genderInput=persionFormInputs.filter('[name="gender"]:checked');
  145.         if(genderInput.length<1) {
  146.             enterGenderWarning.show();
  147.         }
  148.         else {
  149.             var birthDateVal=persionFormInputs.filter('#birthDate').val();
  150.             if(!birthDateVal.match(/\d{4}/)) {
  151.                 enterBYWarning.show();
  152.             }
  153.             else {
  154.                 var gender=parseInt(genderInput.val());
  155.                 var today = new Date();
  156.                 var nowYear=today.getFullYear();
  157.                 var birthDate=0;
  158.                 birthDate=parseInt(birthDateVal);
  159.                 if(nowYear-birthDate<calcParams.pensionAge[gender]) {
  160.                     alreadyPensioneer.hide();
  161.                     var VS=0;
  162.                     VS=parseInt(persionFormInputs.filter('[name="yearsInArmy"]:checked').val());
  163.                     var Kvs=calcParams.VSkoef*VS;
  164.                     var STSDPV=Math.floor(parseFloat(persionFormInputs.filter('#careerLength').val()));
  165.                     var STSBP=0;
  166.                     STSBP=parseInt(persionFormInputs.filter('#retireWorkWithoutPension').val());
  167.                     STSBP=(STSBP>10?10:STSBP);
  168.                     var STS=STSDPV+STSBP;
  169.                     var D=0;
  170.                     var DO=0;
  171.                     D=parseInt(persionFormInputs.filter('#childrenCount').val());
  172.                     if(D<0) D=0;
  173.                     else if(D>3) D=3;
  174.                     var Kd=0;
  175.                     if(D>0) {
  176.                         DO=parseFloat(persionFormInputs.filter('#childrenVac').val());
  177.                         if(DO<0) DO=0;
  178.                         else if(DO>1.5) DO=1.5;
  179.                         Kd=DO*(D>0?0.85+(D>1?1.7+(D>2?(2.55):0):0):0);
  180.                         DO=DO*D;
  181.                         if(DO>4.5) DO=4.5;
  182.                     }
  183.                     var OS=STS+VS+DO;
  184.                     if(OS<15) {
  185.                         socialPensionWarning.show();
  186.                     }
  187.                     else {
  188.                         var ZP=parseFloat(persionFormInputs.filter('#fee').val());
  189.                         if(ZP<calcParams.MROT) {
  190.                             wrongFee.show();
  191.                         }
  192.                         else {
  193.                             var ZPM=calcParams.ZPS*calcParams.ZPMcoeff;
  194.                             var ZPTPs=(ZP<calcParams.MROT?calcParams.MROT:ZP);
  195.                             if(ZP<calcParams.MROT*2) ZP=calcParams.MROT*2;
  196.                             else if(ZP>ZPM) ZP=ZPM;
  197.                             var personTariff=0;
  198.                             personTariff=parseInt(persionFormInputs.filter('[name="pensionTariff"]:checked').val());
  199.  
  200.                             var KNPG=calcParams.KNPG[personTariff];
  201.                             var KPKtrud=(ZP/ZPM)*KNPG*(STS*10);
  202.  
  203.                             if(gender>0){ //для женщин от 30 до 40
  204.                                 var over30=((OS-29)>0?(OS-29):0);
  205.                                 over30=(over30>11?11:over30); //но не больше 10 лет или же 11?
  206.                                 var Ks35=1*over30+(over30>5?4:0);
  207.                             } else { //для мужчин от 35 до 45     
  208.                                 var over30=((OS-34)>0?(OS-34):0);
  209.                                 over30=(over30>11?11:over30); //но не больше 10 лет или же 11?
  210.                                 var Ks35=1*over30+(over30>5?4:0);
  211.                             }
  212.                                                    
  213.                             var BPKop=0;
  214.                             var SPKop=0;
  215.                             if(STSBP>-1) {
  216.                                 BPKop=calcParams.BPKop[STSBP];
  217.                                 SPKop=calcParams.SPKop[STSBP];
  218.                             }
  219.                             var KPK=KPKtrud+Kvs+Kd+Ks35;
  220.  
  221.                             var FP=calcParams.FBR*BPKop;
  222.                             var SP=(calcParams.FBR*BPKop)+(KPK*calcParams.CPK)*SPKop;
  223.                             var TG=calcParams.T-STSBP;
  224.                             var NP=0;
  225.                             if(OS>14) {
  226.                                 NP=ZP*calcParams.TPNG[personTariff]*(STSDPV/TG);
  227.                             }
  228.                             var TPn=SP+NP;
  229.                             var TPs=calcParams.FBR+(((0.16*(ZPTPs>calcParams.ZPOSV2013?calcParams.ZPOSV2013:ZPTPs))*STS+832.8*(DO+VS))/TG); /*А тут точно 2*MROT<ZP<ZPM?  */
  230.                             var R=TPn-TPs;
  231.                             var Rproc=Math.round((R/TPs)*100);
  232.                             var repCoefNF=TPn/ZP*100;
  233.                             var repCoefOF=TPs/(ZPTPs>calcParams.ZPOSV2013?calcParams.ZPOSV2013:ZPTPs)*100;
  234.                             pensionParamsCont.filter("#newCoefSumm").children().last().html((Math.round(KPK*100)/100).toString().replace(/\./,","));
  235.                             pensionParamsCont.filter("#pensionFromNewFormula").children().last().html((Math.round(TPn*100)/100).toString().replace(/\./,","));
  236.                             pensionParamsCont.filter("#pensionDPart").children().last().html((Math.round(NP*100)/100).toString().replace(/\./,","));
  237.                             pensionParamsCont.filter("#pensionIPart").children().last().html((Math.round(SP*100)/100).toString().replace(/\./,","));
  238.                             pensionParamsCont.filter("#personOS").children().last().html(OS);
  239.                             pensionParamsCont.filter("#pensionFromOldFormula").children().last().html((Math.round(TPs*100)/100).toString().replace(/\./,","));
  240.                             pensionParamsCont.filter("#calcDiff").children().last().html((Math.round(R*100)/100+" ("+Rproc+"%)").replace(/\./,","));
  241.                             pensionParamsCont.filter("#replacementCoefNF").children().last().html((Math.round(repCoefNF*100)/100+"%").replace(/\./,","));
  242.                             pensionParamsCont.filter("#replacementCoefOF").children().last().html((Math.round(repCoefOF*100)/100+"%").replace(/\./,","));
  243.                             pensionParamsTable.show();
  244.                         }
  245.                     }
  246.                 }
  247.                 else {
  248.                     alreadyPensioneer.show();
  249.                 }
  250.             }
  251.         }
  252.     }
  253. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement