'Типовой', 2=>'КАМАЗ', 3=>'НКНХ', 4=>'Старый'); /** * Типы населенных пунктов * * @var array */ static $placeType = array('г'=>'город', 'с'=>'село', 'п'=>'поселок', 'д'=>'деревня', 'пгт'=>'поселок городского типа', 'х'=>'хутор', 'аал'=>'аал', 'аул'=>'аул', 'волость'=>'волость', 'высел'=>'выселки(ок)', 'дп'=>'дачный поселок', 'ж/д_будка'=>'железнодорожная будка', 'ж/д_казарм'=>'железнодорожная казарма', 'ж/д_оп'=>'ж/д останов. (обгонный) пункт', 'ж/д_пост'=>'железнодорожный пост', 'ж/д_рзд'=>'железнодорожный разъезд', 'ж/д_ст'=>'железнодорожная станция', 'заимка'=>'заимка', 'казарма'=>'казарма', 'кп'=>'курортный поселок', 'м'=>'местечко', 'мкр'=>'микрорайон', 'нп'=>'населенный пункт', 'остров'=>'остров', 'п/р'=>'планировочный район', 'п/ст'=>'поселок и(при) станция(и)', 'починок'=>'починок', 'п/о'=>'почтовое отделение', 'промзона'=>'промышленная зона', 'рзд'=>'разъезд', 'рп'=>'рабочий поселок', 'сл'=>'слобода', 'ст'=>'станция', 'ст-ца'=>'станица', 'у'=>'улус', 'городок'=>'городок', 'тер'=>'территория', 'ж/д_платф'=>'железнодорожная платформа', 'кв-л'=>'квартал', 'арбан'=>'арбан', 'снт'=>'садовое неком-е товарищество', 'лпх'=>'леспромхоз', 'погост'=>'погост', 'кордон'=>'кордон', 'автодорога'=>'автодорога', 'жилрайон'=>'жилой район'); /** * Префиксы улиц * * @var array */ static $streetPrefix = array('ул'=>'улица', 'б-р'=>'бульвар', 'пр-кт'=>'проспект', 'пер'=>'переулок', 'кв-л'=>'квартал', 'проезд'=>'проезд', 'кольцо'=>'кольцо', 'туп'=>'тупик', 'ш'=>'шоссе', 'мкр'=>'микрорайон', 'наб'=>'набережная'); static $insuredContractStatus = array(0=>'В работе', 1=>'Закрыт', 2=>'Расторгнут', 255=>'Удалён'); /** * Информация по страховщику * * @var array */ static $insuranceInfo = array('01'=>array('name'=>'ЗАО "СМО "Спасение"', 'city'=>'Казань', 'director_name'=>'', 'proxy_name'=>'Закирова Н.Т.', 'full_proxy_name'=>'Закирова Найма Талгатовна', 'proxy_position'=>'Зам. генерального директора ЗАО "СМО "Спасение"', 'proxy_positionn'=>'Зам. генерального директора ', 'email'=>'office@spasenie-med.ru', 'pvp_code'=>'501'), '02'=>array('name'=>'Филиал ЗАО "СМО "Спасение" в г. Набережные Челны', 'city'=>'Набережные Челны', 'director_name'=>'', 'proxy_name'=>'Хасанова С.М.', 'full_proxy_name'=>'Хасанова Светлана Мирвагизовна', 'proxy_position'=>'Директор Филиала ЗАО "СМО "Спасение" в г. Набережные Челны', 'email'=>'office@spasenie-med.ru', 'pvp_code'=>'502'), '03'=>array('name'=>'Представительство ЗАО "СМО "Спасение" в г. Нижнекамск', 'city'=>'Нижнекамск', 'director_name'=>'', <<<<<<< .mine 'proxy_name'=>'Парфенова Г.Р.', ======= 'proxy_name'=>'Плотникова Н.А.', 'full_proxy_name'=>'Парфенова Гузель Равилевна', >>>>>>> .r9051 'proxy_position'=>'Начальник отдела ЗАО "СМО "Спасение" в г. Нижнекамск', 'email'=>'spasenie_nk@rambler.ru', <<<<<<< .mine 'pvp_code'=>'503'), '04'=>array('name'=>'Страховой центр "Альметьевский"', 'city'=>'Альметьевск', 'director_name'=>'', 'proxy_name'=>'Матвеева И.И.', 'proxy_position'=>'Специалист страхового центра', 'email'=>'almetevsk@16sp.ru', 'pvp_code'=>'504') ); ======= 'pvp_code'=>'503'), '04'=>array('name'=>'Страховой центр Альметьевский', 'city'=>'Альметьевск', 'proxy_name'=>'Матвеева И. И.', 'full_proxy_name'=>'Матвеева Инга Ивановна', 'pvp_code'=>'504')); >>>>>>> .r9051 /** * Проверка ИНН * * @param string $val Проверяемое значение * @param boolean $person TRUE - проверка ИНН физ. лиц, FALSE - физ. и юр. лиц * @return boolean TRUE если значение имеет правильный формат, и FALSE в противном случае */ static function CheckINN($val, $person=true){ if(intval($val)==0) return false; $valLen = strlen($val); if($valLen!=12 && $person) return false; $arr=str_split($val); if($valLen==12){ $sum=$arr[0]*7+$arr[1]*2+$arr[2]*4+$arr[3]*10+$arr[4]*3+$arr[5]*5+$arr[6]*9+$arr[7]*4+$arr[8]*6+$arr[9]*8; $step=intval($sum/11)*11; $checkNum1=$sum-$step; if($checkNum1==10) $checkNum1=0; $sum=$arr[0]*3+$arr[1]*7+$arr[2]*2+$arr[3]*4+$arr[4]*10+$arr[5]*3+$arr[6]*5+$arr[7]*9+$arr[8]*4+$arr[9]*6+$arr[10]*8; $step=intval($sum/11)*11; $checkNum2=$sum-$step; if($checkNum2==10) $checkNum2=0; if($checkNum1==$val[10] && $checkNum2==$val[11]) return true; else return false; }else if($valLen==10){ $sum=$arr[0]*2+$arr[1]*4+$arr[2]*10+$arr[3]*3+$arr[4]*5+$arr[5]*9+$arr[6]*4+$arr[7]*6+$arr[8]*8; $step=intval($sum/11)*11; $checkSum=$sum-$step; if($checkSum==10) $checkSum=0; if($checkSum==$val[9]) return true; else return false; }else{ return false; } } /** * Проверка КПП * * @param string $val Проверяемое значение * @return boolean TRUE если значение имеет правильный формат, и FALSE в противном случае */ static function CheckKPP($val){ return true; } /** * Проверка СНИЛС * * @param string $val Проверяемое значение * @return boolean TRUE если значение имеет правильный формат, и FALSE в противном случае */ static function CheckSNILS($snils){ if($snils=='000-000-000-00')return false; $checkNumber=substr($snils,-2); $snils=substr($snils,0,11); $snils=strrev(str_replace("-","",$snils)); $arr=str_split($snils); $i=0; foreach($arr as $k=>$v){ $i=$i+intval(($k+1)*$v); } if($i<100) $checkSum=$i; if($i==100 || $i==101) $checkSum=0; if($i>101) { $checkSum=round(fmod($i,101),2); if($checkSum==100 || $checkSum==101) $checkSum=0; } if($checkSum==$checkNumber) return true; else return false; } /** * Проверка номера свидетельства страхования ПФ * * @param string $val Проверяемое значение * @return boolean TRUE если значение имеет правильный формат, и FALSE в противном случае */ static function CheckNSSPF($val){ return true; } /** * Проверка регистрационного номера ФОМС * * @param string $val Проверяемое значение * @return boolean TRUE если значение имеет правильный формат, и FALSE в противном случае */ static function CheckFOMSReg($val){ $checkNum=substr($val,-1); $val=substr($val,0,14); $arr=str_split($val); $sum=$arr[0]*3+$arr[1]*5+$arr[2]*7+$arr[3]*9+$arr[4]*11+$arr[5]*13+$arr[6]*15+$arr[7]*13+$arr[8]*11+$arr[9]*9+$arr[10]*7+$arr[11]*5+$arr[12]*3+$arr[13]*1; $res=fmod($sum,9); if($res==$checkNum) return true; else return false; } /** * Проверка корреспондентского счёта * * @param string $val Проверяемое значение * @param string $bic значение БИК - переменная необходимая для проверки корр.сч. * @return boolean TRUE если значение имеет правильный формат, и FALSE в противном случае */ static function CheckCorrAccount($val,$bic){ $bic=substr($bic,4,2); $corrAcc="0".$bic.$val; $arr=str_split($corrAcc); $sum=$arr[0]*7+$arr[1]*1+$arr[2]*3+$arr[3]*7+$arr[4]*1+$arr[5]*3+$arr[6]*7+$arr[7]*1+$arr[8]*3+$arr[9]*7+$arr[10]*1+$arr[11]*3+$arr[12]*7+ $arr[13]*1+$arr[14]*3+$arr[15]*7+$arr[16]*1+$arr[17]*3+$arr[18]*7+$arr[19]*1+$arr[20]*3+$arr[21]*7+$arr[22]*1; $checkNum=fmod($sum,10); if($checkNum==0) return true; else return false; } /** * Проверка расчётного счёта * * @param string $val Проверяемое значение * @param string $bic значение БИК - переменная необходимая для проверки р/с * @return boolean TRUE если значение имеет правильный формат, и FALSE в противном случае */ static function CheckBankAccount($val,$bic){ $bic=substr($bic,-3); $account=$bic.$val; $arr=str_split($account); $sum=$arr[0]*7+$arr[1]*1+$arr[2]*3+$arr[3]*7+$arr[4]*1+$arr[5]*3+$arr[6]*7+$arr[7]*1+$arr[8]*3+$arr[9]*7+$arr[10]*1+$arr[11]*3+$arr[12]*7+$arr[13]*1+$arr[14]*3+ $arr[15]*7+$arr[16]*1+$arr[17]*3+$arr[18]*7+$arr[19]*1+$arr[20]*3+$arr[21]*7+$arr[22]*1; $checkNum=fmod($sum,10); if($checkNum==0) return true; else return false; } /** * Проверка ОГРН * * @param string $val Проверяемое значение * @return boolean TRUE если значение имеет правильный формат, и FALSE в противном случае */ static function CheckOGRN($ogrn,$insuredType){ $checkNum=intval(substr($ogrn,-1,1)); if($insuredType=='1' || $insuredType=='4'){ $ogrn = substr(strval($ogrn),0,12); $step = $ogrn / 11; if(strpos($step,'.')>0) $step = substr($step,0,strpos($step,'.')); $step = $step * 11; $checkSum = $ogrn - $step; if($checkSum==10) $checkSum=0; if($checkSum==$checkNum) return true; else return false; }elseif($insuredType=='2'){ //В виду того что PHP не может работать с большими целыми числами проверка сделана в БД global $core; $res = $core->sql->GetValueFromDB("SELECT oms.check_ogrnip('".$ogrn."')", false, false, true); return $res == 't'; } return true; } /** * Нормализация названия улицы, города, района, и т.д. * * @param string $name * @return string */ static function NormalizeLocation($name){ $name = strtolower($name); $name = str_replace('(', ' (', $name); $name = ereg_replace(' +', ' ', $name); $name = trim($name); $name = strtr($name, "abekmhopctyx", "авекмнорстух"); $a = split(' ', $name); foreach($a as $key=>$str){ $a[$key] = strtoupper(substr($str,0,1)).substr($str,1); } $name = implode(' ', $a); $a = split('\(', $name); foreach($a as $key=>$str){ $a[$key] = strtoupper(substr($str,0,1)).substr($str,1); } $name = implode('(', $a); $a = split('\.', $name); foreach($a as $key=>$str){ $a[$key] = strtoupper(substr($str,0,1)).substr($str,1); } $name = implode('.', $a); $a = split('-', $name); foreach($a as $key=>$str){ if($str[0]=='й' || $str[0]=='я') continue; $a[$key] = strtoupper(substr($str,0,1)).substr($str,1); } $name = implode('-', $a); return trim($name); } /** * Форматирует полис * * @param integer $policy Номер полиса */ static function FormatPolicy($policy){ if($policy=='')return ''; return str_pad(strval($policy), 7, '0', STR_PAD_LEFT); } static function FormatName($row, $short=false, $keep_case=false){ if(!is_array($row)){ $str = $row; $row = array(); list($row['last_name'], $row['first_name'], $row['patronymic']) = split(' ', $str, 3); } if($keep_case) return $row['last_name'].' '.$row['first_name'].' '.$row['patronymic']; $last_name = $row['last_name'][0].strtolower(substr($row['last_name'],1)); $first_name = $row['first_name'][0].($short?'.':strtolower(substr($row['first_name'],1))); $patronymic = $row['patronymic'][0].($short?'.':strtolower(substr($row['patronymic'],1))); return $last_name.' '.$first_name.' '.$patronymic; } static function GetTempDir(){ global $configPath; $path = '.foms_data/'.md5(uniqid(rand(), true)).'/'; @mkdir($path, 0777, true); return GetPhysicalName($configPath['Root'].$path); } static function GetTempDir1($contract_code){ global $configPath; $path = '.R_A_file/'.$contract_code.'/'; @mkdir($path, 0777, true); return GetPhysicalName($configPath['Root'].$path); } /** * Генерируется имя временного файла * * @param string $type Тип файла - произвольная строка (префикс) * @param string $id Ид-р связанный с файлом * @param string $ext Расширение файла * @param boolean $onlyNew Если TRUE то гарантируется что такого файла не будет существовать, в случае если такой уже найден, то он удаляется * @return string Имя временного файла и путь к нему начиная от корня веб-сервера */ static function GetTmpFileName($type, $id, $ext, $onlyNew = true){ global $configPath; $file = '.tmp/'.$type.$id.".".$ext; @mkdir('.tmp', 0777); if($onlyNew)@unlink($file); return $file; } /** * Чистим и удаляем временную директорию * * @param string $dir */ static function ClearTempDir($dir){ $d = dir($dir); if(!is_object($d))return true; while (false !== ($entry = $d->read())) { $fileName = $dir.$entry; if(is_file($fileName)) unlink($fileName); } $d->close(); return @rmdir($dir); } /** * Форматируем СНИЛС * * @param string $snils СНИЛС который необходимо отформатировать * @param string $mode Тип форматирования 'foms' - как требует ФОМС (###-###-###-##), 'kamaz' - как требует КАМАЗ (###-###-### ##) */ static function FormatSnils($snils, $mode='foms'){ if(trim($snils)=='')return ''; $res = str_replace(' ', '', $snils); $res = str_replace('-', '', $res); switch($mode){ case 'foms': $res = substr($res,0,3).'-'.substr($res,3,3).'-'.substr($res,6,3).'-'.substr($res,9,2); break; case 'kamaz': $res = substr($res,0,3).'-'.substr($res,3,3).'-'.substr($res,6,3).' '.substr($res,9,2); break; default: $res = $snils; } return $res; } static function FormatPersonAddress($info){ $address = ''; if($info['region_code']!=null){ if($info['region_code']=='16') $address = 'РТ '; else{ if($info['region']!='г. Москва' && $info['region']!='г. Санкт-Петербург') $address = $info['region'].' '; } } if($info['place_type']!='г' && $info['subregion']!=null) $address .= $info['subregion'].' р-н '; if($info['place_type']!=null || $info['place']!=null) $address .= $info['place_type'].'. '.$info['place'].' '; if($info['place_type']=='г' && $info['sub_name']!=null) $address .= $info['sub_type'].' '.$info['sub_name'].' '; if(trim($info['street'])!='') $address .= $info['street_prefix'].'. '.$info['street'].' '; if(trim($info['house_num'])!='') $address .= 'д.'.$info['house_num'].($info['house_letter']!=''?' '.strtoupper($info['house_letter']):'').' '; if(trim($info['building_num'])!='') $address .= 'корпус '.$info['building_num'].' '; if(trim($info['flat_num'])!='') $address .= 'кв. '.$info['flat_num'].($info['flat_letter']!=''?' '.strtoupper($info['flat_letter']):''); return $address; } /** * Получаем информацию о страховщике по пользователю * * @param integer $userId Ид-р пользователя или NULL для текущего пользователя * @return array Ассоциативный массив с информацией */ static function GetInsuranceInfoByUser($userId = null){ global $core; if($userId===null) $userId = $core->curUserId; if(!is_numeric($userId)) $userId = oms_public::GetUserIdByLogin($userId); $depCode = $core->sql->GetValueFromDB('SELECT d.depcode FROM qe_user u INNER JOIN qe_department d ON u.departmentid = d.departmentid WHERE u.userid='.$userId); if($depCode=='') $depCode = '01'; return oms_public::$insuranceInfo[$depCode]; } /** * Получаем информацию о страховщике по страхователю * * @param integer $insuredId Ид-р страхователя * @return array Ассоциативный массив с информацией */ static function GetInsuranceInfoByInsured($insuredId){ $depCode = substr(oms_dom::GetInsured($insuredId)->contract_number,0,2); if(trim($depCode)=='')$depCode='01'; return oms_public::$insuranceInfo[$depCode]; } /** * Получаем роль текущего пользователя * * @return integer Роль текущего пользователя. */ static function GetUserRole(){ global $core; static $role = NULL; if($role === NULL) $role = $core->sql->GetValueFromDB("SELECT oms.check_group(".$core->curUserId.")"); return $role; } /** * Проверяем входит ли текущий пользователь как минимум в одну роль указанные в качестве параметров функции * * @param integer $needRole1 Проверяемая роль * ... * @return boolean */ static function CheckRoles(){ $role = oms_public::GetUserRole(); $needRoles = func_get_args (); foreach($needRoles as $needRole) if($role == $needRole) return true; return false; } /** * Возвращает ид-р страхователя по шифру договора * * @param string $code Шифр договора страхователя * @return int Ид-р страхователя */ static function GetInsuredIdByCode($code){ global $core; return intval($core->sql->GetValueFromDB("SELECT insured_id FROM oms.insured WHERE contract_code='".$code."'")); } static function GetUserIdByLogin($userLogin){ static $userLoginCache = array(); if(!isset($userLoginCache[$userLogin])){ global $core; $userLoginCache[$userLogin] = $core->sql->GetValueFromDB("SELECT UserID FROM qe_user WHERE Login='".$userLogin."'"); } return $userLoginCache[$userLogin]; } static function GetUserLoginById($userId){ static $userLoginCache; if(!is_numeric($userId)){ if(substr($userId, 0, 2)=="U_"){ $tmp = substr($userId, 2); if(is_numeric($tmp)) $userId = $tmp; else return $userId; }else return $userId; } if(!isset($userLoginCache[$userId])){ global $core; $userLoginCache[$userId] = $core->sql->GetValueFromDB('SELECT Login FROM qe_user WHERE UserID='.$userId); } return $userLoginCache[$userId]; } static function PrepareFileForOutput($fileName, &$logicPath, $path='.oms_tmp'){ global $configPath; $rootPath = GetPhysicalName($configPath['Root']); $dir = $rootPath.$path; $file = $dir.'/'.$fileName; if (!file_exists($dir)){ $folder_list = explode("/", $path); $len = count($folder_list); $tmp = ""; for($i=0;$i<$len;$i++) { if ($folder_list[$i] == "") continue; $tmp .= $folder_list[$i] . '/'; if (!is_dir($rootPath.$tmp)) @mkdir($rootPath.$tmp,0777); } } if (file_exists($file)){ @unlink($file); } $logicPath = $path.'/'.$fileName; return $file; } static function MakePersonFilter($keyword, $prefix='pi.'){ $where = array(); $keyword = strtoupper($keyword); list($last_name, $first_name, $patronymic) = split(' ', $keyword, 3); if($last_name!=''){ if($last_name[0] != '=') $where[] = $prefix."last_name LIKE '".$last_name."%'"; else $where[] = $prefix."last_name = '".substr($last_name, 1)."'"; } if($first_name!=''){ if($first_name[0] != '=') $where[] = $prefix."first_name LIKE '".$first_name."%'"; else $where[] = $prefix."first_name = '".substr($first_name, 1)."'"; } if($patronymic!=''){ if($patronymic[0] != '=') $where[] = $prefix."patronymic LIKE '".$patronymic."%'"; else $where[] = $prefix."patronymic = '".substr($patronymic, 1)."'"; } return $where; } } ?>