Olá a todos… ainda não terminei o código… mais vou disponibilizar para quem estiver iniciando também…
já da para ter uma noção…
A idéia desse é pegar os xml (NFe) de uma pasta e importar para o banco de dados…
Quem puder ajudar ou se alguém tiver alguma idéia posta ai…
Conforme eu vou evoluindo aqui eu vou postando…
======================================================================
// pega diretorio de origem e destino
$check_sql = “SELECT diretorio_importacao_origem, diretorio_importacao_destino”
. " FROM empresa"
. " WHERE id_empresa = ‘" . {empresa} . "’";
sc_lookup(rs, $check_sql);
if (isset({rs[0][0]})) // Row found
{
$origem = {rs[0][0]};
$destino = {rs[0][1]};
$dir = opendir($origem);
while ($file = readdir($dir))
{
$arq = $origem . $file;
$extensao = substr($arq,-3);
//Pega somente os XML
if ($extensao == 'xml' || $extensao == 'XML')
{
//inicio xml
if ( is_file($arq) ){
$xml = file_get_contents($arq);
$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
$versao = trim($node->getAttribute("versao"));
//obtem chave de acesso do xml
$chave = substr(trim($node->getAttribute("Id")),3);
//Data da Emissão
$dataEmissao = tagValue(&$doc,"dEmi");
//Data/Hora do Movimento
$dataMovimento = tagValue(&$doc,"dSaiEnt");
//$horaMovimento = tagValue(&$doc,"hSaiEnt");
//numero nota
$numero = tagValue(&$doc,"nNF");
//modelo da nota - (55 nfe)
$modelo = tagValue(&$doc,"mod");
//serie da nota
$serie = tagValue(&$doc,"serie");
// emitente
$emi = $doc->getElementsByTagName('emit')->item(0);
//nome do emitente
$emitenteRazaoSocial = tagValue(&$emi,"xNome");
sc_alert($emitenteRazaoSocial);
//fantasia do emitente
$emitenteFantasia = tagValue(&$emi,"xFant");
//CNPJ do emitente, Sem formatação
$emitenteCnpj = tagValue(&$emi,"CNPJ");
// pega o id da do emitente no banco de dados
$check_sql = "SELECT id_empresa"
. " FROM empresa"
. " WHERE cpf_cnpj = '" . $emitenteCnpj . "'";
sc_lookup(dados_empresa, $check_sql);
$id_emp = {dados_empresa[0][0]};
//CNPJ do emitente, Formatado
$emitenteCnpjFormatado = substr($emitenteCnpj,0,2).".".substr($emitenteCnpj,2,3).
".".substr($emitenteCnpj,5,3)."/".substr($emitenteCnpj,8,4)."-".substr($emitenteCnpj,12,2);
//Emitente Inscrição Estadual
$emitenteInscricaoEstadual = tagValue(&$emi,"IE");
//Emitente Insc. Municipal
// $emitenteInscricaoMunicipal = tagValue(&$emi,"IM");
//Emitente CNAE
// $emitenteCnae = tagValue(&$emi,"CNAE");
//Endereço do Emitente
$emitenteEndereco = tagValue(&$emi,"xLgr");
$emitenteNumero = tagValue(&$emi,"nro");
$emitenteBairro = tagValue(&$emi,"xBairro");
$emitenteMunicipio = tagValue(&$emi,"xMun");
$emitenteMunicipioIbge = tagValue(&$emi,"cMun");
$emitenteCep = tagValue(&$emi,"CEP");
$emitenteUF = tagValue(&$emi,"UF");
$emitentePaisIbge = tagValue(&$emi,"cPais");
$emitentePais = tagValue(&$emi,"xPais");
$emitenteTelefone = tagValue(&$emi,"fone");
//Dados do Destinatario
$dst = $doc->getElementsByTagName('dest')->item(0);
//CNPJ Destinatario sem formatação
$destinatarioCnpj = tagValue(&$dst,"CNPJ");
//CNPJ Destinatario formatado
$destinatarioCnpjFormatado = substr($destinatarioCnpj,0,2).
".".substr($destinatarioCnpj,2,3).".".substr($destinatarioCnpj,5,3).
"/".substr($destinatarioCnpj,8,4)."-".substr($destinatarioCnpj,12,2);
//Rasão Social Destinatario
$destinatarioRazaoSocial = tagValue(&$dst,"xNome");
//Fantasia Destinatario
// $destinatarioNome = tagValue(&$dst,"xFant");
$destinatarioInscricaoEstadual = tagValue(&$dst,"IE");
// $destinatarioInscricaoMunicipal = tagValue(&$dst,"IM");
$destinatarioEndereco = tagValue(&$dst,"xLgr");
$destinatarioNumero = tagValue(&$dst,"nro");
$destinatarioBairro = tagValue(&$dst,"xBairro");
$destinatarioMunicipio = tagValue(&$dst,"xMun");
$destinatarioMunicipioIbge = tagValue(&$dst,"cMun");
$destinatarioCep = tagValue(&$dst,"CEP");
$destinatarioUF = tagValue(&$dst,"UF");
$destinatarioPaisIbge = tagValue(&$dst,"cPais");
$destinatarioPais = tagValue(&$dst,"xPais");
$destinatarioTelefone = tagValue(&$dst,"fone");
// $pesoLiquido = floatval(tagValue(&$doc,"pesoL"));
// $pesoBruto = floatval(tagValue(&$doc,"pesoB"));
$dataRecibo = tagValue(&$doc,"dhRecbto");
$protocolo = tagValue(&$doc,"nProt");
//pega ultimo id gerado
sc_lookup(movmax,"select max(id_movimentacao_cab) from movimentacao_cab ");
$movid = {movmax[0][0]} + 1;
// SQL statement parameters
$insert_table = 'movimentacao_cab'; // Table name
$insert_fields = array( // Field list, add as many as needed
'id_empresa' => "'$id_emp'",
'serie' => "'$serie'",
'modelo' => "'$modelo'",
'numero_nota' => "'$numero'",
'id_movimentacao_cab' => "'$movid'",
'data_emissao' => "'$dataEmissao'",
'nome_xml' => "'$file'",
);
// Insert record
$insert_sql = 'INSERT INTO ' . $insert_table
. ' (' . implode(', ', array_keys($insert_fields)) . ')'
. ' VALUES (' . implode(', ', array_values($insert_fields)) . ')';
sc_exec_sql($insert_sql);
//importando produtos
$det = $doc->getElementsByTagName('det');
for ($i = 0; $i < $det->length; $i++) {
$item = $det->item($i);
$codigo = tagValue(&$item,"cProd");
$ean = tagValue(&$item,"cEAN");
$nome = tagValue(&$item,"xProd");
// $ncm = tagValue(&$item,"NCM");
$cfop = tagValue(&$item,"CFOP");
$unidade = tagValue(&$item,"uCom");
$quantidade = tagValue(&$item,"qCom");
$valor = tagValue(&$item,"vUnCom");
$valorTotal = tagValue(&$item,"vProd");
// $icms = 0;
// $ipi = 0;
}
}
function tagValue($node,$tag){
return $node->getElementsByTagName("$tag")->item(0)->nodeValue;
}
//fim xml
//inicio move arquivo
$mes = substr($dataEmissao, 5, 2);
$ano = substr($dataEmissao, 0, 4);
$competencia = $mes . $ano;
$origem_arquivo = $origem . $file;
$destino_arquivo = $destino . $competencia . ‘/’. $file;
$diretorio_destino = $destino . $competencia;
if(!file_exists($diretorio_destino)){
mkdir($destino . $competencia, 0777, true);
}
if (!copy($origem_arquivo , $destino_arquivo)) {
sc_error_message(“erro copiando arquivo” . $origem_arquivo);
}else{
if (!unlink($origem_arquivo))
{
sc_error_message("Erro ao deletar " . $origem);
}
}
//fim move arquivo
}
}
closedir($dir);
}