GithubHelp home page GithubHelp logo

bluedynamics / bda.plone.shop Goto Github PK

View Code? Open in Web Editor NEW
20.0 15.0 15.0 1.54 MB

Generic Shop Solution for Plone

License: Other

Python 80.69% JavaScript 0.52% Shell 1.20% RobotFramework 6.01% Makefile 9.64% SCSS 1.93%
hacktoberfest

bda.plone.shop's Issues

shop related portlets only available in right column

is there any reason the portlets (admin and cart) can only be added to the right portlet manager IRightColumn?

  <portlet 
    addview="portlets.ShopAdmin"
    title="Shop Admin Portlet"
    description="A portlet which renders shop admin links.">
    <for interface="plone.app.portlets.interfaces.IRightColumn" />
  </portlet>

i'd suggest to drop this restriction and simply register the portlets for all available portlet managers.

On install: No module named controlpanel

I tried to install the shop into my Plone 4.3.2 Installation, and got this traceback:

2014-11-21 16:00:18 ERROR Zope.SiteErrorLog 1416582018.150.901113599991 http://localhost:8080/Plone/portal_quickinstaller/installProducts
Traceback (innermost last):
  Module ZPublisher.Publish, line 138, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 48, in call_object
  Module Products.CMFQuickInstallerTool.QuickInstallerTool, line 580, in installProducts
  Module Products.CMFQuickInstallerTool.QuickInstallerTool, line 512, in installProduct
   - __traceback_info__: ('bda.plone.shop',)
  Module Products.GenericSetup.tool, line 350, in runAllImportStepsFromProfile
   - __traceback_info__: profile-bda.plone.shop:default
  Module Products.GenericSetup.tool, line 1100, in _runImportStepsFromContext
  Module Products.GenericSetup.tool, line 1015, in _doRunImportStep
   - __traceback_info__: plone.app.registry
  Module plone.app.registry.exportimport.handler, line 49, in importRegistry
  Module plone.app.registry.exportimport.handler, line 94, in importDocument
  Module plone.app.registry.exportimport.handler, line 281, in importRecords
  Module zope.dottedname.resolve, line 38, in resolve
ImportError: No module named controlpanel

All bda.plone.* packages are checked out on master:

bda.plone.shop = git https://github.com/bluedynamics/bda.plone.shop.git
bda.plone.productshop = git https://github.com/bluedynamics/bda.plone.productshop.git
bda.plone.discount = git https://github.com/bluedynamics/bda.plone.discount.git
bda.plone.cart = git https://github.com/bluedynamics/bda.plone.cart.git
bda.plone.shipping = git https://github.com/bluedynamics/bda.plone.shipping.git
bda.plone.orders = git https://github.com/bluedynamics/bda.plone.orders.git
bda.plone.checkout = git https://github.com/bluedynamics/bda.plone.checkout.git
bda.plone.payment = git https://github.com/bluedynamics/bda.plone.payment.git

Does i need more?

Someone idea?

re-order funcitonality

Example user story:
As a customer I want to be able to place a new order the same as (or similar to) a previous order I have made.

  • Has anyone else got a use case for this kind of functionality?
  • Would it be 'better' to be able to (a) re-order an identical order to a previous order, or (b) add items from a previous order to the cart so you can then add / remove items before placing the order? My initial feeling is that (b) is much better but I'm not sure if there are any potential draw backs or if they're mutually exclusive.
  • Would anyone be able to point us in the right direction to programatically add items to the cart?

userdata.py not working with plone.app.users 1.2

Hi,
I'm just wondering if userdata.py should still support plone.app.users 1.2 along with 2.0.1. Code has been changed to:
from plone.app.users.browser.userdatapanel import UserDataPanel

from
from plone.app.users.browser.personalpreferences import UserDataPanel

I wanted to check if there was a deliberate reasoning behind this and if it should support both versions? (plone app.users is still current with Plone4.3)

Cheers

@@bookings view optimizations

Optimizations for the bookings view:

  • Listed articles should be linked with the articles itself.
  • Defined (or optimized) sorting for bookings list.
  • Sorting options for article, order date, e-mail, name.
  • Show email in group view (when grouped for article)
  • Scale for whole page width (remove portlet columns for that)
  • Allow sending of emails like in @@orders view.

Plone 5 support

Now that Plone 5 is (almost) out of the door, it would be great to have support for it.

What exactly needs to be done, are there any serious issues expected with the upgrade?

forgotten cart reminder

allow to inform a potential customer about cart/cartitems that weren't bought.
for example send a reminder email and offer some discout

Filter Optimizations for @@orders and @@bookings

