Current Path : /home/bitrix/ext_www/portal.yacl.site/ |
Current File : /home/bitrix/ext_www/portal.yacl.site/fns_debtam.php |
<? define("NOT_CHECK_PERMISSIONS", true); if (!$_SERVER["DOCUMENT_ROOT"]) { $_SERVER["DOCUMENT_ROOT"] = realpath('./'); } require_once $_SERVER["DOCUMENT_ROOT"] . '/local/composer/vendor/autoload.php'; require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"); use Bitrix\Main\Type\DateTime; use Bitrix\Main\Loader; use Bitrix\Highloadblock\HighloadBlockTable as HLBT; use Bitrix\Disk\Security\DiskSecurityContext; use Bitrix\Disk\Security\SecurityContext; use Bitrix\Disk\Storage; use Bitrix\Main\Localization\Loc; use duzun\hQuery; $APPLICATION->SetTitle("Тест ФНС"); // //$list = $helper->getList(['select' => ['*']])->fetchAll(); $baseUrl = 'https://www.nalog.ru/opendata'; $code = '7707329152-rsmp'; $link = 'http://file.nalog.ru/opendata/7707329152-rsmp/data-04102020-structure-10102019.zip'; //$allUrls = ''; $baseDir = $_SERVER['DOCUMENT_ROOT'] . '/upload/fnsdata'; // $realUrl = $baseUrl . $item['UF_CODE'] . '/'; // $allUrls .= "\n" . $item['UF_LINK']; $currentDir = $baseDir . '/' . $code . '/'; //$lastInn = $helper->getList(['filter' => [], 'select' => ['UF_INN'], 'order' => ['ID' => 'DESC'], 'limit' => 1])->fetch()['UF_INN']; //okp($lastInn); //$command = "grep -lr $lastInn $currentDir"; //$res = exec($command); //okp($res); //$res = '/home/bitrix/ext_www/portal.yacl.site/upload/fnsdata/7707329152-rsmp/VO_RRMSPSV_0000_9965_20200410_8589b42e-8e9a-47e0-aa25-090ef261b19f.xml'; $allXmls = glob($currentDir . '*.xml'); //array_splice($allXmls, 0, 6619); //okp($allXmls); //die(); //die(); //okp($allXmls); //error_reporting(E_ALL); //$helper = new HighloadBlockHelper(13); $prefix = 'portal:company:'; $options = [ 'parameters' => [ 'password' => 'aS3f!gMleU6x', ], ]; $params = [ 'host' => '127.0.0.1', 'port' => 6379, ]; $client = new Predis\Client($params, $options); $count = 0; $time = microtime(true); $companiesData = []; foreach ($allXmls as $currentXml) { $sxe = new SimpleXMLElement(file_get_contents($currentXml)); foreach ($sxe->{'Документ'} as $document) { if ($document->{'ИПВклМСП'}) { continue; // $inn = $document->{'ИПВклМСП'}['ИННФЛ']; // $name .= $document->{'ИПВклМСП'}->{'ФИОИП'}['Фамилия'] . ' '; // $name .= $document->{'ИПВклМСП'}->{'ФИОИП'}['Имя'] . ' '; // $name .= $document->{'ИПВклМСП'}->{'ФИОИП'}['Отчество']; } else { $inn = $document->{'ОргВклМСП'}['ИННЮЛ']; $name = $document->{'ОргВклМСП'}['НаимОргСокр']; } $inn = (string)$inn; $okvedList = [$document->{'СвОКВЭД'}->{'СвОКВЭДОсн'}['КодОКВЭД'] . ' ' . $document->{'СвОКВЭД'}->{'СвОКВЭДОсн'}['НаимОКВЭД']]; foreach ($document->{'СвОКВЭД'}->{'СвОКВЭДДоп'} as $okved) { $okvedList[] = $okved['КодОКВЭД'] . ' ' . $okved['НаимОКВЭД']; } $allLicenses = []; foreach ($document->{'СвЛиценз'} as $item) { $license = [ 'number' => $item['НомЛиценз'], 'dateFrom' => $item['ДатаНачЛиценз'], 'dateTo' => $item['ДатаКонЛиценз'], 'name' => $item->{'НаимЛицВД'}, ]; // $license = 'Лицензия №' . $item['НомЛиценз'] . '. ' . 'Действует с ' . $item['ДатаНачЛиценз']; // if ($item['ДатаКонЛиценз']) { // $license .= ' по ' . $item['ДатаКонЛиценз']; // } // $license .= '. ' . $item->{'НаимЛицВД'}; $allLicenses[] = $license; } $data = [ 'UF_MSP_DATE' => (string)$document['ДатаВклМСП'], 'UF_INN' => $inn, 'UF_NAME' => $name, 'UF_OKVEDS' => $okvedList, 'UF_LICENSES' =>$allLicenses, ]; if (mb_strlen($data['UF_INN']) == 10) { $companiesData[$inn] = $data; // $helper->add($data); // okp($prefix . $inn); // okp($data); // $client->hmset($prefix . $inn, $data); // oklog('add ' . $inn . '. Count ' . ++$count, 'predis_add_log'); } } if (++$count > 10) break; // $data = []; // $chosenId = ''; // while($xml->read()) { // if ($xml->localName == 'Документ') { // $license = ''; // $docId = $xml->getAttribute('ИдДок'); // $data[$docId]['date'] = $xml->getAttribute('ДатаВклМСП'); // } elseif ($xml->localName == 'ИПВклМСП') { // $data[$docId]['inn'] = $xml->getAttribute('ИННФЛ'); // } elseif ($xml->localName == 'ОргВклМСП') { // $data[$docId]['inn'] = $xml->getAttribute('ИННЮЛ'); // } elseif ($xml->localName == 'СвОКВЭДОсн') { // $data[$docId]['okved'][] = $xml->getAttribute('КодОКВЭД') . ' ' . $xml->getAttribute('НаимОКВЭД'); // } elseif ($xml->localName == 'СвОКВЭДДоп') { // $data[$docId]['okved'][] = $xml->getAttribute('КодОКВЭД') . ' ' . $xml->getAttribute('НаимОКВЭД'); // } elseif ($xml->localName == 'СвОКВЭДДоп') { // $license = 'Лицензия №' . $xml->getAttribute('НомЛиценз') . '. Действует с ' . $xml->getAttribute('ДатаНачЛиценз'); // if ($xml->getAttribute('ДатаКонЛиценз')) { // $license .= ' по ' . $xml->getAttribute('ДатаКонЛиценз'); // } // $license .= '.'; // $data[$docId]['licenses'][] = $license; // } // } // okp($data); // break; } okp(microtime(true) - $time); okp($companiesData); okp(count($companiesData)); okp(microtime(true) - $time); //okp($allXmls); // if (!is_dir($currentDir)) { // mkdir($currentDir); // } // $command = "wget --directory-prefix=$currentDir " . $link; // $res = exec($command); //$helper = new HighloadBlockHelper(12); //$list = $helper->getList(['select' => ['*']])->fetchAll(); //$baseUrl = 'https://www.nalog.ru/opendata/'; ////$allUrls = ''; //$baseDir = $_SERVER['DOCUMENT_ROOT'] . '/upload/fnsdata/'; //foreach ($list as $item) { //// $realUrl = $baseUrl . $item['UF_CODE'] . '/'; //// $allUrls .= "\n" . $item['UF_LINK']; // $currentDir = $baseDir . '/' . $item['UF_CODE']; // if (!is_dir($currentDir)) { // mkdir($currentDir); // } //// $command = "wget --directory-prefix=$currentDir " . $item['UF_LINK']; // $res = exec($command); //} //$helper = new HighloadBlockHelper(12); //$list = $helper->getList(['select' => ['*']])->fetchAll(); //$baseUrl = 'https://www.nalog.ru/opendata/'; ////$allUrls = ''; //$baseDir = $_SERVER['DOCUMENT_ROOT'] . '/upload/fnsdata/'; //foreach ($list as $item) { ////// $realUrl = $baseUrl . $item['UF_CODE'] . '/'; ////// $allUrls .= "\n" . $item['UF_LINK']; // $currentDir = $baseDir . $item['UF_CODE'] . '/'; ////// if (!is_dir($currentDir)) { ////// mkdir($currentDir); ////// } //// $command = "wget --directory-prefix=$currentDir " . $item['UF_LINK']; ////// $res = exec($command); //$allZips = glob($currentDir . '*.zip'); //if (!empty($allZips)) { // $zipFile = $allZips[0]; // $zip = new ZipArchive(); // $res = $zip->open($zipFile); // if ($res === TRUE) { // $zip->extractTo($currentDir); // $zip->close(); // } else { // echo 'error reading archive!'; // } //} //} //file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/upload/fnsdata/urls.txt', $allUrls); //exec('wget --directory-prefix= --input-file=/home/bitrix/ext_www/portal.yacl.site/upload/fnsdata/urls.txt'); ////okp($list); // //$baseUrl = 'https://www.nalog.ru/opendata/'; // //$interestingDataUrls = [ // '7707329152-debtam' => 'Сведения о суммах недоимки и задолженности по пеням и штрафам', // '7707329152-taxoffence' => 'Сведения о налоговых правонарушениях и мерах ответственности за их совершение', // '7707329152-massleaders' => 'Сведения о физических лицах, являющихся руководителями нескольких юридических лиц', ИП! // '7707329152-massfounders' => 'Сведения о физических лицах, являющихся учредителями (участниками) нескольких юридических лиц', ИП! // '7707329152-disqualifiedpersons' => 'Юридические лица, в состав исполнительных органов которых входят дисквалифицированные лица', // '7707329152-registerdisqualified' => 'Реестр дисквалифицированных лиц', // '7707329152-arrearsoftea' => 'О задолженности по налогам и сборам, пеням и налоговым санкциям в бюджетную систему Российской Федерации по основным видам экономической деятельности (Форма 4-НОМ)', // '7707329152-revexp' => 'Сведения о суммах доходов и расходов по данным бухгалтерской (финансовой) отчетности организации за год, предшествующий году размещения таких сведений на сайте ФНС России', //// '7707329152-rsmp' => 'Единый реестр субъектов малого и среднего предпринимательства //]; // ////hQuery::$cache_path = $_SERVER["DOCUMENT_ROOT"] . '/bitrix/cache/hquery'; ////hQuery::$cache_expires = 86400; // //$helper = new HighloadBlockHelper(12); //foreach ($interestingDataUrls as $url => $name) { //// break; // $realUrl = $baseUrl . $url . '/'; //// okp($realUrl); // $html = file_get_contents($realUrl); // $html = substr($html, strpos($html, '<table'), strpos($html, '</table>') + mb_strlen('</table>') - strpos($html, '<table')); //// $translittedHtml = //// $clearHtml = (str_ireplace([ //// "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", //// "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я", //// ], '', $html)); // $translittedHtml = CUtil::translit($html, 'ru', ['max_len' => 9999999, 'safe_chars' => '()"\'=<:/>.,-_', 'replace_space' => ' ', 'replace_other' => '-']); //// okp(htmlspecialchars($html)); //// okp(htmlspecialchars($translittedHtml)); //// return; // $query = hQuery::fromHTML($translittedHtml); //// okp($query); //// return; // try { // $href = ''; // $aList = $query->find('a'); // foreach ($aList as $a) { // if ($a->attr('href') == $a->text()) { // $href = $a->attr('href'); // break; // } // } // $helper->add([ // 'UF_NAME' => $name, // 'UF_CODE' => $url, // 'UF_LINK' => $href, // ]); // //// okp($href); // // //// okp($tableRows->html()); //// okp($tableRows->count()); // } catch (Exception $e) { // okp($e->getMessage()); // } //} //// $count = 0; //// okp($tableRows); //// foreach ($tableRows as $row) { //// //// } //// okp(htmlspecialchars($item->html())); //} //$query = Duzun\hQuery::fromFile(); //$query->find('') /* ?> <form action="" method="get"> <div class="header-search" style="margin: 20px 0;"> <input class="header-search-field" name="inn" placeholder="Введите ИНН интересующей Вас компании" > <button class="header-search-button">Поиск</button> </div> </form> <? $queryInn = '7718703531'; if (mb_strlen($_GET['inn']) == 10 || mb_strlen($_GET['inn']) == 12) { $queryInn = intval($_GET['inn']); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/party'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "{ \"query\": \"$queryInn\" }"); $headers = array(); $headers[] = 'Content-Type: application/json'; $headers[] = 'Accept: application/json'; $headers[] = 'Authorization: Token 02170bc260f6f72349c7f628a773685b19ff6ed6'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); $companyData = json_decode($result, true); okp($companyData); $currentDir = $_SERVER['DOCUMENT_ROOT'] . '/local/fns'; $dataDir = $currentDir . '/data/1/'; $command = "grep -lr $queryInn $dataDir"; $res = exec($command); if ($res) { $xml = new XMLReader(); $xml->open($res); $data = []; $chosenId = ''; while($xml->read()) { // okp($xml->nodeType); // okp($xml->attributeCount); // okp($xml->localName); if ($xml->localName == 'Документ') { $docId = $xml->getAttribute('ИдДок'); } elseif ($xml->localName == 'СведНП') { $currentInn = $xml->getAttribute('ИННЮЛ'); if ($currentInn == $queryInn) { $chosenId = $docId; } $data[$docId]['org'] = [ 'name' => $xml->getAttribute('НаимОрг'), 'inn' => $xml->getAttribute('ИННЮЛ'), ]; } elseif ($xml->localName == 'СведНедоим') { $data[$docId]['arrears'][] = [ 'name' => $xml->getAttribute('НаимНалог'), 'summ' => $xml->getAttribute('ОбщСумНедоим'), ]; } } okp($data[$chosenId]); } //okp($res); //$zip = new ZipArchive(); //$res = $zip->open($currentDir . '/data-20200214-structure-20180801.zip'); //if ($res === TRUE) { // if (!is_dir($currentDir . '/data/1/')) { // mkdir($currentDir . '/data/1/'); // } // $zip->extractTo($currentDir . '/data/1/'); // $zip->close(); // echo 'success!'; //} else { // echo 'error reading archive!'; //} // */