Institucional Produtos Comercial Serviços Fale Conosco Links Úteis                                        Home 

Dólar Hoje (21/11)
R$ 2,3962







As 20 Dicas mais quentes para Desenvolvedores de Automação Comercial


Por Claudenir C. Andrade

1. DARUMA: INSTANCIANDO DLLS UNMANAGE CODE EM .NET

Em .NET utilize using System.Runtime.InteropServices para que você possa instanciar a dll de comunicação para se comunicar com as dlls de com mercado para automação comercial. com isso você poderá utilizar o comando DLLEXPORT para instanciar as funções de qq dll baseada e criada em plataforma UnManageCode, como por exemplo, as chamadas Abaixo:

[DllImport("Daruma32.dll")]

public static extern int Daruma_FI_VendeItem(System.String Codigo, System.String Descricao, System.String Aliquota,

System.String TipoQuantidade, System.String Quantidade, int CasasDecimais,

System.String Vr_Unitario, System.String TipoDesconto, System.String Desconto);

[DllImport("Daruma32.dll")]

public static extern int Daruma_FI_IniciaFechamentoCupom(System.String AcrescimoDesconto,System.String Tipo_AcrescimoDesconto, System.String Valor_AcrescimoDesconto);

[DllImport("Daruma32.dll")]

public static extern int Daruma_FI_EfetuaFormaPagamento(System.String FormaPagamento, System.String Valor_FormaPagamento);

[DllImport("Daruma32.dll")]

public static extern int Daruma_FI_TerminaFechamentoCupom(System.String MensagemPromocional);

........ x x x x ........

2. DARUMA: FECHANDO O CUPOM FISCAL RAPIDAMENTE, SEM CÁLCULOS!

Você poderá efetuar o fechamento de um cupom fiscal sem a necessidade de estar consultado quando foi realizado de venda ou sem a necessidade de estar verificando o subtotal da impressora sem nem mesmo a necessidade de contabilizar a forma de pagamento em seu software de automação comercial, basta chamar a função:

DARUMA_FI_FECHACUPOMRESUMIDO("Forma de Pagamento", "Mensagem Promocional") e pronto, a DARUMA32.DLL irá se encarregar de fechar o cupom pra você automaticamente com o valor total da compra incluindo a mensagem promocional passada como parâmetro.

........ x x x x ........

3. DARUMA: TEF, COMO IMPRIMIR RAPIDAMENTE A RESPOSTA DO TREF SEM ERRAR!

TEF - Transferência Eletrônica de Fundos - Para Imprimir a Resposta da Operadora de Cartão de Credito, sem a necessidade de varrer arquivos, etc.. Você poderá economizará muitas rotinas e muito código fonte, chamado apenas a função.

