domingo, 29 de abril de 2012

ASP.NET - PRINT SCREEN DE UMA PÁGINA ASP.NET


Recentemente, deparei-me com a necessidade de retirar print screen de uma página em ASP.NET em um dado momento via código sem a interação do usuário.

Quem trabalha com o ASP.NET deve saber que todas as páginas visualizadas em um browser na verdade estão sendo executadas dentro do servidor.  Então retirar um print screen via código é uma tarefa mais complicada porque a execução do código irá em busca de uma página que está em execução no servidor ASP.NET onde a página se encontra e não realmente no browser ativo no momento.


Minha saída para este problema:  


Um aplicativo em separado estaria em execução na máquina cliente onde o browser está em execução.
Esse aplicativo se encarregaria de fazer um print screen da tela ativa salvando na página c:\temp, Em seguida, obteria esta imagem do diretório c:\temp e a salvaria em um arquivo pdf na própria pasta c:\temp. 
Quando houvesse a necessidade de realizar um print screen esse pequeno aplicativo seria acionado - executarservico seria setado em 1, fazendo o print screen da tela e gerando a imagem requisitada e salvando-a em arquivo pdf. Este pequeno aplicativo teria um timer que de 15 em 15 segundos verificaria
se o ExecutarServico na tabela está setado em 1 ou não. No momento em que o Executarservico estiver setado em 1 a imagem seria gerada e o arquivo pdf criado.

Utilizei o ASP.NET com o VB.Net para gerar o código.

Os imports associados a isso estão listados abaixo:

Imports System.IO
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Windows.Forms

Para gerar o print screen via código:

'Ler se ExecutarServico está setado em 1

 myCommand = New OleDbCommand("select ExecutarServico,linha from Parametros", myConnection)
ds = myCommand.ExecuteReader()

While ds.Read()

            sValor = ds.Item("ExecutarServico")
            sLinha = ds.Item("Linha")
         

