Version 1.4.9.4
I've happen to come across this odd behaviur:
I changed under SYSTEM/SETTINGS/OPTION/
Download Order Status:
from 'Completed' to 'Pending'
Reason is because digital downloads could be allowed download when order is mark pending.
The bug i belive of confusion comes because I would have guess the code looked at status 'pending' or higher based on text description of option "Set the order status the customers order must reach before they are allowed to access their downloadable products.".
It's not this way, so if this option set to 'pending' the downloads will be only available on that status type not above, let's say when order was marked shipped or completed (multiple items).
Is there an easy fix for this or solution in the mix?
I've happen to come across this odd behaviur:
I changed under SYSTEM/SETTINGS/OPTION/
Download Order Status:
from 'Completed' to 'Pending'
Reason is because digital downloads could be allowed download when order is mark pending.
The bug i belive of confusion comes because I would have guess the code looked at status 'pending' or higher based on text description of option "Set the order status the customers order must reach before they are allowed to access their downloadable products.".
It's not this way, so if this option set to 'pending' the downloads will be only available on that status type not above, let's say when order was marked shipped or completed (multiple items).
Is there an easy fix for this or solution in the mix?
For digital downloads, set your "Order Status" to "Pending", set your "Download Order Status" to "Complete" and set your payment method's "Order Status Completed" (eg. in PayPal Standard) to "Complete". When the return from PayPal (or whichever payment gateway you're using) returns a "Completed" value, your customers can access their downloads.
Your problem occurs because your payment gateway is returning a "Completed" value which does not match the value you have set for your "Download Order Status". Make sure that the are set to the same value.
Giving your customers the ability to download your product before the payment is completed, allows them the opportunity to cancel the payment after getting their download.
Your problem occurs because your payment gateway is returning a "Completed" value which does not match the value you have set for your "Download Order Status". Make sure that the are set to the same value.
Giving your customers the ability to download your product before the payment is completed, allows them the opportunity to cancel the payment after getting their download.
Modules for OpenCart 2.3.0.2
Homepage Module [Free - since OpenCart 0.7.7]
Multistore Extensions
Store Manager Multi-Vendor/Multi-Store management tool
If you're not living on the edge ... you're taking up too much space!
Thank You Fido for the helpful answer. Now the problem maybe I'm not explaining. I agree with Daniel, it might not be a bug but possibly an issue to consider, being the reason I bring it to attention.
I understand how it works; I’ll try to explain differently the issue.
We mark orders pending on all payment types as we like to confirm funds availability and or process first. That being said the download is available as long as the option in question is set to 'Pending', that it's not a problem.
The problem is that once the staff manually changes a order to 'Completed' the download disappears (no longer available) for the client.
To counter Daniel's comment: "Wouldn’t it be of logical sense NOT remove the download from an order when the status is changed manually a higher value :: "Completed, Shipped, and Processed"?
Fido's comments make sense, now the issue is more of a status priority one. I also agree with Fido's on not allowing download until payment is completed, but in this case it's needed and low risk.
Thoughts?
I understand how it works; I’ll try to explain differently the issue.
We mark orders pending on all payment types as we like to confirm funds availability and or process first. That being said the download is available as long as the option in question is set to 'Pending', that it's not a problem.
The problem is that once the staff manually changes a order to 'Completed' the download disappears (no longer available) for the client.
To counter Daniel's comment: "Wouldn’t it be of logical sense NOT remove the download from an order when the status is changed manually a higher value :: "Completed, Shipped, and Processed"?
Fido's comments make sense, now the issue is more of a status priority one. I also agree with Fido's on not allowing download until payment is completed, but in this case it's needed and low risk.
Thoughts?
there should be one order status that all orders eventually become which is complete.
I'm not messing around implementing a sort order system for order statuses.
A digital download will be pending and then complete. I can not see any other situation. digital downloads do not need to be shipped and even if you allowed a digital download to be downloaded and sent a cd ou they you would allow the download to download while the status was set to shipped.
I'm not messing around implementing a sort order system for order statuses.
A digital download will be pending and then complete. I can not see any other situation. digital downloads do not need to be shipped and even if you allowed a digital download to be downloaded and sent a cd ou they you would allow the download to download while the status was set to shipped.
OpenCart®
Project Owner & Developer.
Daniel, You still haven't understood the point or needs.
Here's it goes again.
The cart option you included says this:
Download Order Status:
"Set the order status the customers order must reach before they are allowed to access their downloadable products."
IF the above option is set to "Pending" to meet the seller policy and needs, it works good with the minor problem that when the order get's updated to 'Completed' the download get's removed from their account.
IF that is not a BUG, what is it? Why remove the download from an order when it's completed? Doesn't make any sense.
A very simple solution and suggestion will be to allow multiple statuses download availabilities, this will patch the problem instead of changing it's intended functionality.
Download Order Status:
"Set the order statuses the customers order must reach before they are allowed to access their downloadable products."
Otherwise, the above option makes not sense in having as only a status of 'Complete' will make sense having.
An order can contain multiple products, some of them being digital but maybe not all. In this particular sample:
**We need to allow Downloads upon Pending, but mark orders 'completed' manually.***
One more time problem:: ""Download disapears from oders if the above option is set to 'Pending' and order is then changed to 'Completed'....
As a clarification, your not wasting time, your trying to understand user needs and why all the above makes sense.
I'm a developer myself and I will love to have the same type of critizizimg on my projects.
Fantastic work you do. Hope it makes sense now. It's an easy fix.
Here's it goes again.
The cart option you included says this:
Download Order Status:
"Set the order status the customers order must reach before they are allowed to access their downloadable products."
IF the above option is set to "Pending" to meet the seller policy and needs, it works good with the minor problem that when the order get's updated to 'Completed' the download get's removed from their account.
IF that is not a BUG, what is it? Why remove the download from an order when it's completed? Doesn't make any sense.
A very simple solution and suggestion will be to allow multiple statuses download availabilities, this will patch the problem instead of changing it's intended functionality.
Download Order Status:
"Set the order statuses the customers order must reach before they are allowed to access their downloadable products."
Otherwise, the above option makes not sense in having as only a status of 'Complete' will make sense having.
An order can contain multiple products, some of them being digital but maybe not all. In this particular sample:
**We need to allow Downloads upon Pending, but mark orders 'completed' manually.***
One more time problem:: ""Download disapears from oders if the above option is set to 'Pending' and order is then changed to 'Completed'....
As a clarification, your not wasting time, your trying to understand user needs and why all the above makes sense.
I'm a developer myself and I will love to have the same type of critizizimg on my projects.
Fantastic work you do. Hope it makes sense now. It's an easy fix.
I disagree with Daniel on this one.
This is a long time limitation that I plan on fixing.
The way it is now, you cannot sell both tangible and downloadable products from your store at the same time because they have different statuses.
If I sell ONLY digital products on my site, I would have my default status in the payment module as "Complete"
If I sell ONLY tangible products on my site, I still have to ship it. So I would set my default order status to "Processing", then after shipping it set it to "Shipped" or "Complete"
But if I sell both digital and tangible, I have to set my default payment module order status to "Processing" since complete wouldn't make sense for tangible items. Then I would have to set the "allowed download" status as "Processing". But then I can never change my digital order to "Completed" because it only supports a single status. So reporting is difficult since I can't filter on one order state. (Technically the report also needs to support multiple filter states)
There are 2 possible fixes...
Option One, update every single payment extension to have its own digital order status. That's not going to happen unless we properly move the order status to the extension controller instead of each individual payment.
Option Two, update the setting for download status to be a multiselect so that more than one state can be used for allowed download status. Then you can have downloads allowed for "Processing" AND "Completed". This is the fix I plan on making.
This is a long time limitation that I plan on fixing.
The way it is now, you cannot sell both tangible and downloadable products from your store at the same time because they have different statuses.
If I sell ONLY digital products on my site, I would have my default status in the payment module as "Complete"
If I sell ONLY tangible products on my site, I still have to ship it. So I would set my default order status to "Processing", then after shipping it set it to "Shipped" or "Complete"
But if I sell both digital and tangible, I have to set my default payment module order status to "Processing" since complete wouldn't make sense for tangible items. Then I would have to set the "allowed download" status as "Processing". But then I can never change my digital order to "Completed" because it only supports a single status. So reporting is difficult since I can't filter on one order state. (Technically the report also needs to support multiple filter states)
There are 2 possible fixes...
Option One, update every single payment extension to have its own digital order status. That's not going to happen unless we properly move the order status to the extension controller instead of each individual payment.
Option Two, update the setting for download status to be a multiselect so that more than one state can be used for allowed download status. Then you can have downloads allowed for "Processing" AND "Completed". This is the fix I plan on making.
Hi.
We have the same issue.
We have a physical product that also has downloads.
So when payment is complete it works.
We have a label manager that sets the order status to Shipped once product have been sent but this then makes the downloads disappear.
I think the problem is more of a conceptual one. That is to say the Order PAYMENT status is a separate thing to the ITEM delivery status.
As a workaround we have modified a bit of code in catalog/model/account/download.php
All the code that read:
AND o.order_status_id = '" . (int)$this->config->get('config_download_status') . "'
NOW READS
AND ( o.order_status_id = '" . (int)$this->config->get('config_download_status') . "' OR o.order_status_id = '3' )
Not a very elegant solution to hard code the status like this!
Regards
Paul
We have the same issue.
We have a physical product that also has downloads.
So when payment is complete it works.
We have a label manager that sets the order status to Shipped once product have been sent but this then makes the downloads disappear.
I think the problem is more of a conceptual one. That is to say the Order PAYMENT status is a separate thing to the ITEM delivery status.
As a workaround we have modified a bit of code in catalog/model/account/download.php
All the code that read:
AND o.order_status_id = '" . (int)$this->config->get('config_download_status') . "'
NOW READS
AND ( o.order_status_id = '" . (int)$this->config->get('config_download_status') . "' OR o.order_status_id = '3' )
Not a very elegant solution to hard code the status like this!
Regards
Paul
Many Thanks.paul133 wrote:Hi.
We have the same issue.
We have a physical product that also has downloads.
So when payment is complete it works.
We have a label manager that sets the order status to Shipped once product have been sent but this then makes the downloads disappear.
I think the problem is more of a conceptual one. That is to say the Order PAYMENT status is a separate thing to the ITEM delivery status.
As a workaround we have modified a bit of code in catalog/model/account/download.php
All the code that read:
AND o.order_status_id = '" . (int)$this->config->get('config_download_status') . "'
NOW READS
AND ( o.order_status_id = '" . (int)$this->config->get('config_download_status') . "' OR o.order_status_id = '3' )
Not a very elegant solution to hard code the status like this!
Regards
Paul
ร้านค้าออนไลน์
OpenCart Thailand Support Forum
How to Upgrade oc1.5 to 2.0.1.1
Upgrading OpenCart From v.1.4 or v.1.5 to V.2.2 Step by step
I just sell dwonload sheet music. My issue is that the completed download do NOT seem to go away from the Account->Download screen, even when there are none remaining. What setting will cause these to go away? It shows zero remaining and the download button does not do anything, but I want these to just go away when the last remaining download is done.
Qphoria wrote: Option Two, update the setting for download status to be a multiselect so that more than one state can be used for allowed download status. Then you can have downloads allowed for "Processing" AND "Completed". This is the fix I plan on making.
Really happy to hear that, hope can release it soon.
Best Regards!
Allen
I know nothing about PHP and SQL, but I still try my best to understand it.
I don't understand why this is needed, but putting ... AND od.remaining > '0' ... in the code below seems to make this function as it should. I still feel that I am missing something and that this process should already be automatically excluding completed downloads from the download list, otherwise it is very confusing to the buyer.
Code: Select all
$query = $this->db->query("SELECT o.order_id, o.date_added, od.order_download_id, od.name, od.filename, od.remaining FROM " . DB_PREFIX . "order_download od LEFT JOIN `" . DB_PREFIX . "order` o ON (od.order_id = o.order_id) WHERE o.customer_id = '" . (int)$this->customer->getId() . "' AND o.order_status_id > '0' AND od.remaining > '0' AND o.order_status_id = '" . (int)$this->config->get('config_complete_status_id') . "' ORDER BY o.date_added DESC LIMIT " . (int)$start . "," . (int)$limit);
This has done exactly what I needed up until 1.5.2. Download.php has been changed in 1.5.2 - Does anyone by chance have any updated code to work around this issue?paul133 wrote: As a workaround we have modified a bit of code in catalog/model/account/download.php
All the code that read:
AND o.order_status_id = '" . (int)$this->config->get('config_download_status') . "'
NOW READS
AND ( o.order_status_id = '" . (int)$this->config->get('config_download_status') . "' OR o.order_status_id = '3' )
Not a very elegant solution to hard code the status like this!
I actually got it figured out. For others wondering:tyjthomas wrote:This has done exactly what I needed up until 1.5.2. Download.php has been changed in 1.5.2 - Does anyone by chance have any updated code to work around this issue?paul133 wrote: As a workaround we have modified a bit of code in catalog/model/account/download.php
All the code that read:
AND o.order_status_id = '" . (int)$this->config->get('config_download_status') . "'
NOW READS
AND ( o.order_status_id = '" . (int)$this->config->get('config_download_status') . "' OR o.order_status_id = '3' )
Not a very elegant solution to hard code the status like this!
All the code that read:
AND o.order_status_id = '" . (int)$this->config->get('config_complete_status_id') . "'
Now reads:
AND ( o.order_status_id = '" . (int)$this->config->get('config_complete_status_id') . "' OR o.order_status_id = '3' )
Hi,
I had the same problem and came up with a little different solution. I hate to hardcode things, so I modified the sql-query as well, but used a configurable approach. So here is what I did:
Please note: This has been done in version 1.5.5.1
First I added a new config variable in mysql (use phpmyadmin). The "3,5,15" towards the end indicates the statuses that a download is downloadable with. Find statuses in "oc_order_status" table:
then replace in "catalog/model/account/download.php":
with
there should be 3 occurences.
Modifying the core isn't my favorite thing since you have to modify it every time after an update, but I have no idea how to do it otherwise ...
I had the same problem and came up with a little different solution. I hate to hardcode things, so I modified the sql-query as well, but used a configurable approach. So here is what I did:
Please note: This has been done in version 1.5.5.1
First I added a new config variable in mysql (use phpmyadmin). The "3,5,15" towards the end indicates the statuses that a download is downloadable with. Find statuses in "oc_order_status" table:
Code: Select all
INSERT INTO `oc_setting` (
`setting_id` ,
`store_id` ,
`group` ,
`key` ,
`value` ,
`serialized`
)
VALUES (
'2330', '0', 'user', 'user_complete_status_id', '3,5,15', '0'
);
Code: Select all
AND o.order_status_id = '" . (int)$this->config->get('config_complete_status_id') . "'
Code: Select all
AND FIND_IN_SET(o.order_status_id , '" . $this->config->get('user_complete_status_id') . "')
Modifying the core isn't my favorite thing since you have to modify it every time after an update, but I have no idea how to do it otherwise ...
Has anyone found a mod for this. I really don't want to hack the code as it is a hassle moving forward remembering all the hacks that were done.
I like others have products which have both downloads and physical products so when it is set to shipped, the downloads go away.
I like others have products which have both downloads and physical products so when it is set to shipped, the downloads go away.
I want to try one more time with this one.
Daniel has apparently taken a hard line on this one, but as I can see from here and other places, I am not the only person with this problem.
It is confusing my customers to have to wait until the physical part of the order is shipped to see their downloads. We obviously use the completed to see the order was paid for and the shipped to see that we have shipped the order. It all seems very logical. What isn't logical is the fact that the downloads dissapear when we mark the order as shipped.
I really hate to hack code as it just gets to be a long list of items to deal with every time you update the software.
Has anyone seen a mod for this?
Thanks,,,,Jack
Daniel has apparently taken a hard line on this one, but as I can see from here and other places, I am not the only person with this problem.
It is confusing my customers to have to wait until the physical part of the order is shipped to see their downloads. We obviously use the completed to see the order was paid for and the shipped to see that we have shipped the order. It all seems very logical. What isn't logical is the fact that the downloads dissapear when we mark the order as shipped.
I really hate to hack code as it just gets to be a long list of items to deal with every time you update the software.
Has anyone seen a mod for this?
Thanks,,,,Jack
I also am looking for a solution to this problem. I would like to see something to the effect of
order comes in, paid via authorize.net, set order status to "paid - unshipped" if the user wants a physical cd or "paid" if they want download only. The user may download their files with either status.
"paid - unshipped" status order gets shipped and changed to "complete"... the user may still download their files.
"paid" orders get changed to "complete" once an admin takes a look at them.
I actually need "paid", "paid - unshipped", and "completed" all to basically work exactly like "completed" because I have other extensions that rely on a status being set to complete. I just need to be able to discern whether or not we've shipped a product physically or not.
order comes in, paid via authorize.net, set order status to "paid - unshipped" if the user wants a physical cd or "paid" if they want download only. The user may download their files with either status.
"paid - unshipped" status order gets shipped and changed to "complete"... the user may still download their files.
"paid" orders get changed to "complete" once an admin takes a look at them.
I actually need "paid", "paid - unshipped", and "completed" all to basically work exactly like "completed" because I have other extensions that rely on a status being set to complete. I just need to be able to discern whether or not we've shipped a product physically or not.
The logical way to solve this ( and I would imagine simply) is to allow multiple checks for status for download availability so that people can choose whatever combination of statuses they want. This is obviously a problem for anyone who has downloadable materials with a physical product.
Who is online
Users browsing this forum: No registered users and 19 guests