'Типовой', 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;
}
}
?>