Daruma_TEF_ImprimirResposta( "Local do Arquivo de Resposta","Forma de Pagamento", 0 ou 1 se deseja travar o teclado ou não.

Exemplo: Vamos imaginar que temos um cupom fiscal de 100 reais que esta sendo pago com a forma de Pagamento cadastrada na Impressora "Cartão de Credito".

Após o fechamento do cupom fiscal e a comunicação com a Operadora de Cartão, você irá receber um arquivo chamado IntPos.001, então apenas chame a função:

Daruma_TEF_ImprimirResposta("c:\TefDial\Resp\Intpos.001","Cartão de Credito", 1)

E a DARUMA32.DLL irá se encarregar de imprimir o arquivo de resposta pra você mais rápido que você controlar esta impressão linha a linha, como saber se a Impressão foi OK? simples, veja o que a função irá te retornar, se retornar diferente de 1(um) é porque deu pau! caso contrário tudo OK!

........ x x x x ........

4. DARUMA: TEF, IMPRIMINDO A SEGUNDA VIA SEM ERRO E RÁPIDO!

Deseja imprimir uma segunda via de um comprovante de TEF? Simples, chame novamente a função.

Daruma_TEF_ImprimirResposta("c:\TefDial\Resp\Intpos.001","Cartão de Credito", 1)

E a função não irá abrir um novo Vinculado, aproveitará o que já está aberto e imprimirá sua segunda via.

........ x x x x ........

5. DARUMA: COMO TRATAR A RE-IMPRESSÃO DO TEF QUANDO OCORRER ERRO NA PRIMEIRA IMPRESSAO DA RESPOSTA

Deseja Re-Imprimir a resposta do TEF no Relatório Gerencial? Dicas Simples, chame novamente a função

Daruma_TEF_ImprimirResposta("c:\TefDial\Resp\Intpos.001","Cartão de Credito", 1) So que desta vez passando um espaço em branco na Forma de Pagamento, assim:

Daruma_TEF_ImprimirResposta("c:\TefDial\Resp\Intpos.001"," ", 1)

E a DARUMA32.DLL entendera que você deseja imprimir o IntPos.001 em um gerencial, neste caso se o vinculado estiver aberto a DARUMA32.DLL fecha, e abre o gerencial e imprimir a resposta do IntPos.001, caso contrario apenas abre o Gerencial e Imprime a Resposta do IntPos.001

........ x x x x ........

6. DARUMA: TRAVANDO O TECLADO PARA O TEF

Deseja controlar o travamento do Teclado enquanto imprime o TEF? simples chame a função

Daruma_TEF_TravarTeclado(passe 0 ou 1 para travar ou não o teclado)

........ x x x x ........

7. DARUMA: ONDE ESTOU? COMO FECHAR O VINCULADO OU O GERENCIAL SEM SABER DENTRO DE QUEM VOCÊ ESTÁ!

Você não sabe se está com um Comprovante não Fiscal Vinculado Aberto ou se esta com um Relatório Gerencial Aberto e esta em duvida qual comando utiliza para Fechar o relatório, neste caso faça o seguinte:

Chame a função Daruma_TEF_FecharRelatorio() e a DARUMA32.DLL se encarrega de identificar pra você quem está aberto e fechar, simples! Deixe a DARUMA32.DLL trabalhar por você!

........ x x x x ........

8. DARUMA: PERDI O "FOCO" DE MINHA JANELA DE MINHA APLICACAO O QUE FAÇO?

Problemas com Foco na Aplicação? Se você estiver perdendo o Foco na Janela, poderá utilizar também a DARUMA32.DLL para te ajudar, Chame a Função Daruma_TEF_SetFocus("Titulo") e passe como parâmetro o Titulo da Janela que deseja setar o foco, simples, fácil!

........ x x x x ........

9. DARUMA: TEF - COMO ESPERAR A RESPOSTA SEM TRAVAR O COMPUTADOR OU DEIXAR A MAQUINA LENTA

Quando você realiza uma transação eletrônica de Fundos, você efetua os seguintes passos:

a) Cria o Arquivo de texto solicitando uma Transação eletrônica de fundos.

b) Cria um Thread, Loop, For, ou Timer, para ficar monitorando durante 60 segundos ou menos se o arquivo de resposta da Operadora de Cartão chegou.

Se você não desenhar a rotina de espera de arquivo de uma forma adequada, com Threads, etc. Você simplesmente irá travar seu programa ou deixa-lo demasiado lento pelo fato de estar consumindo muita CPU.

Então quando você necessitar esperar um arquivo de resposta da Operadora de TEF, faça o seguinte:

Execute o Passo a (acima descrito) apos isso chame a função:

iRetorno = Daruma_TEF_EsperarArquivo("C:\TEF_DIAL\RESP\INTPOS.001","60","0") com isso a DARUMA32.DLL estará esperando este arquivo para você, e note que ela irá passar o controle de sua aplicação para dentro da dll d maneira que seu programa somente continuará a executar as linhas subseqüentes apos a execução da função e a espera do arquivo de retorno ou não. Deixe que a DARUMA32.DLL assuma esta função para você.

........ x x x x ........

10. DARUMA: TEF - O PAPEL ACABOU NO MEIO DA IMPRESSAO DO TEF O QUE FAZER?

Necessita controlar pouco papel ou impressora desligada na Transação de TEF? bem estes passos são essenciais para a Homologação de seu software de Automação Comercial, por isso você poderá utilizar o retorno que a Função Daruma_TEF_ImprimirTef devolve, pois com este retorno sendo ele diferente de 1(um) você poderá solicitar a Reimpressão do Cupom. e assim controlar se a impressão do TEF aconteceu ou não, porque na Homologação o que importa saber é se a impressão completa do TEF aconteceu ou não, e por isso o retorno da função já é o suficiente para este controle.

Veja um exemplo de um pequeno Algoritmo de como você poderá controlar isso:

iRetorno= Daruma_TEF_ImprimirResposta("c:\TefDial\Resp\Intpos.001","Cartão de Credito", 1)
 
'Verifica se a impressão foi OK e caso não tenha sido re-imprime no Gerencial 
'passando apenas espaço em branco na forma de pagamento
 
if (iRetorno !=1)
{  Msgbox ("Problemas na Impressao de TEF")
    iRetorno= Daruma_TEF_ImprimirResposta("c:\TefDial\Resp\Intpos.001"," ", 1)
}

........ x x x x ........

11. DARUMA: DEVOLUÇÃO DE MERCADORIAS, O QUE FAZER E COMO FAZER NO ECF?

Necessita controlar a devolução de mercadoria no ECF? bem utilize-se dos registradores não fiscais que o ECF possui com ele você poderá contabilizar tudo o que necessita em valores e separados por "títulos" que você mesmo pode criar.

Para isso chame a função Darma_FI_NomeiaTotalizadorNãoSujeitoIcms("01","Devolucao")

com a função acima você programa um espaço na memória do ECF para cadastrar valores nele seja para controle fiscal ou administrativo.

Para fazer uso do totalizador, chame:Daruma_FI_RecebimentoNãoFiscal("01","10,00","Dinheiro")

E com isso você contabiliza ou soma o valor de 10,00 reais ao totalizador chamado devolução.

Porém e se você necessitar imprimir o Texto de devolução? bem neste você pode utilizar-se de um Comprovante não Fiscal Vinculado, porque assim você poderá imprimir um texto livre sem a necessidade de emissão de leitura X antes, como ?

Bem apos executar o Recebimento acima chame as funções:

Daruma_FI_AbreComprovanteNãoFiscalVinculado("Dinheiro","","") passe apenas a forma de pagamento e pronto você esta apto a imprimir texto livre o texto que você desejar por 2 minutos, como? chame a função

Daruma_FI_UsaComprovanteNãoFiscalVinculado("Blablablabla") passe um texto de até 480 caracteres.

CUIDADO: Não são todos os ECFs que permitem vincular em Dinheiro. A DARUMA32.DLL permite.

........ x x x x ........

12. DARUMA: COMO SABER SE A VENDA ESTA ABERTA OU "EM ABERTA"

Para saber se um cupom fiscal está aberto, não necessita chamar a função de status, decodificar erro, etc.. apenas chame a função:

Daruma_FI_StatusCupomFiscal e pronto! A Função retornará 0(zero) ou 1(um) indicando se esta aberto ou fechado.

........ x x x x ........

13. DARUMA: TEF EM SISTEMA OPERACIONAL MS-DOS - COMO FAZER COM O ECF EM MS-DOS

Se você utiliza DOS, faça uso do OBSERVER.EXE que permite que seu aplicativo em DOS faça uso de Todo Potencial da DLL de comunicação, veja como é Fácil enviar uma Venda de Item e um Fechamento do Cupom Fiscal quando você utiliza o observer em seu aplicativo DOS em Clipper por exemplo..Apenas crie o Arquivo e deixe o observer trabalhar por Você!!

VAR_BUFFER_COMANDO := "1001;123;Caneta;TA;I;10;2;0,25;%;0000;"
COMUNICA_COM_ECF(VAR_BUFFER_COMANDO) /*Esta função completa você poderá baixar em nosso site

VAR_BUFFER_COMANDO := "1012;Dinheiro;Obrigado, volte sempre !!!;"
COMUNICA_COM_ECF(VAR_BUFFER_COMANDO)

Apenas com estes dois comandos acima você terá seu aplicativo em DOS emitindo Cupom e Fechando o Cupom fiscal Automaticamente!!

........ x x x x ........

14. DARUMA: NOVO CONCEITO DE ACESSO A PERIFÉRICOS, O QUE É O FRAMEWORK!

Com a DARUMA32.DLL você pode ser acesso a toda linha de produtos DARUMA, sem a necessidade de baixar diferentes Driver para Diferentes produtos na DARUMA32.DLL possui suporte a XML, .NET, C# e VB.NET Microsoft com código fonte completo no site www.daruma.com.br.

........ x x x x ........

15. DARUMA: COMO ECONOMIZAR ATÉ 40% DE PAPEL EM MEU ECF ATRAVÉS DE MEU APLICATIVO! ($$)

Para Economizar papel no ECF a dll DARUMA32.DLL é a única dll de comunicação que permite Vender item em Uma Linha, fazer comprovante Não Fiscal Vinculado com a forma de pagamento Dinheiro a até mesmo vincular seus suprimentos.

Para efetuar a venda de item em apenas uma Única Linha, chame função:

Daruma_FI_VendeItem( Código do produto, Descrição, etc..)

O Código pode ser de até 6 Digitos e a descrição de até 13 Digitos,

Ou o Código de até 13 Digitos e a descrição de até 6 Digitos

Caso o item não se encaixe nas especificações acima, não se preocupe a dll automaticamente joga o item em duas linhas pra você!

........ x x x x ........

16. DARUMA: TEF - PROCESSO COMPLETO, COMO FAZER?

Dica completa! TEF completo com a DARUMA32.DLL, veja como!

Para fazer TEF com a Daruma, utilize as funções de TEF (Daruma_TEF_ImprimirResposta) e deixe que a dll Administre a Impressora Fiscal pra Você!! Deseja Re-Imprimir o Comprovante de TEF em um Relatório Gerencial? Veja com é fácil com o código fonte Abaixo! Apenas passe a forma de pagamento em Branco que a Função irá Fechar seu Vinculado e Abrir o Gerencial imprimindo a Resposta do TEF!!

Daruma_Retorno := Daruma_FI_VendeItem( pchar('1234567890123'), pchar('Caneta'), pchar('TA'), 'F', 
pchar('1,500'), 2, pchar('0,25'), '%', pchar('0000') );
 
Daruma_Retorno:= Daruma_FI_FechaCupomResumido( pchar( 'Dinheiro' ), 
pchar( 'Daruma32.dll - Obrigado, volte sempre !!!' ) );
 
Daruma_Retorno := Daruma_TEF_ImprimirResposta(pchar('c:\INTPOS.001'),pchar('Cartao'),'1');
 
Daruma_Retorno := Daruma_TEF_ImprimirResposta(pchar('c:\INTPOS.001'),pchar('Cartao'),'1');
 
if(Daruma_Retorno<>1) then
begin
    ShowMessage('Impressora Não Reponde, Vou fechar o vinculado e Imprimir no Gerencial');
    Daruma_Retorno := Daruma_TEF_ImprimirResposta(pchar('c:\INTPOS.001'),'  ','1')
    Daruma_Retorno := Daruma_TEF_ImprimirResposta(pchar('c:\INTPOS.001'),'  ','1');
end;
 
Daruma_Retorno := Daruma_TEF_FechaRelatorio( );

........ x x x x ........

17. DARUMA: ERROS DO ECF, COMO SABER MAIS DETALHES VIA APLICATIVO

Com a DARUMA32.DLL você poderá ter mais de 90 código de erros para serem decodificados por seu aplicativo, deixando assim seu aplicativo mais depurado e com mensagens mais assertivas ao serem comunicadas ao usuário os possíveis erros no ponto de venda.

Para Isso chame a função:

Daruma_FI_RetornaErroExtendido(string)

Retorna o Erro Extendido do ECF, além do ST1 e ST2 retorna uma Tabela Completa de Erros.

Parâmetro:

String com 4 Posições que irá conter o Código de Erro Extendido que o ECF retorna
Retorna
999 caso tenha a DLL retorne TIME-OUT
Retorna a string original passada, com VAZIOS, caso NAO HAJA ERRO.

........ x x x x ........

18. DARUMA: ECF EM MS-DOS, USANDO A DLL DE COMUNICAÇÃO E MS-DOS E NÃO FICANDO PRA TRÁS!

Se você é programador DOS como integrar seu aplicativo DOS com a impressora fiscal? Bem, para isso você poderá utilizar o Driver OBSERVER que compatibiliza seu aplicativo DOS para utilizar a DARUMA32.DLL veja porque usar o Observer:

A) Porque com isso o Protocolo que você esta usando no seu programa DOS poderá continuar sendo o mesmo quando você migrar seu programa para Windows. Aproveitando todas as rotinas de envio de comando, cultura e aprendizado de seus programadores com este protocolo utilizado pelo Observer

B) Porque todas as EVOLUÇÕES e MELHORIAS e FACILIDADES da DARUMA32.dll estarão disponíveis para seu Aplicativo DOS, porque o OBSERVER utiliza-se da Dll de Comunicação com todas as faciliadades que nela se encontra.

C) Porque agora para enviar os comandos para o ECF através de seu aplivativo DOS você utiliza-se das Funções de Alto-Nivel que a DARUMA32.dll contém, basta passar o INDICE da função que você Obtem ao Lado do nome da cada Função, neste Help, ou seja, com isso você consegue usar funções como Daruma_FI_FechaCupomResumido antes não disponívies no DOS, porém agora disponivels no OBSERVER.

D) Porque agora você não necessita se preocupar com a passagem correta dos Parametros, como por exemplo na Descrição da venda de um item, você nao necessita se preocupar com preenchimento do restante da Descrição pois a DARUMA32.dll através do OBSERVER faz isso para você!! Esta Facilidade antes estava disponível apenas no Windows, mas agora está disponível também para Aplicativos DOS.

........ x x x x ........

19. DARUMA: MINIIMPRESSORAS (IMPRESSORAS NÃO FISCAIS) COM USAR E IMPRIMIR

Para Acesso a impressão de texto em MiniImpressoras,, através da DARUMA32.DLL você tem acesso a porta Paralela e Serial mesmo em sistema operacional protegido.

Para Imprimir um texto formatado voce poderá utilizar as Tags de formatação que foram criadas para a linha de impressoras MiniImpressora Não Fiscal, são elas:

<b></b> Para sinalizar Negrito
<i></i> Para sinalizar iTálico
<s></s> Para sinalizar Sublinhado
<e></e> Para sinalizar Expandido
<c></c> Para sinalizar Condensado
<n></n> Para sinalizar Normal
<l></l> Para Saltar Uma Linha
<cr></cr> Retornar o Carro de Impressao para o Começo.
<sl>NN</sl> Para Saltar Várias Linhas", 0)
<tc>C</tc> Riscar Linha com um Caracter Especifico
<ce></ce> Para Centralizar
<dt></dt> Para Imprimir Data Atual
<hr></hr> Para Imprimir Hora Atual
<sp>NN</sp> Inserir NN Espaços em Branco
<sn></sn> Sinal Sonoro, Apitar
<g></g> Abre a Gaveta
<a> Aguardar até o Término da Impressão
</a> Não Aguardar até o Término da Impressão
<< Quando desejar imprimir o Caracter "<"
>> Quando desenar imprimir o Caracter ">"

........ x x x x ........

20. DARUMA: BURLANDO A PROTECAO NO XP, NT 2000 PARA USAR A MINIMPRESSORA

Para utilizar-se de miniImpressoras em Windows 2000, XP NT é necessário burlar a proteção (HAL) do sistema operacional para ter acesso aos status mais definidos da MiniImpressora Não Fiscal , como por exemplo:

Documento preparado para Autenticar ou Documento Ausente para Autenticação, e assim por diante.

Veja como instalar o .SYS que burla esta proteção e permite acesso ilimitado na Paralela com a DARUMA32.DLL:

O PROCESSO ABAIXO NÃO É NECESSARIO CASO VOCE ESTEJA UTILIZANDO-SE DA PORTA SERIAL PARA SE COMUNICAR OU A PARALELA NO W95 E W98
- O PROCESSO ABAIXO DEVE SER SEGUIDO APENAS NO CASO DE USO DA PARALELA EM SISTEMA OPERACIONAIS PROTEGIDOS COMO W2000, WXP, WNT, WxxSERVER.

Devido a existência do HAL (Hardware Abstract Layer) existe a necessidade de se Burlar esta "Camada" de comunicação para que Status como FINAL de PAPEL, Operaçoes como Autenticação e Verificação se o papel está presente para ser autenticado ou não, sejam utilizados e aceitos pelo HAL.

Por isso a dll faz uso de um serviço que fornece um endereço protegido de comunicação com a PARALELA chamado HWINTERFACE.SYS.

Passos Para a INSTALAÇÃO DA DS300 na PARALELA para Uso da DARUMA32.DLL:
(Devem ser Executados nesta Ordem)

  • Copie o arquivo HWINTERFACE.SYS para o diretório WINNT\SYSTEM32\DRIVERS, ou para o diretório WINDOWS\SYSTEM32\DRIVERS, ou para qualquer outro diretório que você tenha instalado o Windows: xxx\SYSTEM32\DRIVERS
  • Após a instalação faça dois cliques no arquivo DARUMA.REG que irá registrar este serviço do Windows.
  • Reinicie o computador (Válido somente para W2000 porque no XP nao é Necessrio o re-boot)
  • Pronto!! Você já pode usar a DARUMA32.DLL na Porta Paralela de seu computador com todas as funções de Autenticação, Staus, etc.. Tudo ON-LINE com a DS300.