Neste artigo veja 3 destaques nos recursos da DarumaFramework.dll. A DarumaFramework.dll é uma DLL de alto nível, que foi desenvolvida com o propósito de trazer facilidades em um desenvolvimento rápido e fácil, com nossos produtos.Vamos conhecer estes recursos:

1º Recurso: O XML

Este XML substitui a funcionalidade de armazenar informações ou “bits” nos registros do sistema operacional. Disponibilizando desta forma a facilidade do acesso a estas mesmas informações e na alteração da mesma, em tempo real de execução.

O DarumaFramework.XML pode ser manipulado e lido sem que seja necessário a criação de rotinas na aplicação para isto, e este procedimento é feito com apenas duas funções aregRetornaValorChave_DarumaFramework e aregAlterarValor_Daruma.

  • Leitura:Para obtermos valores do XML utilizaremos a função: regRetornaValorChave_DarumaFramework. Este método retorna o valor de uma chave do registry/XML.
  • Parâmetros Produto:Nome do produto.Chave:Nome da ChaveValor:Variável String por referência com 100 espaços alocados para que possa retornar na variável o valor da Chave que você deseja.
[DllImport("DarumaFrameWork.dll")]
        public static extern int regRetornaValorChave_DarumaFramework(string sProduto, 
string sChave, [MarshalAs(UnmanagedType.VBByRefStr)] ref string szRetorno);
 
private void métodoRegRetornaValorECFDarumaToolStripMenuItem_Click(object sender, EventArgs
 e)
        {
     string Str_Valor = new string(' ', 30);
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = 
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.regRetornaValorChave_DarumaFramework(
"ECF", "ModoPreVenda", ref Str_Valor);
            
        }
C#
function 
regRetornaValorChave_Daruma(pszProduto:string;pszChave:string;pszValor:string):Integer;
 StdCall; External 'DarumaFramework.dll';
  
