'use strict';let MControllers=angular.module('MControllers',[]).directive('fileModel',['$parse',($parse)=>{return{restrict:'A',link:(scope,element,attrs)=>{let model=$parse(attrs.fileModel);let modelSetter=model.assign;element.bind('change',()=>{scope.$apply(()=>modelSetter(scope,element[0].files[0]))})}}}]).factory('mRepeat',['$timeout',($timeout)=>{return(repeatFunction)=>{try{repeatFunction()}catch(E){let F=arguments.callee;$timeout(()=>{F(repeatFunction)},500)}}}]).factory('mPreloader',['mRepeat',(mRepeat)=>{window.preloader1=window.preloader1||{times:0,inc:function(t){if(this.times<=0){mRepeat(()=>{$('#preloader').data('dialog').open()})} this.times+=(t||1)},dec:function(t){this.times-=(t||1);if(this.times<=0){$('#preloader').data('dialog').close();this.times=0}},null:function(){this.times=0;try{$('#preloader').data('dialog').close()}catch(E){}}};return window.preloader1}]).factory('mHTTP',['$http','$location',($http,$location)=>(onSessionExists)=>$http]).factory('mObjNode',[()=>{return(node,scope)=>{let Nodes=node.split('.');let Current=scope;for(let i=0;i{$location.path('/register')})}]).controller('InstructionsCtrl',['mHTTP','$scope','$routeParams','$location',function(mHTTP,$scope,$routeParams,$location){window.scope=$scope;mHTTP().post('service/?action=Instructions.get').then(response=>{$scope.error=null;$scope.data=[];$scope.found=!1;if(!response.data.success){$scope.error='Ошибка при получении инструкций'}else{$scope.data=response.data.data;$scope.found=!!$scope.data.length}});$scope.fileColor=type=>{switch(type){case 'excel':return'excel';case 'pdf':return'pdf';case 'word':return'word';case 'image':return'image';default:return'black'}}}]).controller('PageCtrl',['mHTTP','$scope','$routeParams','$location',function(mHTTP,$scope,$routeParams,$location){mHTTP(()=>{$location.path('/register')})}]).controller('MenuCtrl',['mHTTP','$scope','$routeParams','$location','$window','$http','$rootScope',function(mHTTP,$scope,$routeParams,$location,$window,$http,$rootScope){$scope.isCurrent=path=>path===$location.path().split("/")[1];$scope.initMenu=()=>{};$scope.getUserInfo=()=>{$http.post('service/?action=Users.getCurrentUserInfo').then((response)=>{response=response.data||response;$rootScope.User=response.data})}}]).controller('RegisterCtrl',['mHTTP','$scope','mObjNode','$compile','$routeParams','$location','mNotify','mPreloader','$timeout',function(mHTTP,$scope,mObjNode,$compile,$routeParams,$location,mNotify,mPreloader,$timeout){window.scope=$scope;document.body.ondragover=(e)=>e.preventDefault();document.body.ondrop=(e)=>{e.preventDefault();if(!e.target.parentNode.getAttribute('mfilename'))return;if(!e.dataTransfer.files||!e.dataTransfer.files.length)return;if(e.dataTransfer.files.length>1)return;let name=e.target.parentNode.getAttribute('mfilename');$scope.Data.docs[name]=e.dataTransfer.files[0];$(e.target.parentNode).find('input[type=text]').val(e.dataTransfer.files[0].name)};$scope.license=!0;$scope.isShowForm=!1;$scope.isShowSearchForm=!1;window.scope=$scope;$scope.ErrDlg={};$scope.Data={docs:{},contacts:{},reporting:{},main:{},person:{}};mObjNode('Data.person.chief',$scope);$scope.Data.person.chief.middleNameExists=!0;$scope.loadPrev=()=>$scope.checkInn($scope.fillPrevPassword);$scope.setMiddleNameExists=(role)=>{if(!$scope.Data.person[role].middleNameExists){$scope.Data.person[role].middleName=''}else{mObjNode(`Errors.person.${role}`,$scope);$scope.Errors.person[role].middleName=''}} $scope.searchRecordById=(records,id)=>records.filter((a)=>a.id===id)[0]||null;$scope.fill=Data=>$scope.Data=Data;$scope.checkInn=(password)=>{mObjNode('Data.main',$scope);if(!$scope.Data.main.inn||!/^(\d{14})$/.test($scope.Data.main.inn)){$scope.ErrDlg.message='ИНН должен состоять из 14 цифр';$scope.ErrDlg.title='Ошибка';showMetroDialog(document.getElementById('error-dialog'));return} mPreloader.inc();let params={inn:$scope.Data.main.inn};if(password)params.password=password;mHTTP().post('service/?action=Register.checkInn',params).then((response)=>{mPreloader.dec();response=response.data||response;if(!response.success)return;if(response.data.notExists){if(response.data.Nwa){let Mj=response.data.Nwa.mj;Mj[0]&&(Mj=Mj[0]);$scope.Data.main.okpo=Mj[5]||'';$scope.Data.main.minjust=Mj[2]||'';$scope.Data.main.name=Mj[1]||'';let Sf=(response.data.Nwa.sf||[]).filter(v=>(v.PayerState==='Действующие'&&/^(\d{8})$/.test(v.OKPO)))[0]||null;Sf&&($scope.Data.main.sf=Sf.PayerId)} $scope.showForm(!0);return} if(response.data.exists){$scope.ErrDlg.title='Ошибка';$scope.ErrDlg.message='Абонент уже существует';showMetroDialog(document.getElementById('error-dialog'));return} if(response.data.checked||response.data.inCheck){$scope.ErrDlg.title='Ошибка';$scope.ErrDlg.message='Заявка по введённому ИНН на рассмотрении. Повторное заполнение невозможно';showMetroDialog(document.getElementById('error-dialog'));return} if(response.data.canBeFill&&!password){showMetroDialog(document.getElementById('fill-prev'));return} if(response.data.canBeFill&&response.data.invalidPassword){$scope.ErrDlg.title='Ошибка';$scope.ErrDlg.message='Кодовое слово неверное';showMetroDialog(document.getElementById('error-dialog'));return} $scope.RData=response.data.result.JSON;$scope.Data=$scope.RData;try{$scope.Data.person.chief.pin='';$scope.Data.person.chief.pin2='';if($scope.Data.person.accountant){$scope.isSetAccountant=!0;$scope.Data.person.accountant.pin='';$scope.Data.person.accountant.pin2=''}}catch(e){} $scope.showForm(!0)})};$scope.showSearchForm=(status)=>{$scope.isShowSearchForm=status;$('html').animatescroll()};$scope.showForm=(status)=>{hideMetroDialog(document.getElementById('fill-prev'));$scope.showSearchForm(!1);$scope.isShowForm=status;$scope.loadMeta();$('html').animatescroll()};$scope.agreeLicense=()=>{$scope.license=!1;$scope.showSearchForm(!0)};$scope.loadMeta=()=>{mPreloader.null();mPreloader.inc(10);($scope.loadDate=()=>{mHTTP().post('service/?action=Register.getCurrentDate').then((response)=>{response=response.data||response;$scope.currentDate=new Date(response.data);mPreloader.dec()})})();($scope.loadOwnersipForms=(afterLoad)=>{mHTTP().post('service/?action=Register.getOwnershipForms').then((response)=>{response=response.data||response;$scope.OwnershipForms=[{id:null,name:'-- Выберите значение --'},...response.data];mObjNode('Data.main.ownerform',$scope);if(!afterLoad){$scope.Data.main.ownerform=$scope.OwnershipForms[0]}(afterLoad||(()=>{}))();mPreloader.dec()})})(()=>{if(!$scope.Data.main.ownerform.id){$scope.Data.main.ownerform=$scope.OwnershipForms[0]}else{$scope.loadLegalForm(()=>{$scope.loadCivilLegalStatuses(()=>{})})}});($scope.loadCapitalForms=()=>{mHTTP().post('service/?action=Register.getCapitalForms').then((response)=>{response=response.data||response;$scope.CapitalForms=[{id:null,name:'-- Выберите значение --'},...response.data];mObjNode('Data.main.capitalform',$scope);if(!$scope.Data.main.capitalform.id) $scope.Data.main.capitalform=$scope.CapitalForms[0];mPreloader.dec()})})();($scope.loadManagementForms=()=>{mHTTP().post('service/?action=Register.getManagementForms').then((response)=>{response=response.data||response;$scope.ManagementForms=[{id:null,name:'-- Выберите значение --'},...response.data];mObjNode('Data.main.manageform',$scope);if(!$scope.Data.main.manageform.id) $scope.Data.main.manageform=$scope.ManagementForms[0];mPreloader.dec()})})();($scope.loadRegions=(afterLoad)=>{mHTTP().post('service/?action=Register.getRegions').then((response)=>{response=response.data||response;let Regions=[{id:null,name:'-- Выберите область --'},{id:'none',name:'Республиканского подчинения'},...response.data];$scope.RealRegions=Regions;$scope.JuristicRegions=Regions;mObjNode('Data.contacts.juristic_address',$scope);mObjNode('Data.contacts.real_address',$scope);if(!afterLoad){$scope.Data.contacts.juristic_address.region=$scope.JuristicRegions[0];$scope.Data.contacts.real_address.region=$scope.RealRegions[0]}(afterLoad||(()=>{}))();mPreloader.dec()})})(()=>{mObjNode('Data.contacts.juristic_address',$scope);mObjNode('Data.contacts.real_address',$scope);if($scope.Data.contacts.juristic_address.region) $scope.loadJuristicDistricts($scope.Data.contacts.juristic_address.district,$scope.Data.contacts.juristic_address.settlement,()=>{$scope.loadJuristicSettlements($scope.Data.contacts.juristic_address.region.id,$scope.Data.contacts.juristic_address.settlement)});else $scope.Data.contacts.juristic_address.region=$scope.JuristicRegions[0];if($scope.Data.contacts.real_address.region) $scope.loadRealDistricts($scope.Data.contacts.real_address.district,$scope.Data.contacts.real_address.settlement,()=>{$scope.loadRealSettlements($scope.Data.contacts.real_address.region.id,$scope.Data.contacts.real_address.settlement)});else $scope.Data.contacts.real_address.region=$scope.RealRegions[0]});($scope.loadChiefPositions=()=>{mHTTP().post('service/?action=Register.getRepresentativePositions').then((response)=>{response=response.data||response;$scope.ChiefPositions=[{id:null,name:'-- Выберите значение --'},...response.data];mObjNode('Data.person.chief.position',$scope);if(!$scope.Data.person.chief.position.id) $scope.Data.person.chief.position=$scope.ChiefPositions[0];mPreloader.dec()})})();($scope.ChiefPositions=()=>{mHTTP().post('service/?action=Register.getChiefBasises').then((response)=>{response=response.data||response;$scope.ChiefBasises=[{id:null,name:'-- Выберите значение --'},...response.data];mObjNode('Data.person.chief.basis',$scope);if(!$scope.Data.person.chief.basis.id) $scope.Data.person.chief.basis=$scope.ChiefBasises[0];mPreloader.dec()})})();($scope.loadSFTariffs=()=>{mHTTP().post('service/?action=Register.getSFTariffs').then((response)=>{response=response.data||response;$scope.SFTariffs=[{id:null,name:'-- Выберите значение --'},...response.data];mObjNode('Data.reporting.sftariff',$scope);if(!$scope.Data.reporting.sftariff.id) $scope.Data.reporting.sftariff=$scope.SFTariffs[0];mPreloader.dec()})})();mObjNode('Data.reporting',$scope);($scope.loadSFRegions=()=>{mHTTP().post('service/?action=Register.getSFRegions').then((response)=>{response=response.data||response;$scope.SFRegions=[{id:null,name:'-- Выберите значение --'},...response.data];mObjNode('Data.reporting.sfregion',$scope);if(!$scope.Data.reporting.sfregion.id) $scope.Data.reporting.sfregion=$scope.SFRegions[0];mPreloader.dec()})})();($scope.loadSTIRegions=()=>{mHTTP().post('service/?action=Register.getSTIRegions').then((response)=>{response=response.data||response;$scope.STIRegions=[{id:null,name:'-- Выберите значение --'},...response.data];mObjNode('Data.reporting.stiapplyingregion',$scope);mObjNode('Data.reporting.stiregion',$scope);if(!$scope.Data.reporting.stiregion.id) $scope.Data.reporting.stiregion=$scope.STIRegions[0];if(!$scope.Data.reporting.stiapplyingregion.id) $scope.Data.reporting.stiapplyingregion=$scope.STIRegions[0];mPreloader.dec()})})();$scope.loadJuristicSettlements=(region,val)=>{mPreloader.inc();let district=$scope.Data.contacts.juristic_address.district;let districtid=$scope.Data.contacts.juristic_address.district?(district.id||null):null;if(districtid==='none'&&!region){region=$scope.Data.contacts.juristic_address.region.id;districtid=null} mHTTP().post('service/?action=Register.getSettlementsByDistrictId',{district:(!districtid||districtid==='none')?null:districtid,region:(!region||region==='none')?null:region}).then((response)=>{response=response.data||response;$scope.JuristicSettlements=[{id:null,name:'-- Выберите населенный пункт --'},...response.data];mObjNode('Data.contacts.juristic_address',$scope);$scope.Data.contacts.juristic_address.settlement=val||$scope.JuristicSettlements[0];mPreloader.dec()})};$scope.loadJuristicDistricts=(valDistrict,valSettlement,afterLoad)=>{mPreloader.inc();let val=valDistrict||null;mObjNode('Data.contacts.juristic_address.region',$scope);if($scope.Data.contacts.juristic_address.region.id==='none'){$scope.Data.contacts.juristic_address.district=null;$scope.loadJuristicSettlements($scope.Data.contacts.juristic_address.region.id,valSettlement);mPreloader.dec();return} mHTTP().post('service/?action=Register.getDistrictsByRegionsId',{id:$scope.Data.contacts.juristic_address.region.id}).then((response)=>{response=response.data||response;$scope.JuristicDistricts=[{id:null,name:'-- Выберите район --'},{id:'none',name:'Областного подчинения'},...response.data];$scope.Data.contacts.juristic_address.district=val||$scope.JuristicDistricts[0];(afterLoad||(()=>{}))();mPreloader.dec()})};$scope.loadRealSettlements=(region,val)=>{mPreloader.inc();let district=$scope.Data.contacts.real_address.district;let districtid=$scope.Data.contacts.real_address.district?(district.id||null):null;if(districtid==='none'&&!region){region=$scope.Data.contacts.real_address.region.id;districtid=null} mHTTP().post('service/?action=Register.getSettlementsByDistrictId',{district:(!districtid||districtid==='none')?null:districtid,region:(!region||region==='none')?null:region}).then((response)=>{response=response.data||response;$scope.RealSettlements=[{id:null,name:'-- Выберите населенный пункт --'},...response.data];mObjNode('Data.contacts.real_address.settlement',$scope);$scope.Data.contacts.real_address.settlement=val||$scope.RealSettlements[0];mPreloader.dec()})};$scope.loadRealDistricts=(valDistrict,valSettlement,afterLoad)=>{mPreloader.inc();mObjNode('Data.contacts.real_address.region',$scope);let val=valDistrict||null;if($scope.Data.contacts.real_address.region.id==='none'){$scope.Data.contacts.real_address.district=null;$scope.loadRealSettlements($scope.Data.contacts.real_address.region.id,valSettlement);mPreloader.dec();return} mHTTP().post('service/?action=Register.getDistrictsByRegionsId',{id:$scope.Data.contacts.real_address.region.id}).then((response)=>{response=response.data||response;$scope.RealDistricts=[{id:null,name:'-- Выберите район --'},{id:'none',name:'Областного подчинения'},...response.data];$scope.Data.contacts.real_address.district=val||$scope.RealDistricts[0];(afterLoad||(()=>{}))();mPreloader.dec()})};$scope.getActivityById=()=>{mHTTP().post('service/?action=Register.getActivityByGked',{gked:$scope.Data.main.gked.id}).then((response)=>{response=response.data||response;if(!response.data){$scope.Data.main.gked.name='';return} $scope.Data.main.gked.name=response.data.name;$scope.Data.main.gked.id=response.data.gked})};$scope.loadBankName=()=>{if($scope.Data.bank.bic.length<6)return;mHTTP().post('service/?action=Register.getBankById',{id:$scope.Data.bank.bic}).then((response)=>{response=response.data||response;if(response.data){$scope.Data.bank.bankname=response.data.name;$scope.Data.bank.bic=response.data.id}else{$scope.Data.bank.bankname='';if($scope.Data.bank.bic.length===6){mNotify.showErrorNotify('Ошибка','БИК не найден')}}})};$scope.loadLegalForm=(afterLoad)=>{mPreloader.inc();let tmp;if(!afterLoad) tmp=$scope.Data.main.ownerform;mHTTP().post('service/?action=Register.getLegalFormsByOwnershipFormId',{id:$scope.Data.main.ownerform.id}).then((response)=>{response=response.data||response;$scope.LegalForms=[{id:null,name:'-- Выберите значение --'},...response.data];mObjNode('Data.main.legalform',$scope);if(!afterLoad) $scope.Data.main.legalform=$scope.LegalForms[0];if(!afterLoad) $scope.Data.main.ownerform=tmp;(afterLoad||(()=>{}))();mPreloader.dec()})};$scope.loadCivilLegalStatuses=(afterLoad)=>{mPreloader.inc();let tmp;if(!afterLoad) tmp=$scope.Data.main.legalform.ownershipForm;mHTTP().post('service/?action=Register.getCivilLegalStatusesByLegalFormId',{id:$scope.Data.main.legalform.id}).then((response)=>{response=response.data||response;$scope.CivilLegalStatuses=[{id:null,name:'-- Выберите значение --'},...response.data];mObjNode('Data.main.civilstatus',$scope);if(!afterLoad)$scope.Data.main.civilstatus=$scope.CivilLegalStatuses[0];if(!afterLoad) $scope.Data.main.legalform.ownershipForm={id:tmp};(afterLoad||(()=>{}))();mPreloader.dec()})}};$scope.fileInputsIndexes=['mu-file-1','mu-file-2','passport-chief-file-1','passport-chief-file-2','accountant-chief-file-1','accountant-chief-file-2','sf-pay-file','m2a-file-1','m2a-file-2','passport-chief-translate-file','passport-accountant-translate-file'];$scope.initFileInputs=()=>{$scope.fileInputsIndexes.map(index=>{const file=$scope.Data.docs[index]||null;if(!file||!(file instanceof File)){delete $scope.Data.docs[index];const element=document?.getElementById('img-'+index)?.parentNode.getElementsByTagName('input').item(1);if(element!==undefined&&element!==null)element.value=''}})};$scope.fileInputsIndexes.map(index=>$scope.$watch('Data.docs["'+index+'"]',$scope.initFileInputs));$scope.initFileInputs();$scope.removeFile=(index)=>{mObjNode('Data.docs',$scope);const file=$scope.Data.docs[index]||null;if(!file||!(file instanceof File))return;document.getElementById('img-'+index).value=undefined;delete $scope.Data.docs[index];document.getElementById('img-'+index).parentNode.getElementsByTagName('input').item(1).value=''} $scope.errorInc=(model)=>{$scope.errorCount++;let element=angular.element(`[ng-model="${model}"]`);if(!element.length){element=angular.element(`[file-model="${model}"]`);if(element.attr('type')==='file') element=element.next();} if($scope.errorCount===1){try{$(element).animatescroll({padding:57})}catch(e){}} $(element).addClass('error-form')};$scope.isSetAccountant=!1;$scope.validate=()=>{window.Data=$scope.Data;$scope.Errors={docs:{},contacts:{},reporting:{},main:{}};window.Errors=$scope.Errors;mObjNode('Data.main.legalform',$scope);$scope.errorCount=0;$('.error-form').removeClass('error-form');mObjNode('Errors.main',$scope);if(!$scope.Data.main.inn||!/^(\d{14})$/.test($scope.Data.main.inn)){$scope.Errors.main.inn='ИНН должен состоять из 14 цифр';$scope.errorInc('Data.main.inn')} if(!$scope.Data.main.okpo||!/^(\d{8,8})$/.test($scope.Data.main.okpo)){$scope.Errors.main.okpo='ОКПО должен состоять из 8 цифр';$scope.errorInc('Data.main.okpo')} if(!$scope.Data.main.sf||!/^(\d{12})$/.test($scope.Data.main.sf)){$scope.Errors.main.sf='Регистрационный номер СФ должен состоять из 12 цифр';$scope.errorInc('Data.main.sf')} if([6,7].indexOf($scope.Data.main.legalform.id)<0){if(!$scope.Data.main.minjust||!/^\d+\-\d+\-.+$/.test($scope.Data.main.minjust)){$scope.Errors.main.minjust='Регистрационный номер Министерства Юстиции должен быть в формате XXXXXX-YYYY-ZZZ';$scope.errorInc('Data.main.minjust')}} if(!$scope.Data.main.name||$scope.Data.main.name.trim().length===0){$scope.Errors.main.name='Поле не заполнено';$scope.errorInc('Data.main.name')} if(!$scope.Data.contacts.email||!/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/.test($scope.Data.contacts.email)){$scope.Errors.contacts.email='E-mail имеет неверный формат';$scope.errorInc('Data.contacts.email')} mObjNode('Data.bank',$scope);mObjNode('Errors.bank',$scope);if($scope.Data.bank.bic&&$scope.Data.bank.bic.toString().length>0){if(($scope.Data.bank.bic&&!/^\d{6}$/.test($scope.Data.bank.bic))){$scope.Errors.bank.bic='БИК имеет неверный формат';$scope.errorInc('Data.bank.bic')}else{if(!$scope.Data.bank.bankname||!$scope.Data.bank.bankname.trim().length){$scope.Errors.bank.bic='БИК не верный';$scope.errorInc('Data.bank.bankname')}} if(!$scope.Data.bank.account||!/^\d{16,16}$/.test($scope.Data.bank.account)){$scope.Errors.bank.account='Расчетный счет должен состоять из 16 цифр';$scope.errorInc('Data.bank.account')}} mObjNode('Data.main.gked',$scope);mObjNode('Errors.main.gked',$scope);if(!$scope.Data.main.gked.id||!/^\d{2}\.\d{2}\.\d+$/.test($scope.Data.main.gked.id)){$scope.Errors.main.gked.id='ГКЭД должен быть заполнен в формате XX.YY.ZZ';$scope.errorInc('Data.main.gked.id')}else{if($scope.Data.main.gked.name.toString().length===0){$scope.Errors.main.gked.id=`ГКЭД ${$scope.Data.main.gked.id} не найден`;$scope.errorInc('Data.main.gked.id')}} if(!$scope.Data.main.legalform.id||$scope.Data.main.legalform.id==='none'){$scope.Errors.main.legalform='Данные не выбраны';$scope.errorInc('Data.main.legalform')} mObjNode('Data.main.legalform.ownershipForm',$scope);if(!$scope.Data.main.ownerform.id||$scope.Data.main.ownerform.id==='none'){$scope.Errors.main.ownerform='Данные не выбраны';$scope.errorInc('Data.main.ownerform')} mObjNode('Errors.main',$scope);mObjNode('Data.main.civilstatus',$scope);if(!$scope.Data.main.civilstatus.id||$scope.Data.main.civilstatus.id==='none'){$scope.Errors.main.civilstatus='Данные не выбраны';$scope.errorInc('Data.main.civilstatus')} if([6,7].indexOf($scope.Data.main.legalform.id)<0){mObjNode('Data.main.capitalform',$scope);if(!$scope.Data.main.capitalform.id||$scope.Data.main.capitalform.id==='none'){$scope.Errors.main.capitalform='Данные не выбраны';$scope.errorInc('Data.main.capitalform')} mObjNode('Data.main.manageform',$scope);if(!$scope.Data.main.manageform.id||$scope.Data.main.manageform.id==='none'){$scope.Errors.main.manageform='Данные не выбраны';$scope.errorInc('Data.main.manageform')}}else{$scope.Data.main.minjust=null;$scope.Data.main.capitalform={id:null};$scope.Data.main.manageform={id:null}} mObjNode('Errors.contacts.juristic_address',$scope);mObjNode('Data.contacts.juristic_address.settlement',$scope);mObjNode('Errors.contacts.real_address',$scope);mObjNode('Data.contacts.real_address.settlement',$scope);if(!$scope.Data.contacts.juristic_address.post_index||!/^(\d{6,6})$/.test($scope.Data.contacts.juristic_address.post_index)){$scope.Errors.contacts.juristic_address.post_index='Почтовый индекс должен состоять из 6 цифр';$scope.errorInc('Data.contacts.juristic_address.post_index')} if(!$scope.Data.contacts.juristic_address.settlement.id||$scope.Data.contacts.juristic_address.settlement.id==='none'){$scope.Errors.contacts.juristic_address.settlement='Населенный пункт не выбран';$scope.errorInc('Data.contacts.juristic_address.settlement');$scope.errorInc('Data.contacts.juristic_address.region');$scope.errorInc('Data.contacts.juristic_address.district')} if(!$scope.Data.contacts.juristic_address.street||$scope.Data.contacts.juristic_address.street.trim()===''){$scope.Errors.contacts.juristic_address.street='Поле не заполнено';$scope.errorInc('Data.contacts.juristic_address.street')} if(!$scope.Data.contacts.juristic_address.building||$scope.Data.contacts.juristic_address.building.trim()===''){$scope.Errors.contacts.juristic_address.building='Поле не заполнено';$scope.errorInc('Data.contacts.juristic_address.building')} if(!$scope.SameAddress){if(!$scope.Data.contacts.real_address.post_index||!/^(\d{6,6})$/.test($scope.Data.contacts.real_address.post_index)){$scope.Errors.contacts.real_address.post_index='Почтовый индекс должен состоять из 6 цифр';$scope.errorInc('Data.contacts.real_address.post_index')} if(!$scope.Data.contacts.real_address.settlement.id||$scope.Data.contacts.real_address.settlement.id==='none'){$scope.Errors.contacts.real_address.settlement='Населенный пункт не выбран';$scope.errorInc('Data.contacts.real_address.settlement');$scope.errorInc('Data.contacts.juristic_address.region');$scope.errorInc('Data.contacts.juristic_address.district')} if(!$scope.Data.contacts.real_address.street||$scope.Data.contacts.real_address.street.trim()===''){$scope.Errors.contacts.real_address.street='Поле не заполнено';$scope.errorInc('Data.contacts.real_address.street')} if(!$scope.Data.contacts.real_address.building||$scope.Data.contacts.real_address.building.trim()===''){$scope.Errors.contacts.real_address.building='Поле не заполнено';$scope.errorInc('Data.contacts.real_address.building')}} mObjNode('Data.person.chief.passport_data',$scope);mObjNode('Errors.person.chief.passport_data',$scope);if(!$scope.Data.person.chief.passport_data.series||!$scope.Data.person.chief.passport_data.series.trim().length||!$scope.Data.person.chief.passport_data.number||!$scope.Data.person.chief.passport_data.number.trim().length||!/^[a-zA-Z0-9]{1,4}$/.test($scope.Data.person.chief.passport_data.series.trim())||!/^\d{5,10}$/.test($scope.Data.person.chief.passport_data.number.trim())){$scope.Errors.person.chief.passport_data.number='Паспортные данные некорректны';$scope.errorInc('Data.person.chief.passport_data.series');$scope.errorInc('Data.person.chief.passport_data.number')} $scope.Data.person.chief.passport_data.series=($scope.Data.person.chief.passport_data.series||'').toUpperCase();if(!$scope.Data.person.chief.passport_data.issue_place||!$scope.Data.person.chief.passport_data.issue_place.trim().length){$scope.Errors.person.chief.passport_data.issue_place='Поле не заполнено';$scope.errorInc('Data.person.chief.passport_data.issue_place')} if(!$scope.Data.person.chief.passport_data.issue_date||!/^\d{2,2}\.\d{2,2}\.\d{4,4}$/.test($scope.Data.person.chief.passport_data.issue_date)||!((d)=>{let d1=new Date(d.split('.').reverse().join('-'));return!isNaN(d1.getDay())})($scope.Data.person.chief.passport_data.issue_date)){$scope.Errors.person.chief.passport_data.issue_date='Дата выдачи имеет недопустимый формат';$scope.errorInc('Data.person.chief.passport_data.issue_date')}else{let d=new Date($scope.Data.person.chief.passport_data.issue_date.split('.').reverse().join('-'));if(d>$scope.currentDate){$scope.Errors.person.chief.passport_data.issue_date='Дата выдачи не допустима';$scope.errorInc('Data.person.chief.passport_data.issue_date')}} if(!$scope.Data.person.chief.representative_pin||!/^(\d{14})$/.test($scope.Data.person.chief.representative_pin)){$scope.Errors.person.chief.representative_pin='ПИН должен состоять из 14 цифр';$scope.errorInc('Data.person.chief.representative_pin')} if(!$scope.Data.person.chief.surname||!$scope.Data.person.chief.surname.trim().length){$scope.Errors.person.chief.surname='Фамилия не заполнена';$scope.errorInc('Data.person.chief.surname')}else{$scope.Data.person.chief.surname=$scope.Data.person.chief.surname.trim()} if(!$scope.Data.person.chief.name||!$scope.Data.person.chief.name.trim().length){$scope.Errors.person.chief.name='Имя не заполнено';$scope.errorInc('Data.person.chief.name')}else{$scope.Data.person.chief.name=$scope.Data.person.chief.name.trim()} if($scope.Data.person.chief.middleNameExists&&(!$scope.Data.person.chief.middleName||!$scope.Data.person.chief.middleName.trim().length)){$scope.Errors.person.chief.middleName='Отчество не заполнено';$scope.errorInc('Data.person.chief.middleName')}else{$scope.Data.person.chief.middleName=$scope.Data.person.chief.middleName.trim()} if(!$scope.Data.person.chief.position||!$scope.Data.person.chief.position.id||$scope.Data.person.chief.position.id==='none'){$scope.Errors.person.chief.position='Должность руководителя не выбрана';$scope.errorInc('Data.person.chief.position')} if(!$scope.Data.person.chief.basis||!$scope.Data.person.chief.basis.id||$scope.Data.person.chief.basis.id==='none'){$scope.Errors.person.chief.basis='Основание для занимаемой должности не заполнено';$scope.errorInc('Data.person.chief.basis')} if(!$scope.Data.person.chief.phone||!$scope.Data.person.chief.phone.trim().length){$scope.Errors.person.chief.phone='Телефон не заполнен';$scope.errorInc('Data.person.chief.phone')}else{if(!/^([0-9 \-.,]{6,20})$/.test($scope.Data.person.chief.phone)){$scope.errorInc('Data.person.chief.phone');$scope.Errors.person.chief.phone='Номер мобильного телефона некорректный'}} if(!$scope.Data.person.chief.edsusagemodel){$scope.errorInc('Data.person.chief.edsusagemodel');$scope.Errors.person.chief.edsusagemodel='Модель использования ЭП не выбрана'} if($scope.isSetAccountant){mObjNode('Data.person.accountant.passport_data',$scope);mObjNode('Errors.person.accountant.passport_data',$scope);if(!$scope.Data.person.accountant.passport_data.series||!$scope.Data.person.accountant.passport_data.series.trim().length||!$scope.Data.person.accountant.passport_data.number||!$scope.Data.person.accountant.passport_data.number.trim().length||!/^[a-zA-Z0-9]{1,4}$/.test($scope.Data.person.accountant.passport_data.series.trim())||!/^\d{5,10}$/.test($scope.Data.person.accountant.passport_data.number.trim())){$scope.Errors.person.accountant.passport_data.number='Паспортные данные некорректны';$scope.errorInc('Data.person.accountant.passport_data.series');$scope.errorInc('Data.person.accountant.passport_data.number')} $scope.Data.person.accountant.passport_data.series=($scope.Data.person.accountant.passport_data.series||'').toUpperCase();if(!$scope.Data.person.accountant.passport_data.issue_place||!$scope.Data.person.accountant.passport_data.issue_place.trim().length){$scope.Errors.person.accountant.passport_data.issue_place='Поле не заполнено';$scope.errorInc('Data.person.accountant.passport_data.issue_place')} if(!$scope.Data.person.accountant.passport_data.issue_date||!/^\d{2,2}\.\d{2,2}\.\d{4,4}$/.test($scope.Data.person.accountant.passport_data.issue_date)||!((d)=>{let d1=new Date(d.split('.').reverse().join('-'));return!isNaN(d1.getDay())})($scope.Data.person.accountant.passport_data.issue_date)){$scope.Errors.person.accountant.passport_data.issue_date='Дата выдачи имеет недопустимый формат';$scope.errorInc('Data.person.accountant.passport_data.issue_date')}else{let d=new Date($scope.Data.person.accountant.passport_data.issue_date.split('.').reverse().join('-'));if(d>$scope.currentDate){$scope.Errors.person.accountant.passport_data.issue_date='Дата выдачи не допустима';$scope.errorInc('Data.person.accountant.passport_data.issue_date')}} if(!$scope.Data.person.accountant.representative_pin||!/^(\d{14})$/.test($scope.Data.person.accountant.representative_pin)){$scope.Errors.person.accountant.representative_pin='ПИН должен состоять из 14 цифр';$scope.errorInc('Data.person.accountant.representative_pin')} if(!$scope.Data.person.accountant.surname||!$scope.Data.person.accountant.surname.trim().length){$scope.Errors.person.accountant.surname='Фамилия не заполнена';$scope.errorInc('Data.person.accountant.surname')}else{$scope.Data.person.accountant.surname=$scope.Data.person.accountant.surname.trim()} if(!$scope.Data.person.accountant.name||!$scope.Data.person.accountant.name.trim().length){$scope.Errors.person.accountant.name='Имя не заполнено';$scope.errorInc('Data.person.accountant.name')}else{$scope.Data.person.accountant.name=$scope.Data.person.accountant.name.trim()} if($scope.Data.person.accountant.middleNameExists&&(!$scope.Data.person.accountant.middleName||!$scope.Data.person.accountant.middleName.trim().length)){$scope.Errors.person.accountant.middleName='Отчество не заполнено';$scope.errorInc('Data.person.accountant.middleName')}else{$scope.Data.person.accountant.middleName=$scope.Data.person.accountant.middleName.trim()} if(!$scope.Data.person.accountant.phone||!$scope.Data.person.accountant.phone.trim().length){$scope.Errors.person.accountant.phone='Телефон не заполнен';$scope.errorInc('Data.person.accountant.phone')}else{if(!/^([0-9 \-.,]{6,20})$/.test($scope.Data.person.accountant.phone)){$scope.errorInc('Data.person.accountant.phone');$scope.Errors.person.accountant.phone='Номер мобильного телефона некорректный'}} if(!$scope.Data.person.accountant.edsusagemodel){$scope.errorInc('Data.person.accountant.edsusagemodel');$scope.Errors.person.accountant.edsusagemodel='Модель использования ЭП не выбрана'}} if(!$scope.Data.reporting.sftariff.id||$scope.Data.reporting.sftariff.id==='none'){$scope.Errors.reporting.sftariff='Данные не выбраны';$scope.errorInc('Data.reporting.sftariff')} if(!$scope.Data.reporting.sfregion.id||$scope.Data.reporting.sfregion.id==='none'){$scope.Errors.reporting.sfregion='Данные не выбраны';$scope.errorInc('Data.reporting.sfregion')} if(!$scope.Data.reporting.stiregion.id||$scope.Data.reporting.stiregion.id==='none'){$scope.Errors.reporting.stiregion='Данные не выбраны';$scope.errorInc('Data.reporting.stiregion')} if(!$scope.Data.reporting.stiapplyingregion.id||$scope.Data.reporting.stiapplyingregion.id==='none'){$scope.Errors.reporting.stiapplyingregion='Данные не выбраны';$scope.errorInc('Data.reporting.stiapplyingregion')} if(!$scope.password||$scope.password.toString().length===0){$scope.Errors.password='Заполните кодовое слово';$scope.errorInc('password')} if($scope.password!==$scope.confirmPassword||!$scope.confirmPassword){$scope.Errors.confirmPassword='Кодовые слова не совпадают';$scope.errorInc('confirmPassword')} if(!$scope.Data.person.chief.pin||!/^[0-9a-zA-Z]{6}$/.test($scope.Data.person.chief.pin)){$scope.Errors.person.chief.pin='ПИН-код должен состоять из 6 символов';$scope.errorInc('Data.person.chief.pin')} if(!$scope.Data.person.chief.pin2||$scope.Data.person.chief.pin!==$scope.Data.person.chief.pin2){$scope.Errors.person.chief.pin2='Значение полей ПИН-код и Повтор ПИН-кода должны совпадать';$scope.errorInc('Data.person.chief.pin2')} if($scope.isSetAccountant){if(!$scope.Data.person.accountant.pin||!/^[0-9a-zA-Z]{6}$/.test($scope.Data.person.accountant.pin)){$scope.Errors.person.accountant.pin='ПИН-код должен состоять из 6 символов';$scope.errorInc('Data.person.accountant.pin')} if(!$scope.Data.person.accountant.pin2||$scope.Data.person.accountant.pin!==$scope.Data.person.accountant.pin2){$scope.Errors.person.accountant.pin2='Значение полей ПИН-код и Повтор ПИН-кода должны совпадать';$scope.errorInc('Data.person.accountant.pin2')}} mObjNode('Data.docs',$scope);if(!$scope.Data.docs['mu-file-1']&&!$scope.Data.docs['mu-file-2']){$scope.Errors.docs['mu-file-1']='Свидетельство министерства юстиции не прикреплено';$scope.errorInc("Data.docs['mu-file-1']")}else{$scope.checkImage('mu-file-1');$scope.checkImage('mu-file-2')} if(!$scope.Data.docs['passport-chief-file-1']&&!$scope.Data.docs['passport-chief-file-2']){$scope.Errors.docs['passport-chief-file-1']='Паспорт руководителя не прикреплен';$scope.errorInc("Data.docs['passport-chief-file-1']")}else{$scope.checkImage('passport-chief-file-1');$scope.checkImage('passport-chief-file-2')} if($scope.isSetAccountant) if(!$scope.Data.docs['passport-accountant-file-1']&&!$scope.Data.docs['passport-accountant-file-2']){$scope.Errors.docs['passport-accountant-file-1']='Паспорт бухгалтера не прикреплен';$scope.errorInc("Data.docs['passport-accountant-file-1']")}else{$scope.checkImage('passport-accountant-file-1');$scope.checkImage('passport-accountant-file-2')} if(!$scope.Data.docs['m2a-file-1']&&!$scope.Data.docs['m2a-file-2']){$scope.Errors.docs['m2a-file-1']='Форма М2А не прикреплена';$scope.errorInc("Data.docs['m2a-file-1']")}else{$scope.checkImage('m2a-file-1');$scope.checkImage('m2a-file-2')} if(!$scope.Data.docs['sf-pay-file']){$scope.Errors.docs['sf-pay-file']='Извещение плательщику о страховых взносах не прикреплено';$scope.errorInc("Data.docs['sf-pay-file']")}else $scope.checkImage('sf-pay-file');if($scope.Data.docs['passport-chief-translate-file']) $scope.checkImage('passport-chief-translate-file');if($scope.Data.docs['passport-accountant-translate-file']) $scope.checkImage('passport-accountant-translate-file');};$scope.sort2=(arr)=>{if(arr[0]>arr[1]) arr.reverse();return arr};$scope.checkImage=async(index)=>{let file=$scope.Data.docs[index]||null;if(!file||!(file instanceof File))return;if(file.size>5*1024*1024){$scope.errorInc(`Data.docs['${index}']`);return $scope.Errors.docs[index]='Размер файла не должен превышать 5 мб'} if(file.type!=="image/jpeg"){$scope.errorInc(`Data.docs['${index}']`);return $scope.Errors.docs[index]='Файл должен быть в формате изображения JPEG'} let imageData=await(async file=>{const Fr=new FileReader();Fr.readAsDataURL(file);return new Promise(resolve=>{Fr.onloadend=e=>resolve(Fr.result)})})(file);let ImgElement=document.getElementById(`img-${index}`);let sizes=await(async(ImgElement,imageData)=>{ImgElement.src=imageData;return new Promise(resolve=>{ImgElement.onload=e=>resolve([ImgElement.naturalWidth||ImgElement.width,ImgElement.naturalHeight||ImgElement.height])})})(ImgElement,imageData);sizes=$scope.sort2(sizes);if(sizes[0]<2400||sizes[1]<3200){$scope.errorInc(`Data.docs['${index}']`);$scope.Errors.docs[index]='Разрешение изображения не должно быть меньше 3200х2400 (2400х3200)'} $scope.$apply()};$scope.changeSetAccountant=()=>{mObjNode('Data.person.accountant',$scope);$scope.Data.person.accountant.middleNameExists=!0} $scope.send=(formData)=>{mHTTP()({method:'post',url:'service/?action=Register.save',data:formData,headers:{'Content-Type':undefined}}).then((response)=>{response=response.data;if(response.success){$location.path('/register/done')}else{mNotify.showErrorNotify('Ошибка',response.message)} mPreloader.dec()})};$scope.save=()=>{mObjNode('Data.docs',$scope);mPreloader.inc();window.scope=$scope;$scope.validate();if($scope.errorCount>0){mPreloader.dec();try{$scope.Data.person.chief.pin='';$scope.Data.person.chief.pin2='';$scope.Data.person.accountant.pin='';$scope.Data.person.accountant.pin2=''}catch(e){} return} if(!$scope.Data.person.accountant)$scope.Data.person.accountant=null;let formData=new FormData();formData.append('data',JSON.stringify($scope.Data));formData.append('password',$scope.password);for(let i in $scope.Data.docs) formData.append(i,$scope.Data.docs[i]);if($scope.SameAddress) formData.append('real-same','true');if($scope.isSetAccountant) formData.append('isset-accountant','true');$scope.send(formData)}}]).controller('StatusCtrl',['mHTTP','$scope','mObjNode','$compile','$routeParams','$location','mNotify','mPreloader',function(mHTTP,$scope,mObjNode,$compile,$routeParams,$location,mNotify,mPreloader){$scope.searchError='';window.scope=$scope;$scope.search=()=>{mPreloader.inc();mHTTP().post('service/?action=Status.get',{inn:$scope.inn,password:$scope.password}).then((response)=>{mPreloader.dec();response=response.data||response;if(response.success){$scope.data=response.data;for(let i=0;i<$scope.data.statuses.length;i++){if($scope.data.statuses[i].ClassName==='mif-cross mif-2x fg-red') $scope.data.statuses[i].ClassName='mif-cross mif-2x fg-white bg-red';if($scope.data.statuses[i].ClassName==='mif-checkmark mif-2x fg-green') $scope.data.statuses[i].ClassName='mif-checkmark mif-2x fg-white bg-green';if($scope.data.statuses[i].ClassName==='mif-hour-glass mif-2x fg-blue') $scope.data.statuses[i].ClassName='mif-hour-glass mif-2x fg-white bg-blue'} return} if(response.message==='NotFound') $scope.searchError='Заявка не найдена';if(response.message==='Invalid') $scope.searchError='Кодовое слово неверное'})}}]).controller('RegisterDoneCtrl',[function(){}]).directive('dynamicCtrl',['$compile','$parse',($compile,$parse)=>{return{restrict:'A',terminal:!0,priority:100000,link:(scope,elem)=>{let name=$parse(elem.attr('dynamic-ctrl'))(scope);elem.removeAttr('dynamic-ctrl');elem.attr('ng-controller',name);$compile(elem)(scope)}}}])