Melhoria para Imprimir DANFE Diretamente na Impressora - NFe (Nota Fiscal Eletrônica)
Características do Requisito
Linha de Produto: | RMS | ||||||||||||||
Segmento: | VAREJO | ||||||||||||||
Módulo: | Conector | ||||||||||||||
Rotina: |
| ||||||||||||||
Cadastros Iniciais: | Deve existir 1 Nota Fiscal Eletrônica emitida e autorizada na Sefaz e o parâmetro NFEIMPRAS = 'RAW'. | ||||||||||||||
Parâmetro(s): | NFEIMPRAS | ||||||||||||||
Tickets relacionados | 1114819/MRMS-10563 | ||||||||||||||
País(es): | BRAZIL | ||||||||||||||
Banco(s) de Dados: | ORACLE | ||||||||||||||
Tabelas Utilizadas: | VW50_NFE, NFE_CONTROLE |
Descrição
Este documento tem como objetivo evidenciar o ajuste realizado no Conector e Service, para imprimir DANFE no novo modo de impressão, chamado 'RAW'.
Esta implementação está disponível a partir da versão 2.1.10.95.
Não foram alterados campos na geração do DANFE, contudo, foi criado uma nova forma de envio do DANFE em formato "*.PDF" para as impressoras.
Esta melhoria está disponível a partir da versão 2.1.10.95 do Conector.
Procedimento para Implantação
É necessário atualizar a versão do Runtime do Crystal Reports para a utilização da NFE. O cliente deve baixar o instalador do runtime e instalá-lo.
O endereço de download do Crystal Reports Runtime Suport Pack 13 (v.13.0.13.1597) é :
Compilar os objetos de banco de dados constantes no pacote (*.PLB).
- NFE_SEQUENCE.PLB
- VW01_FILIAL.PLB
- VW02_USUARIOS.PLB
- VW03_NFENTRADA.PLB
- VW04_CCEVENTOS.PLB
- VW05_NFEXML.PLB
- VW50_NFE.PLB
- VW50_NFE_AUTORIZADOS.PLB
- VW51_NFE_REF.PLB
- VW52_NFE_DUP.PLB
- VW54_NFE_VOL.PLB
- VW60_DET.PLB
- VW61_DET_DI.PLB
- VW62_DET_DI_ADI.PLB
- VW63_DET_MED.PLB
- VW65_DET_ICM.PLB
- VW66_DET_IPI.PLB
- VW68_DET_PIS.PLB
- VW69_DET_COF.PLB
- VW67_DET_II.PLB
- VW71_DET_COMB.PLB
- VW70_DET_ICM_DES.PLB
- NFE_CONTROLE.PLB
- NFE_CONTROLE_SAIDA.PLB
- NFE_XML.PLB
- NFE_XML_SAIDA.PLB
- NFP01_LISTA.PLB
- NFE71_IMPR_LOCAL.PLB
- F_SERVIDOR_NFE.PLB
- PC_FIS_NFE.PLB
*** ATENÇÃO ***
Estes objetos de banco de dados constantes no pacote (*.PLB) estão relacionados ao RMS Retail e fazem parte do processo de Emissão da Nota Fiscal Eletrônica (NFe).
- AG1PANFE.PLB
- AG1LGNFE.PLB
- AA1DIVOL.PLB
- AA1DIIMP.PLB
- AG1NFNET.PLB
- AG1FENFS.PLB
- AA1CADCV.PLB
- AA1CPAIS.PLB
- AG1LGNFI.PLB
- AA1NFINU.PLB
- AG3PVECP.PLB
- AA4CENPG.PLB
- AG1MSGNF.PLB
- AA1DIFCI.PLB
- AA1DITEM.PLB
- AG1NFERF.PLB
- AA1LINHP.PLB
- AA1LINHF.PLB
- AA3MITEM.PLB
- AA4MITEM.PLB
- WG1GNOTA.PLB
- DEV_NF_EMITIDA.PLB
- F_EXTENSO_MONETARIO.PLB
- F_VALIDA_CPF_CNPJ.PLB
- PROC_NFE_CANCELAMENTO.PLB
- PROC_VGLDIMPO.PLB
- PC_CAD_PRODUTO.PLB
- PC_DST_QUEBRASOBRA.PLB
- PC_CAL_GNTA.PLB
*** ATENÇÃO ***
Estes objetos constantes no pacote (*.DLL) estão relacionados ao RMS Retail e fazem parte do processo de Emissão da Nota Fiscal Eletrônica (NFe).
- VGFNOTAE.DLL
- VGFPANFE.DLL
- VGFMONIT.DLL
- VABUPAIS.DLL
- VGLNFINU.DLL
- VGLDIMPO.DLL
- VGFRNOTA.DLL
- VGFMSGNF.DLL
- VABUAITE.DLL
- No RMS Retail, acesse Mercadorias/Cadastro/Tabelas e Parâmetros/Parâmetros (Programa VABUPARA):
Cadastro | Parâmetros |
Código | 030 |
Acesso | NFEIMPRAS |
Conteúdo | Informar o valor 'RAW' |
*** ATENÇÃO ***
Se não for informado este parâmetro, o Conector irá emitir o DANFE normalmente, no modo de impressão normal, ou seja, o processo de impressão será gerenciado pelo software da impressora.
Procedimento para Configuração
O Procedimento de cadastro / configuração de parâmetros pode ser realizado tanto via RMS Retail quanto via Conector (NFe). Favor escolher uma das opções abaixo:
1 - No RMS Retail, acesse Mercadorias/Cadastro/Tabelas e Parâmetros/Parâmetros (Programa VABUPARA). Crie/configure o parâmetro a seguir:
Cadastro | Parâmetros |
Código | 030 |
Acesso | NFEIMPRAS |
Conteúdo | Informar o valor 'RAW' |
2 - No Conector (NFe), acesse Configuração / Parâmetros / Manutenção do Cadastro de Parâmetros Globais. Crie/configure o parâmetro a seguir:
Se não for informado este parâmetro, o Conector irá emitir o DANFE normalmente, no modo de impressão normal, ou seja, o processo de impressão será gerenciado pelo software da impressora. *** ATENÇÃO ***
Procedimento para Utilização
Para utilizar esta melhoria, é necessário cadastrar o parâmetro NFEIMPRAS = 'RAW' e observar os detalhes de configuração das impressoras a serem utilizadas no processo de impressão do DANFE.
Para imprimir o DANFE (Documento Auxiliar da Nota Fiscal Eletrônica) através do modo 'RAW' de impressão, é necessário observar os seguintes detalhes:
A impressora utilizada para demonstrar o modo de impressão 'RAW' é gerenciada via software, e o IP '10.71.2.29' da impressora não é o mesmo IP/PORTA utilizado para impressão, de fato, pelo gerenciamento automático do software da impressora, o IP é '10.71.10.11'. A sequência a seguir ilustra as configurações da impressora 'SSACloudPrinter'.
*** ATENÇÃO ***
Observe que o software da impressora gerencia automaticamente as portas por onde serão impressos os documentos na rede.
*** ATENÇÃO ***
Observe os detalhes do pool de impressão, como por exemplo:
Colocar documentos no spool para imprimir mais rapidamente [DEFAULT]
Iniciar impressão depois que a última página estiver no spool [DEFAULT]
Iniciar a impressão imediatamente
Imprimir diretamente na impressora *** ATENÇÃO ***
[ ] Manter documentos impressos.
*** ATENÇÃO *** O Usuário administrador deve todas as permissões para que o processo de impressão automática ocorra sem maiores problemas.
*** ATENÇÃO *** Versão do software que gerencia a impressora, utilizado para demonstrar o problema ao tentar imprimir através de impressoras gerenciadas por software.
Para demonstrar o funcionamento do modo de impressão 'RAW', utilizamos a impressora 'SSACloudPrinter', que é gerenciada via software, e o IP '10.71.2.29' da impressora não é o mesmo IP/PORTA utilizado para impressão, de fato, pelo gerenciamento automático do software da impressora, o IP utilizado no instante da impressão é '10.71.10.11'. A sequência a seguir ilustra as configurações de uma impressora virtual, que utiliza o IP '10.71.10.11' e a porta '9001', que é padrão do modo RAW.
*** ATENÇÃO ***
Observe os detalhes do pool de impressão, como por exemplo:
Colocar documentos no spool para imprimir mais rapidamente [DEFAULT]
Iniciar impressão depois que a última página estiver no spool [DEFAULT]
Iniciar a impressão imediatamente
Imprimir diretamente na impressora *** ATENÇÃO ***
[ ] Manter documentos impressos.
O modo 'RAW' envia os dados diretamente para a impressora, por esta razão, é necessário conhecer o IP e a PORTA que a impressora utiliza, para que o processo de impressão funcione corretamente.
Imprimir diretamente na impressora *** ATENÇÃO ***
Para que a impressão seja realizada diretamente na impressora, é necessário configurar o IP e PORTA.
*** ATENÇÃO *** Se não for possível detectar automaticamente a porta, configurar manualmente, através da tela abaixo:
O IP e PORTA [DEFAULT] da impressora 'SSACloudPrinter' é: '10.71.2.29'
Contudo, no próprio display da impressora, o IP verdadeiro utilizado no processo automático de impressão é: '10.71.10.11'. O software da impressora redireciona os documentos para IP's e portas de forma automática, a depender das configurações realizadas pelo administrador do sistema. Neste exemplo, não foi possível alterar estas configurações, por esta razão, foi utilizado uma impressora virtual, que utiliza o mesmo IP da impressora que apresentou problemas na impressão.
*** ATENÇÃO ***
A seguir, é ilustrado a emissão, autorização e impressão de 3 (três) notas fiscais eletrônicas - NF-e's. no modo automático 'RAW', utilizando o processo automático de impressão via Service NFe.
*** ATENÇÃO ***
*** ATENÇÃO ***
Esta é a forma de monitorar a impressão via modo 'RAW'. Deixe o painel de documentos a serem impressos da impressora virtual aberto, que no instante em que o Service NFe envia o documento, diretamente para a impressora, o documento aparece na tela, muito rapidamente, mas dá tempo suficiente de perceber que os documentos estão sendo enviados diretamente para a impressora.
*** ATENÇÃO ***
*** ATENÇÃO ***
Documentos impressos, observe o campo "DANFE" no grid:
*** ATENÇÃO ***
*** ATENÇÃO ***
Registro do Log da impressão automática, que foi realizada pelo Service NFe, nota 6968:
19:42:23:923 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: GERANDO PDF (MemoryStream) 35170705320808000170550010000069681000000850-nfe.pdf 19:42:28:728 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: GERANDO IMPRESSAO... wViaDanfe : 1 19:42:28:732 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: ANTES - RawPrinterHelper.SendFileToPrinter() 19:42:28:737 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: START[] 19:42:28:742 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: BinaryReader br = new BinaryReader(fileStream) 19:42:28:746 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: Byte[] bytes = new Byte[fileStream.Length] 19:42:28:751 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: IntPtr pUnmanagedBytes = new IntPtr(0) 19:42:28:754 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: int nLength 19:42:28:758 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: nLength = Convert.ToInt32(fileStream.Length) 19:42:28:762 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: bytes = br.ReadBytes(nLength) 19:42:28:765 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: pUnmanagedBytes = Marshal.AllocCoTaskMem(nLength) 19:42:28:769 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: Marshal.Copy(bytes, 0, pUnmanagedBytes, nLength) 19:42:28:774 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: START[] 19:42:28:778 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: di.pDocName..: Print RAW 35170705320808000170550010000069681000000850-nfe.pdf 19:42:28:782 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: di.pDataType.: RAW 19:42:28:785 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: szPrinterName: CutePDF Writer 19:42:28:790 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: sNome........: 35170705320808000170550010000069681000000850-nfe.pdf 19:42:28:795 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: if (OpenPrinter(szPrinterName.Normalize(), out hPrinter, IntPtr.Zero)) 19:42:28:807 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: if (StartDocPrinter(hPrinter, 1, di)) 19:42:28:811 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: if (StartPagePrinter(hPrinter)) 19:42:28:815 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: bSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten) 19:42:28:818 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: bSuccess: True 19:42:28:823 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: EndPagePrinter(hPrinter) 19:42:28:840 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: EndDocPrinter(hPrinter) 19:42:28:846 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: ClosePrinter(hPrinter) 19:42:28:852 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: return bSuccess 19:42:28:858 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: bSuccess = SendBytesToPrinter(szPrinterName, sNome, pUnmanagedBytes, nLength) 19:42:28:862 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: bSuccess: True 19:42:28:865 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: Marshal.FreeCoTaskMem(pUnmanagedBytes) 19:42:28:874 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: fileStream.Close() 19:42:28:877 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: fileStream.Dispose() 19:42:28:882 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: fileStream = null 19:42:28:885 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: return bSuccess 19:42:28:889 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: FINISH[0] 19:42:28:893 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: DEPOIS - RawPrinterHelper.SendFileToPrinter() 19:42:28:897 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: DEPOIS - bSucesso: True 19:42:28:901 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: IMPRESSAO BEM SUCEDIDA!
*** ATENÇÃO ***
Registro do Log da impressão automática, que foi realizada pelo Service NFe, nota 6969:
19:42:29:829 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: GERANDO PDF (MemoryStream) 35170705320808000170550010000069691000000865-nfe.pdf 19:42:33:879 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: GERANDO IMPRESSAO... wViaDanfe : 1 19:42:33:882 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: ANTES - RawPrinterHelper.SendFileToPrinter() 19:42:33:886 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: START[] 19:42:33:890 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: BinaryReader br = new BinaryReader(fileStream) 19:42:33:894 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: Byte[] bytes = new Byte[fileStream.Length] 19:42:33:897 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: IntPtr pUnmanagedBytes = new IntPtr(0) 19:42:33:901 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: int nLength 19:42:33:905 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: nLength = Convert.ToInt32(fileStream.Length) 19:42:33:911 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: bytes = br.ReadBytes(nLength) 19:42:33:915 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: pUnmanagedBytes = Marshal.AllocCoTaskMem(nLength) 19:42:33:919 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: Marshal.Copy(bytes, 0, pUnmanagedBytes, nLength) 19:42:33:924 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: START[] 19:42:33:928 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: di.pDocName..: Print RAW 35170705320808000170550010000069691000000865-nfe.pdf 19:42:33:932 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: di.pDataType.: RAW 19:42:33:937 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: szPrinterName: CutePDF Writer 19:42:33:941 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: sNome........: 35170705320808000170550010000069691000000865-nfe.pdf 19:42:33:945 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: if (OpenPrinter(szPrinterName.Normalize(), out hPrinter, IntPtr.Zero)) 19:42:33:957 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: if (StartDocPrinter(hPrinter, 1, di)) 19:42:33:961 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: if (StartPagePrinter(hPrinter)) 19:42:33:965 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: bSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten) 19:42:33:969 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: bSuccess: True 19:42:33:974 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: EndPagePrinter(hPrinter) 19:42:33:989 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: EndDocPrinter(hPrinter) 19:42:33:995 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: ClosePrinter(hPrinter) 19:42:33:998 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: return bSuccess 19:42:34:200 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: bSuccess = SendBytesToPrinter(szPrinterName, sNome, pUnmanagedBytes, nLength) 19:42:34:600 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: bSuccess: True 19:42:34:900 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: Marshal.FreeCoTaskMem(pUnmanagedBytes) 19:42:34:160 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: fileStream.Close() 19:42:34:190 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: fileStream.Dispose() 19:42:34:230 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: fileStream = null 19:42:34:270 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: return bSuccess 19:42:34:300 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: FINISH[0] 19:42:34:340 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: DEPOIS - RawPrinterHelper.SendFileToPrinter() 19:42:34:380 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: DEPOIS - bSucesso: True 19:42:34:420 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: IMPRESSAO BEM SUCEDIDA!
*** ATENÇÃO ***
Registro do Log da impressão automática, que foi realizada pelo Service NFe, nota 6970:
19:42:35:330 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: GERANDO PDF (MemoryStream) 35170705320808000170550010000069701000000874-nfe.pdf 19:42:39:359 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: GERANDO IMPRESSAO... wViaDanfe : 1 19:42:39:362 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: ANTES - RawPrinterHelper.SendFileToPrinter() 19:42:39:366 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: START[] 19:42:39:370 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: BinaryReader br = new BinaryReader(fileStream) 19:42:39:375 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: Byte[] bytes = new Byte[fileStream.Length] 19:42:39:379 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: IntPtr pUnmanagedBytes = new IntPtr(0) 19:42:39:383 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: int nLength 19:42:39:387 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: nLength = Convert.ToInt32(fileStream.Length) 19:42:39:390 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: bytes = br.ReadBytes(nLength) 19:42:39:394 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: pUnmanagedBytes = Marshal.AllocCoTaskMem(nLength) 19:42:39:398 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: Marshal.Copy(bytes, 0, pUnmanagedBytes, nLength) 19:42:39:402 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: START[] 19:42:39:405 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: di.pDocName..: Print RAW 35170705320808000170550010000069701000000874-nfe.pdf 19:42:39:409 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: di.pDataType.: RAW 19:42:39:413 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: szPrinterName: CutePDF Writer 19:42:39:417 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: sNome........: 35170705320808000170550010000069701000000874-nfe.pdf 19:42:39:421 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: if (OpenPrinter(szPrinterName.Normalize(), out hPrinter, IntPtr.Zero)) 19:42:39:433 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: if (StartDocPrinter(hPrinter, 1, di)) 19:42:39:437 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: if (StartPagePrinter(hPrinter)) 19:42:39:441 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: bSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten) 19:42:39:444 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: bSuccess: True 19:42:39:448 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: EndPagePrinter(hPrinter) 19:42:39:462 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: EndDocPrinter(hPrinter) 19:42:39:468 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: ClosePrinter(hPrinter) 19:42:39:472 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendBytesToPrinter Routine: PrintToPrinter Message: return bSuccess 19:42:39:476 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: bSuccess = SendBytesToPrinter(szPrinterName, sNome, pUnmanagedBytes, nLength) 19:42:39:480 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: bSuccess: True 19:42:39:484 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: Marshal.FreeCoTaskMem(pUnmanagedBytes) 19:42:39:489 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: fileStream.Close() 19:42:39:493 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: fileStream.Dispose() 19:42:39:496 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: fileStream = null 19:42:39:501 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: return bSuccess 19:42:39:504 == Class: NFe.Business.Classes.RawPrinterHelperMethod: SendStreamToPrinter Routine: PrintToPrinter Message: FINISH[0] 19:42:39:508 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: DEPOIS - RawPrinterHelper.SendFileToPrinter() 19:42:39:512 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: DEPOIS - bSucesso: True 19:42:39:515 == Class: NFe.Business.Classes.ImprimirDanfeMethod: imprimeDanfeRAW Routine: imprimeDanfe Message: IMPRESSAO BEM SUCEDIDA!
Informações Técnicas
Tabelas Utilizadas | VW50_NFE - Tabela Principal do Projeto Nota Fiscal Eletrônica, responsável por armazenar as informações relacionadas à Nota Fiscal Eletrônica (NFe). NFE_CONTROLE - Tabela responsável por armazenar as informações relacionadas ao Status da Nota Fiscal Eletrônica (NFe). |
Funções Envolvidas | Nota Fiscal Eletrônica de Entrada / Saída. Impressão do DANFE (Documento Auxiliar da Nota Fiscal Eletrônica). Transmissão de XML da Nota Fiscal Eletrônica. |
Sistemas Operacionais | Windows®/Linux® |