Foros del Web » Programando para Internet » PHP »

AYUDA Error en Bono de Afiliados (Pregunta Nueva)

Estas en el tema de AYUDA Error en Bono de Afiliados (Pregunta Nueva) en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/03/2010, 13:37
 
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

Etiquetas: afiliados
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 14:07.