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

terça-feira, 20 de julho de 2010

FATORAÇÃO EM DEV C++

Aos alunos de plantão, aqui vai um algoritmo simples de matemática que muitas vezes podem pintar em provinhas básicas de sala de aula.

O código está em DEV C++ e pode ser utilizado livremente.

Trata-se de C++ puro!

#include
int Fatoracao(int i)
{
int x;
int y;
int fatorar;
printf ("Estamos na funcao Fatoracao().\n");
x = i;
y = 1;
fatorar = 1;

if (x == 1 )// se o número for 1, o fatorial é 1
{
fatorar = 1;
goto saida;
}


fatorar =0;
while (y < x)
{

if (y==1) // faz a primeira multiplicação
{
fatorar = fatorar + (x * (x-y));
}

++y;

if (y > 1) // faz as multiplicações subsquentes
{

if ((x-y) > 0 )
{
fatorar = fatorar * (x-y);
}
}

if (y == x) // se atingiu o número, deve finalizar
{
break;
}

} // fim do while
saida:
return (fatorar);
} // Fim de Soma(int, int)



main ()
{
int valor;
int valor2;
int valorencerra;
int z;

printf("Digite o número a fatorar: ");
scanf("%d",&valor);
printf("\n");
if (valor < 0)
{
printf("Valor menor que zero!! %d", valor, "\n");
printf("\n");
printf("Informe um valor qualquer para encerrar...\n");
scanf("%d",&valorencerra);
}
else
{
z = Fatoracao(valor);
printf("\n");
printf("Valor da Fatoracao: %d", z, "\n");
printf("\n");
printf("Digite um valor qualquer para encerrar...\n");
scanf("%d",&valorencerra);
}

}


Considerações: O aplicativo executa somente uma vez e você deve informar um valor para encerrar na sequência. Para refinar o algoritimo, sugiro que seja acrescentado um loop while que execute até que o usuário informe o número 0 para encerrar o aplicativo.

Sorte a todos!!

segunda-feira, 12 de julho de 2010

ARQUIVO-TEXTO EM C#.NET

Fontes deste pequeno aplicativo completo (no formato .rar):

http://www.4shared.com/file/p1AxJaYd/LerArquivoTexto.html



Incluso com os fontes está o arquivo .CSV que você deve colocar em uma pasta C:\Util em seu computador para que funcionem corretamente.


Em alguns momentos, aqueles provinhas práticas básicas que você faz para uma vaga em empresa podem requerer bem mais tempo que as quatro horas definidas para toda a aplicação da parte téórica e prática.

Nesta manhã, tive o desprazer de cruzar com uma dessas. Vou postar aqui o código da bendita, que realmente é interessante de ser gerado e que está em C#.NET.

Tínhamos a opção de dar esta solução em Delphi 7 ou C#.Net. Como a máquina em que peguei o Delphi 7 estava com uns erros horríveis, eu até "iniciei" este projetinho, mas acabei me estressando e achando a coisa enjoada de fazer.

Pois bem!


Desenvolvedor que é desenvolvedor deixa algumas respostas para tudo. Eis aqui o código total em C#.Net, porque fiquei com comichão de finalizar o bendito!!

E não é que ia mesmo levar um tempo bom fazendo o bicho!!???

Vamos ao código!!

O arquivo CSV fornecido tinha uma estrutura parecida com esta:

12345;12072010;142300;8980090
12345;12072010;142400;8980091
12345;12072010;152700;8980092
12345;12072010;182300;8980093
12345;12072010;192300;8980094
12345;12072010;232300;8980095
12345;12072010;072300;8980096
12346;12072010;102300;8980097
12346;14072010;114500;8980098
12346;14072010;123300;8980099
12346;14072010;120100;8980100
12346;14072010;061300;8980101
12346;14072010;064300;8980102

Os campos na ordem devem ser (segundo me recordo):
código do cliente;data;hora;código de pedido

