quinta-feira, 18 de janeiro de 2018
NFe E NFCe : UM PROJETO FREE EM VISUAL STUDIO 2012 / 2015
Olá, pessoal!
Muitos projetos tem sido uma mão na roda para quem quer desenvolver a NFe eletrônica e até mesmo a NFCe eletrônica.
Hoje irei compartilha aqui o link dos fontes de um destes projetos que é o Zeus.
O Zeus é um projeto em Visual Studio em C#. O mesmo pode ser utilizado tanto no Visual Studio 2012 como no Visual Studio 2015. Ele possui tanto a NFE eletrônica com a NFCe e basta a você fornecer o XML.
O Zeus utiliza o Fast Report que infelizmente para o .NET é uma ferramenta paga. Mas você pode baixar o trial para dar uma analisada na aplicação.
Você pode baixar a versão demo do Fast Report neste link: https://www.fast-report.com/pt/download/public_download/FRNetDemo.msi
Após a instalação do Fast Report você pode fazer a abertura dos fontes do projeto Zeus de modo apropriado.
A tela da aplicação após a compilação é mostrada abaixo:
Utilize o botão importar XML para carregar qualquer XML de Nfe que possua:
O botão DANFE NFCe cont. offline permite a você carregar um XML de qualquer NFe e ver sua DANFE.
Como você pode ver basta dar um XML qualquer de uma NFe eletrônica ou NFCe que a mesma poderá ser processada pela aplicação.
A versão ainda é a 3.0 mas este projeto em Visual Studio C# é bem apropriado para quem deseja trabalhar com a Nfe eletrônica e a NFC-e.
Você deverá fazer algumas horas de investimento em Visual Studio C#.
Abaixo os links para download:
Fast Report NET
Projeto ZEUS.NET
Sucesso a todos em 2018!
sexta-feira, 1 de dezembro de 2017
USANDO O VISUAL STUDIO 2015
O Visual Studio 2015 têm muitas ferramentas novas. A melhor delas é a que foi liberada com o Update 3 e que acrescenta o Xamarin ao Visual Studio 2015 e que permite a criação de aplicativos para celulares em Android com o uso da linguagem C#.NET.
A configuração do uso do Android pode ser realizada diretamente do Tools do Visual Studio 2015.
O download do Android pode ser um pouco demorado. Mas é importante ressaltar que as configurações essencias para o desenvolvimento de APP´s necessitam de certo tempo no uso do Visual Studio 2015. Você deve ir até Tools -> Options e customizar de modo adequado as patas de utilização do Xamarin e do Android de modo adequado com as localizações do Java Development Kit, Android SDK e do Android NDK.
Também é importante ressaltar que o Visual Studio 2015 é uma ferramenta que depende da Internet porque suas updates assim que se fazem disponíveis são informadas na própria aplicação. A ferramenta NuGet Package Manager é importantíssima para estas novas adequações. Através do Manage NuGEt Packages Solution é possível encontrar e adicionar novas referências às aplicações que você criar.
Ao preparar uma aplicação para celulares você pode criar o arquivo APK facilmente. Para criar um APK você deve clicar com o botão direito do mouse em seu projeto e escolher a opção Arquive.
É importante lembrar que para isto é necessário desativar certas opções em Properties da sua aplicação para que o APK possa ser criado com sucesso.
Sempre que for criar um APK o modo Use Shared Runtimes deve ser desabilitado. Então você deve desmarcar estas duas opções mostradas abaixo:
Feito isto já é possível criar com sucesso um arquivo APK da sua aplicação e você pode clicar em Arquive tranquilamente...
Quando o arquivo estiver pronto você terá opções na parte debaixo da tela para verificar o arquivo. A mais importante delas é a Distribute que permite a você realizar a distribuiçõa do seu APK para celulares.
Ao clicar em Distribute você verá duas opções para distribuir seu APK: AD Hoc e Google Play. A opção Google Play deve ser usada somente se você já for lançar seu aplicativo no serviço da Google. Se quiser somente testar sua aplicação em um celular você deve usar a opção Ad Hoc.
Ao clicar em Ad Hoc você deve indicar a assinatura digital de seu arquivo APK. Você pode criar uma simplesmente clicando no botão "+" verde ou selecionar uma existente na lista e, em seguida, clicar em Save As...
O passo seguinte é a indicação da pasta onde o arquivo APK será salvo e a indicação do seu nome. Você pode alterar o nome do arquivo e o local onde o mesmo será salvo
Quando clicar em Salvar a senha da sua assinatura será solicitada. Informe a senha corretamente e o arquivo será criado na pasta indicada.
Atenção: Lembre-se que após finalizar a criação do APK e quiser testar novamente sua aplicação você deve reativar a opção Use Shared Runtime.
Todo este aparato disponível no Visual Studio 2015 necessita de tempo para ser instalado e consome algumas horas de paciência para ser configurado corretamente. Mas o investimento é válido porque o Visual Studio 2015 é uma excelente ferramenta de desenvolvimento.
Sucesso a todos!!
sexta-feira, 14 de agosto de 2015
PESQUISA DE PALAVRAS EM ARQUIVOS PDF
Uma das atividades mais corriqueiras se você trabalha com a Nfe eletrônica é tentar encontrar itens vendidos para um fornecedor ou mesmo saber quantas vendas foram efetuadas a um fornecedor em determinado ano.
Isso pode se tornar bem simples se você mantêm de maneira organizada as pastas com as DANFE´s enviadas e os registros destas ditas DANFE´s em pdf. Basta criar um aplicativo simples em ASP.NET com alguns comboxes para cada ano, um textbox e um botão.
Aqui vai abaixo um código-fonte em ASP.NET VB.NET que realiza a busca de palavras em PDF´s organizados em pastas anuais. Trata-se de um utilitário que é uma mão na roda para quem necessita de informações rapidamente.
A rotina abaixo foi criada no Visual Studio 2012 Versão 11.0.5 com o Net Framework 4.5
Imports System.Runtime
Imports System.IO
Protected Sub PesquisarPDF_Click(sender As Object, e As EventArgs) Handles Button2.Click
oFileInfoCollection = DirDiretorio.GetFiles("*.pdf")
'### Lista somente os PDFps
Stexto = ""
For i = 0 To oFileInfoCollection.Length() - 1
oFileInfo = oFileInfoCollection.GetValue(i)
'Abrir cada arquivo PDF e extrair o texto do mesmo
Stexto = PesquisanoPDF(oFileInfo.Name)
'Pesquisar a Palavra
Dim index As Integer = Stexto.IndexOf(TxtPesq.Text)
If index >= 0 Then
Dim index As Integer = Stexto.IndexOf(TxtPesq.Text)
If index >= 0 Then
Dim getTexto As String = Stexto.Substring(index, Stexto.IndexOf(".", index + 85) - index - 5)
' String is in file, starting at character "index"
TxtResposta.Text = TxtResposta.Text + "Texto presente no arquivo: " + oFileInfo.Name + ". Extrato do texto: " + getTexto + "." + vbCrLf
End If
Next
TxtResposta.Enabled = True
TxtResposta.Focus()
End Sub
Public Function PesquisanoPDF(PdfFileName As String) As String
Dim sArquivo As String = ""
'Para tornar a consulta mais rápida, seperam-se os pdf em pastas de anos
If Chk2011.Checked = True Then
sArquivo = "\\172.16.0.25\Nfe\2011\" + PdfFileName
End If
If Chk2012.Checked = True Then
sArquivo = "\\172.16.0.25\Nfe\2012\" + PdfFileName
End If
If Chk2013.Checked = True Then
sArquivo = "\\172.16.0.25\Nfe\2013\" + PdfFileName
End If
If Chk2014.Checked = True Then
sArquivo = "\\172.16.0.25\Nfe\2014\" + PdfFileName
End If
If Chk2015.Checked = True Then
sArquivo = "\\172.16.0.25\Nfe\2015\" + PdfFileName
End If
Dim oReader As New iTextSharp.text.pdf.PdfReader(sArquivo)
Dim sOut = ""
For i = 1 To oReader.NumberOfPages
Dim its As New iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy
Dim its As New iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy
sOut &= iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(oReader, i, its)
Next
Next
Return sOut
End Function
Sucesso a todos!
By
Leonardo Metelys
sexta-feira, 28 de fevereiro de 2014
GERAR O ARQUIVO XML PARA MATRIZ DE TRIBUTAÇÃO DO IMPORTADOR
Olá, Pessoal!
O código abaixo faz a geração de dados para a MATRIZ DE TRIBUTAÇÃO DO IMPORTADOR, novo serviço disponível no site da Sefaz de alguns estados brasileiros.
Este código-fonte está em VISUAL STUDIO 2012 para VB.NET e já dá uma idéia de como gerar o XML para atender aos requesitos da Sefaz.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
Catch ex As Exception
End Try
Dim Ano As String = ""
Dim Mes As String = ""
Dim Dia As String = ""
Dim sDataIni As String = Now
Dim myConnectionMatrix As MySqlConnection
Dim myCommand2IM As MySqlCommand
Dim dsR As MySqlDataReader
Ano = Trim(Replace(Mid(sDataIni, 7, 4), "/", ""))
Mes = Trim(Replace(Mid(sDataIni, 4, 2), "/", ""))
Dia = Trim(Replace(Mid(sDataIni, 1, 2), "/", ""))
sInicio = Ano + "-" + Mes + "-" + Dia
sTimes = CStr(Now)
sHora = Mid(sTimes, 12, 8)
Dim sDataGeracao As String = Ano + "-" + Mes + "-" + Dia + " " + sHora
myConnectionMatrix = New MySqlConnection("server=192.168.40.65; user id=root; password=3007722108; database=orca; pooling=false;")
myConnectionMatrix.Open()
Dim myCommandsEQ As MySqlCommand
Dim sSequencia As String = ""
sSQL = "SELECT ifnull(count(sequencial),0) FROM GERARXML"
myCommandsEQ = New MySqlCommand(sSQL, myConnectionMatrix)
dsR = myCommandsEQ.ExecuteReader
If dsR.Read() Then
sSequencia = dsR(0)
End If
dsR.Close()
sSequencia = sSequencia + 1
'If Len(sSequencia) = 1 Then
' sNumeroMatrizDi = "0000000000000" + sSequencia
' ElseIf Len(sSequencia) = 2 Then
'sNumeroMatrizDi = "000000000000" + sSequencia
'ElseIf Len(sSequencia) = 3 Then
'sNumeroMatrizDi = "00000000000" + sSequencia
'ElseIf Len(sSequencia) = 4 Then
'sNumeroMatrizDi = "0000000000" + sSequencia
'End If
'Gerar sequencial da XML
sSQL = "INSERT INTO GERARXML VALUES(" & CInt(sSequencia) & ",'" & sDataGeracao & "','" & sNumeroMatrizDi & "')"
'Pega os valores das data definidas dentro da tabela padrão
myCommand2IM = New MySqlCommand(sSQL, myConnectionMatrix)
dsR = myCommand2IM.ExecuteReader
dsR.Close()
'Ler os dados
sSQL = "SELECT * FROM matriztrib WHERE DATAREGISTRO = '" & sInicio & "' ORDER BY CODPROD"
'Pega os valores das data definidas dentro da tabela padrão
myCommand2IM = New MySqlCommand(sSQL, myConnectionMatrix)
dsR = myCommand2IM.ExecuteReader
Dim sInicioBenf As String = ""
Dim sFimBenef As String = ""
Dim sImportador As String = ""
'Gerar o XML de cada item
'Abre o Arquivo para Criação do XML
'----------------------------------
'sNumeroMatrizDi = sNumeroMatrizDi + 1
'Cabeçalho do Arquivo
'--------------------
Dim sData As String = CStr(Now)
Ano = Trim(Replace(Mid(sData, 7, 4), "/", ""))
Mes = Trim(Replace(Mid(sData, 4, 2), "/", ""))
Dia = Trim(Replace(Mid(sData, 1, 2), "/", ""))
sArquivo = "MatrizDI_" + sNumeroMatrizDi + "_" + DateTime.Now.ToString("ddMMyy") + "_" + DateTime.Now.ToString("hhmmss") + ".xml"
Dim arq As New StreamWriter("C:\Temp\" + sArquivo, False)
'arq.WriteLine("" & "<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "UTF-8" & Chr(34) & "??>")
arq.WriteLine("<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "UTF-8" & Chr(34) & "??>")
arq.WriteLine("<enviMatrizDIe xmlns=" & Chr(34) & "http://www.sefaz.am.gov.br/die" & Chr(34) & " xmlns:xsi=" & Chr(34) & "http://www.w3.org/2001/XMLSchema-instance" & Chr(34) & " versao=" & Chr(34) & "1.00" & Chr(34) & " xsi:schemaLocation=" & Chr(34) & "http://www.sefaz.am.gov.br/die enviGabaritoDIe_v1.00.xsd" & Chr(34) & "?>")
arq.WriteLine("<MatrizDIe?>")
arq.WriteLine("<InfMatrizDIe Id=" & Chr(34) & "MatrizDIe" & sNumeroMatrizDi & Chr(34) & " versao=" & Chr(34) & "1.00" & Chr(34) & "?>")
arq.WriteLine("<Importador?>")
If dsR.Read Then
sImportador = dsR(0)
sImportador = Replace(sImportador, ".", "")
sImportador = Replace(sImportador, "-", "")
arq.WriteLine("<tipoImportador?>" & dsR(1) & "</tipoImportador?>")
arq.WriteLine("<cdImportador?>" & sImportador & "</cdImportador?>")
End If
dsR.Close()
arq.WriteLine("</Importador?>")
myCommand2IM = New MySqlCommand(sSQL, myConnectionMatrix)
dsR = myCommand2IM.ExecuteReader
While dsR.Read
arq.WriteLine("<ItemMatriz?>")
arq.WriteLine("<cdNcmProdFinal?>" & dsR(2) & "</cdNcmProdFinal?>")
arq.WriteLine("<cdSuframa?>" & dsR(3) & "</cdSuframa?>")
arq.WriteLine("<cdDestinacao?>" & dsR(4) & "</cdDestinacao?>")
arq.WriteLine("<cdUtilizacao?>" & dsR(5) & "</cdUtilizacao?>")
arq.WriteLine("<cdTributacao?>" & dsR(6) & "</cdTributacao?>")
arq.WriteLine("<numDecreto?>" & Replace(dsR(7), "/", "") & "</numDecreto?>")
arq.WriteLine("<tpDocumentoConcessivo?>" & "1" & "</tpDocumentoConcessivo?>")
arq.WriteLine("<numDocumentoConcessivo?>" & Replace(dsR(8), "/", "") & "</numDocumentoConcessivo?>")
sInicioBenf = dsR(9)
Ano = Trim(Replace(Mid(sInicioBenf, 7, 4), "/", ""))
Mes = Trim(Replace(Mid(sInicioBenf, 4, 2), "/", ""))
Dia = Trim(Replace(Mid(sInicioBenf, 1, 2), "/", ""))
sInicioBenf = Ano + Mes + Dia
arq.WriteLine("<dtInicioBeneficio?>" & sInicioBenf & "</dtInicioBeneficio?>")
sFimBenef = dsR(10)
Ano = Trim(Replace(Mid(sFimBenef, 7, 4), "/", ""))
Mes = Trim(Replace(Mid(sFimBenef, 4, 2), "/", ""))
Dia = Trim(Replace(Mid(sFimBenef, 1, 2), "/", ""))
sFimBenef = Ano + Mes + Dia
arq.WriteLine("<dtFimBeneficio?>" & sFimBenef & "</dtFimBeneficio?>")
arq.WriteLine("</ItemMatriz?>")
End While
arq.WriteLine("</InfMatrizDIe?>")
arq.WriteLine("</MatrizDIe?>")
arq.WriteLine("</enviMatrizDIe?>")
dsR.Close()
arq.Close()
' Create an XML document instance and load the XML data.
Dim doc As XmlDocument = New XmlDocument()
' This code assumes that the XML file is in the same folder.
doc.Load("C:\Temp\" + sArquivo)
' Save the XML to a file.
doc.Save("C:\Temp\" + sArquivo)
MsgBox("Arquivo XML criado com sucesso", MsgBoxStyle.Information, "Matriz Trubutação")
End Sub
Pontosa observar:
1. A notação "?>" ou "??>" no final de cada tag deve ser substituída por ">" ou "/>" conforme o caso. Trata-se do editor de textos do blog que infelizmente foge ao meu controle!
2. A notação "&" é o "é comercial" necessário para separar campos no VB.NET;
3. o campo Id (MatrizDIe) é a identificação da matriz, e o número que o segue deve,
para facilitar, referir-se à inscrição da empresa no Cadastro de Contribuintes do Estado com 14 casas, ou seja, a informação é numérica e o comprimento da informação é
de 14 dígitos. Alguns estão colocando aqui um contador, mas este não é o procedimento
correto.
4. Aqui transformamos o arquivo-texto criado em um documento XML propriamente dito:
' Create an XML document instance and load the XML data.
Dim doc As XmlDocument = New XmlDocument()
' This code assumes that the XML file is in the same folder.
doc.Load("C:\Temp\" + sArquivo)
No momento em que doc.Load é realizado o arquivo XML é verificado em relação ao arquivo XSD carregado inicialmente - linha que contêm o http://www.w3.org/2001/XMLSchema-instance.
Você pode acrescentar aqui um comando Try para indicar os erros dos arquivos XML que está gerando.
' Save the XML to a file.
doc.Save("C:\Temp\" + sArquivo)
Após o salvamento o arquivo XML está pronto para ser assinado. A assinatura pode ser realizada com um certificado digital do Serasa e vocês podem utilizar o mesmo código-fonte que postei aqui para realizar a assinatura deste documento.
Segue um bom site que fala um pouco sobre assinaturas digitais:
http://inginheiiro.wikidot.com/
Segue um bom site que fala um pouco sobre assinaturas digitais:
http://inginheiiro.wikidot.com/
Sucesso a todos em 2014!
quarta-feira, 29 de janeiro de 2014
TI: COMO SE TORNAR A CAIXA PRETA DA EMPRESA
Não há como negar que em matería de TI há inúmeros processos dentro de vários
setores dentro de uma empresa que podem e devem ser controlados dia-à-dia a fim
de que em um período de tempo curto - seja ele semanal, quinzenal ou mensal -
dados possam ser analisados e tomadas de decisão possam ser criadas.
Todos os dias o TI de qualquer empresa trabalha a fim de que relatórios e dados
possam ser gerenciados tanto dentro do setor como em diversas áreas da
empresa. O investimento de recursos na criação de ferramentas capazes de
gerir informações é massivo todos os anos em muitas empresas. A qualidade
do serviço prestado de àrea a àrea pode variar com o passar do tempo.
No entanto, por diversos motivos, há algumas áreas da empresa que são
de difícil acesso ou que se tornam assim devido ao relacionamento e ao
modus operandi das mesmas com relação ao setor de TI.
Algumas áreas podem necessitar de controles de informações que necessitam
do envolvimento de mais de uma área para o levantamento de dados e isso
dificulta o trabalho final na obtenção do resultado: pode ser que uma ponta
da informação em alguma outra área deixe de ser coletada e assim todo o
processo é comprometido. Há casos em que o escopo final é criado mas no
momento da implantação descobre-se que um detalhe deixou de ser levado
em conta e isso prejudica todo o projeto que por força maior é colocado de
lado.
E há aqueles casos em que o TI desenvolve mais de uma ferramenta para uma
mesma área e todas elas são sub-utilizadas ou nem sequer utilizadas. A síndrome
do "minha planilha é melhor do que seu sistema" é um problema em muitas
empresas. O TI por trabalhar com a qualidade de seus serviços acaba avaliando
aquele setor como de difícil acesso. Se muitas ferramentas são desenvolvidas para
um mesmo setor e nenhuma delas é utilizada haverá certa resistência por parte
do TI em tentar criar uma nova ferramenta para esta área. Se os projetos forem
concorrentes com os de outras áreas - materias e produção pedem dois sistemas
e todos os criados para a área estão sendo utilizados - por uma questão de
bom uso e de promoção o TI dará prioridade a outras áreas: bons clientes
merecem consideração e respeito. Clientes que ainda se tentam conquistar
e sempre respondem de modo negativo a ferramentas novas criadas acabam
entrando no final da fila ou entregues a uma área em outra planta para
análise e desenvolvimento.
Se tonar a caixa preta que nunca é capaz de corresponder a bons trabalhos
que o TI desenvolve não é uma coisa boa para qualquer empresa.
Quanto projetos foram criados em TI para sua área no ano que se
passou? Quantos serão implementados este ano? Quantos foram implementados
e nunca utilizados?
Se estas perguntas forem respondidas por você de modo negativo seria
boma avaliar uma mudança de direção neste ano. Afinal, ninguém quer ser
a piadinha da área de TI como o setor caixa preta que ninguém consegue
entrar.
Sucesso em 2014!
sábado, 21 de setembro de 2013
CÓDIGO DE BARRAS - IMPRESSÃO EM ZM400
Olá a todos!
Ao criar etiquetas códigos de barras, o ideal é utilizar o próprio software da impressora código de barras para isso.
Em se tratando de uma impressora da marca Zebra o aplicativo mais comum para uso é o Zebra Designer que vem junto no CD de drivers da própria impressora. A tarefa é bem simples: abrir o aplicativo e gerar uma etiqueta no tamanho desejado e com os parâmetros
necessários. Faz-se a impressão da mesma na impressora a fim de se atestar que está
correta e, em seguida, se gera a mesma para um arquivo-texto a fim de ser utilizado em
sua aplicação.
O arquivo-texto gerado pela impressora é o mostrado abaixo:
^XA
^PW354
^BY2,3,44^FT40,55^BCN,,Y,N
^FD>:" & Mid(Codigo, 1, 2) & ">5" & Mid(Codigo, 3, 11) & "^FS
^PQ1,0,1,Y
^XZ
Onde Codigo é a codificação interna da etiqueta que você criou.
O que se deve fazer em seguida é abrir isso via software a fim de gerar uma impressão em sequência da chamada desse mesmo arquivo da contagem inicial até a final:
sInicio = CDbl(TxtInicio.Text)
sFim = CDbl(TxtFim.Text)
'Quantas Etiquetas Imprimir
sDiferenca = sFim - sInicio
If sInicio > sFim Then
MsgBox("Valor Inicial maior que o Valor Final!!!", MsgBoxStyle.Information)
TxtInicio.Focus()
Exit Sub
End If
If sDiferenca = 0 Then
sDiferenca = sConta
End If
'Loop de impressão
While sInicio <= sFim
LerEtiqueta(sInicio )
GravarDados(sInicio)
Dim Command As String
Command = "type C:\TEMP\ETIQUETA.TXT>PRN"
Shell("cmd /c" & Command, 1, True)
'Incrementar o contador
sInicio = sInicio + 1
End While
A rotina LerETiqueta lê o arquivo-texto gerado na Zebra.
Então, você deve criar uma rotina que gere um arquivo-texto com os dados
acima:
Private Sub LerEtiqueta(ByVal sNumeroEtiqueta as string)
Dim fluxoTexto As IO.StreamWriter
Dim sNomeArquivo As String = "C:\Temp\ETIQUETA.TXT"
If IO.File.Exists(sNomeArquivo) Then
'ZM400 300 DPI
fluxoTexto = New IO.StreamWriter(sNomeArquivo)
fluxoTexto.Write("^XA")
fluxoTexto.Write("^PW354")
fluxoTexto.Write("^BY2,3,44^FT40,55^BCN,,Y,N")
fluxoTexto.Write("^FD>:" & Mid(sNumeroEtiqueta, 1, 2) & ">5" & Mid(sNumeroEtiqueta, 3, 11) & "^FS")
fluxoTexto.Write("^PQ1,0,1,Y")
''Finaliza la etiqueta
fluxoTexto.Write("^XZ")
fluxoTexto.Close()
End If
Dim docName As String = "ETIQUETA.TXT"
Dim docPath As String = "c:\Temp\"
'printDocument1.DocumentName = docName
Dim stream As New FileStream("C:\Temp\ETIQUETA.TXT", FileMode.Open)
Try
Dim reader As New StreamReader(stream)
Try
stringToPrint = reader.ReadToEnd()
Finally
reader.Dispose()
End Try
Finally
stream.Dispose()
End Try
End Sub
A parte final realiza a impressão da etiqueta direto para a porta da impressora e incrementa para o próximo número a ser impresso:
Dim Command As String
Command = "type C:\TEMP\ETIQUETA.TXT>PRN"
Shell("cmd /c" & Command, 1, True)
'Incrementar o contador
sInicio = sInicio + 1
A rotina é bem simples.
Você ainda pode incrementar isso gravando os dados em uma tabela em sua base de dados a fim de controlar as etiquetas já impressas e fazer uma possível reimpressão, caso necessário, o que é realizado pela função GravarDados.
Espero que o exposto ajude aos necessitados por esta informação.
Qualquer dúvida, podem postar comentários.
Sucesso a todos!!
By
Leonardo Metelys
Ao criar etiquetas códigos de barras, o ideal é utilizar o próprio software da impressora código de barras para isso.
Em se tratando de uma impressora da marca Zebra o aplicativo mais comum para uso é o Zebra Designer que vem junto no CD de drivers da própria impressora. A tarefa é bem simples: abrir o aplicativo e gerar uma etiqueta no tamanho desejado e com os parâmetros
necessários. Faz-se a impressão da mesma na impressora a fim de se atestar que está
correta e, em seguida, se gera a mesma para um arquivo-texto a fim de ser utilizado em
sua aplicação.
O arquivo-texto gerado pela impressora é o mostrado abaixo:
^XA
^PW354
^BY2,3,44^FT40,55^BCN,,Y,N
^FD>:" & Mid(Codigo, 1, 2) & ">5" & Mid(Codigo, 3, 11) & "^FS
^PQ1,0,1,Y
^XZ
Onde Codigo é a codificação interna da etiqueta que você criou.
O que se deve fazer em seguida é abrir isso via software a fim de gerar uma impressão em sequência da chamada desse mesmo arquivo da contagem inicial até a final:
sInicio = CDbl(TxtInicio.Text)
sFim = CDbl(TxtFim.Text)
'Quantas Etiquetas Imprimir
sDiferenca = sFim - sInicio
If sInicio > sFim Then
MsgBox("Valor Inicial maior que o Valor Final!!!", MsgBoxStyle.Information)
TxtInicio.Focus()
Exit Sub
End If
If sDiferenca = 0 Then
sDiferenca = sConta
End If
'Loop de impressão
While sInicio <= sFim
LerEtiqueta(sInicio )
GravarDados(sInicio)
Dim Command As String
Command = "type C:\TEMP\ETIQUETA.TXT>PRN"
Shell("cmd /c" & Command, 1, True)
'Incrementar o contador
sInicio = sInicio + 1
End While
A rotina LerETiqueta lê o arquivo-texto gerado na Zebra.
Então, você deve criar uma rotina que gere um arquivo-texto com os dados
acima:
Private Sub LerEtiqueta(ByVal sNumeroEtiqueta as string)
Dim fluxoTexto As IO.StreamWriter
Dim sNomeArquivo As String = "C:\Temp\ETIQUETA.TXT"
If IO.File.Exists(sNomeArquivo) Then
'ZM400 300 DPI
fluxoTexto = New IO.StreamWriter(sNomeArquivo)
fluxoTexto.Write("^XA")
fluxoTexto.Write("^PW354")
fluxoTexto.Write("^BY2,3,44^FT40,55^BCN,,Y,N")
fluxoTexto.Write("^FD>:" & Mid(sNumeroEtiqueta, 1, 2) & ">5" & Mid(sNumeroEtiqueta, 3, 11) & "^FS")
fluxoTexto.Write("^PQ1,0,1,Y")
''Finaliza la etiqueta
fluxoTexto.Write("^XZ")
fluxoTexto.Close()
End If
Dim docName As String = "ETIQUETA.TXT"
Dim docPath As String = "c:\Temp\"
'printDocument1.DocumentName = docName
Dim stream As New FileStream("C:\Temp\ETIQUETA.TXT", FileMode.Open)
Try
Dim reader As New StreamReader(stream)
Try
stringToPrint = reader.ReadToEnd()
Finally
reader.Dispose()
End Try
Finally
stream.Dispose()
End Try
End Sub
A parte final realiza a impressão da etiqueta direto para a porta da impressora e incrementa para o próximo número a ser impresso:
Dim Command As String
Command = "type C:\TEMP\ETIQUETA.TXT>PRN"
Shell("cmd /c" & Command, 1, True)
'Incrementar o contador
sInicio = sInicio + 1
A rotina é bem simples.
Você ainda pode incrementar isso gravando os dados em uma tabela em sua base de dados a fim de controlar as etiquetas já impressas e fazer uma possível reimpressão, caso necessário, o que é realizado pela função GravarDados.
Espero que o exposto ajude aos necessitados por esta informação.
Qualquer dúvida, podem postar comentários.
Sucesso a todos!!
By
Leonardo Metelys
quinta-feira, 6 de junho de 2013
DANFE EM VB.NET 2010 - AGORA ENVIANDO E-MAILS AUTOMATICAMENTE
Olá, pessoal!
A geração da DANFE agora traz novidades!!
Agora é possível informar um e-mail nos parâmetros de chamada do GerarDanfe para que o PDF gerado da DANFE possa ser enviado automaticamente:
Isso é possível porque o código-fonte agora incorpora uma função que permite o envio de
e-mails. Neste exemplo, utilizamos o gmail para o envio:
Em seguida, podemos ver o resultado esperado que é o recebimento da DANFE em PDF gerada através da aplicação:
Os fontes já se encontram disponíveis para aquisição a todos os que se mostrarem interessados.
Sucesso a todos!!
Assinar:
Postagens (Atom)
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...
-
O GLPI é um dos muitos tipos de aplicativos helpdesk free existentes na internet. O fórum do mesmo pode ser encontrado neste link: ...
-
A Danfe pode ser gerada em Crystal 8.5 e depois migrada para dentro do Vb.NET ou, se você preferir, totalmente criada dentro do VB.NET 2008 ...
-
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 S...
























