Ola Amigos, estou emitindo a nfe porem quando estou fazendo uma nota de devolução eu preciso dar baixa desse produto do estoque de material para industrialização.
ex: Eu recebo uma nota com 1000 parafusos. Eu guardo em uma tabela o numero da nota + produto + saldo.
Problema: Quando eu vou emitir uma nota de devolução de mercadoria (Produto Acabado após industrialização) nessa nota eu preciso baixar o estoque de produtos que vieram para industrialização (parafusos). para isso eu fiz o código abaixo que verifica:
- Se existe saldo suficiente do produto acabado para devolução;
- Verifica se existe saldo suficiente do produto para devolução para (parafuso), caso tenha subtraia do saldo o valor necessário para devolução a partir das primeiras notas que entraram (por data que ainda existem saldo).
É justamente aqui que esta o problema, fiz o código que acha todas as notas de entrada do produto (parafuso) e subtrai a quantidade necessária, porem ele esta fazendo isso em todas as notas de entrada do produto (parafuso) eu gostaria que no memento que atingir o saldo necessário para devolução ele saisse do loop, pois ele esta continuando no loop fazendo a subtração do saldo até o fim dos registros.
Bom é isso, espero ter conseguido me explicar.
Segue código:
// ================================================================== // Busca produto para saber se tem saldo para notasc_lookup(prod, “SELECT prod_id, prod_cod_produto, prod_saldo FROM tb_produtos WHERE (prod_cod_produto = ‘{nf_soli_produto}’)”);
$id_prod = {prod[0][0]};
$saldo = {prod[0][2]};if({nf_soli_quantidade} > $saldo){
{Avisos} = “Estoque Insuficiente”;
} else {
{Avisos} = “<a href=…//xml_nf/xml_nf.php?id={nf_soli_id}>Transmitir”;
}// Teste abaixo =======================================================
$saldo_necessario = {nf_soli_quantidade};
// ===========================================================================================================================
// Verifica se tem saldo a devolver nas entradas de nota dos produtos para industrialização
sc_lookup(compo," SELECT prod_comp_prod_id, prod_comp_cod_produto, prod_comp_quantidade FROM tb_produtos_componentes WHERE (prod_comp_prod_id = ‘$id_prod’)");$total_registros=mysql_num_rows(mysql_query(“SELECT * FROM tb_produtos_componentes WHERE (prod_comp_prod_id = ‘$id_prod’)”));
// echo “==>> Tota de Componentes: “.$total_registros.”
”;for($x=0;$x<$total_registros;$x++){ $quantidade_necessaria = '0'; $cod_produto = {compo[$x][1]}; $comp_quantidade = {compo[$x][2]}; $quantidade_necessaria = $comp_quantidade * {nf_soli_quantidade}; // echo "<br>--------------------------------------------------------------------------------------------<bR>"; // echo "====>> cod: " . $cod_produto . " / quant. (in prod): ". $comp_quantidade . " / Quant. Necessaria: " . $quantidade_necessaria ."<br>"; // Verifica se tem saldo dos itens para fazer devuloção $select1 = mysql_query("SELECT nota_itens_cod_produto, SUM(nota_itens_saldo) as soma FROM tb_nota_in_itens WHERE nota_itens_cod_produto = '$cod_produto'"); // total_nota_in= mysql_result($select1,0); $total_nota_in = mysql_fetch_object($select1); $total_disponivel = $total_nota_in ->soma; // echo "=======> Estoque (nf in) = " . $total_disponivel . "<br>=======> <i> Relação de notas x saldos</i><br>"; if($quantidade_necessaria > $total_disponivel){ $x = $total_registros; {Avisos} = "Estoque de devolução insuficiente"; } else { // Caso exista saldo, ir acessadno registro da nota e subtraindo os valores do campo saldo // até atingir o valor da nota. $itens_nota = mysql_query("SELECT nota_itens_num_nota, nota_itens_cod_produto, nota_itens_saldo FROM tb_nota_in_itens WHERE nota_itens_cod_produto = '$cod_produto'"); while($resultado = mysql_fetch_array($itens_nota) AND $saldo_necessario >= 0 ) { // echo "saldo_necessario = " . $saldo_necessario ."<br>"; $iten_nnota = $resultado ['nota_itens_num_nota']; $iten_saldo = $resultado ['nota_itens_saldo']; if($iten_saldo >= $saldo_necessario){ // se o saldo da nota for maior que o solicitado calcule e baixa nota // echo "¨¨¨¨¨¨¨¨> Num. Nota / saldo atual = " . $iten_nnota . " / " .$iten_saldo . "<br>"; $saldo_baixado = $quantidade_necessaria - $iten_saldo; // echo "<b>¨¨¨¨¨¨¨¨> Notas ".$iten_nnota." baixada, Saldo Restante = ". abs($saldo_baixado)." </b><br>"; break; //$saldo_necessario = $saldo_necessario + $iten_saldo; // sai do if (sim) } else { // se for necessario mais de uma nota. $restante = $saldo_necessario - $iten_saldo; $saldo_necessario = $restante; if ( $restante <= 0){ $saldo_necessario = 0; // echo "=======> Num. Nota / saldo atual = " . $iten_nnota . " / " .$iten_saldo . "<br>"; // echo "<b>=======> Notas ".$iten_nnota." baixada, Saldo Restante = ". abs($restante)." </b><br>"; } } //if } //while } // else } //for</blockquote>