Giter Club home page Giter Club logo

coreshop's Issues

Install-Error with PDO Adapter

https://github.com/dpfaffenbauer/pimcore-coreshop/blob/87afdae70c6fc42dd163f9a287042df21c759064/lib/CoreShop/Plugin/Install.php#L39

While installing, pimcore throws an error when mysql adapter is not preselected. We need to do fetch the adapter dynamically, like so:

$db = \Pimcore\Resource::get();

if($db->getResource() instanceof \Zend_Db_Adapter_Mysqli) {

   return $mysqli->multi_query($sql);

} else if ($db->getResource() instanceof \Zend_Db_Adapter_Pdo_Mysql) {

   return $db->getConnection()->exec($sql);

}

Cart Bug

Somehow, a large amount of carts is being created. Please check how to fix that.

Monitoring

Show some information about useless Data (eg. Category or Product)

  • Show List of categories without products
  • Show list with disabled products
  • show list of products without quantity and DisableOutOfStock

Fatal Error when saving a new carrier

While creating a new carrier, pimcore will throw an error:

Fatal error: Call to a member function getRanges() on a non-object in /plugins/CoreShop/controllers/Admin/CarrierController.php on line 134

Orders-View

Add a Custom-Made-View to search and mange orders more easily.

sql install query type missing in zoneId

when installing coreshop, pimcore will throw an install error:

change

DROP TABLE IF EXISTS `coreshop_countries`;
CREATE TABLE `coreshop_countries` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `isoCode` varchar(2) NULL,
  `active` tinyint(1) DEFAULT 0,
  `currencyId` int,
  `zoneId`,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

to

DROP TABLE IF EXISTS `coreshop_countries`;
CREATE TABLE `coreshop_countries` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `isoCode` varchar(2) NULL,
  `active` tinyint(1) DEFAULT 0,
  `currencyId` int,
  `zoneId` int,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

base country / location

allow user to set a base country in settings.

  • use it for the default fallback in getCountry();
  • add a hook in getCountry(); when no country is initial defined ( if (!$country instanceof Country)), so a website could override the user country, based on his own geo2ip service or country concept.

Admin Order

Allow Admin to Create orders for existing Order/Cart or for Products.

Features:

  • Select Carrier
  • Select Payment Provider
  • Select PriceRule
  • Select Currency
  • Select Language
  • Select Address
  • Select OrderState

Shipping

Finish Module to create Carriers with different Price Calculations

Shipping Settings

Settings:

  • Free Shipping starts at โ‚ฌ or kg
  • Default Carrier
    • Best Price, Best Grade or Specific Carrier
    • Sort By Price or Grade

specific price improvements

the specific price per product is a great thing. maybe we can add some improvments:

add specific price tab to edit window next to the "price" tab

bildschirmfoto 2016-01-30 um 11 14 21

#### remove old "specific price" in "price" tab

bildschirmfoto 2016-01-30 um 11 11 36

#### add zones to conditions

let user add zones, which will check the containing countries
bildschirmfoto 2016-01-30 um 11 12 07

add price to action

let user add a price, which will override the default price
bildschirmfoto 2016-01-30 um 11 11 54

Stock Management

Add some basic stuff to keep track of in- and outgoing warehouse movements and change the available quantity of a product.

Reports

  • Available Quantites
  • Best Categories
  • Best Customer
  • Best-Selling Product
  • Carrier Distribution
  • Payment Distribution
  • Catalog Statistics (Products Available, Average Price, Products Bought, ...)
  • Customer accounts (Chart of registration)
  • Registered Customer info (Gender, Countries, Currencies, Age, Language)
  • Sales and Orders (Orders, Products, Amount)

Invalidate Cache on references

The Problem is that all models in CoreShop are being cached. But the problem is: when the currency gets changed, the Currency in Country is still the old value because of the Countries cached item.

Pimcore 4: GeoIP is deprecated

https://github.com/dpfaffenbauer/pimcore-coreshop/blob/54803c73ffb59ba1679d547a211f015cdda4e19f/lib/CoreShop/Tool.php#L162

in pimcore 4, geoip is deprecated. use geoip2 instead:

//@fixme: install GeoLite2-Country.mmdb in install process.

if(file_exists(CORESHOP_CONFIGURATION_PATH . "/GeoLite2-Country.mmdb")) {

    $reader = new Reader(CORESHOP_CONFIGURATION_PATH . "/GeoLite2-Country.mmdb");

    $country = null;

    try {

        $country = $reader->country(\Pimcore\Tool::getClientIp());

    } catch(\Exception $ex) {

    }

    $country = Country::getByIsoCode($country);
}

Catalogmode

Implement a Catalog Mode where no cart is available.

Updatability

Create some sort of behaviour for plugin updates and installing CoreShop Plugins.

Mulitshop

Allow use of Pimcore Sites to make multiple Shops, with different Data, within one Pimcore instance

Messaging

Allow Customers to Create Messages.

Features:
- Allow Admin to respond to messages
- Conversation Overview.
- Connect Message to Order

Guest Customer

Allow Guests to make orders.

Features:
Allow Guest to create Account.
Allow Admin to create Account from Guest User

clean up core js file

the shop.js should be cleaned up and should only provides the core features with custom events triggering.

all default template stuff (like form validation etc) should be inside a template.js, so the user can decide to use it or not.

for an example:

  • put shop.js into a class
  • only add request events
  • trigger custom events within nice namespaces
initEvents : function() {

      $('.btn-cart').on('click', this.addToCart );

},

addToCart : function( ev ) {

        $.ajax({
            url : '/de/cart/add',
            data : {product : $(this).data('product-id')},
            dataType: 'json',
            success : function(result,status) {
                if( status == 'success' )

                  if(result.success)  {

                    this.updateCart(result.cart);
                    $( document ).trigger( 'coreShop.cart.added.success', [ result ] );

                   } else {

                    $( document ).trigger( 'coreShop.cart.added.error', [ result ] );

                    }

            }

        });

}

so user can use all events in a custom environment like so:

$( document ).on( 'coreShop.cart.added', function( event, result ) {

       console.log( result ); // "result from response"

});

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.