The filters on @@orders and @@bookings should be optimized:

  • Useful sorting for select options (currently: random sorting)
  • User selection as "Lastname, Firstname (Username) - Email" instead "Username (Firstname, Lastname)"
  • Use cached vocabulary for user lookup
  • Additional Filter for status of booking or order.
  • Additional "Sallaried" filter.

Shop settings can't be saved - available shippings missing

Changes in Plone/@@shop_controlpanel can't be saved because the widget for shipping and payment methods seems to be broken.

The vocabularies (AvailableShippingMethodsVocabulary and ShippingMethodsVocabulary) both work fine, but the widget for IShopShippingSettings.available_shipping_methods seems to be broken.
It does not display any selectable items.

shipping

Running Plone 4.3.6

Implement free items per order

We have a custom project with the usecase that a customer can order n items for free per order. Item price takes place as of count n + 1 in cart.

I was thinking about the following implementation:

  • Introduce IFreeItemAmountPerOrder interface in bda.plone.shop and implement it as dedicated DX behavior respective AT schema extender.
  • Display information in buyable viewlet.
  • Consider setting in CartDataProvider.cart_items
  • Since free item amount per order is no discount in classical means I think it's OK that free items not shows up as discount in UI

Any objections or ideas before I start?

Orders page does not open order

Clicking on an order in the order page , in particular on the leftmost icon in a row after the checkbox, has no effect. Should it open the order detail page?

base urls on the inavigationroot instead of context

clicking the cart link in the portlet on /plone/buyable-item should take users to
/plone/@@cart instead of /plone/buyable-item/@@cart

the checkout link when viewing the cart should take users to /plone/@@checkout instead of
/plone/buyable-item/@@checkout
(bda.plone.cart)

this is especially important for the link to the terms before finishing the checkout.
currently we're relying on acquisition here.
(bda.plone.checkout)

the same should be done for the links in the admin portlet
/plone/some-content-in/some-folder/@@orders and @@exportorders
(bda.plone.shop)

is there any reason for invoking these views on the current context instead of an inavigationroot?

Incorrect total price of items in cart

The total price of items in cart is incorrect while using 21% of VAT.
The image bellow shows an example of the issue (77.99€ instead of 78€) in a fresh Plone installation.

Example:
jnx8rpb

The net price used for the above items was:

  • "CJPpas": 6,611€
  • "6 t/m 17 jaar": 1,652€
  • "Volvassenen": 10,33€

Any ideas what is causing this problem?

Cart is not cleaned at the end of the session

After adding some products to the cart, if you log out and log in again with a different user you will see the cart still containing the previous items. Looks like the cart cookie is not removed at logout.

Allow admins to cancel and reorder bookings

A shop admin should be able to cancel a booking on request of the customer and reorder it in their name. The process is like following:

  1. Admin cancels a individual booking or order.
  2. A notification email regarding the cancellation is sent to customer and admin. (available items have to be increased again with the number of canceled items)
  3. Admin reorders a item in the name of the customer.
  4. A notification email regarding the order is sent to customer and admin.

This was part of #69 but now in it's own ticket.

Not sure, if a whole order should be canceled instead of an individual booking.

Any comments?

/cc @rnixx @pcdummy @frisi

Separate email templates/addresses based on payment method

This is a user story for a feature/enhancement request from one of the b.p.shop merchants we work with.

As a merchant I would like to be able to select different email addresses and templates for automated emails to be sent to, based on payment method.

Example:
Credit card payment method:

  • 'Template A' email is sent to 'Customer' and 'Admin A' email addresses
  • 'Template C [packing slip]' email is sent to distributer for immediate dispatch.

Invoice payment method:

  • 'Template A' Email is sent to 'Customer' and 'Admin B' email addresses. Payment is verified before order is dispatched.

I had also wondered if this could be extended to automated email triggers being available when payment and order states are changed. This may be an over complication however.

It would also be good for uses to be able to add 'CC' and 'BCC' recipents to admin email address(es).
The example above is based on the current method that we have hacked together to work for the immediate demand, however I think it would be a nice feature to implement properly! It would be good to collect other needs/use cases for this beforehand however...

make country_id translation fail tolerant

client doesn't want a country dropdown

shall we just add try/except?

    def country(self, country_id):
        try:
            return get_pycountry_name(country_id)
        except:
            return country_id

Users lookup broken

with bda.plone.shop (and bda.plone.productshop) on Plone 4.3, the user lookup is broken. Instead of the username something like this is displayed: <object object at 0x7fd704e09580>

Example for documentByLine:

screen shot 2016-05-04 at 11 39 03

Discounting functionality proposal