O aplicativo deve gerar um arquivo-texto deste csv inicial fornecido com os pedidos dos clientes feito a cada hora.

Ou seja, você deve sumarizar no arquivo-texto a ser gerado os pedidos de cada cliente a cada hora do dia.

Iniciei um novo projeto no C#.Net.
Dê a ele o nome de LerArquivoTexto.

Vamos precisar de um TextBox, três botões e um OpenDialog que nomeei como OpTexto. Insira-os todos em seu form.


Ao clicar no botão com " ... " o aplicativo deverá ler o diretório inicial configurado no OpenDialog (nada impedindo que o usuário possa selecionar outro local). No caso específico e conforme a figura abaixo, configurei o aplicativo para abrir no C:\Util.




O código do botão ... fica assim:

private void button3_Click(object sender, EventArgs e)
{

this.opTexto.FileName = "";
this.opTexto.RestoreDirectory = true;// para não mudar o diretório da aplicação definido no inicio
this.opTexto.Filter = "Arquivos CSV*.csv";


if (this.opTexto.ShowDialog () == DialogResult.OK)
{
this.txtArquivo.Text = this.opTexto.FileName.ToString();

}

}



O caminho do arquivo-texto será preenchido no textbox, conforme mostrado na figura abaixo:



Após clicar no botão Processar, os dados serão gerados. A leitura de dados será realizada através de um stremreader:

