function update_item(&$mensaje, $id_item, $codigo_proveedor, $codigo_barras, $stock_disponible, $stock_transito, $precio_fob, $precio_nac, $precio_ref, $oculto_fob, $oculto_nac, $unidad, $factor_unidades, $id_proveedor, $agrupacion)
{
    if (item_scan_oblig($id_item) and $codigo_barras == "" or $unidad == 0 or $factor_unidades == "" or $factor_unidades <= 0) {
        // Si falta alguno de los campos requeridos.
        //
        $mensaje = "Error: Debe ingresar los items marcados con *.";
        return FALSE;
    } else {
        // Si estan todos los campos requeridos
        //
        if (obtener_tipo_proveedor($id_item) == "EXTRANJERO") {
            //Calculo los precios nac y ref a partir del precio_fob ingresado si es un item de proveedor extranjero
            //
            $id_categoria = obtener_categoria($id_item);
            $precio_nac = $precio_fob + $precio_fob * porcentaje_impuesto_categoria($id_categoria) / 100;
            $precio_ref = $precio_nac * precio_dolar();
        }
        $codigo_proveedor = addslashes(trim(strtoupper($codigo_proveedor)));
        if ($codigo_barras == "") {
            $codigo_barras = 'NULL';
        } else {
            $codigo_barras = "\"" . addslashes(trim($codigo_barras)) . "\"";
        }
        if ($precio_fob == "") {
            $precio_fob = 'NULL';
        }
        if ($precio_nac == "") {
            $precio_nac = 'NULL';
        }
        if ($precio_ref == "") {
            $precio_ref = 'NULL';
        }
        if ($oculto_fob == "") {
            $oculto_fob = $precio_fob;
        }
        if ($oculto_nac == "") {
            $oculto_nac = $precio_nac;
        }
        $query = "UPDATE Item SET\n\tcodigo_proveedor = \"{$codigo_proveedor}\",\n\tcodigo_barras = {$codigo_barras},\n\tstock_disponible = {$stock_disponible},\n\tstock_transito = {$stock_transito},\n\tprecio_fob = {$precio_fob},\n\tprecio_nac = {$precio_nac},\n\tprecio_ref = {$precio_ref},\n\toculto_fob = {$oculto_fob},\n\toculto_nac = {$oculto_nac},\n\tid_unidad_compra = {$unidad},\n\tfactor_unidades = {$factor_unidades},\n\tid_proveedor = {$id_proveedor},\n\tagrupacion_contable = {$agrupacion}\n  WHERE\n\tItem.id_item = {$id_item}";
        if (!($result = mysql_query($query))) {
            // Si hay un error al insertar los datos en la base.
            //
            $mensaje = "Error: El item no pudo ser actualizado. Motivo posible: El codigo de barras del item ya existia.";
            // . mysql_error();
            return FALSE;
        } else {
            // Si se puede insertar los campos en la base.
            //
            $mensaje = "El item ha sido actualizado.";
            return TRUE;
        }
    }
}
function update_precio_item($id_orden_item, $precio)
{
    $id_item = get_id_item_por_orden_item($id_orden_item);
    // update cantidad pendiente del item de la orden y update del precio
    if (obtener_tipo_proveedor_por_orden_item($id_orden_item) == "EXTRANJERO") {
        $precio_fob = $precio;
        //Calculo los precios nac y ref a partir del precio_fob ingresado si es un item de proveedor extranjero
        //
        $id_categoria = obtener_categoria($id_item);
        $precio_nac = $precio_fob + $precio_fob * porcentaje_impuesto_categoria($id_categoria) / 100;
        $precio_ref = $precio_nac * precio_dolar();
        $query = "UPDATE Item SET\n\t\t\t\tprecio_fob = {$precio_fob},\n\t\t\t\tprecio_nac = {$precio_nac},\n\t\t\t\tprecio_ref = {$precio_ref}\n\t\t\t  WHERE\n\t\t\t\tItem.id_item = {$id_item}";
    } else {
        $precio_ref = $precio;
        $query = "UPDATE Item SET\n\t\t\t\tprecio_ref = {$precio_ref}\n\t\t\t  WHERE\n\t\t\t\tItem.id_item = {$id_item}";
    }
    $result = mysql_query($query);
}
function insert_producto(&$mensaje, $categoria, $proveedor, $scan, $codigo_proveedor, $codigo_barras, $precio, $precio_nac, $precio_ref, $autoassign, $unidad, $factor_unidades)
{
    if ($categoria == "" or $proveedor == 0 or $unidad == 0 or $factor_unidades == "" or $scan and $codigo_barras == "" and !$autoassign or $precio == "") {
        // Si falta alguno de los campos requeridos. Esto es:
        // Si (producto == "" O proveedor == 0 O stock_minimo == "") O (scan == "si" Y codigo_barras == "") O precio_fob=""
        //
        $mensaje = "<em class=\"error\">Error: Debe ingresar los items marcados con *.</em>";
        return FALSE;
    } else {
        // Si estan todos los campos requeridos
        //
        if ($codigo_barras == "") {
            $codigo_barras = "NULL";
        } else {
            $codigo_barras = addslashes(trim($codigo_barras));
            $codigo_barras = "\"{$codigo_barras}\"";
        }
        $producto = addslashes(trim($producto));
        $codigo_proveedor = addslashes(trim($codigo_proveedor));
        $agrup_contable = get_agrupacion_contable($categoria);
        if (obtener_tipo_proveedor($proveedor) == "EXTRANJERO") {
            //Calculo los precios nac y ref a partir del precio_fob ingresado
            $precio_nac = $precio + $precio * porcentaje_impuesto_categoria($categoria) / 100;
            $precio_ref = $precio_nac * precio_dolar();
            if ($precio == "") {
                $precio = 'NULL';
            }
            if ($precio_nac == "") {
                $precio_nac = 'NULL';
            }
            if ($precio_ref == "") {
                $precio_ref = 'NULL';
            }
            $query = "INSERT INTO Item\n            \t(id_categoria, id_proveedor, codigo_proveedor, codigo_barras, precio_fob, precio_nac, precio_ref, oculto_fob, oculto_nac, id_unidad_compra, factor_unidades, agrupacion_contable)\n            \tVALUES\n            \t({$categoria}, {$proveedor},\"{$codigo_proveedor}\", {$codigo_barras}, {$precio}, {$precio_nac}, {$precio_ref}, {$precio}, {$precio_nac}, {$unidad}, {$factor_unidades}, {$agrup_contable})";
        } else {
            if ($precio == "") {
                $precio = 'NULL';
            }
            $precio_nac = 'NULL';
            $precio_fob = 'NULL';
            $query = "INSERT INTO Item\n            \t(id_categoria, id_proveedor, codigo_proveedor, codigo_barras, precio_fob, precio_nac, precio_ref, oculto_fob, oculto_nac, id_unidad_compra, factor_unidades, agrupacion_contable)\n            \tVALUES\n            \t({$categoria}, {$proveedor},\"{$codigo_proveedor}\", {$codigo_barras}, {$precio_fob}, {$precio_nac}, {$precio}, {$precio_fob}, {$precio_nac}, {$unidad}, {$factor_unidades}, {$agrup_contable})";
        }
        if (!($result = mysql_query($query))) {
            // Si hay un error al insertar los datos en la base.
            //
            $mensaje = "<em class=\"error\">Error: El item " . htmlspecialchars(stripslashes($producto)) . " no pudo ser dado de alta. Motivo posible: El item ya existia.</em>" . mysql_error();
            return FALSE;
        } else {
            if ($autoassign) {
                $result = mysql_query("SELECT LAST_INSERT_ID()");
                $row = mysql_fetch_array($result);
                $query = "UPDATE Item\n\t\t\t\tSET codigo_barras = \"NSSA{$row['0']}\"\n\t\t\t\tWHERE id_item = {$row['0']}";
                $result = mysql_query($query);
            }
            // Si se puede insertar los campos en la base.
            //
            $mensaje = "El item " . $_SESSION["catname"] . " - " . $_SESSION["provname"] . " ha sido dado de alta.";
            return TRUE;
        }
    }
}