bda.plone.shop should provide advanced discounting funcionality in order to be competitive. Here's a collection of requirements along with proposals how this could be implemented

  • Define price absolute (in currency) or relative to the canonical one (in %)
  • Define a price for a user
  • Define a price for a group
  • Define these prices for a specific date range (expiration date would not work here, should be defined for each price)

Following cascading rules seem useful to me:

  • Base price is the canonical one (set in shop tab on buyable item)
  • Special price overrules canonical one (if set relative [in %], it gets calculated from canonical price)
  • If more than one general special price found (i.e if validity period overlaps), first one found applies
  • Special prices defined for groups are overrule a generic special price
  • Special prices defined for users overrule a generic special price and special prices defined for groups
  • Maybe we want to handle special prices accumulated if relative to the canonical price (i.e. special customer gets 8 % discount)

The UI implementation should be as follows:

Any suggestions?

Regards

-R

Allow shop admin portlet entries to be easily included in header bar

The shop admin portlet entries should be allowed to provided in a header bar as dropdown.
I see following options:

  • Moving the portlet's contents via Diazo into a reserved space in the theme (ugly)
  • Using a viewlet manager to provide the entries (better)
  • Reimplementing it as portal_action entries (maybe best?)

Creating product causes infinite recursion error on bda adapted_context behaviours

Hi,

I have installed bda.plone.shop / bda.plone.productshop as per the virtualenv method outlined in the development & testing instructions provided. All tests pass when running bin/tests -s bda

When attempting to create a product (or a variant within a product group) I get a recursion error with "Module plone.behavior.factory, line 19, in call" as per traceback below.

After adding some instrumentation, it seems to be a problem with the adapted_context for these fields with the behaviours:

field item_net bda.plone.shop.dx.IBuyableBehavior
field item_vat bda.plone.shop.dx.IBuyableBehavior
field item_display_gross bda.plone.shop.dx.IBuyableBehavior
field item_comment_enabled bda.plone.shop.dx.IBuyableBehavior
field item_comment_required bda.plone.shop.dx.IBuyableBehavior
field item_quantity_unit bda.plone.shop.dx.IBuyableBehavior
field item_quantity_unit_float bda.plone.shop.dx.IBuyableBehavior
field item_available bda.plone.shop.dx.IBuyableBehavior
field item_available bda.plone.shop.dx.IStockBehavior
field item_overbook bda.plone.shop.dx.IStockBehavior
field shipping_item_weight bda.plone.shop.dx.IShippingBehavior

I would really appreciate it if anyone could point me in the right direction to resolve this. It looks like a well constructed and comprehensive product!

Cheers.

Traceback: http://pastie.org/8747249
Installed Products: http://pastie.org/8747287

block pricing - scaled pricing

discount or specific prices based on the amount of ordered items

1-5 items: - 5% or price
10-20 items: - 10% or price

two buyables with "comment required", only one addable

regarding bda.plone.ticketshop - if you have two tickets with the setting "comment required", where a comment must be filled in (e.g. to name the participants), only the first one can be added. the second ticket cannot be added to the cart, even with a comment given (but no comment in the first ticket viewlet). the status notification appears "Zusatzangabe ist erforderlich"

See:
http://altach.web12.zoplo.com/kultur-freizeit-sport/events/testbuchung-01

You have to be logged-in in order to see the problem.

@jensens can you confirm, this isse also appears on altach.at old?

Unable to export orders if selected language is different from user language

When I try to export some orders, if the user default language is different from the chosen site language, the date in the the "to date" inputbox is not recognized and an error is issued. In particular, I've selected english but the user default language is italian: the date picker writes "12/31/2014" in the inputbox, but it is expected 31/12/2014. More, the language for the datepicker is german.

Error: Couldn't find a distribution for 'bda.plone.shop'.

Hello,

I can't install bda.plone.shop in Plone 4.1.6.

After add bda.plone.shop to eggs section of the instance:

$ bin/buildout -Nv
...
We have no distributions for bda.plone.shop that satisfies 'bda.plone.shop'.
Couldn't find index page for 'bda.plone.shop' (maybe misspelled?)
Getting distribution for 'bda.plone.shop'.
While:
Installing instance.
Getting distribution for 'bda.plone.shop'.
Error: Couldn't find a distribution for 'bda.plone.shop'.

Is this normal? Can I install bda.plone.shop in Plone 4.1.6?

Thanks!

Manuel

Cart lists shipping costs although summary_total_only is set to False

If I set IShopCartSettings.summary_total_only I'd expect the cart-portlet and the @@cart view to only show the total.
Currently, if you set free_shipping_limit and flat_shipping_cost to 0, the shipping costs are still listed.

If we set summary_total_only to False net and included vat is listed, as well as shipping costs
portlet:
cart-portlet-without
cart:
cart-not-only-summary

