Foros del Web » Programando para Internet » PHP »

dejar de restar si da negativo??

Estas en el tema de dejar de restar si da negativo?? en el foro de PHP en Foros del Web. lo que pasa es que a la variable que llego a captar le debo restar hasta que quede en 0 caso contrario la consulta termina; ...
  #1 (permalink)  
Antiguo 13/05/2010, 07:58
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 9 meses
Puntos: 2
dejar de restar si da negativo??

lo que pasa es que a la variable que llego a captar le debo restar hasta que quede en 0 caso contrario la consulta termina; pero el problema es que sigue restando hasta con la variable negativa $pago:
Código PHP:
$miconexion->consulta2("select * from orden_compra p where p.prov_id_FK='$proveedor' and ord_pas<>1 and ord_mon='D' and ord_deuda<>0 and (ord_estado1='pendiente' or ord_estado1='con deuda') order by ord_fec asc");
        while(
$row1 mysql_fetch_array($miconexion->Consulta_ID2))
        {
        
$idpago=$row1['ord_id'];
        
$restardeuda=round($row1['ord_deuda'],2);
        
$num_voucher=$row1['ord_num'];
        if (
$pago>0)
        {
            if (
$restardeuda>$pago)
            {
            
$saldo=$restardeuda-$pago;
            
$pago=round($pago-$restardeuda,2);
            if (
$saldo==0) { $a='pagado'; } else { $a='con deuda'; }
            
$nj='uno';
            }
            else
            {
            
$saldo=$pago-$restardeuda;
            
$pago=round($pago-$restardeuda,2);
            if (
$saldo==0) { $a='pagado'; } else { $a='con deuda'; }
            
$nj='dos';
            }
            
$miconexion->consulta("insert into pago_orden_compra (num_voucher,pago_descripcion, pago_fecha, pago_tipo, pago_tc, pago_monto,pago_fec_reg,ord_id_FK,prov_id_FK,emp_id_FK) values ('$voucher', '$descripcion', '$fecha' ,'1','$tc','$pago','$hoy','$ordencompra','$proveedor','$empleado')");
            
$miconexion->consulta1("update orden_compra set ord_estado1='$a' where ord_id='$idpago'");
            if (
$pago<0) break;
        }
        echo 
"El pago Adelantado afecto a la siguiente OC <b>$num_voucher+++$pago+++$restardeuda---$nj</b><br />";
        } 
  #2 (permalink)  
Antiguo 13/05/2010, 08:07
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: dejar de restar si da negativo??

claro si el bucle no lo pilla ahi ?
Código PHP:
Ver original
  1. if ($pago>0) //
  2.         {
  3.             if ($restardeuda>$pago)
  4.             {
  5.             $saldo=$restardeuda-$pago;
  6.             $pago=round($pago-$restardeuda,2);
  7.             if ($saldo==0) { $a='pagado'; } else { $a='con deuda'; }
  8.             $nj='uno';
  9.             }
  10.             else
  11.             {
  12.             $saldo=$pago-$restardeuda;
  13.             $pago=round($pago-$restardeuda,2);
  14.             if ($saldo==0) { $a='pagado'; } else { $a='con deuda'; }
  15.             $nj='dos';
  16.             }
  17.             $miconexion->consulta("insert into pago_orden_compra (num_voucher,pago_descripcion, pago_fecha, pago_tipo, pago_tc, pago_monto,pago_fec_reg,ord_id_FK,prov_id_FK,emp_id_FK) values ('$voucher', '$descripcion', '$fecha' ,'1','$tc','$pago','$hoy','$ordencompra','$proveedor','$empleado')");
  18.             $miconexion->consulta1("update orden_compra set ord_estado1='$a' where ord_id='$idpago'");
  19.            
  20.         }
  21.         if ($pago<0) break;
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 13/05/2010, 08:46
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: dejar de restar si da negativo??

