Dados x XML, como começar?

Código-Fonte, Delphi julho 31st, 2008

Segue abaixo um exemplo, usando a classe TXMLDocument do Delphi, para gerar um arquivo XML; repare que o arquivo está incompleto, mas servirá como base para quem não sabe ainda por onde começar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
procedure TfrmPrincipal.PnLerNfeClick(Sender: TObject);
var vXMLDoc: TXMLDocument;
    NodeNivelA, NodeNivelB: IXMLNode;
 
begin
 
  vXMLDoc := TXMLDocument.Create(self);
  Try
  With vXMLDoc do begin
       Active := True;
       Version := '1.0';
       Encoding := 'UTF-8';
       AddChild('NFe','http://www.portalfiscal.inf.br/nfe');
       DocumentElement.Attributes['xmlns:ds'] :=
       'http://www.w3.org/2000/09/xmldsig#';
       DocumentElement.Attributes['xmlns:xsi'] :=
       'http://www.w3.org/2001/XMLSchema-instance';
       DocumentElement.Attributes['xsi:schemaLocation'] :=
       'http://www.portalfiscal.inf.br/nfe/enviNFe_v1.12.xsd';
 
       // A - Dados da Nota Fiscal eletrônica
       NodeNivelA := DocumentElement;
       // Adiciona a Tag
       NodeNivelA.AddChild('infNFe');
       // Adiciona atributo "Id" da Tag anterior
       NodeNivelA.ChildNodes['infNFe'].Attributes['Id'] := 'NFe31232131232132131231221312312312';
       // Adiciona atributo "versao" da Tag anterior
       NodeNivelA.ChildNodes['infNFe'].Attributes['versao'] :=
            DM.ClientDSLoja.FieldByName('enviNFe').AsString;
 
       // B - Identificação da Nota Fiscal eletrônica
       NodeNivelB := NodeNivelA.ChildNodes['infNFe'];
       NodeNivelB.ChildNodes['ide'].AddChild('cUF').NodeValue := '51' ;
       NodeNivelB.ChildNodes['ide'].AddChild('cNF').NodeValue := '000001';
 
       vXMLDoc.SaveToFile('EnviNFe.xml');
 
  end;
  finally
     vXMLDoc.Free;
  end;
 
end;

Ps. Acrescente as units: XMLDoc, XMLIntf, xmldom.

Tags: , ,

Gerar o arquivo do Lote à partir da NFe assinada

Código-Fonte julho 23rd, 2008

Segue um exemplo de como gerar o arquivo do Lote para envio de uma única NFe:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
procedure TFrmNfe.GeraArquivoLote
var F: TextFile
     antes: TTime;
     MeuXMLAssinado: pchar
     buf: string;