Str_Valor := StringOFChar(#0,100);
Int_Retorno := regRetornaValorChave_DarumaFramework(‘ECF’, ‘ModoPreVenda’, Str_Valor);
Delphi
Declare Function regRetornaValorChave_DarumaFramework Lib "DarumaFramework.dll" (ByVal 
sProduto As String, sChave As String, ByVal sValor As String) As Integer
 
Private Sub regRetornaValorChave_DarumaFramework_Click()
Dim Str_Valor As String
Str_Valor = Space(100)
 iRetorno = regRetornaValorChave_DarumaFramework("ECF", "ModoPreVenda", Str_Valor)
          MsgBox ("Valor da Chave = " + Str_Valor)  
End Sub
VB6

Nos exemplos acima capturamos o valor da chave “ModoPreVenda”.

  • Alteração:Veremos agora como fazer a alteração de uma chave no XML com a funçãoregAlterarValor_Daruma:
  • Parâmetros:Chave: Produto e Chave a serem modificados (Ex.: ECF\ModoPreVenda).
  • Valor: Novo valor para a Chave
[DllImport("DarumaFrameWork.dll")]
  public static extern int regAlterarValor_Daruma(string pszChave, string pszValor);

private void métodoRegAlterarValorECFDaruma_Click(object sender, EventArgs e)

  {
 
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = 
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.regAlterarValor_Daruma(“ECF\ModoPreVenda", "1");
}
C#
function regAlterarValor_Daruma(pszPathChave:string,pszValor:string):Integer; 
StdCall; External 'DarumaFramework.dll';

Int_Retorno:=regAlterarValor_Daruma(‘ECF\ModoPreVenda','1');
DELPHI
Public Declare Function regAlterarValor_Daruma Lib "DarumaFramework.dll" 
(ByVal sProduto_Chave As String, ByVal sValor As String) As Integer
 
Private Sub regAlterarValor_ECF_Daruma_Click(Index As Integer)
  iRetorno = regAlterarValor_Daruma("ECF\ModoPreVenda", "1")
End Sub
VB6

Nos exemplos acima alteramos o valor da chave ModoPreVenda, o que irá habilitar o modo de Pré-Venda (Venda Bufferizada).

2º Recurso: Modo Pré-Venda

O modo Pré-Venda é um recurso onde é possível efetuar toda a venda de itens armazenando em um buffer, para depois imprimir o Cupom Fiscal todo de uma só vez.

A DarumaFramework.dll disponibiliza este recurso, que está presente nas linhas de impressoras MACH. Já imaginou só? Imprimir um Cupom Fiscal de,por exemplo: 50 itens em 3 segundos?

E tudo isto, só habilitando a chave no XML.Localizada na sub chave, no produto.

3º Recurso: Tratamento de Retornos

Os mais de 230 métodos disponibilizados na DarumaFramework.dll possuem retornos,que indicam se a execução do método ocorreu com sucesso ou não, se tem algum aviso com relação à execução e ainda no caso de uma não execução nos indica o Erro,de uma maneira bem rápida e prática. Constituído por 3 funções: rStatusUltimoCmdInt_ECF_Darum, eInterpretarErro_ECF_Daruma e eInterpretarAviso_ECF_Daruma

Vejao exemplo prático:

private void métodoILeituraXECFDarumaToolStripMenuItem_Click(object sender, EventArgs e)
{
  DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = 
  DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iLeituraX_ECF_Daruma();

  
  int Int_NumErro = 0;
  int Int_NumAviso = 0;

  if (DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno == 1)
  {

      System.Windows.Forms.MessageBox.Show("Método executado com Sucesso!");

  }
  
  else
  {
StringBuilder Str_Msg_NumErro = new StringBuilder(300);
      StringBuilder Str_Msg_NumAviso = new StringBuilder(300);

      DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = 
      DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.rStatusUltimoCmdInt_ECF_Daruma
      (ref Int_NumErro, ref Int_NumAviso);
      DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = 
      DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.eInterpretarErro_ECF_Daruma
      (Int_NumErro, Str_Msg_NumErro);
      DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = 
      DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.eInterpretarAviso_ECF_Daruma
      (Int_NumAviso, Str_Msg_NumAviso);

System.Windows.Forms.MessageBox.Show(Convert.ToString((Str_Msg_NumAviso)));
      System.Windows.Forms.MessageBox.Show(Convert.ToString((Str_Msg_NumErro)));

  }
}
C#
Private Sub LeituraX_Click()

Dim int_erro, int_aviso As Integer
Dim str_erro, str_aviso As String
str_erro = Space(100)
str_aviso = Space(100)

iRetorno = iLeituraX_ECF_Daruma
If (iRetorno < 1) Then

iRetorno = rStatusUltimoCmdInt_ECF_Daruma(int_erro, int_aviso)


iRetorno = eInterpretarAviso_ECF_Daruma(int_aviso, str_aviso)
iRetorno = eInterpretarErro_ECF_Daruma(int_erro, str_erro)
MsgBox (CStr(str_erro) + CStr(str_aviso))

Else
MsgBox ("Método executado com Sucesso")

End If

End Sub
VB6
procedure TLeituraXECFDaruma1Click(
  Sender: TObject);

begin

   Int_Retorno:=  iLeituraX_ECF_Daruma();
   Int_NumErro:= 0;
	 Int_NumAviso:= 0;
   Str_Msg_NumErro:=StringOFChar(' ',300);
   Str_Msg_NumAviso:=StringOFChar(' ',300);
   Str_Msg_RetMetodo:=StringOFChar(' ',300);


   Int_Retorno:=rStatusUltimoCMDInt_ECF_Daruma(Int_NumErro, Int_NumAviso);

// Mensagem do erro
   Int_Retorno:=eInterpretarErro_ECF_Daruma(Int_NumErro, Str_Msg_NumErro);
// Mensagem aviso
   Int_Retorno:=eInterpretarAviso_ECF_Daruma(Int_NumAviso, Str_Msg_NumAviso);

  Str_Erro:=Str_Msg_NumErro;
  Str_Aviso:=Str_Msg_NumAviso;
  Str_Msg_Retorno_Metodo:=Str_Msg_RetMetodo;

   Application.MessageBox( Pchar('Número Erro = ' + pchar(Str_Erro) +  #13 + 
   'Número Aviso = ' + pchar(Str_Aviso)), 'DarumaFramework Retorno do Método', mb_ok);

end;
Delphi