Ir para conteúdo
  • Cadastre-se

r0drigo

Membros
  • Total de ítens

    30
  • Registro em

  • Última visita

Tudo que r0drigo postou

  1. r0drigo

    NFE to SQL

    Como vc resolveu os niveis, tag det, impostos, etc? Desenvolvi tudo em delphi... Não sei se ajuda, mas de qualquer forma segue abaixo: var NodeInfNfe,NodeIde,NodEmi,NodeEnderEmit,NodeCobr,NodeDup: IXMLNode; vXMLDoc: TXMLDocument; sIDForn: String; begin //-- abre arquivo xml FComercio.OpenDialog1.DefaultExt := 'xml'; FComercio.OpenDialog1.Filter := 'Documentos XML (*.xml)|*.xml'; FComercio.OpenDialog1.InitialDir := '%USERPROFILE%\Desktop\'; FComercio.OpenDialog1.Execute; if empty( FComercio.OpenDialog1.FileName ) then Abort; try //-- cria componente vXMLDoc := TXMLDocument.Create(Self); //-- atribui arquivo ao componente vXMLDoc.LoadFromFile(FComercio.OpenDialog1.FileName); //-- começa a ler o arquivo xml NodeInfNfe := vXMLDoc.DocumentElement.childNodes.First.ChildNodes.FindNode('infNFe'); //-- pega valores da ide da nfe NodeIde := NodeInfNfe.ChildNodes.FindNode('ide'); NodeIde.ChildNodes.First; //-- pega dados do emitente NodEmi := NodeInfNfe.ChildNodes.FindNode('emit'); NodEmi.ChildNodes.First; //-- pega endereco emitente NodeEnderEmit := NodEmi.ChildNodes.FindNode('enderEmit'); NodeEnderEmit.ChildNodes.First; if sn('Confirma inclusão da NF-e no Contas a Pagar?') = 'N' then Abort; //-- pega valores de cobrança NodeCobr := NodeInfNfe.ChildNodes.FindNode('cobr'); NodeCobr.ChildNodes.First; //-- pega duplicata NodeDup := NodeCobr.ChildNodes['dup']; NodeDup.ChildNodes.First; //-- consulta o fornecedor with QConsForn do begin Close; SQL.Clear; SQL.Add(' SELECT idfornecedor,nome,cgc '); SQL.Add(' FROM fornecedores '); SQL.Add(' WHERE cgc = '+aspas(colocacgccpf(NodEmi.ChildNodes['CNPJ'].Text))); Open; end; sIDForn := QConsFornIDFornecedor.AsString; if empty( QConsFornCGC.AsString ) then begin //-- inclui fornecedor Alert('Atenção... Fornecedor não Cadastrado!','!'); if sn('Cadastrar Fornecedor?') = 'N' then Abort; { implementado nesse caso em 25.07.2012 } AbreParametros; //-- salva número do fornecedor em parametros dm.TBParametros.Edit; dm.TBParametrosCodFornecedor.AsInteger := ( dm.TBParametrosCodFornecedor.AsInteger + 1 ); dm.TBParametros.Post; //-- busca estado with CQUF do begin Close; SQL.Clear; SQL.Add(' SELECT iduf,sigla '); SQL.Add(' FROM estados '); SQL.Add(' WHERE sigla = '+QuotedStr(NodeEnderEmit.ChildNodes['UF'].Text)); Open; end; //-- insere dados coletados do xml with dm.qpadrao do begin Close; SQL.Clear; SQL.Add(' INSERT INTO fornecedores (idfornecedor,tipofornecedor, '); SQL.Add(' nome,endereco,cep,cidade,cgc,ie,telefone,uf,datainicial, '); SQL.Add(' bairro,nomefantasia,codmunnfe,numero) '); SQL.Add(' VALUES ('+aspas(Colzers(dm.TBParametrosCodFornecedor.AsString,5))); SQL.Add(' ,'+aspas('1')+', '+aspas(UPPERCASE(onlycharscomespaco(semacento(NodEmi.ChildNodes['xNome'].Text))))+', '); SQL.Add(' '+aspas(UPPERCASE(NodeEnderEmit.ChildNodes['xLgr'].Text))+', '); SQL.Add(' '+aspas(NodeEnderEmit.ChildNodes['CEP'].Text)+', '); SQL.Add(' '+aspas(UPPERCASE(NodeEnderEmit.ChildNodes['xMun'].Text))+', '); SQL.Add(' '+aspas(colocacgccpf(NodEmi.ChildNodes['CNPJ'].Text))+', '); SQL.Add(' '+aspas(NodEmi.ChildNodes['IE'].Text)+', '); SQL.Add(' '+aspas(NodeEnderEmit.ChildNodes['fone'].Text)+', '); SQL.Add(' '+aspas(CQUFiduf.AsString)+', '); SQL.Add(' CURRENT_DATE, '); SQL.Add(' '+aspas(UPPERCASE(NodeEnderEmit.ChildNodes['xBairro'].Text))+', '); SQL.Add(' '+aspas(UPPERCASE(onlycharscomespaco(semacento(NodEmi.ChildNodes['xFant'].Text))))+', '); SQL.Add(' '+aspas(NodeEnderEmit.ChildNodes['cMun'].Text)+', '); SQL.Add(' '+aspas(NodeEnderEmit.ChildNodes['nro'].Text)+' ) '); ExecSQL; ApplyUpdates; end; { abre cadastro de fornecedores } FCadFornecedores := (TestaForm(TFCadFornecedores,Self) as TFCadFornecedores); FComercio.FechaCad := True; //-- tratar erro na atualização das querys DSContasPagar.Enabled := False; //-- edita FCadFornecedores.BitBtn2Click(Sender); //-- trava a procedure até cadastrar o fornecedor while ( FComercio.FechaCad = True ) do begin Application.ProcessMessages; end; end; //-- consulta o fornecedor with QConsForn do begin Close; SQL.Clear; SQL.Add(' SELECT idfornecedor,nome,cgc '); SQL.Add(' FROM fornecedores '); SQL.Add(' WHERE cgc = '+aspas(colocacgccpf(NodEmi.ChildNodes['CNPJ'].Text))); Open; end; sIDForn := QConsFornIDFornecedor.AsString; //-- loop p/ pegar duplicatas repeat //-- começa inclusão QContasPagar.Append; QContasPagarNumeroDocumento.Value := NodeDup.ChildNodes['nDup'].Text; QContasPagarTipo.Value := '1'; QContasPagarNotaFiscal.Value := NodeIde.ChildNodes['nNF'].Text; QContasPagarFornecedor.Value := sIDForn; QContasPagarDocumentoOriginal.Value := NodeDup.ChildNodes['nDup'].Text; QContasPagarEmissao.AsString := AcertaData(NodeIde.ChildNodes['dEmi'].Text); if empty(bancoXML) then begin //-- atribui qual tela FComercio.IdentTela := 4; //-- procura banco FProcuraBanco := (TestaForm(TFProcuraBanco,Self) as TFProcuraBanco); FComercio.FechaCad := True; //-- trava a procedure até cadastrar o fornecedor while FComercio.FechaCad = True do begin Application.ProcessMessages; end; end; QContasPagarBancoCobranca.Value := bancoXML; QContasPagarValorDuplicata.AsString := PontoPorVirgula(NodeDup.ChildNodes['vDup'].Text); QContasPagarDataVencimento.AsString := AcertaData(NodeDup.ChildNodes['dVenc'].Text); QContasPagarDigitacao.Value := (now); QContasPagarUsuario.Value := FComercio.XUsuario.Text; QContasPagarOrigem.Value := 'XML'; QContasPagarValorOriginal.AsString := PontoPorVirgula(NodeDup.ChildNodes['vDup'].Text); QContasPagar.Post; //-- vai p/ próxima duplicata NodeDup := NodeDup.NextSibling; //-- até zerar until NodeDup = nil; { qualquer erro na importação, retorna (31.07.2012) } except Alert('Erro no XML, não foi possível fazer a importação!','!'); Abort; end; DSContasPagar.Enabled := True; //-- atualiza form Self.FormShow(Sender);
  2. r0drigo

    NFE to SQL

    sim, só que eu utilizo o XMLDocument para isso...
  3. Comigo aqui na empresa as vezes acontece esse problema, porem não só por motivo da internet/firewall e ou anti-virus, mas olhando o xml, ele está autorizado só o retorno que é 0... Mando ele consultar pelo XML e tudo resolvido... retorna 100 e imprime.
  4. Por essa e por outras que fica cada vez mais desanimador ter empresa. Imagine então se aventurar em abrir uma nova. Tanta burocracia, impostos e multas...
  5. Se proceder, estou ferrado então!
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.