NFeGeraDANFe

A função NFeGeraDANFe é usada para gerar o DANFe (Documento Auxiliar da NF-e) a partir do arquivo XML da nota.

Tipo de Retorno

Integer

Pacote

A função NFeGeraDANFe está definida dentro do pacote NF-eGeraDANFe.pkg.

Sintaxe

Move (NFeGeraDANFe({sArquivoXML}, {sDadosEmissor}, {sQuadroRecibo}, ;
                   {sQuadroFatura}, {sQuadroISSQN},{sDPEC}, ;
                   {sSeparadorItem}, {sOpcoesSaida}, &{sMsgResultado}, ;
                   {bExibeErro})) to {iRet}

Onde:

  • {sArquivoXML} é o caminho completo do arquivo XML da NF-e para o qual será gerado o DANFe. Se a NF-e foi emitida em ambiente de homologação (tpAmb=2), ou não tiver autorização de uso quando exigido (tpEmis=1 ou 3), ou se não tiver os dados de DPEC (tpEmis=5) a expressão "SEM VALOR FISCAL" será impresso no DANFe;
  • {sDadosEmissor} este parâmetro permite personalizar o quadro que exibe os dados do emissor. Se for passado em branco (""), os dados de identificação do emissor serão obtidos do XML da NF-e. Outras duas opções podem ser usadas:
    • Imagem: se você desejar usar uma imagem com o logotipo e os dados do emissor, informe o caminho completo da imagem neste parâmetro. A imagem deve ter exatamente 339 x 114 pixels e estar no formato JPG. Note que a imagem deve conter todas as informações do emissor que você deseja imprimir, pois ela irá ocupar todo o espaço disponível no quadro do emissor;
    • Formulário pré-impresso: se você for usar um formulário que já possui os dados do emissor pré-impressos, então informe "[SEM DADOS EMITENTE]" neste parâmetro para que o quadro do emitente seja deixado em branco;
  • {sQuadroRecibo} é usado para indicar a posição do quadro de recibo, sendo "S" para indicar que deve ser impresso na parte superior e "I" para indicar inferior;
  • {sQuadroFatura} é usado para indicar se o quadro de fatura deve ou não ser gerado, sendo que os valores válidos são "S" para sim ou "N" para não. Note que, caso existam informações de fatura no arquivo XML, o quadro será impresso independentemente do valor informado neste parâmetro;
  • {sQuadroISSQN} é usado para indicar se o quadro de dados do ISSQN deve ou não ser gerado, sendo os valores válidos "S" para sim e "N" para não. Note que, caso existam informações de ISSQN no arquivo XML, o quadro será impresso independentemente do valor informado neste parâmetro;
  • {sDPEC} se a NF-e foi emitida em contingência DPEC informe o número, data e hora de registro do DPEC;
  • {sSeparadorItem} é usado para indicar como será a separação entre os itens do DANFe caso o item ocupe mais de uma linha. Para forçar a separação mesmo que o item ocupe uma única linha informe o caractere de separação em letra minúscula. Os valores válidos são: "L" para linha, "T" para tracejado, "B" para branco e "Z" para zebrado;
  • {sOpcoesSaida} é o nome do arquivo PDF que será gerado. Se for omitido o PDF será gerado para visualização. Se for informado apenas o nome do arquivo sem o caminho ele será gerado na mesma pasta do arquivo XML da NF-e usado para gerar o DANFE. Este parâmetro também permite as seguintes opções:
    • [IMPRIMIR={n}]: o PDF será enviado para a impressora padrão sendo que {n} pode variar de 1 a 5;
    • [NFeId.PDF]: grava o arquivo com o nome composto pela chave da NF-e. O arquivo será gerado no diretório corrente do Windows e não necessariamente o diretório onde está o XML. Você pode especificar o diretório usando a opção [PASTA];
    • [SEM COLUNA DESCONTO]: não mostra a coluna desconto;
    • [SumatraPDF]: indica que será usado o SumatraPDF para visualização ou impressão do PDF. É necessário ter o SumatraPDF no mesmo diretório do arquivo .exe da aplicação.
    • [PASTA={CaminhoDaPasta}]: informe em {CaminhoDaPasta} o diretório onde o PDF deve ser gerado;
    • [VISUALIZAR]: indica que o arquivo será aberto para visualização após gerado;
    • [ARQUIVO={sNmArquivo}]: informe em {sNmArquivo} o nome do arquivo que será gerado, sendo aqui apenas o nome, pois o diretório deve ser especificado na opção [PASTA];
    • [COM FATURA]: indica que os dados da fatura devem ser impressos em informações adicionais;
    • [MENSAGEM={sTexto}]: imprime {sTexto} no corpo do DANFE;
    • [MENSAGEMRECIBO={sTexto}]: imprime o {sTexto} no recibo do DANFe, e caso não seja informado, a mensagem padrão será exibida;
    • [SEM DADOS EMITENTE]: não imprime os dados do emitentes para atender quem tem papel personalizado para impressão de NF-e já com os dados do emitente;
    • [SEM QUADRO EMITENTE]: não imprime os dados do emitente e nem o quadro do emitente para atender quem tem papel personalizado para impressão de NF-e já com os dados e o quadro do emitente;
    • [vUnComDEC={n}]: permite indicar a quantidade de casas decimais de vUnCom, sendo que a quantidade de decimais deve ser informada em {n}, podendo ser um valor compreendido entre 0 a 10;
    • [vUnTribDEC={n}]: permite indicar a quantidade de casas decimais de vUnTrib, sendo que a quantidade de decimais deve ser informada em {n}, podendo ser um valor compreendido entre 0 a 10;
    • [qComDEC={n}]: permite indicar a quantidade de casas decimais de qCom, sendo que a quantidade de decimais deve ser informada em {n}, podendo ser um valor compreendido entre 0 a 4;
    • [qTribDEC={n}]: permite indicar a quantidade de casas decimais de qTrib, sendo que a quantidade de decimais deve ser informada em {n}, podendo ser um valor compreendido entre 0 a 4;
    • [SALTALINHA={string}]: permite indicar em {string} o texto a ser utilizado como quebra de linha nas informações adicionais do produto e nas informações complementares. Por exemplo:
      • [SALTALINHA=;] indica ";" como identificador de quebra de linha
      • [SALTALINHA=-/-] -> indica "-/-" como identificador de quebra de linha
    • [MOSTRARICMSST]: acrescenta a informação "BC ICMS-ST: 999,99 / ICMS-ST: 99,99" no detalhe do produto;
    • [CORSOMBREADO={cor}]: permite indicar em {cor} a cor do sombreado utilizado para destaque do item do produto, sendo que a cor deve ser informada no padrão de cores da tabela de cores HTML. Por exemplo: [CORSOMBREADO=#808080]. A cor #808080 é a cor padrão utilizada pela função em caso de omissão ou cor inválida. Exemplos de cores: darkgray=#A9A9A9, silver=#C0C0C0, lightgray=#D3D3D3, gainsboro=#DCDCDC, whitesmoke=#F5F5F5;
    • [MarcaDagua={xml}]: permite acrescentar uma imagem de marca d’água no DANFE informando {xml} um conteúdo no formato XML com pelo menos uma figura. Veja detalhes e exemplo clicando aqui.
    • [AltQuadroRECIBO={n}]: onde {n} é um valor maior ou igual a 18 e menor ou igual a 40 permitindo assim a personalização da altura do quadro do Recibo;
    • [DadosEmissor={xml}]: permite personalizar os dados do emissor através de um conteúdo em formato XML passado em {xml}. Veja detalhes e exemplo clicando aqui. Esta opção só pode ser usada se o parâmetro sDadosEmissor estiver com o caminho de uma imagem com o logotipo.
    • [QUADROPRODUTO]: faz com que o quadro de produtos seja extendido até o quadro de informações complementares, mesmo que não existam itens de produtos;
    • [COLUNAVALORTRIBUTO]: faz com que o valor aproximado dos tributos seja exibido nos itens da nota e no total, mesmo quando não houver informação;
    • [QUEBRADADOSVEICULOSNOVOS]: possibilita a inserção de linha nas informações de Veículos Novos;
    • [NAOGERARZEROSICMS]: possibilita a impressão de ’0,00’ e ’0’ do BC ICMS, Valor ICMS e Aliq. ICMS;
    • [NAOGERARZEROSIPI]: possibilita a impressão de ’0,00’ e ’0’ do Valor do IPI e Aliq. IPI;
    • [NAOGERARENDERECOENTREGA]: possibilita a não geração dos dados do local de entrega;
    • [NAOGERARENDERECORETIRADA]: possibilita a não geração dos dados do local de retirada;
    • [MOSTRARFCI]: possibilita a impressão do Código FCI na descrição do produto.
  • &{sMsgResultado} é uma variável do tipo String que precisa ser passada por referência e que após a execução da função receberá a mensagem literal que indica o sucesso ou não da execução;
  • {bExibeErro} é usado para indicar se a função deve exibir ou não os erros que ocorrerem na execução;
  • {iRet} é o código do retorno da chamada da função, sendo que os possíveis retornos são: 
    • 7900 - PDF da DANFE da NF-e: [chave da NF-e] foi gerado com sucesso
    • 7901 - PDF da DANFE da NF-e: [chave da NF-e] foi gravado com nome [valor informado] com sucesso
    • 7911 - PDF do DANFE da NF-e : [chave da NF-e] foi enviado para impressora com sucesso"
    • 7902 - Erro: Indicador de Imprimir Quadro de Recibo informado [valor informado] inválido, divergente de: [S]uperior ou [I]nferior
    • 7903 - Erro: Indicador de Imprimir Quadro de Fatura informado [valor informado inválido, divergente de: [S]im ou [N]ão
    • 7904 - Erro: Indicador de Imprimir Quadro de ISSQN informado [valor informado] inválido, divergente de: [S]im ou [N]ão
    • 7905 - Erro: Tipo Separador informado [valor informado] inválido, divergente de: [T]racejado, [L]inha, [B]ranco ou [Z]ebrado"
    • 7906 - Erro: Falha na gravação do PDF [nome arquivo], motivo da falha: [Mensagem de Erro]
    • 7907 - Erro: Falha na leitura do XML da NF-e:[Mensagem de Erro]
    • 7908 - Erro: Situação imprevista Erro do Windows:[{Mensagem de Erro]
    • 7909 - Erro: Falha no processo de tratamento do XML, examine a mensagem de erro do Windows: [Mensagem de Erro]
    • 7910 - Erro: Falha na leitura do arquivo de logo:[Mensagem de Erro]
    • 7912 - Erro: Falha no processo de impressão do PDF, examine a mensagem de erro do Windows: [Mensagem de Erro]
    • 7913 - Erro: Falha no processo de tratamento dos DadosEmissor=[conteúdo informado como DadosEmissor], examine a mensagem de erro do Windows: [Mensagem de Erro]
    • 7914 - Erro: SumatraPDF.exe inexiste na pasta da DLL: [pasta da DLL]
    • 7915 - Erro: Falha no processo de tratamento da MarcaDagua =[Mensagem de Erro], examine a mensagem de erro do Windows: [Mensagem de Erro]
    • 7916 - Erro: Arquivo de imagem:[nomeArquivoImagem] não localizado
    • 7917 - Erro: Falha na leitura do arquivo de imagem:[nomeArquivoImagem], examine a mensagem de erro do Windows: [Mensagem de Erro]

Exemplo

Um exemplo de uso da função pode ser encontrado dentro da Workspace de Exemplo no botão oExecutarButton na view GeraDANFe.vw. Abaixo a função citada e a chamada da função da Library na linha 47.

NFeGeraDANFe

Observações

  • A visualização do PDF só é possível se o Acrobat Reader estiver instalado na máquina ou através da utilização do SumatraPDF;
  • Esta função pode ser usada para gerar o PDF de qualquer XML de NF-e (autorizado ou não), mesmo que você não seja o emissor ou desinatário da NF-e;
  • A geração em formato paisagem não é suportada.

Não encontrou o que precisava, entre em contato conosco.