View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0004330 | OXID eShop (all versions) | 1.03. Basket, checkout process | public | 2012-08-08 11:13 | 2023-11-14 10:11 |
Reporter | rimvydas_paskevicius | Assigned To | |||
Priority | urgent | Severity | major | Reproducibility | always |
Status | closed | Resolution | unable to reproduce | ||
Product Version | 4.6.3 revision 47975 | ||||
Summary | 0004330: When sending order emails, all informatin used for formating email should be done using oxorderarticle object | ||||
Description | When sending order emails, all informatin used for formating email should be done using oxorderarticle object, not oxbasketitem object. It is not correct to use oxbasketitem object as after finishing order it can change. E.g. stock reduced from 1 to 0 and article becomes not valid so if page reloads, basket item is invalidated. So after page reload if you want to send email, there is call in email template oBasket->getBasketArticles() and on this call it throws error as one article is not valid (stock = 0). | ||||
Tags | Basket, Email, Order | ||||
Theme | Not defined | ||||
Browser | All | ||||
PHP Version | Not defined | ||||
Database Version | Not defined | ||||
parent of | 0004271 | resolved | module PayPal | When ordering last article with PayPal, user will be notified about "the article XY is no longer available" | |
related to | 0002995 | closed | QA | OXID eShop (all versions) | Redundant (4x) call for oxBasket::getBasketArticles |
related to | 0005357 | resolved | jurate.baseviciene | module PayPal | When ordering last article with PayPal this article will be missing on confirmation email. |
|
The Error occurred already in Version 4.6.3 if you need further information in thankyou.tpl like: [{assign var="basket" value=$oView->getBasket()}] [{foreach from=$basket->getContents() item=basketitem}] [{assign var="priceObj" value=$basketitem->getPrice() }] [{assign var="productIDs" value=$basketitem->getProductId()|cat:"|$productIDs" }] [{assign var="productQtys" value=$basketitem->getAmount()|cat:"|$productQtys" }] [{assign var="productPrices" value=$priceObj->getNettoPrice()|string_format:"%.2f"|cat:"|$productPrices" }] [{assign var="objCurrent" value=$basketitem->getArticle()}] [{assign var="objParent" value=$objCurrent->getParentArticle()}] [{assign var="productNumbers" value=$objParent->oxarticles__oxartnum|cat:"|$productNumbers" }] [{/foreach}] Is there a hotfix available? As you can see here in the errorlog, we have some modules: Der Artikel "Sup00008-4" ist leider nicht mehr verfügbar #0 /core/oxutilsobject.php(125): oxUtilsObject->_getObject('oxnoarticleexce...', 0, Array) #1 [internal function]: oxUtilsObject->oxNew('oxNoArticleExce...') #2 /core/oxfunctions.php(314): call_user_func_array(Array, Array) #3 /core/oxbasketitem.php(471): oxNew('oxNoArticleExce...') #4 /tmp/55567e90bc43c4056907cd0b326eabb7^%%33^334^334F7E49%%thankyou.tpl.php(244): oxBasketItem->getArticle() #5 /core/smarty/Smarty.class.php(1263): include('/usr/local/zend...') #6 /views/oxshopcontrol.php(446): Smarty->fetch('page/checkout/t...', 'ox|0|0|1|0') #7 /views/oxshopcontrol.php(317): oxShopControl->_render(Object(pi_ratepay_thankyou)) #8 /views/oxshopcontrol.php(114): oxShopControl->_process('thankyou', NULL) #9 /modules/d3log/views/d3_oxshopcontrol_errorhandler.php(14): oxShopControl->start() #10 /modules/d3clrtmp/views/d3_oxshopcontrol_clrtmp.php(19): d3_oxshopcontrol_errorhandler->start() 0000011 /modules/d3/autoload/views/d3_oxshopcontrol_autoload.php(33): d3_oxshopcontrol_clrtmp->start() 0000012 /index.php(110): d3_oxshopcontrol_autoload->start() 0000013 {main}; Installed Modules: PayPal (eFire) Sofortüberweisung (tronet) Heidelpay (D3) Amazon Payments RatePAY |
|
Found the problem. Solution is to deactivate the stock validation: [{assign var="objCurrent" value=$basketitem->getArticle(false)}] |
|
While functionality might need a refactoring,the behavior in standard shop is correct. Every email send shows full basket information, even in the described situation. This kind of behavior might be risky for module developers, but this could be handled fully from module side. As for the code what solidEvolution noted, I could not find it in standard shop or modules. But the principle is correct: you should use the getter getArticle(false) with additional false parameter to solve the situation. Resolution for this bug would be fixing it in the next major release. |
|
I installed the 4.5.11 shop and 2.0.2 paypal module. I could not reproduce this behaviour. The last item bought is displayed correctly in customer email and then it goes offline in shop. Works correctly as it should. |
|
I've developed a module for credit card payment and I'm having the same problem. I tried to implement the proposal above, setting the $blCheckProduct in oxBasketItem::getArticle()to false, but emails are still not containing the 0 quantity products. I'm using OXID CE 4.5.7_41909. How can i fix this from my module? |