domingo, 9 de maio de 2010

GERANDO O CÓDIGO DE BARRAS PARA A DANFE EM CONTIGÊNCIA

Gerar os dados para a Danfe em Contigência é uma tarefa simples via código:

'Selecionar o Tipo de Emissao
TipodeEmissao = myRow2.tpEmis


'Compõe a chave para o c¢digo de barras da Danfe em Contigˆncia, se for necess rio
DiadaEmissao = Mid(myRow2.dEmi, 1, 2)
TipodeEmissao = myRow2.tpEmis
CodigoUF = DigitoUF(myRow2.destUF)
DadosdaNfe = Trim(CodigoUF + TipodeEmissao + myRow2.destCNPJ + ValorvNF + "2" + "2" + DiadaEmissao)
DigitoDadosNfe = Calculo_DV11(DadosdaNfe)



'Inser‡ão do d¡gito verificador do m¢dulo 11 para a Nf-e
DadosdaNfe = DadosdaNfe + Trim(DigitoDadosNfe)

'Nf-e em contingˆncia / Gerar c¢digo de Barras dos dadosdaNFE
If TipodeEmissao <> "1" Then
'Cria o c¢digo de barras para a Danfe em Contingˆncia, se houver
'P“r o c¢digo de barras em oculto, se não houver o que gerar
myRow2.DadosNfe = DadosdaNfe
Dim Barcode2 As New BarcodeLib.Barcode(DadosdaNfe, BarcodeLib.TYPE.CODE128C)
PictureBox3.Image = Barcode2.Encode(BarcodeLib.TYPE.CODE128C, DadosdaNfe, 300, 150)
Barcode2.SaveImage("C:\NF-E\Barras\BARRAS2.JPG", BarcodeLib.SaveTypes.JPG)
Dim fs As New FileStream("C:\NF-E\Barras\BARRAS2.JPG", FileMode.Open)
Dim br As New BinaryReader(fs)
myRow2.Imagem2 = br.ReadBytes(br.BaseStream.Length)
br.Close()
fs.Close()
br = Nothing
fs = Nothing
Else
myRow2.Imagem2 = Nothing
End If



A função que gera o dígito verificador já foi mostrada aqui anteriormente:


Function Calculo_DV11(ByVal strNumero As String) As String
'declara As vari veis
Dim intContador As Integer
Dim intNumero As Integer
Dim intTotalNumero As Integer
Dim intMultiplicador As Integer
Dim intResto As Integer
Dim ValorDigito As Integer
' se nao for um valor numerico sai da fun‡ão
If Not IsNumeric(strNumero) Then
Calculo_DV11 = ""
Exit Function
End If

'inicia o multiplicador
intMultiplicador = 2

'pega cada caracter do numero a partir da direita
For intContador = Len(strNumero) To 1 Step -1
' extrai o caracter e multiplica pelo multiplicador
intNumero = Val(Mid(strNumero, intContador, 1)) * intMultiplicador
intMultiplicador = intMultiplicador + 1
' se o resultado for maior que nove soma os algarismos do resultado
If intMultiplicador > 9 Then
intMultiplicador = 2
End If
'soma o resultado para totaliza‡ão
intTotalNumero = intTotalNumero + intNumero
Next

'calcula o resto da divisao do total por 11
intResto = intTotalNumero Mod 11
ValorDigito = 11 - intResto
'verifica as exce‡ões ( 0 -> DV=0 1 -> DV=0 e retorna o DV

Select Case ValorDigito
Case 0
Calculo_DV11 = "0"
Case 1
Calculo_DV11 = "0"
Case Else
Calculo_DV11 = Str(ValorDigito)
End Select
End Function


CT-e - DADOS SOBRE O DACTE


Como o número de perguntas sobre o DACTE tem aumentado ultimamente, estarei divulgando brevemente aqui no blog um módulo para impressão dos dados do DACTE a fim de esclarecer algumas dúvidas.

Os fontes desse novo trabalho também estarão disponiveis para aquisição, assim como os da DANFE.

Agradeço a todos os que adquiriram os fontes da DANFE até o momento.

A todos vocês, o meu obrigado pelo reforço positivo prestado ao trabalho aqui divulgado.

Que seus esforços para o desenvolvimento integral da NF-e em seus clientes possam ser recompensados.


Sucesso e sorte a todos!!

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...