Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3220 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Tenho um programa para emissão de cupom fiscal mas não esta funcionando a rotina de vender item. so esta rotina que não funciona. tudo esta ok. estou reaproveitando meu sistema que tenho a algum tempo. Ajustei tudo pra o trunk2 mas só essa rotina não ta rolando. obs, fiz ela na época em que o acbr so aceitava porcentagem no desconto. estou mantendo tudo como eu fiz aqui para ver se alguém me ajuda nisso. obrigado.


function TFormPDVFiscal.Vendeitem: boolean;
var
  indice               : integer;
  Porcentagem_Desconto : double;
  ini                  : tinifile;
begin
if (self.editestoque.Valor <= 0) and (self.bloqueia_estoque_zerado = true) then
 begin
  aviso('O produto não possui estoque, por favor informe outro para esta venda', self.usuario_nome,maviso);
  result := false;
 end else begin
  //definindo descricao com grande
  if self.ACBrECF.Modelo <> ecfDataRegis
   then self.ACBrECF.DescricaoGrande := true;
  // ---------------------------- calculando o desconto. -------------------------
  //  Ex: Val.Unitário = 10,50
  //  Valor do Desconto = 0,50
  //  Porcentagem_Desconto = ( 0,50 / 10,50 ) * 100 = 4,7619 %
  //  isso pq o acbr ecf so aceita procentagem de desconto
  // -----------------------------------------------------------------------------
  result := false;
  try
   self.Escrevestatus('verificando se ja abril o cupom');
   if not self.cupomAberto  then self.NovoCupom;
   self.Escrevestatus('verificando se so vai vender com vendedor');
   ini:= tinifile.create('PDV.ini');
   if StrToBool2(Codifica('D',ini.readSTRING('Venda','so vender com vendedor','S'))) and (self.vendedor = 0)
    then aviso('Informe o vendedor para poder vender.', self.usuario_nome,maviso)
    else begin
     self.Escrevestatus('verificando se tem desconto. se tiver pedir senha se necessario');
     Porcentagem_Desconto := 0;
     if self.eddesconto.valor <> 0
      //se nao passou o supoervisor entao acnela tudo
      then if not LogaOperador(self.ponto, true, false, self, self.fsqlconnection) then
       begin
        aviso('Você passou um desconto e este não foi aprovado por um supervisor entao o produto não será vendido',
              self.usuario_nome,
              maviso);
        SetandoFocus(self.edCodigo);
        exit;
       end else begin
        self.Escrevestatus('calculando o desconto.');
        //Ex: Val.Unitário = 10,50
        // Valor do Desconto = 0,50
        //Porcentagem_Desconto = ( 0,50 / 10,50 ) * 100 = 4,7619 %

        //isso pq o acbr ecf so aceita procentagem de desconto
        Porcentagem_Desconto := ( self.eddesconto.valor / Self.edPrecoUnita.valor ) * 100
       end;


     //vendendo o item...
     if (self.eddescricao.text <> '') and (edcodigo.text <> '') and (edPrecoUnita.valor <> 0) then
      begin
       self.Escrevestatus('vendendo o item...');
       self.Escrevestatus('vendo o modelo da impressora');
       self.Escrevestatus('tentando vender com a acbr...');
       //edICMS.Text := colocaicmsDeVenda(17);
       self.ACBrECF.VendeItem(edCodigo.Text,
                              RetiraAcento(edDescricao.Text, false),
                              edICMS.Text,
                              edQtd.valor,
                              edPrecoUnita.valor,
                              Porcentagem_Desconto,
                              edUN.Text,
                              '%',
                              'D');
       self.Escrevestatus('item vendido com acbr');

       self.Escrevestatus('gravando o item no banco de dados');
       //nao cadastrar a venda se tiver usando boate
       self.VENDA_ITENS.PDV_VENDA      := self.venda;

       self.VENDA_ITENS.Ponto           := strtoint(self.ponto);
       self.VENDA_ITENS.NUMERO          := addnumero;
       self.venda_itens.custo           := strtocurr2(campocdc('produto','custo','codigo = '+INTTOSTR(Self.codigoproduto), fsqlconnection, ultimo_erro));
       self.VENDA_ITENS.PRODUTO         := Self.codigoproduto;
       self.VENDA_ITENS.DESCRICAO       := edDescricao.text;
       self.VENDA_ITENS.PRECO_UNITARIO  := edPrecoUnita.Valor - self.eddesconto.valor;
       self.VENDA_ITENS.QUANTIDADE      := edQtd.Valor;
       self.VENDA_ITENS.ST              := edICMS.Text;
       self.VENDA_ITENS.EMPRESA         := strtoint(self.ValidaEmpresa);
       self.VENDA_ITENS.icms            := strtocurrdef(edICMS.Text,0);
       self.VENDA_ITENS.TOTAL           := (edPrecoUnita.valor - self.eddesconto.valor) * edqtd.valor;
       self.VENDA_ITENS.ATUALIZASAO     := now;
       self.VENDA_ITENS.UNIDADE         := edUN.text;
       self.VENDA_ITENS.vendedor        := vendedor;
       self.VENDA_ITENS.CODIGO          := strtoint(autoincremento(nil,'pdv_venda_itens','codigo',self.fsqlconnection));
       self.VENDA_ITENS.grava;
       //colocando o valor na descrição
       edDescricao.text :=  '';//edDescricao.text + ' ' +floattostr(edqtd.valor)+ ' x '+ formatcurr('#,##0.00',edPrecoUnita.valor);
       //calculando o total
       if SELF.ACBRECF.Modelo <> ecfDataRegis then
        begin
         total.valor  := aCBrECF.Subtotal;
         totalTEF     := StrToFloat(EasyTEF.tratarCupomFiscal(tmeSubTotal, ['']));
        end;

       self.Escrevestatus('colocando ele na grid');
       indice       := self.grid.Insert;
       // grid.Cells[0,0] := 'Número';
       self.grid.Cells[0,indice] := inttostr(self.VENDA_ITENS.NUMERO);
       //grid.Cells[1,0] := 'Descrição do item';
       self.grid.Cells[1,indice] := self.VENDA_ITENS.DESCRICAO;
       //grid.cells[2,0] := 'unidade';
       self.grid.Cells[2,indice] := self.VENDA_ITENS.UNIDADE;
       //grid.cells[2,0] := 'Preço';
       self.grid.Cells[3,indice] := formatfloat('##,##0.00',self.VENDA_ITENS.PRECO_UNITARIO);
       //grid.Cells[3,0] := 'Qtd.';
       self.grid.Cells[4,indice] := currtostr(self.VENDA_ITENS.QUANTIDADE);
       //grid.Cells[4,0] := 'Total.';
       self.grid.Cells[5,indice] := formatfloat('##,##0.00',self.VENDA_ITENS.PRECO_UNITARIO * self.VENDA_ITENS.QUANTIDADE);
       //grid.Cells[5,0] := 'codigo escondido';
       self.grid.Cells[6,indice] := inttostr(self.VENDA_ITENS.PRODUTO);
       //se vai autenticar
       if prod_aut = true
        then self.grid.Cells[55,indice] := 'S'
        else self.grid.Cells[55,indice] := '';

       //limpando os edits..
       edCodigo.Text      := '';
       edICMS.Text        := '0';
       edQtd.valor        := 0;
       edPrecoUnita.Text  := '0';
       edDesconto.valor   := 0;
       edUN.Text          := '';
       editestoque.valor  := 0;
       result             := true;
       self.total.valor   := self.grid.calculaCampo(5);
      end else begin
       aviso('Informe os dados do produto corretamente.'+#13+
             'Obs.: o sistema não permite vender um item com o preço zerado',
             self.usuario_nome,
             maviso);
       setandofocus(self.edcodigo);
       result := false;
      end;
    end;
    ini.free;
   finally

    //se deu pau ao abrir o cupom intao verificar configuraçoes dele
   end ;
 end;
end;
  • 2 semanas depois ...
Postado

Ta ai o log, tudo funciona abrir o caixa, redução z, leitura x, sangria, tudo. mas quando eu tento vender um produto com a função vendeitem ele diz que a impressora não esta respondendo. ai esta o log para quem puder me ajudar.

LogECF.txt

Postado

consegui resolver, mas sendo honesto nao sei bem o pq deu isso.
1. retirei o calculo de porcentagem defini so como desconto como valor.
2. percebi que o easytef (não sei nem pq a gente aqui ainda usa isso, vou trocar pelo acbrtef) na função de venda e que tava dando alguma bronca na impressora.
pronto ao fazer isso tudo funcionou. =)

  • Este tópico foi criado há 3220 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.