no vi una solucion en la respuesta que me das; pero le tuve que hacer unos cambios por motivos de montos; pero me sigue dando negativo y el bucle se rompe hasta despues de restar el negativo mencionado:
Código PHP:
$miconexion->consulta2("select * from orden_compra p where p.prov_id_FK='$proveedor' and ord_pas<>1 and ord_mon='D' and ord_deuda<>0 and (ord_estado1='pendiente' or ord_estado1='con deuda') order by ord_fec asc");
        while(
$row1 mysql_fetch_array($miconexion->Consulta_ID2))
        {
        
$idpago=$row1['ord_id'];
        
$restardeuda=round($row1['ord_deuda'],2);
        
$num_voucher=$row1['ord_num'];
        if (
$pago>0)
        {
            if (
$restardeuda>$pago)
            {
            
$saldo=$restardeuda-$pago;
            
$pago=round($pago-$restardeuda,2);
            
$monto0=$pago;
            if (
$saldo==0) { $a='pagado'; } else { $a='con deuda'; }
            
$nj='uno';
            }
            else
            {
            
$saldo=0;
            
$pago=round($pago-$restardeuda,2);
            
$monto0=$restardeuda;
            if (
$saldo==0) { $a='pagado'; } else { $a='con deuda'; }
            
$nj='dos';
            }
            
$miconexion->consulta("insert into pago_orden_compra (num_voucher,pago_descripcion, pago_fecha, pago_tipo, pago_tc, pago_monto,pago_fec_reg,ord_id_FK,prov_id_FK,emp_id_FK) values ('$voucher', '$descripcion', '$fecha' ,'1','$tc','$monto0','$hoy','$ordencompra','$proveedor','$empleado')");
            
$miconexion->consulta1("update orden_compra set ord_estado1='$a' where ord_id='$idpago'");
            if (
$pago<0) break;
        }
        echo 
"El pago Adelantado afecto a la siguiente OC <b>$num_voucher+++($pago)+++$restardeuda---$nj</b><br />";
        } 
  #4 (permalink)  
Antiguo 13/05/2010, 08:48
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: dejar de restar si da negativo??

le saque esta linea del primer if

Código PHP:
Ver original
  1. if ($pago<0) break;
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 13/05/2010, 09:34
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: dejar de restar si da negativo??

lo que pasa es que si le quito el break al final la resta sigue; le hice algunos cambios de codigo y posicion de codigo; ahora el problema es capturar el monto para que cambie de estado a pagado; siempre me pasa a pendiente.
Código PHP:
$miconexion->consulta2("select * from orden_compra p where p.prov_id_FK='$proveedor' and ord_pas<>1 and ord_mon='D' and ord_deuda<>0 and (ord_estado1='pendiente' or ord_estado1='con deuda') order by ord_fec asc");
        while(
$row1 mysql_fetch_array($miconexion->Consulta_ID2))
        {
        
$idpago=$row1['ord_id'];
        
$miconexion->consulta3("select sum(pago_monto) as pagos00 from pago_orden_compra p where p.ord_id_FK='$idpago' and pago_pas=0 and pago_tipo='1' and pago_tc<>'0.00'");
        
$row18 mysql_fetch_array($miconexion->Consulta_ID3);
        
$pagosantes=$row18['pagos00'];
        
$restardeuda=round($row1['ord_deuda']-$pagosantes,2);
        
$restardeuda=round($row1['ord_deuda'],2);
        
$num_voucher=$row1['ord_num'];
        if (
$pago>0)
        {
            if (
$restardeuda>$pago)
            {
            
$saldo=$restardeuda-$pago;
            
$monto0=$pago;
            
$pago=round($pago-$restardeuda,2);
            if (
$saldo==or $saldo<0) { $a='pagado'; } else { $a='con deuda'; }
            }
            else
            {
            
$saldo=0;
            
$pago=round($pago-$restardeuda,2);
            
$monto0=$restardeuda;
            if (
$saldo==0) { $a='pagado'; } else { $a='con deuda'; }
            }
            
$miconexion->consulta("insert into pago_orden_compra (num_voucher,pago_descripcion, pago_fecha, pago_tipo, pago_tc, pago_monto,pago_fec_reg,ord_id_FK,prov_id_FK,emp_id_FK,banco) values ('$voucher', '$descripcion', '$fecha' ,'1','$tc','$monto0','$hoy','$idpago','$proveedor','$empleado','$banco')");
            
$miconexion->consulta1("update orden_compra set ord_estado1='$a' where ord_id='$idpago'");
            echo 
"El pago Adelantado afecto a la siguiente Orden de Compra <b>$num_voucher++$pagosantes</b><br />";
            if (
$pago<0) break; 

Etiquetas: dejar, negativo, restar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:53.