End While

 'Se o valor padrão foi 1, dispara a cópia da imagem
 If sValor = "1" Then

            'Grava o nome do arquivo com a linha associada ao mesmo
            Dim sNomeArquivo = sLinha + "_" + DateTime.Now.ToString("yyMMddhhmmss") + ".jpg"
            arquivoWS.WriteLine("Captura de Tela iniciada... " & DateTime.Now)
            arquivoWS.Flush()

            Try


                Dim image As New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb)
                Dim g As Graphics = Graphics.FromImage(image)
                g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy)
                image.Save("c:\temp\" + sNomeArquivo, ImageFormat.Jpeg)


            Catch ex As Exception
                arquivoWS.WriteLine("Erro na Captura de Tela efetuada... " & DateTime.Now)
                arquivoWS.Flush()
            End Try
End If

Caso um erro ocorra na geração da imagem, o mesmo será gerado no arquivo de log criado.
      
A geração do arquivo pdf com a imagem criada é mostrado abaixo:


 'Recuperar o nome do arquivo de imagem na base de dados
        sSQL = "select ExecutarServico,nomearquivo,diretorio from Parametros where linha = '" & sLinhaSelecionada & "' and ROTA =  '" & sRotaSelecionada & "' and computador = '" & shostname & "'"
        myCommand = New OleDbCommand(sSQL, myConnection)
        ds = myCommand.ExecuteReader()

        'Recuperar nome e caminho do arquivo na base de dadps
        While ds.Read()

            sLimpaArquivoJPG = ds.Item("nomearquivo")
            sDiretorioArquivo = ds.Item("diretorio")

        End While

        ds.Close()


'Gerar arquivo PDF com a imagem criada
        ''Gravar a imagem dentro do arquivo PDF
        ''baseado em : http://www.dotnetspark.com/kb/1364-add-image-to-pdf-document-using-itextsharp.aspx
        Dim imageFilePath As String = sDiretorioArquivo + sLimpaArquivoJPG
        Dim test As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(imageFilePath)


        'Resize image depend upon your need
        'logo.ScaleToFit(280.0F, 260.0F)
        test.ScaleToFit(600.0F, 600.0F)

        'Give space before image
        test.SpacingBefore = 30.0F

        'Give some space after the image
        test.SpacingAfter = 1.0F
        test.Alignment = Element.ALIGN_CENTER

        Dim hoje As DateTime = DateTime.Now
        Dim arquivoPDF = sLinhaSelecionada & "_" & sRotaSelecionada & "_" & DateTime.Now.ToString("yyMMddhhmmss") & ".pdf"


        'Grava o arquivo PDF no modo retrato
        Dim doc As New Document(iTextSharp.text.PageSize.A4_LANDSCAPE, 2, 2, 42, 42)
        PdfWriter.GetInstance(doc, New FileStream(sDiretorioArquivo + "\" & arquivoPDF, FileMode.Create))
        doc.Open()
        doc.Add(test)
        doc.Close()


Desse modo, teremos um arquivo pdf com a imagem da tela desejada em seu interior.


Sucesso a todos!

quinta-feira, 26 de abril de 2012

CONFIGURANDO IIS PARA O WINDOWS 7

Recentemente, ao trabalhar com o Windows 7 deparei com o problema relativo a se fazer o registro do IIS para o ASP gerando o seguinte erro:

An error has occurred: 0x8007b799
You must have administrative rights on this machine in order to run this tool.


O que ocorre: É necessário um novo tipo de configuração para o Windows 7. Para corrigir esse tipo de erro imediatamente, você precisa desativar o seu nível de UAC :

Start > Control Panel > System and Security > Action Center > Choose Your UAC Level - Set this to Never Notify;

Após alterar o nível, você deve reiniciar o computador e adentrar novamente com usuário e senha.

Após isso, ao tentar novamente registrar o IIS na máquina você terá sucesso:
 



Além disso, ao tentar se publicar uma página que tenha sido criada no Visual Studio 2010 com o ASP.NET em uma máquina com o Windows 7 será necessário antes de tentar publicar e após registrar o IIS com sucesso instalar o IIS 6 Metabase. 


O IIS 6 Metabase pode ser obtido na página da Microsoft.


DANFE EM VISUAL STUDIO 2010 E CRYSTAL REPORTS 2010



Olá, pessoal!


Venho através desta informar que a DANFE desenvolvida em VB.NET está agora atualizada para a versão mais nova do Visual Studio, o Visual Studio 2010.

Os relatórios da DANFE também foram atualizados para a nova versão do Crystal Reports.

A partir da versão 2010 do Visual Studio o Crystal Reports deixou de ser incluído com a aplicação. Para instalar o Crystal Reports você deve ir até a páginada SAP Bussines e baixar a versão disponível para integração com o Visual Studio 2010:

http://www.businessobjects.com/jump/xi/crvs2010/us2_default.asp

A opção a ser selecionada é a primeira da lista desta página e mostrada abaixo:

SAP Crystal Reports, version for Visual Studio 2010 - Standard
Standard EXE installation package which installs the software into the Visual Studio IDE.

O arquivo possui 295MB de tamanho e deve ser instalado a fim de que você possa criar relatório com o Crystal Reports no Visual Studio 2010.

O site oficial do Visual Studio 2010 é apresentado abaixo:

http://www.microsoft.com/visualstudio/pt-br/home-produtos



A DANFE possui a partir de agora uma função a mais que permite selecionar o modo de impressão da mesma, retrato ou paisagem. As versões antigas somente realizam a impressão em modo retrato e precisavam ter o relatório em Crystal Reports configurado a fim de que a impressão em paisagem pudesse ser possível. Com a nova funcionalidade um relatório no modo paisagem em Crystal Reports foi incluso ao código-fonte a fim de permitir que o mesmo seja impresso em modo paisagem.

Código que faz com que o relatório seja impresso em modo paisagem:


        'DESCOMENTAR AQUI PARA VER A DANFE INICIAL 07/11/2010 23:05
        'DANFE INICIAL
        Dim myRelatorio As New Danfe_paisagem()
        'Mudar formato para Paisagem
        myRelatorio.PrintOptions.PaperOrientation = PaperOrientation.Landscape
        myRelatorio.SetDataSource(myDs1)
        Me.CrvXml.ReportSource = myRelatorio
        Me.CrvXml.Visible = True

Danfe_paisagem(0 é o nome do novo relatório em Crystal Reports para impressão da DANFE em modo de paisagem.

Lembro a todos que o código-fonte desta DANFE continua a ser comercializado para os que necessitarem disto para o desenvolvimento da nota fiscal eletrônica.

Também vale ressaltar que a parte de leitura do XML deste aplicativo pode ser utilizado para se obter os dados de qualquer XML de nota fiscal eletrônica a fim de que os mesmos possam ser acrescentados em uma tabela de qualquer base de dados - SQL SERVER, MUSQL, ORACLE, INFORMIX, etc.

Sucesso a todos!!

By
Leonardo Metelys
Desenvolvedor ASP.NET / VB.NET / C#.NET / Delphi

segunda-feira, 28 de março de 2011

GERANDO O XML DA NFe EM VISUAL BASIC 6


Olá, Pessoal!! Vamos responder a algumas perguntas acercas de linguagens como Visual Basic 6 e Delphi 7. Sim, para estas duas linguagens se você não tiver nenhum componente pronto para criar o XML de sua NFe, deve fazer todo o código na unha, linha por linha!!!


Basicamente é nisso que se resume para muitos a criação do XML da NFe eletrônica, já que há grande variações de empresa para empresa - para não dizer de uma área de TI para outra área de TI - em diferentes empresas. Isso também se adequa aos padrões necessários a serem adotados para cada empresa em relação à sua atividade comercial: há certas peculiaridades para o grupo de automotivos que não existem para as empresas de refrigerantes, assim como o XML de uma indústria de componentes eletrônicos diverge de uma indústria de alimentos. Se sua empresa gera mais de dez notas fiscais com quinze itens cada uma por dia fica difícil você usar os aplicativos gratuitos fornecidos pelo site do SPED ou a Sefaz de seu estado.



Antes de mais nada: É CRUCIAL QUE VOCÊ ENTENDA DE XML E QUE TENHA O MANUAL DO CONTRIBUENTE PARA A GERAÇÃO DA NOTA FISCAL ELETRÔNICA! ANTES DE USAR O CÓDIGO ABAIXO, LEIA TODO O MANUAL E ENTENDA CADA TAG A SER GERADA PARA A SUA NOTA FISCAL ELETRÔNICA. TAMBÉM É CRUCIAL QUE VOCÊ ESTEJA PRÓXIMO A ÁREA FISCAL E ENTENDA CADA TAG QUE DEVA SER GERADA PARA A SUA EMPRESA E PARA A ATIVIDADE COMERCIAL ONDE A MESMA ESTÁ INSERIDA. SEM ISSO, SEU TRABALHO SERÁ EM VÃO E VOCÊ DEVERÁ FAZER NOVOS AJUSTES POSTERIORES PARA INSERIR ALGUMA TAG QUE ESQUECEU E É NECESSÁRIA!!



O exemplo abaixo é um dos muitos existentes na internet e foi extraído do site do VB Mania a título ilustrativo. O código completo não está sendo fornecido porque como todo bom desenvolvedor sabe bolo pronto nunca sai no ponto!

ATENÇÃO: O código abaixo ficará estranho por estar sendo postado aqui. Os links de XML são realmente mal-interpretados pelo blogger e precisam ser corrigidos linha a linha. Não farei isso aqui. Se desejar, consulte o link para a página onde os mesmos foram postados no VB Mania ou pode baixar do link abaixo (por enquanto!):


http://www.4shared.com/document/ilBKUDPt/XML_em_VB6.html



Vamos lá:


'Abre o Arquivo para Criação do XML


'----------------------------------


Open strArquivo For Output As #1


'Cabeçalho do Arquivo


'--------------------

With rstCabec .MoveFirst ' Print #1, "" 'Chr(239) & Chr(187) & Chr(191) Print #1, "" & " Print #1, "

'Chave da NFe '-------------------- Print #1, " 'Cabeçalho da NFe '------------------- Print #1, "" Print #1, " " & .Fields("xIdUF").Value & "" Print #1, " " & "0" & .Fields("xRandomico").Value & "" Print #1, " " & UCase(.Fields("xNatureza").Value) & "" Print #1, " " & .Fields("xFormaPagto").Value & "" Print #1, " " & .Fields("xModelo").Value & "" Print #1, " " & .Fields("xSerie").Value & "" Print #1, " " & .Fields("xidNFe").Value & "" Print #1, " " & .Fields("xDataEntradaSaida").Value & "" Print #1, " " & .Fields("xDataEntradaSaida").Value & "" Print #1, " " & .Fields("xIdTipoNF").Value & "" Print #1, " " & .Fields("xIdMunicipio").Value & "" Print #1, " " & 1 & "" Print #1, " " & .Fields("xTipoEmissao").Value & "" Print #1, " " & Right(strChaveNFe, 1) & "" Print #1, " " & "2" & "" Print #1, " " & .Fields("xFinalidade").Value & "" Print #1, " " & "0" & "" Print #1, " " & "1.10" & "" Print #1, "" '---------------------------------------------------------------------------------------------------- 'Dados Emitente '---------------------------------------------------------------------------------------------------- Print #1, "" Print #1, " " & .Fields("xCNPJ") & "" Print #1, " " & .Fields("xEmitRazaoSocial").Value & "" Print #1, " " Print #1, " " & .Fields("xEmitLogradouro").Value & "" Print #1, " " & .Fields("xEmitNumero").Value & "" Print #1, " " & .Fields("xEmitBairro").Value & "" Print #1, " " & .Fields("xEmitIdMunicipio").Value & "" Print #1, " " & .Fields("xEmitMunicipio").Value & "" Print #1, " " & .Fields("xEmpresaUF").Value & "" Print #1, " " & .Fields("xEmitCEP").Value & "" Print #1, " " & "1058" & "" Print #1, " " & "Brasil" & "" Print #1, " " & .Fields("xEmitTelefone").Value & "" Print #1, " " Print #1, " " & .Fields("xEmitIE").Value & "" Print #1, "" '---------------------------------------------------------------------------------------------------- 'Dados Destinatario '---------------------------------------------------------------------------------------------------- Print #1, "" Print #1, " " & .Fields("xCNPJ") & "" Print #1, " " & .Fields("xDestRazaoSocial").Value & "" Print #1, " " Print #1, " " & .Fields("xDestLogradouro").Value & "" Print #1, " " & .Fields("xDestNumero").Value & "" If Len(.Fields("xDestComplemento").Value) > 0 Then Print #1, " " & .Fields("xDestComplemento").Value & "" End If Print #1, " " & .Fields("xDestBairro").Value & "" Print #1, " " & .Fields("xDestIdMunicipio").Value & "" Print #1, " " & .Fields("xDestMunicipio").Value & "" Print #1, " " & .Fields("xDestUF").Value & "" Print #1, " " & .Fields("xDestCEP").Value & "" Print #1, " " & .Fields("xDestIdPais") & "" Print #1, " " & .Fields("xDestPais") & "" Print #1, " " & .Fields("xDestTelefone").Value & "" Print #1, " " Print #1, " " & .Fields("xDestIE").Value & "" If Len(.Fields("xDestSuframa").Value) > 0 Then Print #1, " " & .Fields("xDestSuframa").Value & "" End If If Len(.Fields("xDestCNAE").Value) > 0 Then Print #1, " " & .Fields("xDestCNAE").Value & "" End If Print #1, "" '---------------------------------------------------------------------------------------------------- End With 'Dados dos Produtos '------------------ With rstItem .MoveFirst Do While .EOF = False DoEvents Print #1, "" Print #1, " " Print #1, " " & .Fields("xCodigo").Value & "" Print #1, " " & .Fields("xCodigoEAN").Value & "" Print #1, " " & .Fields("xDescrProduto").Value & "" If Len(Replace(.Fields("xCodigoNCM").Value, ".", "")) > 0 Then Print #1, " " & .Fields("xCodigoNCM").Value & "" End If Print #1, " " & "0" & "" Print #1, " " & .Fields("xCFOP").Value & "" Print #1, " " & .Fields("xUnidade").Value & "" Print #1, " " & .Fields("xQuantidade").Value & "" Print #1, " " & .Fields("xPrecoUnitario").Value & "" Print #1, " " & .Fields("xTotalProduto").Value & "" Print #1, " " & .Fields("xCodigoEAN").Value & "" Print #1, " " & .Fields("xUnidade").Value & "" Print #1, " " & .Fields("xQuantidade").Value & "" Print #1, " " & .Fields("xPrecoUnitario").Value & "" 'Dados da Importação '-------------------- If Len(rstCabec.Fields("xDINumero").Value) > 0 Then Print #1, " " Print #1, " " & rstCabec.Fields("xDINumero").Value & "" ' & .Fields("xNumeroDI") & "" Print #1, " " & rstCabec.Fields("xDIDataRegistro").Value & "" ' & Format(.Fields("xDataRegistroDI"), "YYYY-mm-dd") & "" Print #1, " " & rstCabec.Fields("xDILocalDesembaraco").Value & "" ' & .Fields("xLocalDesemb") & "" Print #1, " " & rstCabec.Fields("xDIUFDesembaraco").Value & "" ' & .Fields("xUFDesemb") & "" Print #1, " " & rstCabec.Fields("xDIDataDesembaraco").Value & "" ' & Format(.Fields("xDataDesemb"), "YYYY-mm-dd") & "" Print #1, " " & rstCabec.Fields("xDICodExportador").Value & "" ' & rstCabec.Fields("xCodExportador") & "" If Len(rstCabec.Fields("xNumeroAD").Value) > 0 Then Print #1, " " Print #1, " " & rstCabec.Fields("xNumeroAD").Value & "" ' & .Fields("xNumeroAdicao").Value & "" Print #1, " " & rstCabec.Fields("xItemAD").Value & "" '& .Fields("xSequenciaAdicao").Value & "" Print #1, " " & rstCabec.Fields("xFabricanteAD").Value & "" '& .Fields("xCodFabricante").Value & "" 'Verifica se tem desconto na DI '------------------------------ If rstCabec.Fields("xDescontoAD") > 0 Then Print #1, " " & Replace(Format(rstCabec.Fields("xDescontoAD"), "0.00"), ",", ".") & "" End If Print #1, " " '------------------------------ End If Print #1, " " End If Print #1, " " '-------------------------------------------------------------------------------------------------------- 'Destacamento dos Impostos '------------------------- Print #1, " " 'ICMS '--------- Print #1, " " Print #1, " Print #1, " " & rstCabec.Fields("xICMSOrigem") & "" Print #1, " " & .Fields("xSitTrib").Value & "" If .Fields("xSitTrib").Value = "00" Then 'Tributada Integralmente Print #1, " " & rstCabec.Fields("xICMS_Modalidade").Value & "" Print #1, " " & rstCabec.Fields("xI

O código acima pode também ser encontrado em:


http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=342709


Sucesso mais uma vez a todos!!




By


Leonardo Metelys


leo_florindo@hotmail.com

terça-feira, 15 de março de 2011

DANFE: LINHA DE CHAMADA & UTILIDADES

Olá, pessoal!

Ao longo dos últimos dois anos este pequeno projeto sofreu muitas melhorias que evoluíram com a necessidade daqueles que necessitavam desta parte do longo projeto da NF-e.

Aqui farei um resumo das melhorias de implementação constantes neste projeto de DANFE, que deve ser comum a maioria dos projetos disponíveis no mercado. O diferencial deste projeto é que esta venda não é destinada ao consumidor final, mas a desenvolvedores que necessitam de conhecimentos sobre a Nf-e eletrônica e necessitam desenvolver uma solução mais própria do que um pacote fechado possa oferecer - por isso coloco à venda os fontes do aplicativo.

A versatilidade desse aplicativo também colabora para o desenvolvimento de outros possívels utilitários para a Nf-e. Por exemplo, o mesmo código-fonte utilizado para a leitura do XML na geração da DANFE pode ser reaproveitado para criar-se um módulo de leitura para qualquer arquivo XML de nota fiscal eletrônica o que facilitará no futuro a entrada de notas fiscais em sua base de dados. Com pequenas alterações, você conseguirá desenvolver um bom leitor de arquivos XML de notas fiscais eletrônicas.


Os fontes de minha DANFE ficaram mais fáceis de manipular com a criação de um aplicativo em LINHA DE CHAMADA, que permite que esta DANFE possa ser utilizada com outras linguagens de programação, como DELPHI, C# ou Visual Basic 6.


A chamada do aplicativo é como mostrado abaixo:

Danfechamada CaminhoXML CaminhoPDF NomePDF CaminhoLogotipo

Onde:
CaminhoXML -> Indica a pasta onde se encontra o arquivo XML a ser fornecido para a geração da DANFE
CaminhoPDF -> Indica o caminho onde deve ser gravado o arquivo PDF a ser gerado
NomePDF -> Indica o nome do arquivo PDF a ser gerado
CaminhoLogotipo -> Indica o caminho e o nome do logotipo que devem ser inseridos na impressão da DANFE

Exemplo:

No Iniciar -> Executar do Windows XP ou Windows 7:

C:\Nfe\DanfeChamada.exe C:\Nfe\Nfe.xml C:\Nfe Danfe123 C:\Nfe\Imagem1.jpg

No CMD.EXE:
Mude para a pasta c:\nfe. Em seguida, digite a linha conforme abaixo:
Danfechamada c:\nfe\nfe.xml c:\nfe\ notadanfe2.pdf c:\nfe\imagem2.jpg
Troque, por exemplo, os parâmetros para a gravação do pdf e a imagem para a imagem1.jpg.


Recentemente fiz a venda somente do aplicativo compilado e o mesmo também pode estar à disposição, desde que você siga todos os passos para sua utilização no momento da compra. Contudo, isso me isenta de erros que possam vir a ocorrer devido a não-aquisição do código-fonte do projeto. A limitação imposta a este tipo de aquisição é descrita no momento da compra por parte do cliente.

No código-fonte há dois modos de impressão da DANFE. Um que diz respeito a DANFE somente com uma página e o outro que diz respeito a impressão da DANFE COMPLEMENTAR com mais de doze itens. O código da DANFE COMPLEMENTAR geralmente estará comentando no interior do código-fonte. Caso deseje imprimir a DANFE COMPLEMENTAR deve descomentar as linhas que geram o relatório e comentar as que geram a primeira página da DANFE. Geralmente tenho orientado que se criem dois botões, um que imprime a capa da DANFE (a primeira página) e outro que, caso a DANFE possua mais de doze itens habilite o botão e imprima a DANFE EM MODO COMPLEMENTAR.


Dependências do aplicativo:

1. Net Framework 3.5
2. Crystal Reports Basic for Visual Studio 2008 (x86,x64)
3. Microsoft Visual Studio 2008 Reportr Viewer
4. SQL Server Compact3.5
5. Visual Studio Tools for the Office system 3.0 Runtime




Os conhecimentos necessários para a utilização do código-fonte:

1) Conhecimentos em Vb.NET 2008
2) Conhecimentos em Crystal Reports
3) Conhecimentos de instalação de requisitos de aplicativos. Como um bom técnico de suporte e um bom desenvolvedor sabem isso é
estritamente necessário para desenvolvedores que entendam a diferente entre instalar uma aplicação em um ambiente cliente-servidor
e um ambiente de servidor. Você deve compreender como criar um pacote de instalação do código-fonte do aplicativo e instalar o mesmo
com sucesso em uma máquina-cliente bem como entender que este mesmo pacote não é o mesmo para uma implementação em um servidor.

Abril pode ser o último prazo para adoção da nova NFe.

Sucesso a todos!!

By

Leonardo Metelys

leo_florindo@hotmail.com

terça-feira, 21 de dezembro de 2010

DANFE EM VB.NET 2008: NOVAS MELHORIAS

Seguem abaixo algumas da novas melhorias implementadas no projeto da DANFE em VB.NET 2008:


1 - Geração da DANFE em formato PDF com a indicação de uma pasta para
gravação da mesma
2 - Inclusão do logotipo da empresa na chamada da função de DANFE com a indicação do caminho onde esta imagem se encontra
3 - DANFE gerada em modo de uma página e com os complementos de itens, caso o número de itens extrapole a primeira página da DANFE
4 - Facilidade no manuseio do código-fonte, totalmente escrito em VB.NET e relatório gerado em Crystal Reports totalmente adaptável a outras
aplicações caso você deseje utilizar o código-fonte do relatório com alguma outra linguagem de programação - alguns clientes conseguiram
realizar isso com sucesso em mais de uma de suas aplicações.
5 - O código-fonte pode ser empregado de vários formas inclusive com linha de chamada para que você possa utilizá-lo com outras linguagens -
como Delphi 7 ou Visual Basic 6, por exemplo - sem alterar a linguagem nativa do mesmo que é em VB.NET. A versatilidade do VB.NET permite
que você utilize o código-fonte de váras maneiras e em várias situações.

Esta DANFE já está padronizada para o Manual 4.01 da Nfe eletrônica. O código XML a ser lido pode ser tanto o 2.0 quanto o antigo.


Devido a má-fé de algumas pessoas não estou mais disponibilizando testes do aplicativo.
Em minhas últimas experiências consegui comprovar que os que receberam os arquivos estavam trabalhando com ofuscagem na
tentativa de visualizar o código-fonte. Também tive problemas após realizar uma venda com um cliente de uma loja de software
que alegou problemas de instalação simplesmente para não pagar a última parcela acordada e que já está utilizando a Danfe em seus aplicativos.

Também não há parceria com qualquer loja de software ou empresa de software para a venda do código-fonte desta DANFE. Se você adquirir este código-fonte das mãos de terceiros saiba que não há parceriais existentes com qualquer parceiro. A venda destes fontes está sendo realizada a baixo custo com o objetivo de que também o conhecimento seja expandido para mais pessoas e não com o objetivo principal de ganho financeiro que faz com que muitas pessoas enganem e mintam acerca do trabalho de outras pessoas.

Por tudo isso, lamento que o mau-comportamento induzido de alguns prejudiquem o bom trabalho adquirido por outros.

Os conhecimentos necessários para a utilização do código-fonte:

1) Conhecimentos em Vb.NET 2008
2) Conhecimentos em Crystal Reports
3) Conhecimentos de instalação de requisitos de aplicativos. Como um bom técnico de suporte e um bom desenvolvedor sabem isso é
estritamente necessário para desenvolvedores que entendam a diferente entre instalar uma aplicação em um ambiente cliente-servidor
e um ambiente de servidor. Você deve compreender como criar um pacote de instalação do código-fonte do aplicativo e instalar o mesmo
com sucesso em uma máquina-cliente bem como entender que este mesmo pacote não é o mesmo para uma implementação em um servidor.


Lembramos que este produto requer conhecimentos tecnológicos específicos cujo o entendimento é necessário para que o mesmo possa ser manipulado adequadamente.

O preço para a aquisição da DANFE com o código-fonte incluído é de R$ 350,00 (Trezentos e cinquenta reais).

Caso deseje adquirir os fontes, faça o depósito em dinheiro na seguinte conta corrente:

Banco:
Bradesco S/A
Agência:
2690-5
Conta Corrente: 10414-0
Nome do favorecido:
Manoel Leonardo Metelys Florindo

O código-fonte será enviado a você compactado em winrar com senha após a confirmação de seu depósito. Peço que, se possível, enviem-me uma cópia em PDF de seu comprovante de depósito a fim de que o processo possa ser agilizado para o e-mail leo_florindo@hotmail.com.

quarta-feira, 29 de setembro de 2010

GERAR A DANFE DA NF-e em PDF VIA CÓDIGO-FONTE

Olá, amigos!!

Para aqueles que já adquiriram o pacote da DANFE aqui comigo, eis aqui mais um quitute para ser acrescentado ao código-fonte da mesma: A geração da DANFE no formato PDF via código-fonte!


Para quem já possui o projeto, basta adicionar as linhas abaixo para que o próprio Crystal Reports realize a geração de uma cópia da DANFE no formato em PDF via código-fonte quando a DANFE está sendo processada.

