The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.