Como fazer uma comparação de 3 campos

Oi pessoal,

Tenho 3 campos:

Falta
Sobra
Final

  • saida (campo de comparação)

Preciso que o campo falta seja comparado ao campo venda.

Campo saída < venda, ele entra como falta, se ele for >, ele entra como sobra, mas se ele estiver certo, entra como 0 nos dois casos(que não tem falta e nem sobra).

Aguardo uma ajuda de vcs.

Obrigada

Dá uma olhada em if elseif

Ou inicia o campo com 0 e usa o if else

Oi Jorge,

Sou iniciante e não sei como posso utilizá-lo e aonde devo colocar o código se é no evento ajax ou php.

Estou procura tb informações.

Olha este exemplo abaixo ilustrando o uso da com if e elseif

if ($i == 0) { echo "i equals 0"; } elseif ($i == 1) { echo "i equals 1"; } elseif ($i == 2) { echo "i equals 2"; }

Paulo,

Coloco no evento ajax onchange?

Não sei fazer e expresar oq eu quero abaixo nesta formula e aonde colocar para chamar a função, rs

Campo saída < venda, ele entra como falta, se ele for >, ele entra como sobra, mas se ele estiver certo, entra como 0 nos dois casos(que não tem falta e nem sobra).

Tentei colocar no php desta forma, mas deu erro.

if (({saidas_vales1} > 0 && ({vendas_vales1} > 0)
{

$faltas_vales1  = ({saidas_vales1} < {vendas_vales1});

}

   $sobras_vales1  = ({saidas_vales1} > {vendas_vales1});
 }

else
{
{faltas_vales1} = 0;

}
{sobras_vales1} = 0;

}

Amigo:

{falta} = 0; // nao tem nem falta nem sobra
if ({saida} < {venda}) {
	// entra como falta
} elseif ({falta} > {venda}) {
	// entra como sobra
} 

Na onbeforeupdate ou onbeforeinsert:

{sobra}=0;
{falta}=0 ;
if ({saida}>{venda}) { {sobra } = {saida}-{venda};}
if ({saida}<{venda}) { {falta} = {venda}-{saida};}

Isso é se eu entendi, pois a descrição da necessidade esta bastante subjetiva.

Pessoal,

Agradeço muito a ajuda, segue abaixo uma imagem do q estou querendo e não sei se estou me expressando direito.

Na página mostra os 3 campos, faltas, sobras e final em cores.
No campo final eu coloco manualmente um valor que acho das minhas mercadorias, ex 20, essa quantidade é comparada a saída e vendas e a diferença da comparação dos campos é lançada em faltas e sobras.

Oq nao tinha mencionado foi o campo final que tenho que incluir um valor inicial.

Jorge, este codigo q vc fez eu coloco em php?

Haroldo,

Coloquei o codigo q fez mas nao funcionou, tenho que chamar esta funçao em todos os onbeforeupdate ou onbeforeinsert dos campos?

Mais uma vez agradeço a ajuda de vcs.


vale1.png

acombat,

Apenas para entender a tua necessidade:
Você tem uma quantidade inicial {TOTAL}
Você tem uma quantidade final (depois de todo o processo, provavelmente fazendo um inventário físico) {FINAL}
Você teve uma quantidade de saida {SAIDA}
Você quer saber se está, fisicamente falando, faltando {FALTAS} ou sobrando {SOBRAS}.
É isso?

Se for isso, então:

$saldo = {total} - {saidas};
{faltas} = 0;
{sobras} = 0;
if ({final} > $saldo) { {sobras} = {final} - $saldo };
if ({final} < $saldo) { {faltas} = $saldo - {final} };

Você pode melhorar, deixei assim para ficar mais claro. Espero ter conseguido heheheehe

Jorge,

é uma saida de mercadorias(bebidas).

As outras colunas estão ok, o calculo eu só preciso para os 3 campos que falei pq são independentes.

Este código eu coloco no php, em algum evento ou a variável?

obrigada

acombat,

Desculpa mas não entendi.

Tenta usar a linguagem coloquial para montar a lógica do que você quer. Por exemplo:

Se quantidade maior que o saldo então falta = 9 e sobra = 0
Se quantidade menor que o saldo então falta = 0 e sobra = 9
Se nenhuma das duas então …

Depois ajudamos a codificar.

Se entendi bem, tente usar um evento ajax no onChange do campo {final}.

e faça algo mais ou menos assim.

{c1} : vou usar esse nome refente ao seu campo saida;
{c2} : vendas;
{c3} : final;
{c4} : sobras
{c5} : faltas.

código exemplo.

$resultado = {final} - ({c2}+{c1}); if($resultado > 0 ) { {c4} = $resultado; } else if($resultado < 0){ {c5} = $resultado*(-1); }

Não se esqueça de trocar os campos c* pelos respectivos campos.
Use no onChange do campo FINAL.

Epserto ter entendido e ajudado rsrs…

Almeida,

Fiz o evento Ajax do final com onchande, quando eu inseri o valor 30 no final, não tive resultado.

na imagem em anexo, tenho inseri:

10(inicio), 10(entrada), 10 (transfer), 30 (total) - Correto
1 (- perda), 1 (- cortesia), 28 (total da saída) - Correto
Quando eu inseri um valor, ex 30 no final, teria que me dar uma sobra de 2.

EX. lancei 30 no campo final e automaticamente o sistema tem que comparar se ele é:

  • Campo saída < venda = falta (saida 28, vendas 0 = 0 falta)

  • Campo saída > venda = sobra (saida 28, vendas 0 = 2 sobras)

No caso Almeida eu lanço o resultado(campo final) manualmente.

Jorge, ficou mais claro?

Obrigada


vales1_2.png

Desculpe amigo Acombat, mas ainda não entendi. hehehe

Mas, voltando aos comandos, você pode usar:

{resultado1} = 0;
{resultado2} = 0;
if ({valor1} > {valor2}) { {resultado1} = 1; }
if ({valor1} < {valor2}) { {resultado2} = 1; }

// Mesmo resultado
// vc pode colocar diversos elseif
//
if ({valor1} > {valor2}) { 
    {resultado1} = 1; 
    {resultado2} = 0;
} elseif ({valor1} < {valor2}) { 
    {resultado2} = 1; 
     {resultado1} = 0;
} else {
    {resultado1} = 0;  
    {resultado2} = 0;
}

[]s

Jorge,

Esquecendo os outros campos, foca no campo final que tenho q incluir a quantidade que eu encontrei na copa A, os outros campos são: Vendas, Saidas, Faltas, Sobras.

Final 30(valor incluido manualmente) se ele for (saída>venda = sobra)
Final 30 (valor incluido manualmente) se ele for (saída<venda = falta)

Na imagem q enviei eu tenho 28 saídas e 0 de venda, incluindo manualmente 30 no campo final, eu teria que ter 2 no campo sobra.

Jorge,

Eu preciso incluir um valor no campo final e o mesmo fazer a comparação, ex:

Campo final com o valor 30(incluido manualmente) - ele vai apanhar o 30 e comparar se a saída (valor 28) é > que venda(valor 0), se for, ele vai colocar a diferença em sobras. Se o campo saída for < que a venda, ele ira preencher como falta.

acombat,

Na tua solicitação, ficaram claras, apenas três coisas (no meu entendimento):

  • Se {venda} e {saida} são iguais, {sobra} e {falta} são zerados.
  • Se {saida} > {venda} {sobra} terá um valor e {falta} será zerado.
  • Se {saida} < {venda} {falta} terá um valor e {sobra} será zerado.

Não está claro quais os campos que irão participar da equação para achar o valor que alimentará {falta} ou {sobra}

Uma das alternativas, seria:

{sobra} = 0;
{falta} = 0;

if ( {saida} > {venda} ) { {sobra} = {final} - {saida} };
if ( {saida} < {venda} ) { {falta} = {final} - {saida} };

[]

Apenas um aviso sobre o código do jorgepopel.
Se for feito um evento ajax e retornar um campo = 0 o SC intende que retornou false par ao campo, e não faz nada. Então use = ‘0’ se o resultado final for = 0.

O campo q alimentará é o campo FINAL.

Neste campo que eu vou informar um valor para ele fazer esta comparação e lançar na falta e sobra.