Skip to main content

eCommerce for Plone

Project description

Introduction

PCommerce (Plone commerce) provides a simple shop system which supports:

  • product variations

  • multiple prices per product to support special prices per user or group (over the sharing tab) and prices only available for a specific time (by using the expiration date)

  • multiple pluggable payment methods

  • multiple pluggable shipment methods

  • multiple taxes by zone

  • pre and post tax charges per payment and shipment method

  • component based checkout to easily customize the checkout process

  • multiple currencies by using Products.CurrencyUtility

Pluggable Payment Methods

A payment plugin consists of a named adapter implementing pcommerce.core.interfaces.IPaymentMethod and named by the id (usually the package name) of the method and one or more views injecting data into the checkout process. The views are registered for the payment method and have to implement pcommerce.core.interfaces.IPaymentView. The name of the view corresponds to the name of the component where the data has to be injected (e.g. payment, confirmation, overview etc.).

As an example of a simple payment plugin pcommerce.payment.invoice is available, which simply collects a billing address and injects it into the confirmation and order email.

Pluggable Shipment Methods

A shipment plugin works much like a payment plugin, the only differences are the interfaces to be implemented by the adapter and the corresponding views, which there are pcommerce.core.interfaces.IShipmentMethod respectively pcommerce.core.interfaces.IShipmentView.

As an example pcommerce.shipment.parcel is available, which collects a delivery address and injects it into the confirmation and order email.

Optional dependencies

Products.CurrencyUtility - to add support for multiple currencies

ImageTag_CorePatch - to add support for dynamic image scaling [http://www.zope.org/Members/bowerymarc/ImageTag_CorePatch/0.3/ImageTag_CorePatch.tgz]

Usage

Getting started

  • Install pcommerce.shipment.X and pcommerce.payment.Y

  • Via the control panel, go to PCommerce settings and modify:

    • Set taxes

    • Set “Terms and conditions”-page (required)

    • Set “Thank you”-page (optional, see below)

  • Add a folder, name it “My Webshop” (or something like that)

  • Add a product, give it a price

  • Set the folder’s containing view to “ShopFolder”

Detailed setup

Thank you-page

The thank you-page may be left empty, in that case customers will be redirected to the root of the site after checkout.

Folder view: “Shop”

The “Shop” folder view shows “hot” and / or “new” products, if present.

Folder view: “ShopFolder”

The “ShopFolder” view lists all products in the folder. Probably, this is what you want for a simple shop.

Additional price

An additional price can be added to a product. you can specify a period where it is valid (Plone’s dates). If the additional price X is lower than the default price Y, it will display as “$ X (instead of $ Y)”.

Order management

There’s a management screen where you can see all orders and their statuses. The link to the Order Management is available under the user actions, or you can type @@manage-orders directly.

The view is protected by the “PCommerce: Manage Orders” permissions.

To do

Customers

Membership integration

Integrate order form with site membership, or don’t require membership?

The payment process should be easier for customers, now lots of duplicate data have to be filled in.

Product filtering

Filter on product properties to narrow down products (ajax?)

Vendor

Order management

  • batching (implemented in 1.0b12)

  • filtering (on status, for example)

  • Integrate processing here? The current way is rather flimsy: vendor clicks a link from an email which takes him to the processOrder page, which redirects to a blank page displaying only “order processed”.

    • First step: processing should redirect to @@manage-orders, with a status message. (implemented in pcommerce.payment.invoice 1.0b5)

General

  • Layout: currently has own CSS looking like Plone 3. Try styling by adding only classes, so we use Plone’s own styling (should work in both 3 and 4).

  • Translations: replace bare strings with labels and defaults

Changelog

1.0b13 (2013-01-08)

  • Fix manage orders view [Gomez]

  • fix for getprice.js so it works with latest jquery [huub_bouma]

1.0b12 (2012-04-17)

  • Added batching to manager orders view [simu]

  • Added back to manage orders link to order detail view [simu]

  • Removed possibility to process an order which has previously been failed [simu]

1.0b11 (2012-02-06)

  • Fixed sorting in manage orders view [simu]

  • Added possibility to specify a custom email address for pcommerce related emails [simu]

  • View action is used in the url for custom products that use AT file and image as a base [kcleong]

  • Fixed bug in payment processor, removed undeclared variable

1.0b10 (2012-01-23)

  • fixed norwegian translations

  • plone 4.1 compatibility by importing cmfcore permissions

  • added norwegian translations (thanks to Espen Moe-Nilssen)

1.0b9 (2011-12-13)

  • updated translations

  • added french translations

  • fixed bug in payment failed and canceled view where a ValueError was raised if order.processed_steps was empty

  • adjusted CSS for the checkout button of the cart view

  • rounding values (by default to 5 cents) is now configurable in the pcommerce_properties (not in the configlet) [huub_bouma]

  • plone4.1 compatability fix (small) [huub_bouma]

  • translations now use locales folder, and is now plone4 compatible

  • removed a pdb statement. [huub_bouma]

  • some PEP8 fixes [huub_bouma]

1.0b8 (2011-09-26)

  • Improved order overview (adjusted total price to include all taxes and charges)

  • Added default_view property to Product and Variation type to prevent breaking of plone’s new folder_full_view

  • Added spanish translations (Thanks to Manuel Gualda Caballero)

1.0b7 (2011-09-01)

  • Added dutch translations (thanks to Kees Hink and Albert Peschar)

  • Added order overview (@@manage-orders) [khink]

1.0b6 (2011-01-5)

  • re-add PTS utility for plone 3 compatibility

1.0b5 (2010-12-22)

  • cleaned up templates (unified xml namespaces)

  • fixed css classes of step navigation in checkout

1.0b4 (2010-12-20)

  • bugfix in BaseComponent (only show available shipment methods by using the ShipmentRegistry)

  • added process method to the order registry

  • added new adapter which defines the components which have to be processed in order to make an order definite

  • added new zope3 events

  • cleaned up translations

1.0b3 (2010-11-29)

  • remove assignment in portlets.xml

1.0b2 (2010-11-29)

  • fix javascript getprice.js.

1.0b1 (2010-10-20)

plone 4 compatibility

  • remove PTS utility

  • fix javascripts under query 1.4.2

  • browser view need a index attribute instead the call method

  • remove actionsicons because is no more supported in plone 4

  • fix access of user-order

0.5a3

  • CSS and HTML Bugfix in buy viewlet

0.5a2

  • Fixed payment and shipmentdata class and added migration method to fix existing orders

  • Fixed cartInfo macro

0.5a1

  • Added pluggable shipment methods

  • Added pre and post tax charges

  • Added selection of available shipment methods per product

  • Rewrote the whole architecture (Not backward compatible)

  • First alpha release containing internal developments

0.3 - Alpha release

  • Removed setupHandler which rebuilded the catalog and slowed down (re)install

  • Fixed version in metadata.xml

0.2 - Alpha release

  • Removed profile dependency to Products.CurrencyUtility

0.1 - Alpha release

  • Initial release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pcommerce.core-1.0b13.zip (139.4 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page