Clipper On Line • Ver Tópico - Calculo no get

Calculo no get

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Calculo no get

Mensagempor JoséQuintas » 18 Jul 2019 21:49

Dá pra dizer que aperfeiçoei a rotina... kkkk

FUNCTION CalculoNoGet( ... )

   RETURN .T.


Pra que serve?
Imagine vários cálculos no GET... a complicação que fica.
Agora com essa função - apenas exemplo:

@ 3, 5 GET mQtde PICTURE "@E 999,999,999.99" VALID ;
   CalculoNoGet( mValorItem := mQtde * mValorUnitario, ;
      mDesconto := mValorItem * mPercentualDesconto, ;
      mIcms        := ( mValorItem - mDesconto ) * mAliquotaIcms )


Substituiu minha anterior ReturnValue( .T., cálculos )
A função não precisa fazer nada, apenas serve pra "organizar" todos os possíveis cálculos.
Um OkQtde() poderia ser interessante, mas precisaria passar muitas variáveis como parâmetro.

Mas a mais legal de hoje foi esta:
A ANP não aceita quantidade fracionada, e isso pode acontecer com combustível.
Como resolver?
Colocar algo específico para o cliente, para o grupo combustíveis, para uma lista de NCM, indicar no produto se aceita decimal?
Ué.. o que vai pra ANP tem código da ANP.... pronto... resolvido.

STATIC FUNCTION QtdeOk( mipQtde )

   IF SubStr( jpitem->ieUnid, 1, 2 ) == "UN" .AND. Str( Int( mipQtde ), 16, 5 ) != Str( mipQtde, 16, 5 )
      MsgStop( "INVÁLIDO!" + hb_eol() + "Se produto vendido por unidade, quantidade NÃO pode conter decimais" )
      RETURN .F.
   ENDIF
   IF ! Empty( SoNumeros( jpitem->ieAnp ) ) ) .AND. Str( Int( mipQtde ), 16, 5 ) != Str( mipQtde, 16, 5 )
      MsgStop( "INVÁLIDO!" + hb_eol() + "ANP NÃO aceita quantidade com decimais" )
      RETURN .F.
   ENDIF

   RETURN .T.


Pronto.
Pode ser usado pra qualquer cliente e qualquer produto, sem exceção.
Nada de gambiarra, nada de complicação, nada de parâmetros adicionais, manutenção fácil.
E quando cadastrarem produtos novos... com código ANP... não precisa alterar mais nada.

Aproveitando, pra "apertar novamente a tecla":

Não tem nada aí de "expert", são coisas simples que todos podem fazer.
E um aplicativo.... pode até ser complicado... mas é feito com a combinação de muitas coisas simples.

A pergunta que todos devem fazer:
Estão fazendo muitas coisas simples pra resolver algo complexo, ou estão complicando até o que é simples?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Calculo no get

Mensagempor JoséQuintas » 18 Jul 2019 22:10

Achei tão interessante postar que coloquei antes de terminar.

erro.png


E aproveitar pra comentar o seguinte: Esse é um recurso do HBMK2 + Harbour

O HBMK2 e o Harbour estão prontos para serem usados em IDE.
Basta indicar -ge1, que é um formato de saída mais padrão pra IDE.
Nessas horas facilita muito, porque basta clicar no erro... (mas aí já é recurso do PNotepad)
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 22 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro