GithubHelp home page GithubHelp logo

concretecms-community-store / community_store Goto Github PK

View Code? Open in Web Editor NEW
103.0 103.0 64.0 4.61 MB

An open, free and community developed eCommerce system for Concrete CMS

Home Page: https://concretecms-community-store.github.io/community_store/

License: MIT License

PHP 92.03% CSS 1.74% JavaScript 6.24%
concrete5 ecommerce

community_store's People

Contributors

appliculture avatar cahueya avatar calibal avatar danklassen avatar dependabot[bot] avatar difi68 avatar edbeeny avatar evgk avatar fudyartanto avatar heihachi avatar jeffpaetkau avatar jeronz avatar johnthefish avatar katalysis avatar krumholz avatar kurtkeunen avatar lennda avatar lota avatar macserv avatar mesuva avatar mkly avatar mlocati avatar mnakalay avatar pfwd avatar qodo avatar ramonleenders avatar remo avatar smansfield avatar thenorthman avatar tsilbermann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

community_store's Issues

Product, Product Link and Utility Links blocks need UI enhancements

All three blocks in the Store have acceptable add/edit forms, but these could do with some tidying.

Both the Product and Product Link blocks may benefit from some tabs, or at least two columns.
(I dislike long blocks that have to scroll to show options).

Some of the option labels could also be improved.

SQL exception on package install

The following error on unmodified install on 5.7.5.8:

An exception occurred while executing 'INSERT INTO CommunityStoreOrderStatuses (osHandle, osName, osInformSite, osInformCustomer, osIsStartingStatus) VALUES (?, ?, ?, ?, ?)' with params ["incomplete", "Awaiting Processing", 1, 0, 1]: SQLSTATE[HY000]: General error: 1364 Field 'osSortOrder' doesn't have a default value

Need better way to handle external (Paypal) placed orders

When Paypal is used, the order gets saved before leaving the site.
This leaves an order in the order list under 'incomplete'.
If someone goes back and forth between the site and paypal, lots of these orders can be created, making a mess.

There needs to be some flag on orders to mark them as 'awaiting completion' (or similar), so that they don't show up in the backend. I think this should be different from an order status.

Can't add a new tax

Whoops\Exception\ErrorException thrown with message "Class 'Concrete\Package\CommunityStore\Controller\SinglePage\Dashboard\Store\Settings\TaxClass' not found"

Stacktrace:
#0 in /C575/packages/community_store/controllers/single_page/dashboard/store/settings/tax.php:109

Overview and direction

(I've moved much of below to the roadmap section of the wiki - https://github.com/concrete5-community-store/community_store/wiki)

Here's a rough 'roadmap' as to where I think Community Store needs to go.
However, let me stress that this project is intended to be completely community driven, so it's really just a suggested list.

I think the goal should be to keep the 'core' of the store as lightweight as possible through the use of Event hooks and a well rounded API. If a feature is something that is less commonly found in online shops, it's perhaps best to be developed as a separate add-on (which can then be stored within this github organisation as well).

Right now the shop is quite stable, but there are some aspects that would benefit from more testing:

Immediate testing required

  • Real-world test of Paypal (hasn't been done for a while, this is now a separate add-on)
  • Digital Downloads may still have some permission issues
  • Setups that create new user accounts and add user groups would benefit from further testing.
  • Check management of order statuses/histories. Someone may be able to comment on whether this is the best way to manage these status
  • Shipping methods in general would benefit from validation testing

Priority development (not required to have a fully functioning shop but expected features)

  • Additional Order attributes - currently being worked
  • Layout of product, product list block add/edit interfaces, add tabs or at least two columns

Recently completed development

  • Disable shop option (Adding to cart and ordering enabled, Ordering disabled, Catalogue mode)
  • Sorting of product lists in dashboard
  • Save on product, return to current tab, same with settings page
  • Update product block to have google metadata (may need a sitewide currency config setting)
  • Convert Payment methods to Doctrine saving
  • Duplicate product button
  • Add shipping method to order emails
  • Add payment method to order emails
  • Ability for single shipping methods to return multiple options

Important complex development (future work based on feature requests and discussion)

  • Discount codes should be able to be directly entered on checkout screen
  • Data export CSVs - separate package?
  • Replace all manual SQL queries with doctrine equivalents - almost there?
  • Translations need updating
  • Related products panel/block
  • Check for any payment methods before deleting package (ask them to be deleted first)
  • Integration with - https://www.easypost.com/ ?
  • Product option set (pre configured options)
  • Product Filter (sidebar)
  • Develop SASS/LESS files for core shop output
  • Move cart to database, for recovering carts, perhaps both, needs discussion
  • Swap to using thumbnail from file manager for lists?
  • Associate logos with shipping methods (useful ?)
  • PSR-2 for all code

Product Preview

Would there be a way to preview the product before publishing? Just be nice to see what it looks like before is added.

Also be nice to have a URL once added, so I don't click back and forth.

Cart page could be better

The page version of the cart (at /cart) could look better in terms of spacing of the product list table.

All the code should be there - but I'm sure someone with better Bootstrap kung-fu that myself could make this look much better.

I'll point out that it does reflow responsively, which I think it great to have, but this also could be improved.

screen shot 2016-03-04 at 9 42 34 am

Error installing

Hi,
when installing on C5 5.7.5.6 using PHP 5.6.15 I get the following error:
An exception occurred while executing 'INSERT INTO CommunityStoreOrderStatuses (osHandle, osName, osInformSite, osInformCustomer) VALUES (?, ?, ?, ?)' with params ["incomplete", "Incomplete", 1, 0]: SQLSTATE[HY000]: General error: 1364 Field 'osIsStartingStatus' doesn't have a default value

Can't translate some strings

In the dashboard:
"flat rate" and "free shipping"
I think it's in here: src/CommunityStore/Utilities/Installer.php

In the community_product block:
_Search a product/ Search for a product / Find products associated with this page _

Issue: Product option Base Weight gets saved as Width

  1. Add an Option Group under a product
  2. Tick "Options have different prices, SKUs or stock levels"
  3. Under one of your option variations, click "more options"
  4. Enter a number for base weight
  5. Update Product
  6. Check back and you'll see the number wasn't saved under base weight, but appears in width instead

Taxes and discounts

If a discount is applied to a product, the taxes are still calculated from the original sales price, i guess this is wrong as the sales tax applies to the price after the discount is applied. In only few exceptions the taxes are applied to the original price ( Manufacturer or distributor vouchers where seller is reimbursed )

completeOrder of Order class requires session

The function that finalises the order after a successful transaction relies on the session to find details about the order to complete.

If the order either creates a new user, or someone is already logged in, this will not update all details on the user correctly when an external payment method is used (i.e. Paypal).

So this needs to be refactored so it can be triggered from any source and session info is not required.

Creating new product fails

Creating a new product on a fresh install fails
An exception occurred while executing 'INSERT INTO CommunityStoreProducts (cID, pName, pSKU, pDesc, pDetail, pPrice, pSalePrice, pFeatured, pQty, pQtyUnlim, pBackOrder, pNoQty, pTaxClass, pTaxable, pfID, pActive, pDateAdded, pShippable, pWidth, pHeight, pLength, pWeight, pNumberItems, pCreateUserAccount, pAutoCheckout, pExclusive, pVariations) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [null, "Product 1", "001", "

Some testing product that happens to be first</p>", "", "15", null, "0", 0, "1", 0, "0", null, "0", "0", "1", "2016-03-04 20:34:05", "0", "0", "0", "0", "0", "", 0, 0, false, 0]: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'pTaxClass' cannot be null

Can't add a discount

ReflectionException thrown with message "Class Concrete\Package\CommunityStore\Src\Communitystore\Discount\DiscountCode does not exist"

Stacktrace:
#25 ReflectionException in /C575/updates/concrete5.7.5.6/concrete/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php:72
#24 ReflectionClass:__construct in /C575/updates/concrete5.7.5.6/concrete/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php:72
#23 Doctrine\Common\Persistence\Mapping\RuntimeReflectionService:getClass in /C575/updates/concrete5.7.5.6/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php:888
#22 Doctrine\ORM\Mapping\ClassMetadataInfo:wakeupReflection in /C575/updates/concrete5.7.5.6/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:540
#21 Doctrine\ORM\Mapping\ClassMetadataFactory:wakeupReflection in /C575/updates/concrete5.7.5.6/concrete/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:214
#20 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory:getMetadataFor in /C575/updates/concrete5.7.5.6/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:265
#19 Doctrine\ORM\EntityManager:getClassMetadata in /C575/updates/concrete5.7.5.6/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php:2609
#18 Doctrine\ORM\UnitOfWork:createEntity in /C575/updates/concrete5.7.5.6/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/SimpleObjectHydrator.php:138
#17 Doctrine\ORM\Internal\Hydration\SimpleObjectHydrator:hydrateRowData in /C575/updates/concrete5.7.5.6/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/SimpleObjectHydrator.php:48
#16 Doctrine\ORM\Internal\Hydration\SimpleObjectHydrator:hydrateAllData in /C575/updates/concrete5.7.5.6/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php:140
#15 Doctrine\ORM\Internal\Hydration\AbstractHydrator:hydrateAll in /C575/updates/concrete5.7.5.6/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php:756
#14 Doctrine\ORM\Persisters\BasicEntityPersister:load in /C575/updates/concrete5.7.5.6/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:411
#13 Doctrine\ORM\EntityManager:find in /C575/packages/community_store/src/CommunityStore/Discount/DiscountRule.php:396
#12 Concrete\Package\CommunityStore\Src\Communitystore\Discount\DiscountRule:getByID in /C575/packages/community_store/src/CommunityStore/Discount/DiscountRuleList.php:61
#11 Concrete\Package\CommunityStore\Src\Communitystore\Discount\DiscountRuleList:getResult in /C575/updates/concrete5.7.5.6/concrete/src/Search/Pagination/Pagination.php:73
#10 Concrete\Core\Search\Pagination\Pagination:getCurrentPageResults in /C575/packages/community_store/controllers/single_page/dashboard/store/discounts.php:20
#9 Concrete\Package\CommunityStore\Controller\SinglePage\Dashboard\Store\Discounts:view in /C575/packages/community_store/controllers/single_page/dashboard/store/discounts.php:157
#8 Concrete\Package\CommunityStore\Controller\SinglePage\Dashboard\Store\Discounts:success in <#unknown>:0
#7 call_user_func_array in /C575/updates/concrete5.7.5.6/concrete/src/Controller/AbstractController.php:161
#6 Concrete\Core\Controller\AbstractController:runAction in /C575/updates/concrete5.7.5.6/concrete/src/Routing/DispatcherRouteCallback.php:205
#5 Concrete\Core\Routing\DispatcherRouteCallback:execute in /C575/updates/concrete5.7.5.6/concrete/src/Application/Application.php:437
#4 Concrete\Core\Application\Application:dispatch in /C575/updates/concrete5.7.5.6/concrete/bootstrap/start.php:306
#3 require in /C575/updates/concrete5.7.5.6/concrete/dispatcher.php:36
#2 require in /C575/concrete/bootstrap/configure.php:52
#1 require in /C575/concrete/dispatcher.php:18
#0 require in /C575/index.php:2

Install errors

php 5.6:
Whoops\Exception\ErrorException thrown with message "Call to a member function getPackageID() on null"

Stacktrace:
#0 in /public/packages/community_store/src/CommunityStore/Payment/Method.php:192

php 7:
Declaration of Concrete\Package\CommunityStore\Src\Attribute\Key\StoreOrderKey::load($akID) should be compatible with Concrete\Core\Attribute\Key\Key::load($akIdentifier, $loadBy = 'akID')

\Database::connection()->getEntityManager() deprecated

With 5.7.5.7 the way to fetch the doctrine entity manage, \Database::connection()->getEntityManager() has been deprecated.

I believe this needs to be replaced with:
ORM::entityManager();

(there is also $pkg->getEntityManager() for packages, but I don't think this is used on community store)

Typo in currency select option

I have been testing this using Stripe and GBP sterling as the currency. I got back an error regarding "Invalid currency". Looking in the this file community_store_stripe/src/CommunityStore/Payment/Methods/CommunityStoreStripe/CommunityStoreStripePaymentMethod.php on line 44 there is a very small typo:

'GPB' Should be 'GBP'

That fixes it.

Product Parent page has unnecessary block

When the package is installed and a the /products parent page is created, a composer block is added to the page and is visible when it shouldn't be. See attached.

This page isn't necessarily viewed/used, but it certainly could be.

I don't know how to programatically create this page but clear its blocks (or create it where this composer block isn't automatically added).

Line 64 of /src/CommunityStore/Utilities/Installer.php

screen shot 2016-03-05 at 10 10 30 am

Error installing

Just tried installing on a site with 5.7.5.6 get an error:

main(): Failed opening required '/home/webli/public_html/sub-domains/store/packages/community_store/vendor/autoload.php' (include_path='/home/webli/public_html/sub-domains/store/concrete/vendor:.:/usr/lib/php:/usr/local/lib/php')

Move to organisation on github

This is just a note to say that sometime in the near future I plan to move community_store and the two payment gateways I've uploaded over to the github organisation: https://github.com/concrete5-community-store

(If anyone has any objections to the name of this community, or a better suggestion, it would be good before we go any further)

When that happens, these repositories will be made public. I may do this fairly soon, most likely in the next week. I simply wanted to initially upload the packages to private repos to kick things off, until the initial commit had been tested and obvious bugs had been addressed.

When I do move these over, I do want to continue stressing in the notes that the store should be viewed as a resource for developers, rather than something intended for concrete5 novices - effectively a 'use at your own risk' statement.

When this move happens I expect that the github addresses will change, meaning that if you are tracking anything you will need to update accordingly.

The concrete5-community-store is also currently lacking any artwork/logos, so are the community_store packages. If anyone has a suggestion for these let me know.

I personally would like to see something quite simple, but with a theme that can be used to make a package identifiable as a community_store package. I can come up with something, but design isn't my strength!

Language Update & little code refactoring

Hi, i have made a complete german translation of the store and due to that some small refactoring on several items in the code. At the moment, these changes are located in my fork
So, if someone is interested in this, i can publish this.
But how can i pull this into the github ? It seems that i don't have write permission.

Product list block - custom sort ordering

I think this is missing. I have found my self looking for this a lot of times. The present filters for the Product List Block is totally OK. But I still miss the capability to be able to control the filter by sitemap position.

Group Store Customer is not added?

In the file /src/CommunityStore/Order/Order.php line 538
it commented:
//add user to Store Customers group

But actually it is not added:
I think it is probably because the following code on line 541:
$user->enterGroup($group);

but it should be the same as line 547:
$user->getUserObject()->enterGroup($g);

It is not very important but it would be helpful for debugging to see the users who purchased any orders.

Thank you

Paypal Transactions need testing

I've not had a chance to completely test the Paypal Standard payment method recently.
I'm not a big user of Paypal, so it would be great for someone who does use/need payment to give it a shot and report any issues.

Discounts on Tiered Pricing Based on Quantity

This is a feature suggestion.

On the product options, there should be a discount (or custom price) for various ranges of quantities.

For example:

Product Name

  • 1-5 ($50)
  • 6-20 ($45)
  • 21+ ($40)

So if a customer selects 5 as the quanity, the total would be $250.

V5.8 (beta 5) - Get error when i click on "product" page

I get this error when i click on "setting" or "products" and also same error when i try to "unistall" the package.

error

Also when i try to uninstall the package i get this error:
The class 'Concrete\Package\CommunityStore\Src\CommunityStore\Payment\Method' was not found in the chain configured namespaces Concrete\Core, Application\Src

When i add block and publish i get again same error:
The class 'Concrete\Package\CommunityStore\Src\CommunityStore\Tax\TaxRate' was not found in the chain configured namespaces Concrete\Core, Application\Src

Cart JS calls unnecessarily complex

When modal cart actions are performed the Javascript makes multiple server calls.

Separate requests to /getTotalItems and /getTotal could be combined easily.
Ultimately there should only be one server side call needed per cart action.

Authorize.net integration

For whatever reason(s), in the USA Authorize.net is probably the most common and popular merchant account gateway provider. As such, this is just a suggestion for getting this implemented into the Community Store project, ideally sooner than later. I think it will go a long way towards fast tracking this project and implementation. It's not something I can take on right now unfortunately, so if anyone else wants to have at it, please do.

When click on Modal popup - get woops error

When I click on the product picture to open the modal window I get the following window:

{"error":{"type":"Whoops\Exception\ErrorException","message":"Call to undefined method Concrete\Package
\CommunityStore\Src\CommunityStore\Product\Product::getOptionGroups()","file":"/var/www/clients
/client1/web15/web/packages/community_store/elements/product_modal.php","line":31,"trace":[{"file"
:"/var/www/clients/client1/web15/web/packages/community_store/elements/product_modal.php","line"
:31,"function":null,"class":null,"args":[]}]},"errors":["Call to undefined method Concrete\Package
\CommunityStore\Src\CommunityStore\Product\Product::getOptionGroups()"]}

I do not seem to be able to find the getOptionGroups() function anywhere in src!

(Or am I just stupid?)

Tax Amount wrong on checkout

when Tax Settings is set to "Yes, I will enter product prices INCLUSIVE of tax" the Tax is wrong on checkout.

bildschirmfoto 2016-04-07 um 15 05 53

19% included in 399,- should be 63,74 and not 33,53

Product Detail Page Option select not working

In the product detail page are two issues causing
a: the option select not working
b: the magnific Popup not working

There are wrong class names used in the script section.
Solution:
a: has to be var pdb = $(this).closest('.store-product-block'); instead of
_var pdb = $(this).closest('.store-product-detail-block');
_
b: has to be $('.store-product-thumb').magnificPopup({... instead of
$('.product-thumb').magnificPopup({...

I think it is not necessary to create a pull on that, could be fixed by the way.

Error in OrderItem.php when using Digital Downloads

When i'm using the digital downloads feature, i receive the following error during the checkout process:

Type error: Argument 1 passed to Concrete\Core\Permission\Access\Entity\UserEntity::getOrCreate() must be an instance of Concrete\Core\Support\Facade\UserInfoFactory, instance of Concrete\Core\User\UserInfo given, called in <path_to_my_c5_instance>/packages/community_store/src/CommunityStore/Order/OrderItem.php on line 280

I'm using C5 v5.7.5.6
Any ideas how to fix this ?

Can't add to cart (error 500)

Doctrine\ORM\ORMException thrown with message "The identifier pID is missing for a query of Concrete\Package\CommunityStore\Src\CommunityStore\Product\Product"

Stacktrace:
#12 Doctrine\ORM\ORMException in /C575/updates/concrete5.7.5.6/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/ORMException.php:259
#11 Doctrine\ORM\ORMException:missingIdentifierField in /C575/updates/concrete5.7.5.6/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:378
#10 Doctrine\ORM\EntityManager:find in /C575/packages/community_store/src/CommunityStore/Product/Product.php:259
#9 Concrete\Package\CommunityStore\Src\CommunityStore\Product\Product:getByID in /C575/packages/community_store/controllers/single_page/cart.php:99
#8 Concrete\Package\CommunityStore\Controller\SinglePage\Cart:add in <#unknown>:0
#7 call_user_func_array in /C575/updates/concrete5.7.5.6/concrete/src/Controller/AbstractController.php:161
#6 Concrete\Core\Controller\AbstractController:runAction in /C575/updates/concrete5.7.5.6/concrete/src/Routing/DispatcherRouteCallback.php:205
#5 Concrete\Core\Routing\DispatcherRouteCallback:execute in /C575/updates/concrete5.7.5.6/concrete/src/Application/Application.php:437
#4 Concrete\Core\Application\Application:dispatch in /C575/updates/concrete5.7.5.6/concrete/bootstrap/start.php:306
#3 require in /C575/updates/concrete5.7.5.6/concrete/dispatcher.php:36
#2 require in /C575/concrete/bootstrap/configure.php:52
#1 require in /C575/concrete/dispatcher.php:18
#0 require in /C575/index.php:2

Feature: Comments on client and admin side

It would be great to have the ability to add a comment to the order status in the admin (with timestamp like the status change) and also a the ability for the customer to let a comment about his order on checkout

What do you think ?

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.