function select_by_user($idUsuario, $tipoDePago, $IVA) { //incluye classes necesarias include_once "class.categorias.php"; include_once "class.productos.php"; include_once "class.compras.php"; include_once "class.usuarios.php"; include_once "class.talles_productos.php"; include_once "class.talles.php"; include_once "class.historiales.php"; //variables de la sumas de valores, tanto de precios como total $total = 0; $total_general = 0; $totales[] = 0; $sql = "SELECT * FROM carrito WHERE idUsuario = {$idUsuario};"; $result = $this->database->query($sql); $result = $this->database->result; $detalle_productos = ""; while ($row = mysql_fetch_array($result)) { $intContador = $row['intContador']; $idUsuario = $row['idUsuario']; $idProducto = $row['idProducto']; $intCantidad = $row['intCantidad']; $intTransaccion = $row['intTransaccion']; $id_talle = $row['talle']; //Traigo precio de los productos $productos = new productos(); $productos->select($idProducto); $dblPrecio = $productos->getdblPrecio(); $strNombre = $productos->getstrNombre(); $strDetalle = $productos->getstrDetalle(); $intCategoria = $productos->getintCategoria(); $strintStock = $productos->getintStock(); $cat = new categorias(); $cat->select($intCategoria); $requiere_talles = $cat->gettalles(); if ($requiere_talles == 1) { ############################################# // REQUIERE TALLES ############################################# //compruebo que haya producto en stock //traigo el stock del producto desde talles_productos $tall_prod = new talles_productos(); $tall_prod->select_by_producto($idProducto, $id_talle); $cantidad_stock_con_talles = $tall_prod->getcantidad(); if ($cantidad_stock_con_talles >= $intCantidad) { $nom_talle = new talles(); $nom_talle->select($id_talle); $nombre_de_talle = $nom_talle->getnombre_talle(); $detalle_productos .= '<p> ID:' . $idProducto . ', ' . $strNombre . ', (' . $nombre_de_talle . ') Cant:' . $intCantidad . ' x $' . $dblPrecio . ' = ' . $intCantidad * $dblPrecio . '</p> '; //quito del stock $detalle_para_guardar_por_id[] = array('id_producto' => $idProducto, 'nombre' => $strNombre . '(' . $nombre_de_talle . ')', 'detalle' => $strDetalle, 'cantidad' => $intCantidad, 'precio_pagado' => $intCantidad * $dblPrecio); $taproductos = new talles_productos(); $taproductos->select_by_producto($idProducto, $id_talle); $id_talle_producto = $taproductos->getid(); $upcantidad = new talles_productos(); $upcantidad->select($id_talle_producto); $upcantidad->cantidad = $cantidad_stock_con_talles - $intCantidad; $upcantidad->update($id_talle_producto); $total = $dblPrecio * $intCantidad; } else { $detalle_productos .= '<p> ID:' . $idProducto . ', ' . $strNombre . ', Cantidad solicitada:' . $intCantidad . ', NO DISPONIBLE - $ 0.00 </p>'; $total = 0; $detalle_para_guardar_por_id[] = array('id_producto' => $idProducto, 'nombre' => $strNombre, 'detalle' => $strDetalle, 'cantidad' => $intCantidad, 'precio_pagado' => 0); } } else { ############################################# //NO REQUIERE TALLES ############################################# //compruebo que haya producto en stock if ($strintStock >= 1) { $detalle_productos .= '<p> ID:' . $idProducto . ', ' . $strNombre . ', Cant:' . $intCantidad . ' x $' . $dblPrecio . ' = ' . $intCantidad * $dblPrecio . '</p> '; $detalle_para_guardar_por_id[] = array('id_producto' => $idProducto, 'nombre' => $strNombre, 'detalle' => $strDetalle, 'cantidad' => $intCantidad, 'precio_pagado' => $intCantidad * $dblPrecio); //quito del stock $productos = new productos(); $productos->select($idProducto); $productos->intStock = $strintStock - $intCantidad; $productos->update($idProducto); $total = $dblPrecio * $intCantidad; } else { $detalle_productos .= '<p> ID:' . $idProducto . ', ' . $strNombre . ', Cant: NO DISPONIBLE - $ 0.00 </p>'; $total = 0; $detalle_para_guardar_por_id[] = array('id_producto' => $idProducto, 'nombre' => $strNombre, 'detalle' => $strDetalle, 'cantidad' => $intCantidad, 'precio_pagado' => $intCantidad * $dblPrecio); } } //Voy sumando los precios de los productos $totales[] = $total; } //Total sin IVA $valor_general = array_sum($totales); //Total con IVA $final_con_iva = $valor_general + $valor_general * $IVA / 100; if ($valor_general >= 1) { $detalle_titulo = "<h3>Pago procesado.</h3>"; $detalle_productos .= '<p> Sin IVA: $' . $valor_general . ', Con IVA: $' . $final_con_iva . '</p'; } else { $detalle_titulo = "Error al procesar pago. importe: {$valor_general} "; } //Guardo compra en tabla "compras" $compra = new compras(); $compra->idUsuario = $idUsuario; $compra->intTipoPago = $tipoDePago; $compra->fthCompra = date("Y-m-d H:i:s"); $compra->dblTotal = $final_con_iva; #$compra->idCredito=$idCredito; $compra->detalle = $detalle_productos; $compra->estado = 1; $last_compra = $compra->insert(); //Actualizo el credito del usuario #Primero traigo el monto actual de credito del usuario $usuarios = new usuarios(); $usuarios->select($idUsuario); $creditoActual = $usuarios->getdblCredito(); /* Realizo el UPDATE */ $usuarios = new usuarios(); $usuarios->select($idUsuario); $usuarios->dblCredito = $creditoActual - $final_con_iva; $usuarios->update($idUsuario); //Guardo la modificacion en historial de credito $monto_quedo_en = $creditoActual - $final_con_iva; $hist = new historiales(); $hist->id_usuario = $idUsuario; $hist->fecha = date("Y-m-d"); $hist->realizado_por = "Compra realizada"; $hist->tipo_modificacion = $modificacion = "Compra de \${$final_con_iva}"; $hist->monto_modificado = $monto_quedo_en; $hist->insert(); //guardo el detalle de cada producto en detalles_compra para poder mostrar la img del producto comprado foreach ($detalle_para_guardar_por_id as $item_to_save) { $compra = new compras(); $compra->insert_detalle_productos($last_compra, $item_to_save['id_producto'], $item_to_save['nombre'], $item_to_save['detalle'], $item_to_save['cantidad'], $item_to_save['precio_pagado']); } /* borro del carrito del usuario los items*/ $this->delete($idUsuario); return $detalle_titulo . '' . $detalle_productos; }
$color[$cantidad] . ' - cant:' . $cantidad; $ins_color = new colores_productos(); $ins_color->id_color = $key; $ins_color->id_producto = $idProducto; $ins_color->cantidad = $cantidad; $ins_color->insert_update(); } $msg_final .= '<div class="notify"><p>producto actualizado! <a href="../productos/e_producto.php?id=' . $idProducto . '&activo=2&sub=d">Ver</a></p></div>'; } else { //guardo talles en tabla talles_productos //Limpio talles anteriores include_once 'classes/class.talles_productos.php'; $ins_talles = new talles_productos(); $ins_talles->clean_by_producto($idProducto); /* UPDATE */ include_once "classes/class.productos.php"; $productos = new productos(); $productos->select($idProducto); $productos->idProducto = $idProducto; $productos->strNombre = $strNombre; $productos->strDetalle = $strDetalle; $productos->intCategoria = $intCategoria; $productos->dblPrecio = $dblPrecio; $productos->intStock = $intStock; $productos->destacado = $destacado; $productos->update($idProducto); $msg_final .= '<div class="notify"><p>producto actualizado!</p></div>'; } } $_SESSION['msg_ok'] = $msg_final; header('Location: ' . BASEURL . 'productos/v_productos.php?activo=2&sub=d');