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 />";
}