Showing ideas with status Investigating.
Show all ideas
Status:
Investigating
Submitted on
08-30-2016
01:10 PM
Submitted by
apiuser
on
08-30-2016
01:10 PM
Feature request from CRYX2, posted on GitHub Sep 16, 2015
Hello, I've not found any options to use multiple selection (for the same attribute) for layered navigation. In Magento 1 this options was very frustrating, now is implemented?
... View more
Status:
Investigating
Submitted on
08-30-2016
12:31 PM
Submitted by
apiuser
on
08-30-2016
12:31 PM
Feature request from erikhansen, posted on GitHub Jan 07, 2016
This issue covers what I consider to be two major usability issues with messages:
1. Error message hides after 5 seconds
When error messages are displayed on the frontend, they disappear after 5 seconds (this is controlled by the onHiddenChange method in app/code/Magento/Ui/view/frontend/web/js/view/messages.js ). If a user is not paying attention, if they are a slow reader, or if the error message is long, they message may disappear before they read the entire message. My recommendation would be to NOT hide the message but to leave it on the page until the user takes some other action that causes the message to be hidden.
Here is an example of an error message that will hide after 5 seconds:
@mttjohnson did some digging into what happens when there is an error with a payment method in the checkout process. It looks like the payment methods use the Magento_Ui/js/modal/alert component to display an alert-style modal that doesn't go away until the user closes it. The red error message I displayed above occurs when there is an exception thrown by Magento when progressing from Shipping > Billing, so it may not warrant an alert style popup, but it should at least persist on the page and not hide. This is what the alert-style popup looks like:
2. Error messages may display outside of current viewport
If a user is a on a small screen device, there are many situations where they will never see an error message. For example, if they're on the "Shipping" step of the checkout process and an error message is added, they may not see the error message get added to the top of the page. My suggestion would be to either smooth scroll the user up to the error message, display the error message next to the button they used to submit, or come up with a notification system that display notifications on top of all content.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:37 PM
Submitted by
apiuser
on
08-30-2016
12:37 PM
Feature request from tanya-soroka, posted on GitHub Jan 17, 2014
Multi-node inventory
Multi-node inventory functionality will introduce support for multiple warehouses, management of product stock per website and warehouse, order processing through drop shippers and vendors. It will allow set up of multiple shipping origins, flexible shipping configurations, and automatic vendor notifications.
Functional Requirements
Ability to enable/disable shipping from multiple addresses (either you’re your business address or from 3rd party warehouses and suppliers)
Ability to specify the addresses of these warehouses/suppliers
Ability to assign products to different warehouses/suppliers
Ability to manage stocks in different warehouses
Ability to specify preferences for picking up products from warehouses
Ability to automatically define nearest warehouse to customer's destination
Ability to notify warehouse/supplier upon order and/or invoice creation
Ability to create/update email templates to be sent to warehouses/suppliers
Ability to see products assigned to selected warehouse
Ability to see shipments from selected warehouse
Inventory per Website
Provides ability to:
Set up a QTY attributes per website
Specify different inventory levels for each website
Track inventory level for each website
Track low stock for each website
Get a total QTY of the product
This feature entails the following changes:
General settings of inventory Scope should be available under Configuration > Catalog > Inventory Section
Additional rows on Product QTY of Product Grid (for products which are using inventory option)
Updates of Low Stock report
Warehouse Settings
It should be possible to enable and set up Multi-node inventory functionality. As a merchant, I want to have the following options:
Enable/Disable service
Show warehouse information on product page, shopping cart, checkout process, order/invoice/shipment/refund
Select any enabled Shipping service/method per warehouse
Manage Warehouses
The Manage Warehouses tab should appear under System > Store set upon a primary menu. It should contain the following action:
Create / Edit / Delete a new Warehouse.
Filter and search data of Warehouse list.
Provide general information about a warehouse: title and address.
Mass action, such as delete and update.
Admin user should have ability to specify the following warehouse data:
Warehouse contact information and Address
List of assigned Products
Shipping methods data
Sales data (Shipment, Orders, etc.)
Managing Inventory per Product
Alternatively, admin user should be able to specify warehouse/supplier data on the Product Information page and manage inventory per each warehouse individually.
The QTY field of the Inventory section (i.e. general quantity of a product) should display the sum of the numbers entered to the QTY fields per warehouses. It be set for read-only purposes.
Shipping / Delivery Configuration
Store owner should be able to select a shipping method from existing list of vendors (USPS, USP, DHL, FedEx, etc.). Additionally, one can set up a custom shipping method (Drop-shipping) per warehouse. Configuration settings, delivery fee, and delivery time are required on global/warehouse level.
Admin user should have ability to specify ship/delivery option for products from warehouse(s):
Shipping from a nearest warehouse (closest to customer's area)
** When a product that is assigned to multiple warehouses is added to the cart, the nearest warehouse is selected for delivery. Otherwise, product should be delivered from next nearest warehouse where it is available
Shipping from a warehouses with the highest priority
** When a product that is assigned to multiple warehouses is added to the cart, the warehouse with highest priority is selected for delivery. Other warehouses are selected according to the specified priority.
Checkout
Once multi-inventory functionality is enabled, the following delivery scenario should apply:
When ordered product is assigned to a warehouse, the address of a warehouse is considered as a pick-up address for the shipping service provider. Shipping rate to be calculated accordingly.
When ordered product is not assigned to a warehouse, the store address is considered as a pick-up address for the shipping service provider. The shipping rate is to be calculated accordingly.
When ordered products are assigned to multiple warehouses, multiple orders are created. Address of appropriate warehouse is considered as pick-up address for shipping service provider to each of the orders. The shipping rate is to be calculated accordingly for each created order.
Returning Items Assigned to Different Warehouses
Store address to be the return address for products. If Automatically Return Credit Memo Item to Stock feature is enabled, the returned items should affect the general quantity of the product and appropriate Warehouse should be considered as place of their storage.
Displaying the Warehouse/Supplier Information on the Order Review Page in Backend
Order View page should display warehouse/supplier information for every ordered product. The same data should be also displayed on the Invoice, Credit Memo and Shipment pages.
Products should be displayed on separate rows in case these products will be delivered from multiple warehouses.
Notifying Warehouse/Supplier Upon Creation of an Order in Backend
Admin user should be able to manage their notifications. Notifications can be configured to be sent per warehouse when an order/invoice/refund is created.
Creating Email Template for a Warehouse/Supplier
By default, email to a warehouse/supplier should contain all product details (i.e. product name, product parameters, quantity of each item, tracking information, and shipping method details). However, admin user should be able to create their own templates. There it should be ability possible to specify email template that will be used for sending a notification (per warehouse or globally).
Tax Calculation
Depending on tax configuration and local tax laws, tax may be collected for products shipped from a warehouse location and should be included when an order is placed.
Reports
Warehouse data should be updated with reports about Sales and Products, like Orders, Shipment, Low Stock and etc.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:03 PM
Submitted by
apiuser
on
08-30-2016
12:03 PM
Feature request from gigadesign1, posted on GitHub Jan 09, 2016
Improvement suggestion.
I use a lot of configurable products in combination with tier prices.
The configuration of prices used to be in the configurable product in Magento1.
Now in Magento2 when I want to update the tier prices of my product, I have to edit every single simple product.
Since we have a product in 32 different colors and 3 sizes (so 96 simple products), this is not really user-friendly.
The default price can be configured by selecting a attribute in the configurable product.
It would be great if tier prices can be configured there too!
Or at least through mass-updates of attributes.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:35 PM
Submitted by
apiuser
on
08-30-2016
12:35 PM
Feature request from airbone42, posted on GitHub Jan 21, 2015
PHP 5.5 introduced a new password API natively to PHP. http://php.net/manual/en/book.password.php
As using BCRYPT for the default hashing algorithm it's not only more secure than the current implementaiton of md5 and sha256. But will even be automatically maintained with newer PHP versions and does not depend on any maintenance or upgrades by Magento.
So my suggestion is to replace the current hashing implementation in the Encryptor with using native password_hash and password_verify. Especially for an e-commerce system security should have a very high priority.
So rumors tell that Magento 2 will soon raise min. requirements to PHP 5.5, so that would be the best point to integrate this. Anyway if that min. version update might not come there's also a backward compatibility library available at https://github.com/ircmaxell/password_compat which could be used for PHP <5.5.
If Magento needs MD5 and SHA256 for b/c to Magento 1 hashes, I would suggest to move that into a separate module, so new Magento 2 shops without old data don't need to bother about this old hasing algorithms and the code coming with it. Even shops with older Magento 1 data could remove that b/c module after all customers have updated their password over time or by enforcing them after the first login. This reduces amount of code and complexity, buy having these Mage1 b/c modules and migrations optional.
Anyway, would Magento be interested in porting the Encryptor into that way? If it will get accepted I would definitely dig into this and try to create a PR to speed up development.
... View more
Status:
Investigating
Submitted on
08-30-2016
01:11 PM
Submitted by
apiuser
on
08-30-2016
01:11 PM
Feature request from hostep, posted on GitHub May 09, 2015
Hi
This is mostly based on Magento 1 experience, but it looks like not much has changed in Magento 2 currently (testing 0.74.0-beta8).
I'm not a VAT expert, I'm simply getting this from feedback we get from store owners who complain about how bad this is currently implemented in Magento 1. So with Magento 2, it would be a good idea to try to get this right from the start.
Here are some suggestions, please review them, maybe there are better solutions then the ones I'm suggesting ...
If you go through the checkout, you should get instant feedback when you enter a VAT number if it is valid or not, and not after you go through the whole purchase process and it is too late. With the instant feedback you can correct your VAT number before purchasing if you made a typo.
We have experienced a lot of issues with the VAT API service which is currently used in Magento (= VIES VAT number validation), it happens very regularly that the API service is down or times out. So you should think about some kind of way to handle this. Maybe there are alternative API services? Maybe you can do a first preliminary check using regular expressions before going to the API service to lower the load on the service? Maybe add a switch in the backend where store owners can choose what happens when the API service is down: allow the customer to proceed, or let them try again until the API service is back up?
Right now you aren't allowed to enter your country prefix in front of the VAT number, since it uses the country from your address. I believe you should clearly state this in a line of text or in a tooltip or something like that, so the customers know what to enter. Also: it makes a lot more sense to put the VAT number field after the country selector field, because it depends on that value (the same thing applies to the state/region field, but that's another issue).
If others have some opinions about these issues or have other suggestions, please leave a comment, so we can try to improve how Magento 2 handles the EU VAT number validation.
Credit where credit's due: most of these suggestions come from a commercial extension we used a few times in the past: https://www.geissweb.de/eu-vat-enhanced-magento-extension.html, but since the current implementation in Magento is pretty broken, we shouldn't depend on an extension to fix these bugs in Magento I believe?
... View more
Status:
Investigating
Submitted on
08-30-2016
12:31 PM
Submitted by
apiuser
on
08-30-2016
12:31 PM
Feature request from tadhgbowe, posted on GitHub Nov 30, 2015
I am creating a new Configurable product via the Admin Panel (based on color). My simple products (children) already exist via a product import. When I click on "Edit Configurations" it takes me down the path of creating new simple variations. I don't want to do this. I simply want to select the existing products.
Interestingly if I go ahead and generate some simple variations via the "Edit Configurations" after the product save I can see a new link "Add Products Manually" beside "Edit Configurations". That's what I want to see the first time around after I inform it that the new configurable product is based on color.
The "Edit Configurations" wizard needs to allow me to select existing products after I've told it what configurable attributes I'm working with e.g. color or size.
Is this a known issue?
Thanks
Tadhg
... View more
Status:
Investigating
Submitted on
08-30-2016
12:01 PM
Submitted by
apiuser
on
08-30-2016
12:01 PM
Feature request from webtekindo, posted on GitHub Feb 10, 2016
It should be nice to have an option in Admin to display price range for configurable products instead of only displaying the minimal price.
50$ - 90$ (minimal price) - (maximal price)
That range may be display on the product listing, and on the product page when no options selected yet
I beleive many companies have use cases on which they use the configurable product type, but price may vary a lot depending on the configurable options.
... View more
Status:
Investigating
Submitted on
08-25-2016
09:36 AM
Submitted by
apiuser
on
08-25-2016
09:36 AM
Feature request from hostep, posted on GitHub Aug 17, 2015
Hi guys
Why is the telephone number still required on a customer address?
We hear from our shop owners that a lot of customers refuse to enter something in there or just enter gibberish.
An ideal solution would be if you could add a configuration option in the backend similar to the Gender , Tax/Vat Number and Date of Birth fields.
So an option for showing the telephone number where you can choose between No , Optional or Required . What do you think?
I had to implement this today into a Magento CE 1.x store and it was kind of a terrible experience, changing stuff in the database, remove the hard coded validation of that field (which is still present btw: https://github.com/magento/magento2/blob/93312cae42824274722fe7a285d5ce8e40f177a1/app/code/Magento/Customer/Model/Address/AbstractAddress.php#L572), ...
Related to https://github.com/magento/magento2/issues/624
... View more
Status:
Investigating
Submitted on
08-30-2016
01:12 PM
Submitted by
apiuser
on
08-30-2016
01:12 PM
Feature request from paales, posted on GitHub Nov 17, 2014
In the light of the new Postgres 9.4 features: indexed JSONB, wouldn't it be awesome if Magento supported it.
JSONB (brought into mainline in 9.4) -> Ideal replacement for flat tables, performance is on par (or better) than MongoDB.
Flexible full-text search (brought into mainline in 8.2) -> Ideal for a simple search when SOLR is too much
Multiple replication options to suit your environment and requirements
Uses multi-version concurrency control, so concurrent performance rocks
Fully ACID compliant (innodb is as well)
Well-documented
Strong access-control framework
Materialized Views
There are probably a 1000 more features that I can't think of, but I think you get the point. I understand Magento would like to support MySQL as well because it is more entry level and Magento has some abstract resource methods which should support other databases, but in practice Magento currently only supports MySQL. Better official support and feature integration would be awesome.
... View more
Status:
Investigating
Submitted on
08-30-2016
01:10 PM
Submitted by
apiuser
on
08-30-2016
01:10 PM
Feature request from cfcnn, posted on GitHub Oct 21, 2015
About produt images. When delete a product at the backend, the related product images are not deleted automatically, so that those useless images still occupy storage. Will Magento2 delete products and product images together?
If 3 images for each product, 500KB for each image, there are 1,000 deleted products, and the 3,000 images are not deleted together with products, they waste 1.4GB storage; If there are 10,000 items, that's 14GB... Magento users have to pay for that storage. And more and more time when backup or transfer website.
1,000 items × 3 images × 500 KB/image=1.4GB
10,000 items × 3 images × 500 KB/image=14GB
The default customer registeration verification of Magento is too simple, it's unable to reject robot registration, it's a problem for world magento users, a number of robot registration makes database very large. And they leave batch comments with ad links automatically by soft, or send spam ad emails to other people through " Email to Friend".
Could magento2 add a google verification ReCaptcha to identify human or robot? ( as follows)
... View more
Status:
Investigating
Submitted on
08-30-2016
01:11 PM
Submitted by
apiuser
on
08-30-2016
01:11 PM
Feature request from markoshust, posted on GitHub Jul 29, 2015
This doesn't exist in M1 but I believe it should be in M2. There are times when shipments are created by accident, or the customer calls to cancel their order. In those circumstances the shipment should be able to be deleted or canceled.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:28 PM
Submitted by
apiuser
on
08-30-2016
12:28 PM
Feature request from hostep, posted on GitHub Jun 26, 2016
Steps to reproduce
Install Magento 2.1.0 using composer but use the --no-dev flag
Look at the dev/ directory in the filesystem
Expected result
The dev/ directory should be empty or non-existing
Actual result
The dev/ directory exists and contains a bunch of development stuff
Discussion
In an effort to try to find the best options of deploying a Magento 2 installation to a production server, I keep discovering issues which aren't ideal.
As a best practise, we use composer install --no-dev --prefer-dist --optimize-autoloader on a production server when deploying. I would expect that no development dependencies gets installed because of this, but this is not true.
This isn't only about the /dev directory, but also for example about the lib/web/css/docs/ directory.
The last one for example causes the setup:static-content:deploy command to compile a less file which has absolutely no purpose of existing on a production server while it takes multiple seconds to compile this file, per locale, per theme.
In a very quick test, I discovered that when removing the above directories before executing setup:di:compile and setup:static-content:deploy makes those two run about 58 seconds faster (on my local machine) then without removing those directories.
Here is a list of files/directories which I believe shouldn't get deployed to a production server:
.htaccess.sample
.php_cs
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
COPYING.txt
Gruntfile.js.sample
ISSUE_TEMPLATE.md
LICENSE.txt
LICENSE_AFL.txt
nginx.conf.sample
package.json.sample
php.ini.sample
dev/
lib/web/css/docs/
phpserver/
...
(the license files, I'm not sure about)
I think most of these files are getting into place because of the mapping in the composer.json file of the magento2-base module.
It would be great if those mappings can get split of into a mapping for development purposes and one for all environments.
My suggestion would be to add a map-dev to the extra section in the composer.json similar as the normal map section and update the magento-composer-installer project to support this and only install the map-dev files when you run composer without the --no-dev flag.
This is all theoretically, I haven't tested this properly, but let me know what you think.
I know that in your deploy scripts, you can simply delete the files you don't want after composer install --no-dev has run, but I think it makes sense to automate this, because not everyone will notice these issues.
Slightly related issues:
https://github.com/magento/magento2/issues/4245
https://github.com/magento/magento2/issues/4162
https://github.com/magento/magento2/issues/2561
... View more
Status:
Investigating
Submitted on
08-30-2016
12:02 PM
Submitted by
apiuser
on
08-30-2016
12:02 PM
Feature request from MonteShaffer, posted on GitHub Jan 18, 2016
I am swimming around the code for magento-backend (within Model and App), trying to figure out how in the world I would hook into Magento2 authentication for creating my own Duo Two Factor Support.
isLoggedIn ??
Sentry Human Element developed one for the OLD CE 1.9
http://www.human-element.com/sentry-two-factor-authentication-documentation/
And if you look at their code, they are really using a library from the DUO website itself...
https://github.com/duosecurity/duo_php
Certainly other authenticators (like Google) could easily be introduced.
Of note, there needs to be some backend-manually recovery if the DUO fails.... some file in the folder structure with a force bypass.
e.g.,
bypass-duo = true;
So the admin tool would have a toggle (enable/disable DUO, just for backend), and if DUO is enabled in the system, but this text file is true, it would disable, allowing admins into the system.
An example of Wordpress plugin ...
https://wordpress.org/plugins/duo-wordpress/
This increases security tremendously.
Anyway, I believe this should be a core feature (as a system->configuration->option), so I am proposing this as a feature.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:01 PM
Submitted by
apiuser
on
08-30-2016
12:01 PM
Feature request from mage2pro, posted on GitHub Feb 04, 2016
https://mage2.pro/t/462
... View more
Status:
Investigating
Submitted on
08-30-2016
12:04 PM
Submitted by
apiuser
on
08-30-2016
12:04 PM
Feature request from ihor-sviziev, posted on GitHub Dec 13, 2013
In another content management systems we have price slider after shop installation.
Also should be great have ability use slider for other numeric attributes.
... View more
Status:
Investigating
Submitted on
08-30-2016
01:03 PM
Submitted by
apiuser
on
08-30-2016
01:03 PM
Feature request from sIiiS, posted on GitHub Sep 06, 2014
As you know, many languages use Unicode characters but magento do not support Unicode in URLs.
Please add this feature in Magento2 if possible for Products, Categories, CMS and etc
It is very useful and help to languages like Persian and Arabic for better SEO results
... View more
Status:
Investigating
Submitted on
08-30-2016
12:33 PM
Submitted by
apiuser
on
08-30-2016
12:33 PM
Feature request from aoldoni, posted on GitHub Jun 17, 2015
Hi All,
This is to discuss the scenario where cron tasks still run in Magento, even in maintenance mode.
As per the installation guidelines, you should always activate the Magento cron in the crontab ( http://devdocs.magento.com/guides/v1.0/config-guide/cli/config-cli-subcommands-cron.html ). This means adding the /bin/magento cron:run command to the crontab.
Suppose a situation where you are with Magento under maintenance mode for, let's say, 30 minutes with the intention to run a MySQL backup or run some heavy database data synchronisation script. After looking at the code, I noticed that the following entry points will fail to run as we are in maintenance mode (which is a good thing):
index.php
cron.php (public web entry point).
get.php
static.php
...also API connections would fail as they all go through the \Magento\Framework\App\Bootstrap::run() and the \Magento\Framework\App\Bootstrap::assertMaintenance() methods.
However, ./bin/magento cron:run would still run, as the cli cron entry point doesn't check for maintenance mode. Please note the following steps:
vagrant@mage2:/vagrant/data/magento2$ ./bin/magento maintenance:enable
Enabled maintenance mode
vagrant@mage2:/vagrant/data/magento2$ ./bin/magento cron:run
Ran jobs by schedule.
This means that, even in maintenance mode, the crontab could still be firing database operations, and, depending on the Magento cronjob scheduled to be executed (or new custom cronjobs that were created), it could potentially trigger other heavy database operations to run in parallel with the database maintenance operations already being executed.
So, if you really need to stop all operations in your application for a brief period of time (a maintenance window), you would (a) not only put Magento in maintenance mode, but would also need to (b) deactivate the cron.
My conclusion based on the above is that it would make sense for at least the ./bin/magento cron:run command to check for the maintenance flag as well. This would be safer, and possibly assure that during maintenance mode there's nothing happening in the application.
Can you guys please point out if you share this opinion?
Thanks.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:30 PM
Submitted by
apiuser
on
08-30-2016
12:30 PM
Feature request from Vinai, posted on GitHub Apr 21, 2016
Steps to reproduce
Create a class with a dependency on \Magento\Quote\Api\Data\CartInterface
Add a product to the cart
Execute the code within the same session
Expected result
The CartInterface instance represents the current quote
\Magento\Quote\Api\Data\CartInterface::getItems returns the items in the cart
Actual result
The injected CartInterface instance is empty.
To retrieve the current quote items \Magento\Checkout\Model\Session::getQuote() has to be used.
This is problematic since neither \Magento\Checkout\Model\Session nor \Magento\Quote\Model\Quote are blessed with the @api interface.
The alternative would be to use \Magento\Quote\Model\GuestCart\GuestCartRepository::get() or \Magento\Quote\Api\CartManagementInterface::getCartForCustomer , but for guests that would require having the masked cart id.
It is quite common for customizations to require access to the current cart contents. It would be nice if that could be handled with a simple dependency on CartInterface .
... View more
Status:
Investigating
Submitted on
08-30-2016
12:29 PM
Submitted by
apiuser
on
08-30-2016
12:29 PM
Feature request from leoquijano, posted on GitHub May 24, 2016
Hi,
I've been debugging some checkout issues. I noticed that several of them were fixed in Magento 2.0.7, so I went in to test our payment process using that version.
As I tested my integration with Autorize.NET DPM gateway, my checkout page froze in the "loading" stage. The order was successfully received and Authorize.NET debug log showed the information. However, something was happening after the response came back.
Sometimes I would get a window saying "Cannot place order". Sometimes it would just get stuck. However, at no point I would get more detailed information, as a developer, to what's going on.
I traced down the issue to the vendor/magento/module-authorizenet/Controller/Directpost/Payment/Place.php file (I'm using a Composer based install). The following method would be executed:
protected function placeCheckoutOrder()
{
$result = new DataObject();
$response = $this->getResponse();
try {
$this->cartManagement->placeOrder($this->_getCheckout()->getQuote()->getId());
$result->setData('success', true);
$this->eventManager->dispatch(
'checkout_directpost_placeOrder',
[
'result' => $result,
'action' => $this
]
);
} catch (\Exception $exception) {
$result->setData('error', true);
$result->setData('error_messages', __('Cannot place order.'));
}
if ($response instanceof Http) {
$response->representJson($this->jsonHelper->jsonEncode($result));
}
}
Since I got the error message 'Cannot place order' a couple of times, I entered some logging statements, and got this in my log:
2016-05-24T23:08:42+00:00 INFO (6): Error placing order: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '000000010-1' for key 'SALES_ORDER_INCREMENT_ID_STORE_ID', query was: INSERT INTO `sales_order` (`state`, `status`, `protect_code`, `shipping_description`, `is_virtual`, `store_id`, `customer_id`, `base_discount_amount`, `base_grand_total`, `base_shipping_amount`, `base_shipping_tax_amount`, `base_subtotal`, `base_tax_amount`, `base_to_global_rate`, `base_to_order_rate`, `discount_amount`, `grand_total`, `shipping_amount`, `shipping_tax_amount`, `store_to_base_rate`, `store_to_order_rate`, `subtotal`, `tax_amount`, `total_qty_ordered`, `customer_is_guest`, `customer_note_notify`, `customer_group_id`, `quote_id`, `base_shipping_discount_amount`, `base_total_due`, `shipping_discount_amount`, `subtotal_incl_tax`, `total_due`, `weight`, `increment_id`, `base_currency_code`, `customer_email`, `customer_firstname`, `customer_lastname`, `customer_middlename`, `global_currency_code`, `order_currency_code`, `remote_ip`, `shipping_method`, `store_currency_code`, `store_name`, `total_item_count`, `discount_tax_compensation_amount`, `base_discount_tax_compensation_amount`, `shipping_discount_tax_compensation_amount`, `base_shipping_discount_tax_compensation_amnt`, `discount_tax_compensation_invoiced`, `base_discount_tax_compensation_invoiced`, `discount_tax_compensation_refunded`, `base_discount_tax_compensation_refunded`, `shipping_incl_tax`, `base_shipping_incl_tax`, `gift_message_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
So it is clearly an inconsistent database state. I deleted the contents from the sales_order table and the checkout now works fine.
However, it would be a good idea to provide feedback for developers when an order placement fails. Something like this:
protected function placeCheckoutOrder()
{
$result = new DataObject();
$response = $this->getResponse();
try {
$this->cartManagement->placeOrder($this->_getCheckout()->getQuote()->getId());
$result->setData('success', true);
$this->eventManager->dispatch(
'checkout_directpost_placeOrder',
[
'result' => $result,
'action' => $this
]
);
} catch (\Exception $exception) {
$this->_logger->info("Error placing order: ".$exception->getMessage());
$result->setData('error', true);
$result->setData('error_messages', __('Cannot place order.'));
}
if ($response instanceof Http) {
$response->representJson($this->jsonHelper->jsonEncode($result));
}
}
... where $this->_logger is an appropriately configured logger (via DI). This would provide something to the developer to work with, and prevent exception swallowing.
... View more