Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/03/2010, 13:37
galian78
 
Fecha de Ingreso: marzo-2010
Mensajes: 30
Antigüedad: 14 años, 1 mes
Puntos: 0
Hola,

Tengo el siguiente problema, tengo una Tienda virtual en la que el CARRITO se compone de dos partes "Una donde se selecciona le forma de pago, la forma de envio y tambien si el usuario es afiliado puede utilizar bonos de descuento".

El tema es, yo tengo un usuario que es AFILIADO y le doy 10 Bonos de descuento. Cuando el introduce dichos bonos en la casilla o si no introduce nada, al pasar a la pantalla de confirmación del carrito la db se actualiza y le deja los bonos en 0 (Da igual lo que haga le quita todos los bonos). Les dejo los dos códigos por si pueden ayudarme.



Codigo Carrito:
Código PHP:
<?
if ((!session_is_registered('id_usuario_session')) && (!session_is_registered('usuario_usuario_session'))){
    echo 
"<center>";
    include(
"include/login.inc.php");
    echo 
"</center>";
}else{
$sql_afil "SELECT id_usuario,bonos FROM usuarios_afiliados WHERE id_usuario='$id_usuario_session' AND activo='1'";
$result_afil =mysql_query($sql_afil);
$es_afiliado=0;
$bonos=0;
$cantidad_afil =mysql_num_rows($result_afil);
if (
$cantidad_afil) { 
$row_afiliado mysql_fetch_object($result_afil);
$bonos $row_afiliado->bonos;
$es_afiliado =1;

?>
Dentro del Carrito.php el Campo de los Bonos:
Código PHP:
<? if ($es_afiliado) {?>
                          <table width="400" border="0" cellspacing="0" cellpadding="0">
                            <tr>
                              <td><span style="color:#fff;background:#3DA421;font-weight:bold;padding:2px"><? echo $bonos;?><font color="#FFFFFF" size="2" face="Arial, Helvetica, sans-serif">
                                <input name="bonos_a_usar" type="text" id="bonos_a_usar" size="10" />
                              </font></span></td>
                            </tr>
                          </table>
                          <? ?>
En Comprar.php (Paso final de la compra donde se almacenan los datos):
Código PHP:
<?
include("....");
include(
"....");

if (
$_POST["notas"] != "")
    
$_SESSION["notas"] = $_POST["notas"];

//define('CAIXAGALICIA_PATH', 'sdicomercio');    // Pruebas
define('CAIXAGALICIA_PATH''lagaleria');    // Real
$sql_afil "SELECT id_usuario,bonos FROM usuarios_afiliados WHERE id_usuario='$id_usuario_session' AND activo='1'";
$result_afil =mysql_query($sql_afil);
$es_afiliado=0;
$bonos=0;
$cantidad_afil =mysql_num_rows($result_afil);
if (
$cantidad_afil) { 
$bonos_a_usar = (isset($_POST['bonos_a_usar']))?$_POST['bonos_a_usar']:0;
$row_afiliado mysql_fetch_object($result_afil);
$bonosafil $row_afiliado->bonos;
$es_afiliado =1;

if (
$bonos_a_usar>=$bonosafil ) {
$actualizar_bonos 0;
$bonos_a_usar =$bonosafil;
} else {
$actualizar_bonos $bonosafil $bonos_a_usar;
}
if(
$pedido && $secuencia) {
 
    
//if($_SERVER['REMOTE_ADDR'] != "212.163.35.153") die("ERROR");

    
$result mysql_query("SELECT * FROM usuarios_compras WHERE id=".intval($pedido));
    
$row mysql_fetch_array($result);

    
$url "http://".CAIXAGALICIA_PATH.".caixagalicia.es/tpv2/tpv_recoge.asp?comercio=TUCOMERCIO&pedido=$pedido&secuencia=".urlencode($secuencia)."&importe=".str_replace("."""number_format($row["total"], 2"."""))."&moneda=eur";

//    $flog = fopen("_log.txt", "a");
//    fwrite($flog, "[".date("Y-m-d H:i")."] - ".$_SERVER['PHP_SELF']."\n".$_SERVER['REMOTE_ADDR']." - ".$_SERVER['REMOTE_HOST']."\n".$url."\n\n");

    
$str "";
    
ob_start();
    if(@
readfile($url)) {

        
$str ob_get_contents();
//        fwrite($flog, $str."\n\n");

        
if(ereg("\<ESTADO\>(.+)*\<\/ESTADO\>(.+)*\<ERROR\>(.+)*\<\/ERROR\>(.+)*\<CODOP\>(.+)*\<\/CODOP\>"$str$tmp) && $tmp[1] == 1)
            echo 
$str;
        else
            echo 
"<DATOS><ESTADO>2</ESTADO><ERROR>".$tmp[3]."</ERROR><CODOP></CODOP></DATOS>";

    }

    
ob_end_clean();

//    fclose($flog);

    
exit;
}

if ((!
session_is_registered('id_usuario_session')) && (!session_is_registered('email_usuario_session'))){
    
header("Location: login.php?viene=$PHP_SELF");
    exit;
}

//Si enviaron el formulario lo verifico
if ($e == 1){
$bonos_usados = (isset($_POST['bonos_a_usar']))?$_POST['bonos_a_usar']:0;
$actualizar_bonos = (isset($_POST['actualizar_bonos']))?$_POST['actualizar_bonos']:0;
    switch(
$t){
        case 
"ce":
            
$datos["todo_ok"] = 1;
            
$mostrar "Contrareembolso";
        break;
        case 
"db":
            
$metodo_pago $t;
            
$mostrar "Transferencia bancaria";
            
$datos["todo_ok"] = 1;
        break;
        case 
"pp":
            
$metodo_pago "pp";
            
$mostrar "Tarjeta de cr&eacute;dito/d&eacute;bito (Tu Banco)";
            
$datos["todo_ok"] = 1;
        break;
        case 
"py":
            
$metodo_pago "py";
            
$mostrar "PAYPAL";
            
$datos["todo_ok"] = 1;
        break;
    }

    
    if (
$datos["todo_ok"] == 1){


include(
"include/update.php");

        
$notas $_SESSION["notas"];

        
//Guardo los datos de la transaccion en compras
        
$sql "INSERT INTO usuarios_compras VALUES ('',
                                                    '$id_usuario_session',
                                                    '"
strip_tags(str_replace("</P>","\n",str_replace("<br>","\n",$cabecera))).strip_tags(str_replace("</P>","\n",str_replace("<br>","\n",$cuerpo))).$telefonos.$total_final.strip_tags(str_replace("</P>","\n",str_replace("<br>","\n",$pie))) ."',
                                                    '$cuerpo_extra',
                                                    '"
.strtotime("now")."',
                                                    '"
.($total_final)."',
                                                    '0',
                                                    '"
.$gremio_usuario_session."',
                                                    '',
                                                    '$notas')"
;
        
$result mysql_query($sql);
        
$id_transaccion mysql_insert_id();

        
//Borro las transacciones
        
$sql "DELETE FROM usuarios_transacciones WHERE id_usuario = '$id_usuario_session'";
        
$result mysql_query($sql);
        

include(
"include/mail_admin.php");    
        
        if (
$metodo_pago == "pp"){
        include(
"include/tpv_".$tpv_seleccionado.".php");
        }elseif (
$metodo_pago == "py"){
        include(
"include/paypal.php");
        }else{
            
header("Location: comprar_f.php");
            exit;
        }
    }
}

$sql "SELECT     
        usuarios_transacciones.id_producto,
        usuarios_transacciones.cantidad,
        usuarios_transacciones.propiedades,
        productos_datos.costo,
        productos_datos.id_fabricante,
        gral_iva.valor,
        productos_datos.nombre
    FROM     
        usuarios_transacciones,
        gral_iva,
        productos_datos  
    WHERE     usuarios_transacciones.id_usuario = '$id_usuario_session' 
    AND    usuarios_transacciones.id_producto = productos_datos.id 
    ORDER BY productos_datos.nombre ASC"
;
    
$result_productos mysql_query($sql);
$row_productos mysql_fetch_array($result_productos);
    
//Muestro los productos del usuario
mbanner($titulo_sitio,$nombre_usuario_session,$apellido_usuario_session,$usuario_usuario_session);
?>
La comprobacion de los bonos usados y el update de la DB la dentro de include que se llama update.php:

Código PHP:
    $bonos_afil $bonos_usados;
    
$porcion_iva = ($subtotal $envio $reembolso) * $iva /100;
    
$total_final $subtotal $envio $reembolso $porcion_iva $bonos_afil;
    if (
$es_afiliado) {
        
$cuerpo .= "Bonos usados: "number_format($bonos_afil,2,',','.') ." euros<br>";
            
$sql_c_bonos "UPDATE usuarios_afiliados SET bonos='$actualizar_bonos' WHERE id_usuario = '$id_usuario_session'";
            
$result_act_b mysql_query($sql_c_bonos);
        } 
Parece que ya lo he solucionado, simplemente corrigiendo una linea dentro del comprar.php y añadiendo esto:

Código PHP:
        <?  
            
if ($es_afiliado) {
            
$sql_c_bonos "UPDATE usuarios_afiliados SET bonos='$actualizar_bonos' WHERE id_usuario = '$id_usuario_session'";
            
$result_act_b mysql_query($sql_c_bonos);
            
            }
        
?>
        
        <?     
            $porcion_iva 
= ($total $envio $reembolso) * $iva /100;
            
$total_final $total $envio $reembolso $porcion_iva $bonos_a_usar           
        ?>
Como no tengo ayuda me respondo a mi mismo,

No esta bien lo que puse arriba, con ello consegui que no actualice los bonos a cero hagamos lo que hagamos, pero por contra si no finalizo la compra y regreso al carrito.php me resta los bonos igual, es decir no los resta al finalizar la compra si no cada vez que paso al punto previo a la finalización.

Haber si alguien me ayuda y si no pues ire posteando soluciones para futuras personas que quieran integrar algo similar.

Última edición por GatorV; 19/03/2010 a las 15:50