private void button1_Click(object sender, EventArgs e)
{

StreamReader sr = new StreamReader(txtArquivo.Text);
string HoraPedido = "";
string NoCliente= "";
string NoClienteInicial = "";

int sLinhas = 0;
int SomaPedido00 = 0 ; // variáveis para a soma dos pedidos a mensurar
int SomaPedido01 = 0;
int SomaPedido02 = 0;
int SomaPedido03 = 0;
int SomaPedido04 = 0;

....


A abertura de um arquivo-texto será necessária para gerar os dados dos pedidos de cada cliente do arquivo csv para um arquivo-texto com os dados sumarizados:

// Gravar no arquivo-texto os dados gerados para este cliente
StreamWriter valor = new StreamWriter("C:\\Util\\clientes.txt", true, Encoding.ASCII);

if (File.Exists(txtArquivo.Text))
{
using (StreamReader fluxotexto = new StreamReader(txtArquivo.Text))
while (true)
{
string linhatexto = fluxotexto.ReadLine();
sLinhas = sLinhas + 1;
if (linhatexto == null)
{
break;
}
if (linhatexto != "")
{
// Ler os dados do cliente
NoCliente = linhatexto.Substring(0, 5);
if (sLinhas == 2)
{
NoClienteInicial = NoCliente;
}

RefazerNovoCliente:
// faz a somatória de pedidos enquanto for o mesmo código de cliente...
if (NoClienteInicial == linhatexto.Substring(0, 5))
{

//obter a soma de todos os possíveis registros em casa horário
//simplesmente abstraia a hora de cada registro
HoraPedido = linhatexto.Substring(15, 2);

if (HoraPedido == "00")
{
SomaPedido00 = SomaPedido00 + 1;
}

if (HoraPedido == "01")
{
SomaPedido01 = SomaPedido01 + 1;
}


if (HoraPedido == "02")
{
SomaPedido02 = SomaPedido02 + 1;
}

if (HoraPedido == "03")
{
SomaPedido03 = SomaPedido03 + 1;
}
if (HoraPedido == "04")
{
SomaPedido04 = SomaPedido04 + 1;
}


Cada Pedido será devidamente catalogado e somado de acordo com o cliente encontrado.

Se o número do cliente mudar, o comando else será acionado, fazendo a gravação em arquivo-texto dos dados do cliente atual e seus pedidos hora a hora:


} // fechamento do if do cliente
else
{

valor.WriteLine("Cliente: " + Convert.ToString(NoClienteInicial));
//valor.Write (Convert.ToString(NoClienteInicial));
valor.WriteLine("Hora 00: " + Convert.ToString (SomaPedido00));
valor.WriteLine("Hora 01: " + Convert.ToString (SomaPedido01));
valor.WriteLine("Hora 02: " + Convert.ToString (SomaPedido02));
valor.WriteLine("Hora 03: " + Convert.ToString (SomaPedido03));
valor.WriteLine("Hora 04: " + Convert.ToString (SomaPedido04));

....

O arquivo-texto será fechado, a variável clienteinicial receberá o valor do cliente atual e o aplicativo deverá refazer as contagens para o novo cliente, zerando os contadores criados inicialmente. Em seguida, o processamento deverá ser retomando para a análise da linha do novo pedido a ser contado:

valor.Close();

NoClienteInicial = NoCliente;

//zerar as variáveis de soma
SomaPedido00 = 0;
SomaPedido01 = 0;
SomaPedido02 = 0;
SomaPedido03 = 0;
SomaPedido04 = 0;

...

//reavaliar a linha para o novo cliente
goto RefazerNovoCliente;



Conforme abaixo, após clicar no messagebox, o arquivo-texto será aberto no notepad, pela linha de comando:

MessageBox.Show ("Arquivo-Texto criado com sucesso!!");

// Abrir o arquivo-texrto gerado na sequencia
System.Diagnostics.Process.Start(@"C:\util\clientes.txt");




Algumas ressalvas:

1. O código compartilhado no link trabalha somente com os dados do arquivo csv aqui informado. O da prova era bem mais complexo e com certeza outros acertos seriam necessários no código para um bom funcionamento

2. O arquivo .rar não estará disponível para download por muito tempo, então aproveitem para baixar um exemplo prático de arquivo-texto em C#.Net

No mais, sorte a todos e valeu, professor Werley, pela chance de exercitar os conhecimentos!

Que seu novo desenvolver dê conta do recado...

Fui!!

terça-feira, 29 de junho de 2010

DACTE EM VB.NET e CRYSTAL REPORTS

Salve, salve, turma dos bytes!!

Bem, pessoal, para os que desejam curtir algumas fotos de meu
passeio em Fortaleza, ai vai o link do meu orkut:

http://www.orkut.com.br/Main#Profile?rl=mp&uid=12247594032911620490

E sim, eu sou moreno!

No mais, vamos tratar de desenvolvimento!!

Estou cumprindo o prometido e postando as informações referentes ao DACTE para salvar talvez a vida de alguns desenvoldores em empresas de transporte.

Vamos ao que interessa:



Nesse meu pequeno exemplo - que está funcional, acreditem! - simplesmente criei o DACTE em Crystal Reports e um table Adapter para associar ao mesmo.










O Table Adapter contêm todos os campos informado no Manual do CT-e, versão 1.03.

Separei os campos em tags criando uma notação com o uso do " _ " como separador.
Assim, os campos da tag toma04 são identificados desse modo:

toma04_toma
toma04_CNPJ

...

O importante de se ter todos os campos presentes é a possível necessidade de codificação
extra caso ocorra no futuro a criação de um CTe com campos a mais a informar, e
conforme minhas experiências com a DANFE isso com certeza sempre irá acontecer:



Note na figura ao lado como estes dados foram dispostos de modo coerente. O tableAdapter deve fazer parte de seu projeto a fim de que o relatório em Crystal Reports do DACTE possa ser linkado com sucesso.








Para desenvolver o Dacte em VB.NET 2008 você precisará criar um Table Adapter para que o Crystal Reportes possa ler os dados do CT-e que será fornecido para a impressão do DACTe.

Os dados do arquivo XML do CT-e fornecidos deverão ser lidos e repassados para o Table
Adapter, que será associado via código ao relatório em Crystal Reports - e isso você
deverá criar arrastando e soltando conforme mostrado na figura abaixo.




Veja que os campos do TableAdapater criado se encontram no painel à esquerda. Basta clicar sobre o campo que se deseja e arrastar até o relatório em Crystal para a posição deseja, associando assim cada campo criado com o seu respectivo local de impressão no DACTE.





Eis aqui os quitutes do post de hoje:

http://www.4shared.com/file/GGE9Zpf4/Dacte_free.html


Aproveitem, pois o link estará disponível por poucos dias.

No pacote a baixar vocês encontram o Dacte.rpt e um dsXML1, que na verdade é um Table Adapter com todos os dados do CT-e para uso em conjunto com o relatório em Crystal Reports.


Vejam que este é o mesmo caminho que seguimos para o desenvolvimento da DANFE em VB.NET 2008.

Este fontes também estarão à disposição para aquisição, nos mesmos termos da DANFE a todos os interessados.



Boa sorte e bom projeto a todos!!

quarta-feira, 9 de junho de 2010

DESCANSO DE TELA EM VB.NET

Vamos criar um descanso de tela em Vb.NEt com somente um formulário!

1. Inicie um novo projeto no VB.NET e dê o nome a ele de Descanso

2. No Form1 (se não houver um, insira um Add New Form ao projeto), abra o Solution Explorer clique no View Designer.

3. Defina as seguintes propriedades no Form1:

StartPosition: Center

Size - Width: 1230; Height : 647

WindowState: Maximized

FormBorderStyle: None

KeyPreview: True


4. Acrescente ao formulário um componente Label e um componente Timer, e defina as propriedades do mesmo
como segue:

Componente Label

TextAlign : MiddleCenter

Size - Width: 898 ; Height: 578

Font: Tahoma; Size: 45; Bold: True; Italic: True


Componente Timer
Interval: 1500
Enabled: True

5. Agora, vamos definir as propriedades de execução de nosso descanso de tela. No Solution Explorer, clique no botão View Code.

No início do Formulário, declare os seguintes imports:

Imports System.Random
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Drawing.Text

A seguir, declare estas variáveis dentro da classe Form1:

Public Class Form1

Public Numero As Integer
Public Valor As Random = New Random
Public ultimaPosicaoDoMouse As New Point(-1, -1)

6. Defina as propriedades abaixo, como seguem:

Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress


'Qualquer tecla pressionada encerra o aplicativo
If Asc(e.KeyChar) Then

Windows.Forms.Cursor.Show()

End

End If

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


Windows.Forms.Cursor.Hide()

''LbTexto2.Font = New Font("Tahoma", 50, FontStyle.Bold)

'LbTexto2.Text = "Esperei com paciência no SENHOR. Salmo 40:1"
'LbTexto2.ForeColor = Color.Black

EscolheVersiculo()

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

EscolheVersiculo()


End Sub


7. A função EscolheVersiculo é dada abaixo. A mesma define um número entre 0 e 7 e adiciona o texto a tela. A função escolheCor define uma cor de fundo e do texto de modo aleatório.

Private Sub EscolheVersiculo()

Dim Stexto As String = ""

'Pegar próximo número aleatório sendo gerado entre 0 e 21
Numero = Valor.Next(7)

EscolherCor()

'Numero = 10

If Numero = 0 Then


LbTexto2.Text = ""
LbTexto2.Text = " Bem-aventurados os que têm fome e sede de justiça, porque eles serão fartos" + vbCrLf + vbCrLf + " Mateus 5:6"

End If

If Numero = 1 Then

LbTexto2.Text = ""
LbTexto2.Text = "Alegrei-em quando me disseram: Vamos à casa do SENHOR" + vbCrLf + vbCrLf + " Salmo 122:1"

End If

If Numero = 3 Then

LbTexto2.Text = ""
LbTexto2.Text = "Ponha sua esperança no SENHOR, ó Israel, desde agora e para sempre " + vbCrLf + vbCrLf + "Salmo 131:3"

End If

If Numero = 4 Then

LbTexto2.Text = ""
LbTexto2.Text = "A tua palavra é lâmpada que ilumina meus passos e luz que clareia o meu caminho " + vbCrLf + vbCrLf + " Salmo 119:105"

End If

If Numero = 5 Then

LbTexto2.Text = ""
LbTexto2.Text = "Chega até os céus, até as nuvens, a Tua fidelidade " + vbCrLf + vbCrLf + " Salmo 36:5"


End If

If Numero = 6 Then

LbTexto2.Text = ""
LbTexto2.Text = "Jamais retirarei dele a Minha bondade, nem desmentirei a Minha fidelidade " + vbCrLf + vbCrLf + "Salmo 89:33"

End If

If Numero = 7 Then

LbTexto2.Text = ""
LbTexto2.Text = "Grande é a Tua fidelidade " + vbCrLf + vbCrLf + "Lamentações 2:23"

End If

End Sub

8. A função EscolheCor também trabalha de modo aleatório. Abaixo, inclui três opções de cores possíveis, mas você pode aumentar o número de cores e incrementar esta função

Private Sub EscolherCor()

'Pegar próximo número aleatório sendo gerado entre 0 e 21
Numero = Valor.Next(3)

If Numero = 0 Then
Me.BackColor = Color.Black
LbTexto2.ForeColor = Color.White
End If

If Numero = 1 Then
Me.BackColor = Color.Black
LbTexto2.ForeColor = Color.White
End If

If Numero = 2 Then
Me.BackColor = Color.White
LbTexto2.ForeColor = Color.Black
End If

If Numero = 3 Then
Me.BackColor = Color.Blue
LbTexto2.ForeColor = Color.White
End If

End Sub




9. Finalmente, as funções abaixo realizam o controle do teclado, em conjunto com a função KeyPreview. Se uma tecla for pressionada, o mouse movido em qualquer sentido, o descanso de tela é encerrado automaticamente, retornando para a tela anterior.



Private Sub Form1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick

Windows.Forms.Cursor.Show()
End

End Sub

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
' ----- ao clicar pára o programa.
Windows.Forms.Cursor.Show()
End

End Sub

Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove

' ----- Ao mover o mouse -> para o programa
If (ultimaPosicaoDoMouse <> New Point(-1, -1)) Then
' ----- Verifica se o mouse moveu-se
If (ultimaPosicaoDoMouse <> New Point(e.X, e.Y)) Then
Windows.Forms.Cursor.Show()
End
End If
End If

'----- Grava a posicao atual
ultimaPosicaoDoMouse = New Point(e.X, e.Y)

End Sub



Finalmente, Você pode compilar este pequeno projeto e gerar o executável do mesmo. Basta clicar na opção Build no menu do Visual Studio 2008 e em seguida em Build Descanso. Após a compilação, vá até a pasta do projeto. Dentro da pasta Bin haverá a pasta Release e o executável da aplicação estará dentro desta última pasta.

Se você Renomear este executável gerado para Descanso.scr poderá usar o mesmo como um descanso de tela do Windows!

Basta copiar o arquivo renomeado para a pasta C:\Windows\System32. Em seguida volte para a área do Desktop, clique no botão direito do mouse e Selecione Propriedades no menu que Surge. A tela de Propriedades do Desktop será aberta. Vá até a aba ScreenSaver.

O descanso.scr estará na lista de screensavers válidos do sistema operacional.


Bom divertimento a todos e até a próxima!!

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

sábado, 23 de janeiro de 2010

FONTES DA DANFE EM VB.NET

Aos que estiverem interessados, estou comercializando para fins ditáticos e comerciais os fontes da geração da DANFE 3.0 na linguagem VB.NET 2008 aos que necessitam dessas informações para desenvolver a NFe eletrônica.



Para maiores informações, gentileza entrar em
contato através do meu e-mail:

leo_florindo@hotmail.com


Sorte a todos e sucesso em 2010!

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