ECF não vende item

18/03/2003

0

Em meu programa, não consigo vender item. Ele emite Leitura X, Reducao Z, abre gaveta, abre cupom, muda horário de verao, sangria, suprimento, mas no momento de vender um item, neca de pitibiriba.
A minha a dúvida está em passar o parâmetro DESCONTO. O programa não pode dar desconto nenhum, em nenhuma hipótese. Eu tentei de várias formas(0000, 00000000, 0000¬, R$0,00) mas não deu certo. Não sei se o erro está nos desconto não. Eu é quem acho isso. Aí vai meu código para vender item.

procedure TfrmVenda.Edit1Exit(Sender: TObject);
var
total, cont, preco: double;
cod, desc, icm, valor, tot1, desco, qtde, de: String;
iRetorno : integer;
begin


if StatusBar1.Panels[3].Text = ´1´ then begin
inicia;

preco:=strtofloat(edit1.text);
cod:=inttostr(Dm.EstoqueCod.AsInteger);
desc:=Dm.EstoqueDescricao.asstring;
icm:=´01´;
qtde:=StrZeros(edQde.Text, 4);
valor:=floattostrf(preco, ffCurrency, 12, 2);
desco:=´0000´;//Tentei de várias formas, esta é a última q fiz. Eu não quero colocar um campo para descontos, pois eles não vão existir, por isso quero passar os valores diretos para o ECF.

Buffer := #27+´|09|´+cod+´|´+desc+´|´+icm+´|´+qtde+´|´+valor+´|´+desco+´|´+ 27;//venda de itens

encerra;

// Abaixo as procedures inicia e encerra. Fiz assim, para evitar de escrever os mesmos códigos, sempre.

procedure TfrmVenda.encerra;
var
iRetorno: integer;
begin
iRetorno := FormataTX(Buffer);
if iRetorno = 1 then
ShowMessage(´Erro de comunucação física.´);

iRetorno := FechaPorta();
if iRetorno = 0 then
ShowMessage(´Erro ao tentar liberar porta.´);
end;

procedure TfrmVenda.inicia;
var
iRetorno: integer;
begin
iRetorno := IniPortaStr(ComboBox1.Items[ComboBox1.ItemIndex]);
if iRetorno = 0 then
ShowMessage(´Erro ao inicializar porta.´);
end;

Buffer é global.


Anonymous

Anonymous

Responder

Posts

18/03/2003

E_gama

Nao sei de qual ECF se trata, mas verifique o tamanho de cada campo necessario no comando de ´vender item´. Na maioria das vezes os campos tem tamanho fixo, e em caso de valores e quantidades, completar com zeros a esquerda, alem de remover os pontos e virgulas, caso contenham.


Responder

18/03/2003

Anonymous

E-GAMA, eu já fiz isso. O campo quantidade, eu mascarei 0000(como manda a impressora). O ECF é o MP20FI-II(Bematech). A minha dúvida é o parâmetro Aliquota q eu passo diretamente para o ECF(01) e o desconto, pois a empresa não faz descontos, então eu passo uma string assim(0000). Estas são minhas dúvidas.


Responder

18/03/2003

E_gama

[b:654dd61f1a]valor:=floattostrf(preco, ffCurrency, 12, 2); [/b:654dd61f1a]

Ao inves de utilizar a funcao acima para converter o valor, faca uma teste mandando um valor fixo. Ex.:

Valor := ´000000000115´; // R$ 1,15

Verifique tambem se o tamanho do campo valor esta correto.


Responder

18/03/2003

Anonymous

Posso enviar o valor lido diretamente de um DBEdit ou Edit?


Responder

19/03/2003

Anonymous

E-Gama, passei o valor de um edit, mas mesmo assim não imprimiu. Abro o programa de teste q vem com o ECF e tá lá assim:
O checkbos ACK, mercado e Comando não executado e Canc. não permitido também. Já não aguento mais. Onde será q errei? Eis como ficou a rotina de venda de item:

procedure TfrmVenda.Edit1Exit(Sender: TObject);
var
total, cont, preco: double;
cod, desc, icm, valor, tot1, desco, qtde, de: String;
iRetorno : integer;
Buffer: String;
begin
if StatusBar1.Panels[3].Text = ´1´ then begin
iRetorno := IniPortaStr(ComboBox1.Items[ComboBox1.ItemIndex]);
if iRetorno = 0 then
ShowMessage(´Erro ao inicializar porta.´);
preco:=strtofloat(edit1.text);// O preco é digitado na hora, e não do BD.
cod:=Dm.EstoqueCod.AsString;
desc:=Dm.EstoqueDescricao.asstring;
icm:=´01´;
qtde:=StrZeros(edQde.Text, 4);
valor:=edit1.text;
desco:=´0000´;
Buffer := #27+´|09|´+cod+´|´+desc+´|´+icm+´|´+qtde+´|´+valor+´|´+desco+´|´+ 27;
iRetorno := FormataTX(Buffer);
if iRetorno = 1 then
ShowMessage(´Erro de comunucação física.´);
iRetorno := FechaPorta();
if iRetorno = 0 then
ShowMessage(´Erro ao tentar liberar porta.´);
Dm.Item.Insert;
Dm.ItemCod_Venda.AsInteger:=Dm.VendaNumero.AsInteger;
Dm.ItemDescricao.AsString:=Dm.EstoqueDescricao.AsString;
Dm.ItemQde.AsFloat:=strtofloat(edQde.Text);
Dm.ItemValor_Uni.AsFloat:=strtofloat(edit1.Text);
Dm.ItemValor_Total.asFloat:=strtofloat(edQde.Text)*strtofloat(edit1.Text);
Dm.Item.Post;
tot:=tot+(strtofloat(qtde)*strtocurr(edit1.text));
Panel2.Caption:=FloatToStrF(Tot, ffCurrency, 12, 2);
lbTotal.Caption:=FloatToStrF(Tot, ffCurrency, 12, 2);
end;
end;


Responder

19/03/2003

E_gama

Tem como vc me passar o manual de impressora?

emerson@salesiano.com.br


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar