none
Como fazer uma validação para que o estoque de saída nunca seja maior que o da entrada RRS feed

  • Pergunta

  • Tenho um formulário com um ComboBox que tem entrada e saída, queria fazer uma validação para que  se o usuário escolhesse saída ele nunca colocasse uma quantia maior do que a da entrada, como eu faria isso?, eu poderia fazer isso no banco ou eu devo utilizar uma linguagem como php, javascript ou outra.
    sexta-feira, 30 de setembro de 2016 20:38

Respostas

  • Meu professor me ajudou a fazer, e fez dessa forma:

     if(empty($erros)){
    			   
    	  $query = "select SUM(ret.quantidade) AS quantidade,
    				ret.nome_produto,
    				ret.id_produto
    				from(SELECT 
    				SUM(p.quantidade) AS QUANTIDADE, 
    					p.tipo_registro, 
    					p.id_produto, 
    					c.nome AS nome_produto, 
    					c.imagem
    					FROM estoque p JOIN administrador u 
    							   ON u.id_admin = p.id_admin 
    							   JOIN cadastro_produtos c 
    							   ON c.id_produto = p.id_produto
    							   WHERE p.tipo_registro = 'entrada'
    							   
    							   GROUP BY 				
    							   p.tipo_registro, 
    							   p.id_produto, 
    							   c.nome, 
    							   c.imagem 
    							   UNION
    							   SELECT 
    							   -SUM(p.quantidade) AS QUANTIDADE, 
    							   p.tipo_registro, 
    							   p.id_produto, 
    							   c.nome AS nome_produto, 
    							   c.imagem 
    							   FROM estoque p JOIN administrador u 
    							   ON u.id_admin = p.id_admin 
    							   JOIN cadastro_produtos c 
    							   ON c.id_produto = p.id_produto
    							   WHERE p.tipo_registro = 'saida'
    							   
    							   GROUP BY 				
    							   p.tipo_registro, 
    							   p.id_produto, 
    							   c.nome, 
    							   c.imagem)ret
                                   WHERE ret.id_produto = $produto
                                   group by ret.nome_produto,
                                   ret.id_produto";
    															
    				
    
    echo $query;				
    															
    			$result = @mysqli_query($dbc, $query);
    			
    			$row = mysqli_fetch_array($result);
    			
    			$quantidade_db = $row['quantidade'];
    			   
    			 if($quantidade_db >= $quantidade || mysqli_num_rows($result) == 0){
    			   
    			//inserir no banco de dados
    			$query = "INSERT INTO estoque(id_estoque, quantidade, tipo_registro, id_admin, id_produto, dt_movimentacao) VALUES (NULL, $quantidade,'$registro', '$admin' ,'$produto',CURRENT_TIMESTAMP)";
    			
    			$result = @mysqli_query($dbc, $query);
    			echo "$query";
    			if($result){
    				$retorno[] = 'Cadastro realizado com sucesso!';
    				
    			}else{
    				$erros[] = 'Ocorreu algum erro ao cadastrar o estoque!';
    			}
    		}else{
    			
    			//erro estoque
    			echo"<script>alert('Valor Ultrapassa a quantidade em estoque'); history.go(-1)</script>";
    		}
    			
    			
    		}else{
    			
    			$retorno = $erros;
    			
    		}
    		
    		return $retorno;
    	}
    Essa é só uma parte do código php, mas funcionou :)

    segunda-feira, 3 de outubro de 2016 18:04

Todas as Respostas

  • Ola mas você deve ter uma entrada que alimenta um estoque correto ? então todas as suas entradas de produtos irão alimentar seu produto obtendo-se assim um estoque ? E quando você for fazer sua baixa de estoque você verificaria em sua tabela que contem esse estoque para saber se a quantidade que esta saindo esta disponivél ou seja se a quantidade de saida é maior que que a quantidade disponivel em seu estoque. Porque você quer valor a quantidade de saida sobre a entrada ?
    Aproveitando para isso você pode ter uma rotina em uma linguagem de programação (C#;VB;Php;ASP) e etc ou te construir uma procedure no seu Banco de Dados.

    Junior

    sexta-feira, 30 de setembro de 2016 22:58
  • Deleted
    sábado, 1 de outubro de 2016 10:41
  • Meu professor me ajudou a fazer, e fez dessa forma:

     if(empty($erros)){
    			   
    	  $query = "select SUM(ret.quantidade) AS quantidade,
    				ret.nome_produto,
    				ret.id_produto
    				from(SELECT 
    				SUM(p.quantidade) AS QUANTIDADE, 
    					p.tipo_registro, 
    					p.id_produto, 
    					c.nome AS nome_produto, 
    					c.imagem
    					FROM estoque p JOIN administrador u 
    							   ON u.id_admin = p.id_admin 
    							   JOIN cadastro_produtos c 
    							   ON c.id_produto = p.id_produto
    							   WHERE p.tipo_registro = 'entrada'
    							   
    							   GROUP BY 				
    							   p.tipo_registro, 
    							   p.id_produto, 
    							   c.nome, 
    							   c.imagem 
    							   UNION
    							   SELECT 
    							   -SUM(p.quantidade) AS QUANTIDADE, 
    							   p.tipo_registro, 
    							   p.id_produto, 
    							   c.nome AS nome_produto, 
    							   c.imagem 
    							   FROM estoque p JOIN administrador u 
    							   ON u.id_admin = p.id_admin 
    							   JOIN cadastro_produtos c 
    							   ON c.id_produto = p.id_produto
    							   WHERE p.tipo_registro = 'saida'
    							   
    							   GROUP BY 				
    							   p.tipo_registro, 
    							   p.id_produto, 
    							   c.nome, 
    							   c.imagem)ret
                                   WHERE ret.id_produto = $produto
                                   group by ret.nome_produto,
                                   ret.id_produto";
    															
    				
    
    echo $query;				
    															
    			$result = @mysqli_query($dbc, $query);
    			
    			$row = mysqli_fetch_array($result);
    			
    			$quantidade_db = $row['quantidade'];
    			   
    			 if($quantidade_db >= $quantidade || mysqli_num_rows($result) == 0){
    			   
    			//inserir no banco de dados
    			$query = "INSERT INTO estoque(id_estoque, quantidade, tipo_registro, id_admin, id_produto, dt_movimentacao) VALUES (NULL, $quantidade,'$registro', '$admin' ,'$produto',CURRENT_TIMESTAMP)";
    			
    			$result = @mysqli_query($dbc, $query);
    			echo "$query";
    			if($result){
    				$retorno[] = 'Cadastro realizado com sucesso!';
    				
    			}else{
    				$erros[] = 'Ocorreu algum erro ao cadastrar o estoque!';
    			}
    		}else{
    			
    			//erro estoque
    			echo"<script>alert('Valor Ultrapassa a quantidade em estoque'); history.go(-1)</script>";
    		}
    			
    			
    		}else{
    			
    			$retorno = $erros;
    			
    		}
    		
    		return $retorno;
    	}
    Essa é só uma parte do código php, mas funcionou :)

    segunda-feira, 3 de outubro de 2016 18:04
  • Deleted
    segunda-feira, 3 de outubro de 2016 20:31