NAME
Interchange6::Cart - Cart class for Interchange6 Shop Machine
DESCRIPTION
Generic cart class for Interchange6.
SYNOPSIS
my $cart = Interchange6::Cart->new();
$cart->add( sku => 'ABC', name => 'Foo', price => 23.45 );
$cart->update( sku => 'ABC', quantity => 3 );
my $product = Interchange::Cart::Product->new( ... );
$cart->add($product);
$cart->apply_cost( ... );
my $total = $cart->total;
ATTRIBUTES
id
Cart id can be used for subclasses, e.g. primary key value for carts in the database.
name
The cart name. Default is 'main'.
products
Called without args returns a hash reference of Interchange6::Cart::Product. Should not normally be called with args but rather via the various "PRODUCT METHODS" detailed below.
sessions_id
The session ID for the cart.
subtotal
Returns current cart subtotal excluding costs.
total
Returns current cart total including costs.
users_id
The user id of the logged in user.
METHODS
See Interchange6::Role::Costs for details of cost attributes and methods.
clear
Removes all products from the cart.
count
Returns the number of different products in the shopping cart. If you have 5 apples and 6 pears it will return 2 (2 different products).
is_empty
Return boolean 1 or 0 depending on whether the cart is empty or not.
product_get($index)
Returns the product at the specified index;
product_index( sub {...})
This method returns the index of the first matching product in the cart. The matching is done with a subroutine reference you pass to this method. The subroutine will be called against each element in the array until one matches or all elements have been checked.
This method requires a single argument.
my $index = $cart->product_index( sub { $_->sku eq 'ABC' } );
products_array
Returns an array of Interchange::Cart::Product(s)
new
Inherited method. Returns a new Cart object.
add($product)
Add product to the cart. Returns product in case of success.
The product is an Interchange6::Cart::Product or a hash (reference) of product attributes that would be passed to Interchange6::Cart::Product->new().
find
Searches for an cart product with the given SKU. Returns cart product in case of sucess or undef on failure.
if ($product = $cart->find(9780977920174)) {
print "Quantity: $product->{quantity}.\n";
}
has_subtotal
predicate on "subtotal".
has_total
predicate on "total".
quantity
Returns the sum of the quantity of all products in the shopping cart, which is commonly used as number of products. If you have 5 apples and 6 pears it will return 11.
print 'Products in your cart: ', $cart->quantity, "\n";
remove($sku)
Remove product from the cart. Takes SKU of product to identify the product.
seed $product_ref
Seeds products within the cart from $product_ref.
NOTE: use with caution since any existing products in the cart will be lost.
$cart->seed([
{ sku => 'BMX2015', price => 20, quantity = 1 },
{ sku => 'KTM2018', price => 400, quantity = 5 },
{ sku => 'DBF2020', price => 200, quantity = 5 },
]);
set_sessions_id
Writer method for sessions_id.
update
Update quantity of products in the cart.
Parameters are pairs of SKUs and quantities, e.g.
$cart->update(9780977920174 => 5,
9780596004927 => 3);
A quantity of zero is equivalent to removing this product.
Returns updated products that are still in the cart. Products removed via quantity 0 or products for which quantity has not changed will not be returned.
AUTHORS
Stefan Hornburg (Racke), <racke@linuxia.de>
Peter Mottram (SysPete), <peter@sysnix.com>
LICENSE AND COPYRIGHT
Copyright 2011-2014 Stefan Hornburg (Racke) <racke@linuxia.de>.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.