begin
 //registra horário inicio procedimento (opcional)
 antes := now;
 
 // Carregue o arquivo XML num Memo ou RichtEdit
 Memo1.Lines.LoadFromFile( arquivoXMLAssinado );
 MeuXMLAssinado := Pchar(MeuXMLAssinado);
 
 // Crie o novo arquivo (Ex. arquivoXMLEnviNFe = 0000000000001env-lot.xml)
 AssignFile(F, arquivoXMLEnviNFe);
 Rewrite(F);
 
 // adicione as namespaces
 Write(F, '< ?xml version="1.0" encoding="UTF-8"?>' );
 Write(F, '<envinfe xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.portalfiscal.inf.br/nfe/enviNFe_v'+LaiouteVersao+'.xsd" versao="'+LaiouteVersao+'">' );
 Write(F, '<idlote>' + InttoStr(StrToInt(idLote)) + '</idlote>');
 
 // Nesse ponto vc está copiando o conteudo da tag "NFe" para o buffer
 //repetir essa parte do codigo quando quiser anexar varios arquivos...
 buf := copy(MeuXMLAssinado, pos('<nfe ', MeuXMLAssinado), length(MeuXMLAssinado));
 
 Write(F, buf);
 
 Write(F, '</enviNFe>');
 
 CloseFile(F);
 
 // Le o arquivo do Lote gerado
 memo1.lines.LoadFromFile( diretorioxml+'\enviadas\'+idLote+'env-lot.xml');
 MeuXMLAssinado := pchar(memo1.Lines.Text);
 
 EnvioLoteNFe; // chamada funcao para envio arquivo (pode usar aqui a NFE_UTIL.DLL)
 
 // Salva dados resposta no DataSet
 SalvaDadosRecibo;    // Crie a função que vai salvar os dados do retorno no seu BD
 
 // Registre o Tempo de resposta como achar melhor (opcional)
 form1.Response.Lines.add(
 'Geração do Lote Concluída' + #13#10 +
 'Tempo Total (seg): ' + inttostr(SecondsBetween(antes, now)) + #13#10 +
 'Tempo Médio (seg): ' + formatfloat('0.00', SecondsBetween(antes, depois))
 );
 
end;
</nfe></envinfe>

Tags:

Aprendendo UML (casos de uso recentes)

Protestos julho 22nd, 2008

diagramastj1_0.jpg
Estava mesmo precisando praticar os diagramas UML; todo mundo precisa conheçer um pouco de UML hoje em dia, é incrível como um simples diagrama substitui centenas de palavras.Então, vamos para de jogar conversa fora e iniciar nosso aprendizado:

Primeira Lição: Tente decifrar o diagrama; se conseguir, parabéns, você está ficando craque em UML vá para a próxima parte desse artigo.

Clique para continuar lendo “Aprendendo UML (casos de uso recentes)”

Blues Bar (para motociclistas e apaixonados por moto!)

Notícias, Passeios de Moto julho 13th, 2008

Nesse próximo dia 18 de Julho de 2008 (Sexta-Feira) aconteçe a Inauguração do primeiro bar temático para motociclistas de Cuiabá-MT. Para quem gosta de moto, vale a pena conferir, o Blues Bar vai ser o novo “point” dos motociclistas de Cuiabá e região.

Parabéms aos meus amigos: Braulio (Peruano), Fausto Malheiros e Beto Goiano. Vou encostar a minha motoca com frequência ai, no Blues Bar.

Clique aqui para ver mais informações

Tags:

BRAZIP

Ferramentas julho 9th, 2008

Brazip 9.0Quem nunca precisou de um programa de compactação de arquivos?. O Brazip é uma solução nacional (Valorize o software nacional) muito boa; não deixa nada à desejar aos concorrentes (Winzip, 7zip, Arj, etc); e, inclusive é capaz de ler arquivos compactados por esses programas.

Clique para continuar lendo “BRAZIP”

Tags: , , ,

Vote contra a CSS

Informação julho 8th, 2008

Foi criado um site para que as pessoas que são contra a criação desse novo imposto a CSS (Contribuição Social para a Saúde) possam votar. É simples e rápido, se você é contra acesse o site agora mesmo (clique aqui) e registre o seu voto.

Tags:

Tabela de Municípios (IBGE)

Banco de Dados, Informação julho 4th, 2008

Recentemente publiquei na área de download desse blog o script para inserção da tabela de municípios no seu banco de dados; porêm durante o processo de implantação da NF-e; descobri que os códigos dos municipios, dessa tabela; embora tenha sido obtida no IBGE, não conferiam com os códigos da tabela de municípios divulgada pela SEFAZ (em formato XLS). Não me pergunte porque!.

Dessa forma fizemos os ajustes e, portanto, se você usou o script anterior; baixe agora na a atualização da tabela, também, disponibilizada na área de download do blog.

Tags: , , ,

Laioute NF-e versão 1.12 adiado!

Informação julho 2nd, 2008

Conforme publicado no Portal Nacional (http://www.nfe.fazenda.gov.br/portal/integracao.aspx); A SEFAZ adiou o uso da versão 1.12 do laioute da NF-e; então quem está tentando validar a NF-e com esse laioute não vai conseguir; o servidor aceita o lote, mas após a consulta do Lote você vai receber a instrução de rejeição indicando o erro 227 (problema na chave de acesso). Isso ocorre porque a chave de acesso teve uma pequena alteração. Mas, por enquanto concentre-se no laioute da NF-e do Manual de Integração 2.0.4 (não na errata!). Não vou nem comentar …..aiaiaiaiai.

Tags: