Hoje conheceremos neste Escovando Bits, tudo sobre o Cupom Adicional.

O Cupom Adicional é um recurso no qual conseguimos a impressão de algumas informações extras após emitir um Cupom Fiscal ou Bilhete de Passagem.

As Impressoras Fiscais tem a capacidade de armazenar informações sobre o último Cupom Fiscal em sua memória.
Existem dois tipos de Cupons Adicionais que a impressora é capaz de gerar, o simplificado e o detalhado.

  Informações Impressas
Cupom Adicional Simplificado Número do Cupom Fiscal (CCF).
  COO do Cupom Fiscal.
Cupom Adicional Detalhado Número do Cupom Fiscal (CCF).
  COO do Cupom Fiscal.
  Valor Total da Operação.
  Totalizador das alíquotas utilizadas no Cupom.

Para muitos, estes comprovantes são úteis e resolvem plenamente sua necessidade de armazenas estas informações, porém, colhemos o feedback que seria interessante resgatar algumas informações extras, tanto no Cupom Fiscal quanto no bilhete de passagem.

Nossa equipe atendeu o feedback e implementou na DarumaFramework.dll o Cupom Adicional que quem determina o que será impresso é você, parceiro desenvolvedor!

As informações que deverão sair ou não no Cupom Adicional ficam armazenadas em uma chave no DarumaFramework.xml, e para configurá-lo utilizaremos a função: regCFCupomAdicionalDllConfig_ECF_Daruma. Este método permite configurar a chave no DarumaFramework.xml indicando os dados que serão impressos no cupom adicional após a emissão de cada Cupom Fiscal ou Bilhete de Passagem.

Chave no XML:


Parâmetro

String com os 21 valores com a configuração dos dados que serão impressos no Cupom Adicional.
Estes dados dos parâmetros são 21 dígitos seguindo a opção desejada conforme a tabela.
Veja abaixo a tabela:

Seq Parâmetro Não imprime Imprime
1 Data e Hora da Emissão 0 1
2 CCF - Contador Cupom Fiscal 0 1
3 COO Contador Ordem Operação 0 1
4 Quantidade Itens Vendidos 0 1
5 Quantidade de Itens Cancelados 0 1
6 Tempo de Impressão 0 1
7 Valor Total do Cupom 0 1
8 Alíquotas usadas, exceto Isento, Não Tributado e Substituição Tributária 0 1
9 Forma de Pagamento x Valor 0 1
10 Reservado para uso futuro 0 1
11 Data e Hora Embarque 0 1
12 Plataforma 0 1
13 Poltrona 0 1
14 Cidade de Origem 0 1
15 Cidade de Destino 0 1
16 Percurso 0 1
17 RG do Passageiro 0 1
18 Aciona Guilhotina entre o Cupom Fiscal e Cupom Adicional 0 1
19 Imprime código de Barras no cupom adicional, para isso utilize a função 0 1
20 Imprime um Campo Livre, caso seja previamente executado a função 0 1
21 Imprime a Identificação do cliente se o valor for 2(dois) 0 1

Para a emissão do Cupom Adicional podemos utilizar duas funções na DarumaFramework.dll uma delas é o próprio método para o encerramento do Cupom Fiscal, a iCFEncerrar_ECF_Daruma.

Definição:
Este método finaliza o Cupom Fiscal, com a opção de emitir Cupom Adicional ou não e mensagem promocional.

Parâmetros:

pszCupomAdicional - Indicação através de índice se o Cupom adicional será impresso ou não.

Índices
0 - Não Imprime Cupom Adicional
1 - Imprime Cupom Adicional Simplificado (CCF e COO).
2 - Imprime Cupom Adicional Detalhado(CCF, COO, Valor do CF e Totalizadores de Alíquotas no CF).
3 - Imprime Cupom Adicional DLL(Imprime os campos conforme a configuração do DarumaFramework.xml).

pszMensagem – Mensagem Promocional em até 8 linhas.
O texto informado pode ser formatado, para isso você pode utilizar as tags de formatação D-HTML.

Conheça mais sobre a formatação: http://bit.ly/rLb510

Obs: O método deve ser executado caso o Cupom esteja realmente em fase de finalização, assim o Cupom será finalizado para que o Cupom Adicional possa ser impresso ou não.

