Manual ACBrMDFe Versão 1.00
Manual ACBrMDFe Versão 1.00
Manual ACBrMDFe Versão 1.00
ACBrMDFe
Manual ACBrMDFe
Verso 1.00
Fevereiro / 2015
Manual ACBrMDFe verso 1.00
Pgina 1
Controle de Verses
Verso
1.00
Data
02/02/2015
Autor
Italo Jurisato Junior
Resumo
Pgina 2
1. Introduo
Este manual traz informaes sobre o componente ACBrMDFe, tais como a
sua configurao, passagem de dados e mtodos.
O ACBrMDFe um componente destinado a emisso do MDF-e Manifesto
Eletrnico de Documentos Fiscais, contempla toda a estrutura do XML contida
nos manuais e notas tcnicas publicadas pelo ENCAT no Portal Nacional do
MDF-e.
compatvel com os certificados A1 e A3 (formato carto e token) para
realizar a assinatura digital. Utiliza para isso as DLLs: CAPICOM e OpenSSL,
distribudas juntamente com os fontes do componente.
Possui mtodos que atende todos os Webservices disponibilizados pelas
SEFAZ-Autorizadoras, SEFAZ-Virtuais e SEFAZ Ambiente Nacional.
A impresso do DAMDFE, fica a cargo de um segundo componente
ACBrMDFeDAMDFExxx (xxx = indica o gerenciador de relatrios). Atualmente
esse componente distribudo para os seguintes gerenciadores de relatrios
(Reports): Quick Report, Fast Report e Fortes Report.
O ACBrMDFe possui uma propriedade de configurao onde feita a
associao com o componente de impresso do DAMDFE.
Pgina 3
2. Configurao
O componente ACBrMDFe possui dezenas de propriedades de configuraes
que podem ser definidas no Object Inspector ou atravs de linhas de cdigo.
As configuraes no componente permitem que os arquivos XML de envio e
de retorno sejam salvos em disco ou no, e possam ser organizados em pastas
ou no, de acordo com a preferncia do desenvolvedor.
Pgina 4
Propriedades:
Algumas delas s vo aparecer no Object Inspector dependendo de como o componente foi compilado, ou seja, verso
Capicom ou OpenSSL.
Nome
AboutACBrMDFe
Configuracoes
Arquivos
AdicionarLiteral
EmissaoPathMDFe
Name
PastaMensal
PathEvento
PathMDFe
Salvar
Valor Padro
Verso: 0.8.0
Descrio
Apresenta a verso do componente
False
False
ArquivosConf
False
False
SalvarApenasMDFeProcessados False
SalvarEvento
False
SepararPorCNPJ
False
Tag
Certificados
Manual ACBrMDFe verso 1.00
Pgina 5
Certificado
CNPJ
DataVenc
Name
NumeroSerie
Senha
SubjectName
CertificadosConf
Tag
Geral
AtualizarXMLCancelado
ExibirErroSchema
FormaEmissao
FormatoAlerta
IniFinXMLSECAutomatico
Name
PathSalvar
Manual ACBrMDFe verso 1.00
True
PathSchemas
RetirarAcentos
Salvar
Tag
True
False
0
ValidarDigest
True
VersaoDF
Name
Tag
ve100
Configuracoes
0
WebServices
AguardarConsultaRet
AjustaAguardarConsultaRet
False
Ambiente
taHomologacao
IntervaloTentativas
1000
Name
ProxyHost
ProxyPass
WebServicesConf
SEFAZ.
Path destinado aos arquivos XSD (Schemas) utilizados
para validar o XML.
Remove os acentos das vogais ao gerar o XML.
Se True salva os arquivos de envio e retorno da SEFAZ.
Sem funcionalidade predefinida, pode ser usado
livremente.
Se True compara o Value Digest da assinatura com o
do protocolo de autorizao, se forem iguais o
protocolo ser adicionado ao XML do MDF-e.
Verso do documento fiscal: ve100 para 1.00
Sem funcionalidade predefinida, pode ser usado
livremente.
Tempo em milissegundos de espera antes de realizar
a primeira consulta aps o envio do MDF-e para
SEFAZ.
Se True ajusta o tempo de espera baseado no tempo
de retorno do numero do recibo aps o envio.
Define o ambiente a ser utilizado para o envio
(Homologao ou Produo).
Tempo em milissegundos de espera entre uma
consulta e outra aps o envio do MDF-e para SEFAZ.
Define o Host do Proxy
Define a Senha do Proxy
Pgina 7
ProxyPort
ProxyUser
Salvar
False
Tag
Tentativas
UF
Visualizar
SP
False
DAMDFE
Name
ACBrMDFe1
Tag
Pgina 8
3. Alimentao
O componente ACBrMDFe possui uma classe que uma coleo de itens e
cada item se refere a um MDF-e. A princpio, podemos adicionar centenas de
Manifestos a essa coleo, mas o componente somente vai gerar e enviar um
lote com no mximo 1 Manifesto (limite mximo estabelecido pela SEFAZ).
Cada item da coleo possui centenas de propriedades que tem como
objetivo receber os dados a serem utilizados na gerao do XML.
Cada propriedade representa uma TAG do XML e segue a mesma
nomenclatura definida nos manuais e notas tcnicas publicadas pelo ENCAT
no Portal Nacional do MDF-e.
O programa exemplo: ACBrMDFe_demo que encontra-se na pasta:
...\Exemplos\ACBrMDFe\Delphi possui uma procedure chamada GerarMDFe
que exemplifica a alimentao dessas propriedades com os dados pertinentes
ao manifesto.
A procedure GerarMDFe adiciona apenas um Manifesto para a coleo de
itens chamada Manifestos.
Pgina 9
4. Mtodos
O desenvolvedor pode optar por utilizar uma procedure ou function que
automatiza dois ou mais mtodos ou utilizar os mtodos diretamente. Neste
caso fica a cargo do desenvolvedor efetuar o efetivo controle da execuo dos
mesmos.
Os mtodos possuem diversas propriedades de entrada e de retorno, onde o
desenvolvedor ter que passar alguns dados para que o mesmo execute a sua
funo corretamente, por fim ler as de retorno para que seja feito o
tratamento adequado, apresentando para o usurio e ou armazenando no
banco de dados.
Pgina 10
a. Funes
ACBrMDFe1.Enviar(ALote: Integer/String; Imprimir: Boolean = True): Boolean;
A funo Enviar capaz de gerar o XML baseado nos dados que foram
alimentados ao componente, dados estes pertinentes ao manifesto, assinar o
XML digitalmente atravs do certificado digital do emitente previamente
instalado e configurado (vide configurao), validar o XML com base nos
arquivos XSD (Schemas) e enviar para SEFAZ caso a validao esteja OK, caso
contrario apresentar o erro de validao e abortar o envio.
Se enviado aguarda o retorno com o numero do recibo, realiza a consulta e
aguarda o retorno com o resultado do processamento do MDF-e pela SEFAZ.
Se constar no retorno que o MDF-e foi autorizado, o XML assinado recebe as
TAGs retornadas pela SEFAZ juntamente com o protocolo de autorizao.
A funo Enviar possui dois parmetros:
ALote que pode ser um numero (integer) ou (String) utilizado para
identificar o numero do lote a ser enviado. Um lote pode conter
apenas 1 MDF-e.
Imprimir pode ser omitido uma vez que possui um valor padro igual a
True, faz com que no final de todo o processo o DAMDFE seja
impresso no papel. Se desejar informe False como sendo o
valor do segundo parmetro para que o DAMDFE no seja
impresso automaticamente.
ACBrMDFe1.Consultar: Boolean;
Essa funo muito til quando ocorre algum problema aps o envio do
MDF-e para SEFAZ e o XML assinado fica sem o protocolo de autorizao e na
SEFAZ o mesmo encontra-se autorizado.
Manual ACBrMDFe verso 1.00
Pgina 11
Pgina 12
Pgina 13
Pgina 14
ACBrMDFe1.Manifestos.GetNamePath: String;
Esta funo no momento retorna apenas uma string contendo Manifesto.
Pgina 15
b. Procedimetos
ACBrMDFe1.SetStatus( const stNewStatus : TStatusACBrMDFe );
O componente possui diversos status listados abaixo, com esse procedimento
podemos definir um determinado status. til para aqueles desenvolvedores
que desejam apresentar na tela uma mensagem de andamento do processo.
Lista
de
status
disponveis:
stMDFeIdle,
stMDFeStatusServico,
stMDFeRecepcao, stMDFeRetRecepcao, stMDFeConsulta, stMDFeRecibo,
stMDFeEmail, stMDFeEvento, stMDFeEnvioWebService
ACBrMDFe1.ImprimirEvento;
Imprimi um evento carregado no componente.
ACBrMDFe1.ImprimirEventoPDF;
Gera e salva a imagem do evento carregado no componente no formato PDF.
ACBrMDFe1.EnviarEmailEvento(const sSmtpHost, sSmtpPort, sSmtpUser,
sSmtpPasswd, sFrom, sTo, sAssunto: String; sMensagem : TStrings; SSL :
Boolean; EnviaPDF: Boolean = true; sCC: TStrings = nil; Anexos:TStrings=nil;
PedeConfirma: Boolean = False; AguardarEnvio: Boolean = False;
NomeRemetente: String = ''; TLS : Boolean = True);
Envia por email o XML (anexo) de um evento carregado no componente
opcionalmente pode-se enviar em anexo a imagem em PDF.
O procedimento possui diversos parmetros:
sSmtpHost o endereo de sada do servidor de e-mail.
sSmtpPort a porta de sada usada pelo servidor de e-mail.
Manual ACBrMDFe verso 1.00
Pgina 16
Pgina 17
Pgina 18
Pgina 19
ACBrMDFe1.Manifestos.Imprimir;
Imprime o DAMDFE de todos os MDF-e previamente carregados no
componente.
ACBrMDFe1.Manifestos.ImprimirPDF;
Gera e salva a imagem do DAMDFE de todos os MDF-e previamente
carregados no componente no formato PDF.
ACBrMDFe1.Manifestos.Items[Index: Integer].EnviarEmail(const sSmtpHost,
sSmtpPort, sSmtpUser, sSmtpPasswd, sFrom, sTo, sAssunto: String;
sMensagem : TStrings; SSL : Boolean; EnviaPDF: Boolean = True; sCC: TStrings
= nil; Anexos:TStrings=nil; PedeConfirma: Boolean = False; AguardarEnvio:
Boolean = False; NomeRemetente: String = ''; TLS : Boolean = True;
UsarThread: Boolean = True; HTML: Boolean = False);
Procedimento para envio por e-mail do XML (anexo) do MDF-e ao condutor
do veculo carregado no componente, opcionalmente podendo anexar
tambm o PDF do DAMDFE.
Como o componente comporta uma lista de Manifestos devemos indicar no
parmetro de Items qual o Manifesto que desejamos enviar por e-mail.
O procedimento possui diversos parmetros:
sSmtpHost o endereo de sada do servidor de e-mail.
sSmtpPort a porta de sada usada pelo servidor de e-mail.
sSmtpUser o nome do usurio usado pelo servidor de e-mail.
sSmtpPasswd a senha do usurio usado pelo servidor de e-mail.
sFrom o endereo de e-mail do remetente.
Manual ACBrMDFe verso 1.00
Pgina 20
Pgina 21
<AAAAMMDDHHMMSS>-ped-sta.xml
<AAAAMMDDTHHMMSS>-sta.xml
<numLote>-env-lot.xml
<numLote>-rec.xml
<numRecibo>-ped-rec.xml
<numRecibo>-pro-rec.xml
<chave>-mdfe.xml
<chave>-ped-sit.xml
<chave>-sit.xml
<chave>-ped-eve.xml
<chave>-eve.xml
<ID do Evento>-procEventoMDFe.xml
<chave>-MDFeDFe.xml
<chave>-MDFe.pdf
<ID do Evento>-procEventoMDFe.pdf
<chave>-den.xml
Pgina 22
6. Recomendaes
Mantenha todos os fontes de todas as pastas atualizados, procure sempre
fazer uma cpia dos fontes atuais e baixar a atualizao.
A princpio no h necessidade de desinstalar e instalar novamente os
componentes aps uma atualizao dos fontes.
Aconselhamos sempre compilar as aplicaes utilizando-se da opo Build,
pois esta recria todas as DCU mesmo dos fontes que no sofreram alterao.
Altamente recomendado utilizar o ACBrInstall para fazer novas instalaes e
recompilaes de pacotes j existentes na IDE aps atualizar o SVN! Simples
motivo que o instalador j separa os arquivos em pastas corretas para cada
Delphi caso exista mais de um no micro! Evitando erros e centralizando em
um nico local.
Pgina 23