function importaNFe($xml) { $doc = new DOMDocument(); $doc->preservWhiteSpace = FALSE; //elimina espaços em branco $doc->formatOutput = FALSE; $doc->loadXML($xml, LIBXML_NOBLANKS | LIBXML_NOEMPTYTAG); $node = $doc->getElementsByTagName('infNFe')->item(0); //obtem a versão do layout da NFe $dados['versao'] = trim($node->getAttribute("versao")); $dados['chave'] = substr(trim($node->getAttribute("Id")), 3); // Reconhecimento dos campos do XML $dados['dataEmissao'] = tagValue(&$doc, "dEmi"); $dados['dataMovimento'] = tagValue(&$doc, "dSaiEnt") . " " . tagValue(&$doc, "hSaiEnt"); $dados['codigonf'] = tagValue(&$doc, "cNF"); $dados['natureza'] = tagValue(&$doc, "natOp"); $dados['numero'] = tagValue(&$doc, "nNF"); $dados['modelo'] = tagValue(&$doc, "mod"); $dados['serie'] = tagValue(&$doc, "serie"); // Emitente: $emi = $doc->getElementsByTagName('emit')->item(0); $c1 = tagValue(&$emi, "CNPJ"); $c2 = substr($c1, 0, 2) . "." . substr($c1, 2, 3) . "." . substr($c1, 5, 3) . "/" . substr($c1, 8, 4) . "-" . substr($c1, 12, 2); $dados['emitenteCnpj'] = $c1; $dados['emitenteCnpjFormatado'] = $c2; $dados['emitenteRazaoSocial'] = tagValue(&$emi, "xNome"); $dados['emitenteNome'] = tagValue(&$emi, "xFant"); $dados['emitenteInscricaoEstadual'] = tagValue(&$emi, "IE"); $dados['emitenteInscricaoMunicipal'] = tagValue(&$emi, "IM"); $dados['emitenteCnae'] = tagValue(&$emi, "CNAE"); $dados['emitenteEndereco'] = tagValue(&$emi, "xLgr"); $dados['emitenteNumero'] = tagValue(&$emi, "nro"); $dados['emitenteBairro'] = tagValue(&$emi, "xBairro"); $dados['emitenteMunicipio'] = tagValue(&$emi, "xMun"); $dados['emitenteMunicipioIbge'] = tagValue(&$emi, "cMun"); $dados['emitenteCep'] = tagValue(&$emi, "CEP"); $dados['emitenteUF'] = tagValue(&$emi, "UF"); $dados['emitentePaisIbge'] = tagValue(&$emi, "cPais"); $dados['emitentePais'] = tagValue(&$emi, "xPais"); $dados['emitenteTelefone'] = tagValue(&$emi, "fone"); // Destinatário: $dst = $doc->getElementsByTagName('dest')->item(0); $c1 = tagValue(&$dst, "CNPJ"); $c2 = substr($c1, 0, 2) . "." . substr($c1, 2, 3) . "." . substr($c1, 5, 3) . "/" . substr($c1, 8, 4) . "-" . substr($c1, 12, 2); $dados['destinatarioCnpj'] = $c1; $dados['destinatarioCnpjFormatado'] = $c2; $dados['destinatarioRazaoSocial'] = tagValue(&$dst, "xNome"); $dados['destinatarioNome'] = tagValue(&$dst, "xFant"); $dados['destinatarioInscricaoEstadual'] = tagValue(&$dst, "IE"); $dados['destinatarioInscricaoMunicipal'] = tagValue(&$dst, "IM"); $dados['destinatarioEndereco'] = tagValue(&$dst, "xLgr"); $dados['destinatarioNumero'] = tagValue(&$dst, "nro"); $dados['destinatarioBairro'] = tagValue(&$dst, "xBairro"); $dados['destinatarioMunicipio'] = tagValue(&$dst, "xMun"); $dados['destinatarioMunicipioIbge'] = tagValue(&$dst, "cMun"); $dados['destinatarioCep'] = tagValue(&$dst, "CEP"); $dados['destinatarioUF'] = tagValue(&$dst, "UF"); $dados['destinatarioPaisIbge'] = tagValue(&$dst, "cPais"); $dados['destinatarioPais'] = tagValue(&$dst, "xPais"); $dados['destinatarioTelefone'] = tagValue(&$dst, "fone"); $dados['pesoLiquido'] = floatval(tagValue(&$doc, "pesoL")); $dados['pesoBruto'] = floatval(tagValue(&$doc, "pesoB")); $dados['dataRecibo'] = tagValue(&$doc, "dhRecbto"); $dados['protocolo'] = tagValue(&$doc, "nProt"); // Totais da NF-e. Para fazer a alimentação no database referente aos calculos e paineis: $total = $doc->getElementsByTagName('ICMSTot')->item(0); $dados['basecalculo'] = tagValue(&$total, "vBC"); $dados['valoricms'] = tagValue(&$total, "vICMS"); $dados['valorbcst'] = tagValue(&$total, "vBCST"); $dados['valorst'] = tagValue(&$total, "vST"); $dados['totalprodutos'] = tagValue(&$total, "vProd"); $dados['valorfrete'] = tagValue(&$total, "vFrete"); $dados['valorseguro'] = tagValue(&$total, "vSeg"); $dados['valordesconto'] = tagValue(&$total, "vDesc"); $dados['valorii'] = tagValue(&$total, "vII"); $dados['valoripi'] = tagValue(&$total, "vIPI"); $dados['valorpis'] = tagValue(&$total, "vPIS"); $dados['valorcofins'] = tagValue(&$total, "vCOFINS"); $dados['valoroutro'] = tagValue(&$total, "vOutro"); $dados['valortotalnf'] = tagValue(&$total, "vNF"); // Tag det dos itens unitários: $det = $doc->getElementsByTagName('det'); $itens = ""; for ($i = 0; $i < $det->length; $i++) { $item = $det->item($i); $s = ""; $s['codigo'] = tagValue(&$item, "cProd"); $s['ean'] = tagValue(&$item, "cEAN"); $s['nome'] = tagValue(&$item, "xProd"); $s['ncm'] = tagValue(&$item, "NCM"); $s['cfop'] = tagValue(&$item, "CFOP"); $s['unidade'] = tagValue(&$item, "uCom"); $s['quantidade'] = tagValue(&$item, "qCom"); $s['valor'] = tagValue(&$item, "vUnCom"); $s['valorTotal'] = tagValue(&$item, "vProd"); $s['valoricms'] = tagValue(&$item, "vICMS"); $s['valoripi'] = tagValue(&$item, "vIPI"); $itens[] = $s; } $dados['itens'] = $itens; return $dados; }
function importaNFe($xml) { $doc = new DOMDocument(); $doc->preservWhiteSpace = FALSE; //elimina espaços em branco $doc->formatOutput = FALSE; $doc->loadXML($xml, LIBXML_NOBLANKS | LIBXML_NOEMPTYTAG); $node = $doc->getElementsByTagName('infNFe')->item(0); //obtem a versão do layout da NFe $dados['versao'] = trim($node->getAttribute("versao")); $dados['chave'] = substr(trim($node->getAttribute("Id")), 3); // Reconhecimento dos campos do XML $dados['dataEmissao'] = tagValue(&$doc, "dEmi"); $dados['dataMovimento'] = tagValue(&$doc, "dSaiEnt") . " " . tagValue(&$doc, "hSaiEnt"); $dados['numero'] = tagValue(&$doc, "nNF"); $dados['modelo'] = tagValue(&$doc, "mod"); $dados['serie'] = tagValue(&$doc, "serie"); $emi = $doc->getElementsByTagName('emit')->item(0); $c1 = tagValue(&$emi, "CNPJ"); $c2 = substr($c1, 0, 2) . "." . substr($c1, 2, 3) . "." . substr($c1, 5, 3) . "/" . substr($c1, 8, 4) . "-" . substr($c1, 12, 2); $dados['emitenteCnpj'] = $c1; $dados['emitenteCnpjFormatado'] = $c2; $dados['emitenteRazaoSocial'] = tagValue(&$emi, "xNome"); $dados['emitenteNome'] = tagValue(&$emi, "xFant"); $dados['emitenteInscricaoEstadual'] = tagValue(&$emi, "IE"); $dados['emitenteInscricaoMunicipal'] = tagValue(&$emi, "IM"); $dados['emitenteCnae'] = tagValue(&$emi, "CNAE"); $dados['emitenteEndereco'] = tagValue(&$emi, "xLgr"); $dados['emitenteNumero'] = tagValue(&$emi, "nro"); $dados['emitenteBairro'] = tagValue(&$emi, "xBairro"); $dados['emitenteMunicipio'] = tagValue(&$emi, "xMun"); $dados['emitenteMunicipioIbge'] = tagValue(&$emi, "cMun"); $dados['emitenteCep'] = tagValue(&$emi, "CEP"); $dados['emitenteUF'] = tagValue(&$emi, "UF"); $dados['emitentePaisIbge'] = tagValue(&$emi, "cPais"); $dados['emitentePais'] = tagValue(&$emi, "xPais"); $dados['emitenteTelefone'] = tagValue(&$emi, "fone"); $dst = $doc->getElementsByTagName('dest')->item(0); $c1 = tagValue(&$dst, "CNPJ"); $c2 = substr($c1, 0, 2) . "." . substr($c1, 2, 3) . "." . substr($c1, 5, 3) . "/" . substr($c1, 8, 4) . "-" . substr($c1, 12, 2); $dados['destinatarioCnpj'] = $c1; $dados['destinatarioCnpjFormatado'] = $c2; $dados['destinatarioRazaoSocial'] = tagValue(&$dst, "xNome"); $dados['destinatarioNome'] = tagValue(&$dst, "xFant"); $dados['destinatarioInscricaoEstadual'] = tagValue(&$dst, "IE"); $dados['destinatarioInscricaoMunicipal'] = tagValue(&$dst, "IM"); $dados['destinatarioEndereco'] = tagValue(&$dst, "xLgr"); $dados['destinatarioNumero'] = tagValue(&$dst, "nro"); $dados['destinatarioBairro'] = tagValue(&$dst, "xBairro"); $dados['destinatarioMunicipio'] = tagValue(&$dst, "xMun"); $dados['destinatarioMunicipioIbge'] = tagValue(&$dst, "cMun"); $dados['destinatarioCep'] = tagValue(&$dst, "CEP"); $dados['destinatarioUF'] = tagValue(&$dst, "UF"); $dados['destinatarioPaisIbge'] = tagValue(&$dst, "cPais"); $dados['destinatarioPais'] = tagValue(&$dst, "xPais"); $dados['destinatarioTelefone'] = tagValue(&$dst, "fone"); $dados['pesoLiquido'] = floatval(tagValue(&$doc, "pesoL")); $dados['pesoBruto'] = floatval(tagValue(&$doc, "pesoB")); $dados['dataRecibo'] = tagValue(&$doc, "dhRecbto"); $dados['protocolo'] = tagValue(&$doc, "nProt"); $det = $doc->getElementsByTagName('det'); $itens = ""; for ($i = 0; $i < $det->length; $i++) { $item = $det->item($i); $s = ""; $s['codigo'] = tagValue(&$item, "cProd"); $s['ean'] = tagValue(&$item, "cEAN"); $s['nome'] = tagValue(&$item, "xProd"); $s['ncm'] = tagValue(&$item, "NCM"); $s['cfop'] = tagValue(&$item, "CFOP"); $s['unidade'] = tagValue(&$item, "uCom"); $s['quantidade'] = tagValue(&$item, "qCom"); $s['valor'] = tagValue(&$item, "vUnCom"); $s['valorTotal'] = tagValue(&$item, "vProd"); $s['icms'] = 0; $s['ipi'] = 0; $itens[] = $s; } $dados['itens'] = $itens; return $dados; }