Está en la página 1de 9

CodeIgniter Shopping Cart

Carrito de Compras

Lic. Yanina Medina- Lic. Lucía Salazar- 2019


Clase Cart
• Un carrito de compras es un paquete de software y una aplicación de
comercio electrónico que actúa como un catálogo de la tienda en línea y
realiza el proceso de pedido.
• Cuando un usuario navega por su sitio la clase Cart permite que los
artículos se agreguen a una sesión que permanece activa. Estos elementos
se pueden recuperar y mostrar en un formato estándar de "carrito de la
compra"
• Esta clase de carrito nos permite agregar y quitar productos a un carrito
de compras y actualizarlos.
• La clase de carrito solo proporciona la funcionalidad básica de "carrito".
No proporciona envío, autorización de tarjeta de crédito u otros
componentes de procesamiento.
• Para empezar, primero debe inicializar la clase cargando la biblioteca del
carro.
$autoload['libraries'] = array('database', 'session', 'form_validation', ‘cart');

Para entender la clase cart remitirse a la siguiente documentación:


https://www.formget.com/codeigniter-shopping-cart/

Lic. Yanina Medina- Lic. Lucía Salazar- 2019


Archivos del carrito
carrito_parte_view.php (es la vista del carrito de compras, lo que se
muestra cuando accedemos al carrito)

electrodomestico_view.php (vista que contiene los electrodomésticos,


en el ejemplo adjunto, de la tabla (productos) que se muestran en el
catálogo con el botón de compra para el carrito y donde se debe hacer
el control de stock mínimo y máximo).

carrito_controller.php (es el controlador con las funciones para agregar


al carrito (function add() --> genera array para agregar al carrito) y la
funciones para remover ítem del carrito como (function remove
($rowid) //Elimina elemento del carrito o el carrito entero)
//Si $rowid es "all" destruye el carrito entero

carrito_model.php (inserta en las tablas venta_cabecera y


venta_detalle, la venta del carrito)
Lic. Yanina Medina- Lic. Lucía Salazar- 2019
Rutas para el carrito
 $route['electrodomesticos'] =
'carrito_controller/electrodomesticos';
 $route['carrito_agrega'] = 'carrito_controller/add';
 $route['carrito_actualiza'] = 'carrito_controller/actualiza_carrito';
 $route['carrito_elimina/(:any)'] = 'carrito_controller/remove/$1';
 $route['comprar'] = 'carrito_controller/muestra_compra';
 $route['confirma_compra'] = 'carrito_controller/guarda_compra';

Lic. Yanina Medina- Lic. Lucía Salazar- 2019


Sintaxis
function add()
{
// Genera un array para insertar en el carrito

$insert_data = array(
'id' => $this->input->post('id'),
'name' => $this->input->post('descripcion'),
'price' => $this->input->post('precio_venta'),
'qty' => 1
);

// Inserta elemento al carrito


$this->cart->insert($insert_data);

// Redirige a la misma página que se encuentra


header('Location: '.$_SERVER['HTTP_REFERER']);
}

Esta función le permite agregar elementos al carrito de compras, el método insert () devolverá $ rowid
único si inserta con éxito un solo artículo

Lic. Yanina Medina- Lic. Lucía Salazar- 2019


//Actualiza el carrito que se muestra
Sintaxis
function actualiza_carrito()
{ // Recibe los datos del carrito, calcula y actualiza
$cart_info = $_POST['cart'];
foreach( $cart_info as $id => $cart)
{
$rowid = $cart['rowid'];
$price = $cart['price'];
$amount = $price * $cart['qty'];
$qty = $cart['qty'];
$data = array(
'rowid' => $rowid,
'price' => $price,
'amount' => $amount,
'qty' => $qty
);
$this->cart->update($data);
}
// Redirige a la misma página que se encuentra
header('Location: '.$_SERVER['HTTP_REFERER']);
} Lic. Yanina Medina- Lic. Lucía Salazar- 2019
Sintaxis
//Guarda los datos de la venta en la base de datos

public function guarda_compra()


{
$session_data = $this->session->userdata('logged_in');
$data['id'] = $session_data['id'];

$total = $this->input->post('total_venta');
$venta = array(
'fecha‘ => date('Y-m-d'),
'usuario_id' => $data['id'],
'total_venta' => $total
);

$venta_id = $this->carrito_model->insert_venta($venta);


Lic. Yanina Medina- Lic. Lucía Salazar- 2019
Sintaxis
Esta función devuelve un array de los elementos agregados en el carrito.
if ($cart = $this->cart->contents()):
foreach ($cart as $item):
$venta_detalle = array(
'venta_id‘ => $venta_id,
'producto_id' => $item['id'],
'cantidad' => $item['qty'],
'precio' => $item['price'],
'total' => $item['subtotal']
);
cust_id = $this->carrito_model->insert_venta_detalle($venta_detalle);

Lic. Yanina Medina- Lic. Lucía Salazar- 2019


//Descuenta del stock y lo guarda en la base de datos
Sintaxis
$producto = $this->producto_model->edit_producto($item['id']);
foreach ($producto->result() as $row)
{
$stock = $row->stock;
}
$stock_edit = $stock -$item['qty'];
$stock_nuevo = array(
'stock'=> $stock_edit
);
$modifica = $this->producto_model->update_producto($item['id'], $stock_nuevo);
endforeach;
endif;
$data = array('titulo' => 'Compra Finalizada');
$data['perfil_id'] = $session_data['perfil_id'];
$data['nombre'] = $session_data['nombre'];

$this->load->view('partes/head_view', $data);
$this->load->view('partes/menu_view2', $data);
$this->load->view('front/compralista_view');
$this->load->view('partes/footer_view');
$final = $this->cart->destroy();
}
Lic. Yanina Medina- Lic. Lucía Salazar- 2019
Esta función le permite destruir el carro, que almacena la sesión del carro.

También podría gustarte