/** * verifica * Verifica o status da SEFAZ com o webservice e retorna tags html com o resultado * @param string $config json do arquivo de configuração * @return string */ public static function verifica($config = '') { $aRetorno = array(); if (empty($config)) { return ''; } self::$config = $config; if (is_file(APP_ROOT . '/base/status.json')) { $aRetorno = (array) json_decode(FilesFolders::readFile(APP_ROOT . '/base/status.json')); } $tstmp = DateTime::convertSefazTimeToTimestamp($aRetorno['dhRecbto']); $tsnow = time(); $dif = $tsnow - $tstmp; //caso tenha passado mais de uma hora desde a ultima verificação if ($dif > 3600) { self::$nfe = new ToolsNFe($config); self::$certTS = self::$nfe->certExpireTimestamp; self::$nfe->sefazStatus('', '', $aRetorno); $retJson = json_encode($aRetorno); FilesFolders::saveFile(APP_ROOT . '/base', 'status.json', $retJson); } $tstmp = DateTime::convertSefazTimeToTimestamp($aRetorno['dhRecbto']); $dhora = date('d/m/Y H:i:s', $tstmp); $htmlStatus = "<p class=\"smallred\">OFF-LINE</p>\n<p class=\"smallred\">{$dhora}</p>"; if ($aRetorno['cStat'] == '107') { $htmlStatus = "<p class=\"smallgreen\">SEFAZ On-Line</p>\n<p class=\"smallgreen\">{$dhora}</p>"; } return $htmlStatus; }
/** * zGravaFile * Grava os dados no diretorio das NFe * @param string $tpAmb ambiente * @param string $filename nome do arquivo * @param string $data dados a serem salvos * @param string $subFolder * @param string $anomes * @throws Exception\RuntimeException */ protected function zGravaFile($tipo = '', $tpAmb = '2', $filename = '', $data = '', $subFolder = 'temporarias', $anomes = '') { if ($anomes == '') { $anomes = date('Ym'); } $path = ''; if ($tipo == 'nfe') { $path = $this->aConfig['pathNFeFiles']; } elseif ($tipo == 'cte') { $path = $this->aConfig['pathCTeFiles']; } elseif ($tipo == 'mdfe') { $path = $this->aConfig['pathMDFeFiles']; } $pathTemp = Files\FilesFolders::getFilePath($tpAmb, $path, $subFolder) . DIRECTORY_SEPARATOR . $anomes; if (!Files\FilesFolders::saveFile($pathTemp, $filename, $data)) { $msg = 'Falha na gravação no diretório. ' . $pathTemp; throw new Exception\RuntimeException($msg); } }
/** * Grava as mensagens em disco * * @param string $data conteudo a ser gravado * @param string $filename * @param int $tpAmb * @param string $folder * @param string $subFolder * @throws RuntimeException */ protected function gravaFile($data, $filename, $tpAmb = '2', $folder = '', $subFolder = '') { $anomes = date('Ym'); $pathTemp = $folder . Files\FilesFolders::getAmbiente($tpAmb) . DIRECTORY_SEPARATOR . $subFolder . DIRECTORY_SEPARATOR . $anomes; if (!Files\FilesFolders::saveFile($pathTemp, $filename, $data)) { $msg = 'Falha na gravação no diretório. ' . $pathTemp; throw new RuntimeException($msg); } }
/** * gravaXML * grava o xml do documento fiscal na estrutura de pastas * em path indicar por exemplo /var/www/nfe ou /dados/cte ou /arquivo/mdfe * ou seja as pastas principais onde guardar os arquivos * Esse método itá colocar na subpastas [producao] ou [homologacao] * na subpasta [entradas] e na subpasta [ANOMES] * * @param string $path * @return boolean */ public function gravaXML($path = '') { //pode ser NFe, CTe, MDFe e pode ser homologação ou produção //essas informações estão dentro do xml if ($path == '') { return false; } if (!is_dir($path)) { return false; } if (substr($path, -1) == DIRECTORY_SEPARATOR) { $path = substr($path, 0, strlen($path) - 1); } $aResp = array(); $aList = array('NFe' => 'nfe', 'CTe' => 'cte', 'MDFe' => 'mdfe'); Identify::setListSchemesId($aList); $schem = Identify::identificacao($this->xml, $aResp); if ($aResp['chave'] == '') { return false; } $filename = $aResp['chave'] . '-' . $schem . '.xml'; $dirBase = 'homologacao'; if ($aResp['tpAmb'] == '1') { $dirBase = 'producao'; } $aDh = explode('-', $aResp['dhEmi']); $anomes = date('Ym'); if (count($aDh) > 1) { $anomes = $aDh[0] . $aDh[1]; } $completePath = $path . DIRECTORY_SEPARATOR . $dirBase . DIRECTORY_SEPARATOR . 'entradas' . DIRECTORY_SEPARATOR . $anomes; $content = $this->xml; if (!FilesFolders::saveFile($completePath, $filename, $content)) { return false; } return true; }
/** * zSalva * Recebe um array com a chave, data e o xml das NFe destinadas * e grava na pasta das recebidas/<anomes> * * @param array $aDocs * @param boolean $bIncludeAnomes */ protected function zSalva($aDocs = array(), $dir = 'recebidas', $bIncludeAnomes = false) { if (empty($aDocs)) { return; } $path = $this->pathNFe . DIRECTORY_SEPARATOR . $this->ambiente . DIRECTORY_SEPARATOR . $dir; foreach ($aDocs as $doc) { $anomes = $doc['anomes']; $chave = $doc['chave']; $xml = $doc['xml']; $name = $doc['tipo']; $pathnfe = $path; if ($bIncludeAnomes) { $pathnfe = $path . DIRECTORY_SEPARATOR . $anomes; } $filename = "{$chave}{$name}"; //echo "Salvando $filename \n"; FilesFolders::saveFile($pathnfe, $filename, $xml); } }
$mailProtocol = filter_input(INPUT_GET, 'mailProtocol', FILTER_SANITIZE_STRING); $mailPort = filter_input(INPUT_GET, 'mailPort', FILTER_SANITIZE_NUMBER_INT); $mailFromMail = filter_input(INPUT_GET, 'mailFromMail', FILTER_VALIDATE_EMAIL); $mailFromName = filter_input(INPUT_GET, 'mailFromName', FILTER_SANITIZE_STRING); $mailReplayToMail = filter_input(INPUT_GET, 'mailReplayToMail', FILTER_VALIDATE_EMAIL); $mailReplayToName = filter_input(INPUT_GET, 'mailReplayToName', FILTER_SANITIZE_STRING); $mailImapHost = filter_input(INPUT_GET, 'mailImapHost', FILTER_SANITIZE_URL); $mailImapPort = filter_input(INPUT_GET, 'mailImapPort', FILTER_SANITIZE_NUMBER_INT); $mailImapSecurity = filter_input(INPUT_GET, 'mailImapSecurity', FILTER_SANITIZE_STRING); $mailImapNocerts = filter_input(INPUT_GET, 'mailImapNocerts'); $mailImapBox = filter_input(INPUT_GET, 'mailImapBox', FILTER_SANITIZE_STRING); $proxyIp = filter_input(INPUT_GET, 'proxyIp', FILTER_SANITIZE_STRING); $proxyPort = filter_input(INPUT_GET, 'proxyPort', FILTER_SANITIZE_NUMBER_INT); $proxyUser = filter_input(INPUT_GET, 'proxyUser', FILTER_SANITIZE_STRING); $proxyPass = filter_input(INPUT_GET, 'proxyPass', FILTER_SANITIZE_STRING); $aDocFormat = array('format' => $format, 'paper' => $paper, 'southpaw' => $southpaw, 'pathLogoFile' => $pathLogoFile, 'logoPosition' => $logoPosition, 'font' => $font, 'printer' => $printer); $aMailConf = array('mailAuth' => $mailAuth, 'mailFrom' => $mailFrom, 'mailSmtp' => $mailSmtp, 'mailUser' => $mailUser, 'mailPass' => $mailPass, 'mailProtocol' => $mailProtocol, 'mailPort' => $mailPort, 'mailFromMail' => $mailFromMail, 'mailFromName' => $mailFromName, 'mailReplayToMail' => $mailReplayToMail, 'mailReplayToName' => $mailReplayToName, 'mailImapHost' => $mailImapHost, 'mailImapPort' => $mailImapPort, 'mailImapSecurity' => $mailImapSecurity, 'mailImapNocerts' => $mailImapNocerts, 'mailImapBox' => $mailImapBox); $aProxyConf = array('proxyIp' => $proxyIp, 'proxyPort' => $proxyPort, 'proxyUser' => $proxyUser, 'proxyPass' => $proxyPass); $aConfig = array('atualizacao' => date('Y-m-d h:i:s'), 'tpAmb' => $tpAmb, 'pathXmlUrlFileNFe' => $pathXmlUrlFileNFe, 'pathXmlUrlFileCTe' => $pathXmlUrlFileCTe, 'pathXmlUrlFileMDFe' => $pathXmlUrlFileMDFe, 'pathXmlUrlFileCLe' => $pathXmlUrlFileCLe, 'pathXmlUrlFileNFSe' => $pathXmlUrlFileNFSe, 'pathNFeFiles' => $pathNFeFiles, 'pathCTeFiles' => $pathCTeFiles, 'pathMDFeFiles' => $pathMDFeFiles, 'pathCLeFiles' => $pathCLeFiles, 'pathNFSeFiles' => $pathNFSeFiles, 'pathCertsFiles' => $pathCertsFiles, 'siteUrl' => $siteUrl, 'schemesNFe' => $schemesNFe, 'schemesCTe' => $schemesCTe, 'schemesMDFe' => $schemesMDFe, 'schemesCLe' => $schemesCLe, 'schemesNFSe' => $schemesNFSe, 'razaosocial' => $razaosocial, 'siglaUF' => $siglaUF, 'cnpj' => $cnpj, 'tokenIBPT' => $tokenIBPT, 'tokenNFCe' => $tokenNFCe, 'tokenNFCeId' => $tokenNFCeId, 'certPfxName' => $certPfxName, 'certPassword' => $certPassword, 'certPhrase' => $certPhrase, 'aDocFormat' => $aDocFormat, 'aMailConf' => $aMailConf, 'aProxyConf' => $aProxyConf); $content = json_encode($aConfig); $msg = 'SUCESSO !! arquivo de configuração confg.json SALVO.'; if (!($resdefault = FilesFolders::saveFile($defaultconfigfolder, 'config.json', $content))) { $msg = "Falha ao salvar o config.json na pasta {$defaultconfigfolder} \n"; } if ($configfolder != $defaultconfigfolder) { if (!($res = FilesFolders::saveFile($configfolder, 'config.json', $content))) { $msg = "Falha ao salvar o config.json na pasta {$configfolder} \n"; } } $aResp = array('status' => $resdefault && $res, 'msg' => $msg); print json_encode($aResp);