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

NAME

Dancer2::Plugin::Cart - Cart interface for Dancer2 applications

VERSION

version 1.0001

SYNOPSIS

    use Dancer2;
    use Dancer2::Plugin::Cart;

DESCRIPTION

This plugin provides a easy way to manage a shopping cart in dancer2. All the information and data structure of the plugin will be manage by the session, so a good idea is to use a plugin in order to store the session data in the database.

It was designed to be used on new or existing database, providing a lot of hooks in order to fit customizable solutions.

By default, the plugin is going to search default templates on the views directory, if the view doesn't exists, the plugin will render and inline templates provided by the plugin.

An script file has been added in order to generate the template views of each stage of a checkout, and the user will be able to adapt it to their needs.

The script is create_cart_views and needs to be run on the root directory of the dancer2 app. The default views assume that you are using "Template Toolkit" as the template engine.

CONFIGURATION

environment
  plugins:
    Cart:
      product_list:
        - ec_sku: 'SU02'
          ec_price: 16
        - ec_sku: 'SU02'
          ec_price: 21
Options
    products_view_template
      - Define a template to use to show the products 
    cart_view_template
      - Define a template to use to show cart info 
    cart_receipt_template
      - Define a template to use to show receipts 
    shipping_view_template
      - Define a template to use to show shipping form 
    billing_view_template
      - Define a template to use to show billing form 
    review_view_template
      - Define a template to use to show review page 
    receipt_view_template
      - Define a template to use to show receipt page 
    default_routes
      - default 1, to exclude all routes, set to 0
    excluded_routes
      - Array defining the routes to be excluded.

ROUTES

get /products

  List of products

get /cart

  Cart info

post /cart/add

  To add a product to the cart

get /cart/clear

  To reset the cart

get /cart/shipping

  To show shipping form

post /cart/shipping

  To store data on session variable

get /cart/billing

  To show billing form

post /cart/billing

  To store data on session variable

get /cart/review

  To show a summary of the cart

post /cart/checkout

  To place orders

get /cart/receipt

  To show the results of placing an order

FUNCTIONS

products

Return the list of products and fill the ec_cart->{products} session variable.

cart

Return a ec_cart Hashref with the updated info.

Use: subtotal, quantity, and total keywords

Call hooks: before_cart, after_cart

cart_add

Add product to the cart

Process cart_add form and check errors on session('ec_cart')->{add}->{error}

Delete session('ec_cart')->{add} after success

Call hooks: validate_cart_add_params, before_cart_add, after_cart_add

cart_add_item

Check if the product exists, adn add/sub the quantity

Calculate ec_subtotal for each item

Return product added

clear_cart

Delete ec_cart session variable

Call hooks: before_clear_cart, after_clear_cart

subtotal

Calculate and return the subtotal (sum of ec_subtotal of each product)

Call hooks: before_subtotal, after_subtotal

quantity

Calculate and return the quantity (sum of ec_quantity of each product)

Call hooks: before_quantity, after_quantity

billing

Load the ec_cart structure and check if there is any error on ec_cart->{billing}->{error}.

In case of error, the user is redirected to the billing route, other wise pass to the

Call hooks: validate_billing_params, before_bililng, after_billing_

shipping

Load the ec_cart structure and check if there is any error on ec_cart->{shipping}->{error}

In case of error, the user is redirected to the shipping route.

Call hooks: validate_shipping_params, before_shipping, after_shipping

checkout

Load the ec_cart structure check if there is any error on ec_cart->{checkout}->{error};

Call hook: checkout

close_cart

Add status 1 to the ec_cart structure.

Call hooks: before_close_cart and after_close_cart

adjustments

Add default adjustments to the ec_cart structure. The default adjustments are: Discounts, Shipping, Taxes. Call hook adjustments

HOOKS

Hooks are called before|after|as a function. The purpose of the hooks is to manipulate the data structure defined to ec_cart.

before_cart

after_cart

validate_cart_add_params

before_cart_add

after_cart_add

validate_shipping_params

before_shipping

after_shipping

validate_billing_params

before_billing

after_billing

validate_checkout_params

checkout

To implement the checkout step.

before_close_cart

after_close_cart

before_clear_cart

after_clear_cart

before_subtotal

after_subtotal

before_quantity

after_quantity

before_total

after_total

adjustments

Add adjustments (This hook is called is called by cart function).

AUTHORS

CORE DEVELOPERS

    Andrew Baerg
    Ruben Amortegui

AUTHOR

    YourSole Core Developers

CONTRIBUTORS

    Josh Lavin

COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by Ruben Amortegui.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.