les cuento:
Tengo un FORM simple el cual llena:
alia* <= Codigo de barra o Alias del articulo.
cantidad* <= Cantidad de articulos a comprar.
descripcion* <= Descripcion del articulo.
precio* <= Precio de venta/unidad.
sub* <= Sub Total cantidad* por precio*.
Estos campos se pueden agregar cuantos uno necesite:
alia1-alia2-alia3-alia4-ali5.... etc.
Por Javascrip calculo el valor de sub* multiplicando cantidad* por precio*.
El usuario solo puede modificar el alia* o la cantidad* el resto es READONLY.
Luego envio por metodo POST a un archivo.php para validar.
PROBLEMA:
Si el articulo vale 1.19 y algunas compras las guarda como ERROR.
Código PHP:
}elseif( $sub_total != $sub )// MODIFICARON LA CANTIDAD DE ARTICULOS.
1.19*1=1.19 OK
2-4 OK
1.19*5=5.95 ERROR
6-8 OK
1.19*9=10.71 ERROR
1.19*25=29.75 OK
1.19*66=78.54 ERROR
1.19*71=84.49 OK
1.19*150=178.50 OK
La funcion Javascript que calcula el sub* es la siguiente:
USO JQUERY
Código Javascript:
Algunos notaran que dice toFixed(2) eso significa que solo muestra 2 decimales.Ver original
function calcule(valor) { var cantidad = parseFloat($('#cantidad'+valor).val()); var precio = parseFloat($('#precio'+valor).val()); var subtotal = (precio*cantidad).toFixed(2) $('#sub'+valor).val(subtotal); }
Por ejemplo:
1.19*66=78.54 ERROR
Este caso que da error, no es Fixeado. Ya que la multiplicacion da dos decimales.
Aqui el codigo PHP:
Código PHP:
<?php
session_start();
require('../require/config.php');
foreach ( $_POST as $key => $value ){$$key = $value;}
$rows_correctas = array();
$rows_eliminadas = array();
$rows_error = array();
for( $i = '1' ; $i<=$row ;$i++ )
{
$alia = 'alia'.$i;
$alia = $$alia;
$cantidad = 'cantidad'.$i;
$cantidad = $$cantidad;
$descripcion = 'descripcion'.$i;
$descripcion = $$descripcion;
$precio = 'precio'.$i;
$precio = (float)$$precio;
$sub = 'sub'.$i;
$sub = (float)$$sub;
$sub_total = $cantidad*$precio;
//Estan todos los datos necesarios?
if( !empty( $alia ) and !empty( $cantidad ) and !empty( $descripcion ) and !empty( $precio ) and !empty( $sub ) )
{
//BUSCAR PRODUCTO.
$SQL_ARTICULO = "SELECT * FROM articulos WHERE alias = '$alia' OR cb = '$alia'";
$QUERY_ARTICULO = mysql_query($SQL_ARTICULO)or die( mysql_error());
$ARTICULO = mysql_fetch_assoc( $QUERY_ARTICULO );
if( $ARTICULO['precio_venta'] == NULL)//MODIFICARON EL NUMERO DE ARTICULO A UNO INEXISTENTE.
{
$rows_error = $alia.';'.$cantidad.';'.$descripcion.';'.$precio.';'.$sub.';'.$i.'; CONFLICTO El articulo no existe.';
}elseif( $precio != $ARTICULO['precio_venta'])//MODIFICARON EL NUMERO DE ARTICULO POR OTRO.
{
$rows_error = $alia.';'.$cantidad.';'.$descripcion.';'.$precio.';'.$sub.';'.$i.'; CONFLICTO El valor: precio de venta no coinciden con el valor del articulo.';
}elseif( $sub_total != $sub )// MODIFICARON LA CANTIDAD DE ARTICULOS.
{
$rows_error = $alia.';'.$cantidad.';'.$descripcion.';'.$precio.';'.$sub.';'.$i.'; CONFLICTO El subtotal no concuerda con el precio de venta por cantidad';
}else{
$rows_correctas = $alia.';'.$cantidad.';'.$descripcion.';'.$precio.';'.$sub.';'.$i.'; Todo OK';
}
}else{
$rows_eliminadas[] = $alia.';'.$cantidad.';'.$descripcion.';'.$precio.';'.$sub.';'.$i;
}
}
echo "Error:<br>";
print_r($rows_error);
echo "<br>";
echo "Eliminadas <br>";
print_r($rows_eliminadas);
echo "<br>";
echo "Correctas: <br>";
print_r($rows_correctas);
?>