Na prática:

C(Sharp)

private void encerramentoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_Declaracoes_CSharp.iCFAbrirPadrao_ECF_Daruma();
            DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_Declaracoes_CSharp.iCFVenderResumido_ECF_Daruma("F1", "4,00", "928203193", "Café");
            DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_Declaracoes_CSharp.iCFVenderResumido_ECF_Daruma("F1", "2,50", "000232315", "Leite");
            DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_Declaracoes_CSharp.iCFTotalizarCupomPadrao_ECF_Daruma();
            DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_Declaracoes_CSharp.iCFEfetuarPagamentoPadrao_ECF_Daruma();
            DarumaFramework_Declaracoes_CSharp.iRetorno =
            DarumaFramework_Declaracoes_CSharp.iCFEncerrar_ECF_Daruma("1", "Obrigado\nVolte Sempre!");           
        }

No exemplo acima é emitido o Cupom Fiscal e finalizado com a função iCFEncerrar_ECF_Daruma com a Impressão do Cupom Adicional Simplificado.

Delphi

function iCFEncerrar_ECF_Daruma(pszCupomAdicional:string;pszMensagem:string):Integer; StdCall; External 'DarumaFramework.dll';
 Int_Retorno := iCFEncerrar_ECF_Daruma('1','Obrigado e volte sempre!!');

VB6

Public Declare Function iCFEncerrar_ECF_Daruma Lib "DarumaFrameWork.dll" (ByVal pszCupomAdicional As String, ByVal pszMensagem As String) As Integer

Private Sub TB_Numero_Item_Click()
       
        iRetorno = iCFEncerrar_ECF_Daruma(“1”, ” Obrigado e volte sempre!!”)
End Sub

A segunda maneira é após a finalização do Cupom Fiscal chamarmos o método:

iCFEmitirCupomAdicional_ECF_Daruma

Definição:
Emite o Cupom Adicional referente ao último Cupom Fiscal emitido conforme as configurações do DarumaFramework.xml.

C(Sharp)

private void confCupomAdToolStripMenuItem_Click(object sender, EventArgs e)
        {

            DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_Declaracoes_CSharp.iCFAbrirPadrao_ECF_Daruma();
            DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_Declaracoes_CSharp.iCFVenderResumido_ECF_Daruma;

("F1", "4,00", "928203193", "Café");
            DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_Declaracoes_CSharp.iCFVenderResumido_ECF_Daruma

("F1", "2,50", "000232315", "Leite");
            DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_Declaracoes_CSharp.iCFTotalizarCupomPadrao_ECF_Daruma();
            ; DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_Declaracoes_CSharp.iCFEfetuarPagamentoPadrao_ECF_Daruma();
            DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_Declaracoes_CSharp.iCFEncerrarPadrao_ECF_Daruma();

            DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_Declaracoes_CSharp.regCFCupomAdicionalDllConfig_ECF_Daruma

("111110111000000002000");
            DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_Declaracoes_CSharp.iCFEmitirCupomAdicional_ECF_Daruma();
        }

Veja como foi Impresso

Delphi

function iCFEmitirCupomAdicional_ECF_Daruma(): Integer; StdCall; External 'DarumaFramework.dll';
Int_Retorno:= iCFEmitirCupomAdicional_ECF_Daruma();

VB6

Public Declare Function iCFEmitirCupomAdicional_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer

Private Sub mnuiCFEmitirCupomAdicional_ECF_Daruma_Click()
iRetorno = iCFEmitirCupomAdicional_ECF_Daruma()
End Sub



Um abraço e até a próxima!

E-mails:
ddc.suporte@daruma.com.br
suporte.ddc@daruma.com.br
desenvolvedores.suporte@daruma.com.br
suporte.desenvolvedores@daruma.com.br
desenvolvedores.daruma@daruma.com.br
suporte@daruma.com.br
suporte.alexandre@daruma.com.br
claudenir@daruma.com.br
Skypes:
ddc_suporte_daruma
suporte_ddc_daruma
desenvolvedores_suporte_daruma
suporte_desenvolvedores_daruma
desenvolvedores_daruma
suporte_daruma
suporte_alexandre_daruma
claudenir_andrade