unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Button1: TButton;
    Label1: TLabel;
    Edit1: TEdit;
    Button2: TButton;
    Image1: TImage;
    Image2: TImage;
    GroupBox2: TGroupBox;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button3: TButton;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    GroupBox3: TGroupBox;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Button4: TButton;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    GroupBox4: TGroupBox;
    Edit11: TEdit;
    Edit12: TEdit;
    Edit13: TEdit;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Button5: TButton;
    GroupBox5: TGroupBox;
    Edit14: TEdit;
    Edit15: TEdit;
    Label14: TLabel;
    Label15: TLabel;
    Button6: TButton;
    Button7: TButton;
    Edit16: TEdit;
    Label16: TLabel;
    GroupBox6: TGroupBox;
    Button8: TButton;
    Edit17: TEdit;
    Edit18: TEdit;
    Edit20: TEdit;
    Label17: TLabel;
    Label19: TLabel;
    Button9: TButton;
    Button10: TButton;
    Label20: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }

  inicio, fim : Integer;
end;
function  DLLG2_IniciaDriver(Canal: String): Integer; stdcall; external 'DllG2.dll';
function  DLLG2_EncerraDriver(Handle: Integer): Integer; stdcall; external 'DllG2.dll';
function  DLLG2_ExecutaComando(Handle: Integer; Comando: string): Integer; stdcall; external 'DllG2.dll';
procedure DLLG2_LimpaParams(Handle: Integer); stdcall; external 'DllG2.dll';
procedure DLLG2_AdicionaParam(Handle: Integer; NomeParam, ValorParam: string; TipoParam: Integer);stdcall; external 'DllG2.dll'; // 0-boolean  2-data  3-hora  4-inteiro  5-long  9-inteiro sem sinal  10-long sem sinal 6-Monetario  7-string

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin
  inicio := DLLG2_IniciaDriver(edit1.text);
  if inicio < 0 then
    showmessage('não foi possivel conectar')
  else
    begin
      image2.Visible := false;
      image1.Visible := true;
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);

begin
  fim := DLLG2_EncerraDriver(inicio);
  showmessage('Conexão Encerrada');
  image1.Visible := false;
  image2.Visible := true;
end;


procedure TForm1.Button3Click(Sender: TObject);

begin
  DLLG2_LimpaParams(0);
  DLLG2_AdicionaParam(0, 'NomeConsumidor', edit2.text, 7);
  DLLG2_AdicionaParam(0, 'EnderecoConsumidor', edit3.text, 7);
  DLLG2_AdicionaParam(0, 'IdConsumidor', edit4.text, 7);
  DLLG2_ExecutaComando(0, 'AbreCupomFiscal');
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  DLLG2_LimpaParams(0);
  DLLG2_AdicionaParam(0, 'CodAliquota', edit5.text, 4);
  DLLG2_AdicionaParam(0, 'CodProduto', edit6.text, 7);
  DLLG2_AdicionaParam(0, 'NomeProduto', edit7.text, 7);
  DLLG2_AdicionaParam(0, 'PrecoUnitario', edit8.text, 6);
  DLLG2_AdicionaParam(0, 'Quantidade', edit9.text, 6);
  DLLG2_AdicionaParam(0, 'Unidade', edit10.text, 7);
  DLLG2_ExecutaComando(0, 'VendeItem');
end;

procedure TForm1.Button5Click(Sender: TObject);

begin
   DLLG2_LimpaParams(0);
   DLLG2_AdicionaParam(0, 'CodMeioPagamento', edit11.text, 4);
   DLLG2_AdicionaParam(0, 'NomeMeioPagamento', edit12.text, 7);
   DLLG2_AdicionaParam(0, 'Valor', edit13.text, 6);
   DLLG2_ExecutaComando(0, 'PagaCupom');
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
   DLLG2_LimpaParams(0);
   DLLG2_AdicionaParam(0, 'Operador', edit14.text, 7);
   DLLG2_AdicionaParam(0, 'TextoPromocional', edit15.text, 7);
   DLLG2_ExecutaComando(0, 'EncerraDocumento');
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  DLLG2_LimpaParams(0);
  DLLG2_AdicionaParam(0, 'Avanco', edit16.text, 4);
  DLLG2_ExecutaComando(0, 'AvancaPapel');

end;

procedure TForm1.Button8Click(Sender: TObject);
begin
        DLLG2_LimpaParams(0);
        //valores opcionais, mas se declarados não podem ser deixados em branco
        DLLG2_AdicionaParam(0, 'COO', edit17.Text, 100);
        DLLG2_AdicionaParam(0, 'NumParcelas', edit18.Text, 10);
        DLLG2_AdicionaParam(0, 'Valor', edit20.Text, 6);
        DLLG2_ExecutaComando(0, 'AbreCreditoDebito');


end;

procedure TForm1.Button9Click(Sender: TObject);
begin
        DLLG2_LimpaParams(0);
        DLLG2_AdicionaParam(0, 'TextoLivre', '      COMPROVANTE DE PAGAMENTO COM CARTAO', 7);
        DLLG2_ExecutaComando(0, 'ImprimeTexto');
        DLLG2_LimpaParams(0);
        DLLG2_AdicionaParam(0, 'TextoLivre', '            Imprime Linhas Livres', 7);
        DLLG2_ExecutaComando(0, 'ImprimeTexto');
        DLLG2_AdicionaParam(0, 'TextoLivre', '            Imprime Linhas Livres', 7);
        DLLG2_ExecutaComando(0, 'ImprimeTexto');
        DLLG2_AdicionaParam(0, 'TextoLivre', '            Imprime Linhas Livres', 7);
        DLLG2_ExecutaComando(0, 'ImprimeTexto');
        DLLG2_AdicionaParam(0, 'TextoLivre', '            Imprime Linhas Livres', 7);
        DLLG2_ExecutaComando(0, 'ImprimeTexto');

end;

procedure TForm1.Button10Click(Sender: TObject);
begin
        DLLG2_LimpaParams(0);
        DLLG2_AdicionaParam(0, 'Operador', edit14.text, 7);
        DLLG2_AdicionaParam(0, 'TextoPromocional', edit15.text, 7);
        DLLG2_ExecutaComando(0, 'EncerraDocumento');
end;

end.