If we set summary_total_only to True the net and included vat is not listed, but the shipping costs are still listed:
portlet:
cart-only-summary1
cart:
cart-portlet-with

Allow multiple user defined fields

Shop admins should be able to define custom fields for the ordering/checkout process of a article.
When ordering an article, customers should/have to fill out the optional/required fields.

  • Allow any number of user defined fields.
  • Allow definition of required/optional fields.
  • Allow definition of the value's data type, show a matching widget and validate for values (text, email, integer, float, date, selection lists, boolean).
  • Include all user defined fields of an article in the export.
  • Allow definition of these fields per article or folder (when on folder level, all article inherit from it).

Currently we have one custom extra field (cart_item_comment in bda.plone.cart.init.py). We might need an extra attribute (list of dicts) and a datagridfield with a spec like this: [field_name][label][datatype][required].

discount shows same price (decimal rounding issues)

in our shop we need to show gross prices. (in case items are sold do companies, vat depends on the companies country)

for a price of EUR 30, i need to calculate the net price first

30/1,1 = 27,27

giving the price with just 27,27 seems sufficient, but results showing the same price for the discounted price (see attachment)

workaround: provide more decimal points: 27,27272727272727272727

possible solution:

add a method to buyable and use it in the page template to decide whether to show the discounted price:

def showDiscount(self):
    #compare item_net_original and item_net rounded to 2 decimal points
    ...

maybe it also makes sense to allow to provide prices as gross prices?

custom order process

Hi all from bda,

i need to build a custom shop solution which is highly customized. The only thing for us to be reused would be shopping cart behavior (IBuyableBehavior), and don't want to include all those dependencies from bda.plone.orders.

Can we exclude them from dependencies and add them as an optional addon including required adapters/views/... using zcml:condition? That would make bda.plone.shop the best base to start from.

Most expected interfaces should be optional

Currently it's necessary to implement most shop related functionality providing interfaces in order to make things work. In future, things should be more flexible, like so:

Mandatory for buyables:

  • bda.plone.cart.interfaces.ICartItemDataProvider

Optional for buyables:

  • bda.plone.cart.interfaces.ICartItemStock
  • bda.plone.shipping.interfaces.IShippingItem
  • bda.plone.orders.interfaces.ITrading
  • bda.plone.shop.interfaces.IBuyablePeriod

Optional on any content:

  • bda.plone.orders.interfaces.IItemNotificationText
  • bda.plone.orders.interfaces.IGlobalNotificationText

Multiple tax rates

This is a user story for a feature/enhancement request from one of the b.p.shop merchants we work with.

As a merchant I want to allow for different tax rates within the one shop/site for existing/repeat customers.

They indicated that their preferred solution would be the separate tax rates to be group based and work in a similar way to discounting.

Example use case:
Their customers consist of an established network of dealers and they want to be able to base the differential tax treatment on the geographical location of these dealers:

  • Group 1 – UK resident dealers: always attract 20% local VAT
  • Group 2 – EU resident dealers who have provided their VAT equivalent number: always attract 0% VAT
  • Group 3 – EU resident dealers who have not given us a number: always attract 20% VAT

Does anyone else have a use case for this feature? Any input/thoughts are appreciated.

We have also had some talk regarding adding support for muli-currency support within the one site, however I suspect that is deserving of a separate issue/discussion.

After starting a shop transaction the cart is emptied

When you start a online transaction in order to complete the buying process the cart is emptied even if the transaction is aborted and there is no payment issue.
Suppose a user accepts terms and conditions and then starts a transaction.
He then puts a wrong number in the credit card online system and the transaction fails. When he comes back to the cart, it is empty. How can he retrieve his items?

Error when exporting orders

I tried to export some orders and just filled up the "to date" inputbox and pressed "export". It showed up the error:

Traceback (innermost last):
Module ZPublisher.Publish, line 138, in publish
Module ZPublisher.mapply, line 77, in mapply
Module ZPublisher.Publish, line 48, in call_object
Module bda.plone.orders.browser.views, line 1035, in call
Module yafowil.controller, line 18, in init
Module yafowil.base, line 380, in extract
yafowil widget processing info:
- path : exportorders
- blueprints: ['form']
- task : extract
- descr : failed at 'form'
Module yafowil.compound, line 26, in compound_extractor
Module yafowil.compound, line 31, in compound_extractor
Module yafowil.base, line 380, in extract
yafowil widget processing info:
- path : exportorders.to
- blueprints: ['td', 'field', 'plonelabel', 'error', '*from_before_to', 'datetime']
- task : extract
- descr : failed at 'from_before_to'
Module bda.plone.orders.browser.views, line 1056, in from_before_to
TypeError: can't compare datetime.datetime to str

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.