O código abaixo cria uma cópia da DANFE gerada salvando-a na pasta indicada
no formato PDF, evitando assim qualquer interação do usuário para que uma cópia em PDF da DANFE seja criada - basta acessar a pasta de trabalho que uma cópia da DANFE gerada estará lá no formato em PDF, prontinha para ser enviada aos clientes ou fornecedores!!!



Agora, em que posição colocar este código deixo por conta dos desenvolvedores!!


'Data: 29/09/2010 10:30h
'Geração da DANFE em formato PDF
Dim cryRpt As New ReportDocument
Dim CrExportOptions As ExportOptions
Dim CrDiskFileDestinationOptions As New _
DiskFileDestinationOptions()
Dim CrFormatTypeOptions As New PdfRtfWordFormatOptions()
CrDiskFileDestinationOptions.DiskFileName = "c:\Nfe\NotaNfe.pdf"
'CrExportOptions = cryRpt.ExportOptions
CrExportOptions = myRelatorio.ExportOptions

With CrExportOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
.DestinationOptions = CrDiskFileDestinationOptions
.FormatOptions = CrFormatTypeOptions
End With
myRelatorio.Export()



Sucesso a todos em 2010!!


By
Leonardo Metelys

UM APLICATIVO PARA LEITURA DEVOCIONAL ANUAL DA BIBLIA EM ANDROID

Olá, pessoal!  Este novo projeto foi criado em Visual Studio 2019 em C#.Net com o Xamarin. Já está disponível no Google Play para vocês baix...