Jump to content
NemesisNG

Error 500 Edit Customer

Recommended Posts

Hi

Think I posted this in the wrong place first time...

Just starting out with PrestaShop and running 1.7.6.0, have purchased a module to migrate us from OpenCart 3 which has been installed and run.

Now on trying to view a customer to edit that person I'm getting a Error 500 page, but only on customers who have previously placed an order. If it's a customer whos registered and not ordered it will show the page no problem.

I've contacted the dev of the migration module and they have done a test migration of our current OpenCart shop to their server and it's worked fine so said it's our install or hosting which is the issue.

I've turned on debug mode and on clicking a customer to edit I get the following:

Level Channel Message

DEBUG18:23:41doctrineSELECT name FROM ps_module WHERE active = 1

INFO18:23:41requestMatched route "admin_customers_edit".

DEBUG18:23:41securityRead existing security token from the session.

DEBUG18:23:41securityUser was reloaded from a user provider.

INFO18:23:41phpUser Deprecated: Tools::displayPrice() is deprecated since version 1.7.6.0. Use PrestaShop\PrestaShop\Core\Localization\Locale::formatPrice() instead.

INFO18:23:41phpUser Deprecated: Implementing "Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface" without the "reset()" method is deprecated since Symfony 3.4 and will be unsupported in 4.0 for class "Csa\Bundle\GuzzleBundle\DataCollector\GuzzleCollector".

CRITICAL18:23:41phpUncaught Notice: Undefined variable: customerForm

CRITICAL18:23:41requestUncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Notice: Undefined variable: customerForm" at /home/ttocco/public_html/prestatest/src/PrestaShopBundle/Controller/Admin/Sell/Customer/CustomerController.php line 203

DEBUG18:23:41phpWarning: highlight_file() has been disabled for security reasons

Any help on this or what to try next please?

Thanks

Share this post


Link to post
Share on other sites

Hi, the error message shows only that something went wrong when creatin/loading  the customer edit form. As the issue seems to be related to your data migration I recommend to contact the developer of the migration module you used.

Edited by JBW (see edit history)

Share this post


Link to post
Share on other sites

Thanks for replying.

First thing I did was contact the developer of the migration package, they migrated our data to a local test shop of theirs and it seems to work fine, the sent a video to prove it, and said it was my shop setup not working correctly. But it's a brand new install of opencart 1.7.6.0 with no other mods or themes or anything installed or set up. I'm currently ignoring the GDPR issue of all of my shop data being on someone elses server!

Don't know what else to do really, I've got a shop to migrate and setup, I'm £100 down for a migration module which isn't working and no support from them, and don't seem to be getting anywhere.

Share this post


Link to post
Share on other sites

Is the same issue happing if you edit a new customer for which you have placed an order? If not it is somehow related to the migrated data - you can try to compare this data on database to see what might cause the issue.

Share this post


Link to post
Share on other sites

To be fair, I've not tried that. I've not even set up payments or shipping or anything yet as thought it best to get all the data moved over first and then configure.

I'll try and run a test order through and see if I can edit that customer first, if not then it's clearly the migrated data.

Thanks

 

Share this post


Link to post
Share on other sites

Hi,

I had the same problem 

The issue was the column "convertion_rate" in the ps_orders table

I guess in prestashop prior to 1.7.6.0 if you had only one currency the conversion rate wasn't mandatory but now it is and should be > 0.000000

So I updated the column convertion_rate in table ps_orders with '1.000000' by using the following SQL request :

DO A BACKUP OF YOUR DATABASE BEFORE !!! 

AND IF YOUR USING MULTI CURRENCIES ON YOUR SHOP IT MIGHT MESS THINGS UP AND YOU SHOULD MAYBE ONLY UPDATE THE LINES WHERE IT'S 0,000000

UPDATE ps_orders SET conversion_rate = '1.000000'

Hope this can help

Edited by FranckR
typo (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites
3 minutes ago, FranckR said:

Hi,

I had the same problem 

The issue was the column "convertion_rate" in the ps_orders table

I guess in prestashop prior to 1.7.6.0 if you had only one currency the conversion rate wasn't mandatory but now it is and should be > 0.000000

So I updated the column convertion_rate in table ps_orders with '1.000000' by using the following SQL request :

DO A BACKUP OF YOUR DATABASE BEFORE !!! 

AND IF YOUR USING MULTI CURRENCIES ON YOUR SHOP IT MIGHT MESS THINGS UP AND YOU SHOULD MAYBE ONLY UPDATE THE LINES WHERE IT'S 0,000000

UPDATE ps_orders SET conversion_rate = '1.000000'

Hope this can help

Hi,

Thanks for your answer but I've a problem with the customers, not with the orders.
You had problem with customers too ?

 

Share this post


Link to post
Share on other sites

Yes the problem was for editing customers : Back office / customers / customers 

the error 500 on some customers ( that had old orders )

I know it doesn't display the orders on the customer form but I think prestashop is requesting them anyway 

 

Share this post


Link to post
Share on other sites
On 9/25/2019 at 8:58 PM, rachel01 said:

Hi,

 

I've the same problem

Anyone have a solution ?
thanks

Are you using the same migration module? Migrating from OpenCart?

I never got this resolved and was fobbed off by the company making the module, basically said it was a problem in my old existing shop and on their test server it was fine.

I've just tried this fix and it most certainly does fix this issue! Can't quite believe it to be honest.

Now, I've also got an issue with missing category and product names after the migration too, the company making the module did actually fix this but didn't tell me what the fix was, so as I'm still in testing and not on a final live shop migration I need to them to either do it again or let me know how to sort it myself. 

Unless anyone else has any bright ideas?

Thanks

Share this post


Link to post
Share on other sites
9 hours ago, FranckR said:

Hi,

I had the same problem 

The issue was the column "convertion_rate" in the ps_orders table

I guess in prestashop prior to 1.7.6.0 if you had only one currency the conversion rate wasn't mandatory but now it is and should be > 0.000000

So I updated the column convertion_rate in table ps_orders with '1.000000' by using the following SQL request :

DO A BACKUP OF YOUR DATABASE BEFORE !!! 

AND IF YOUR USING MULTI CURRENCIES ON YOUR SHOP IT MIGHT MESS THINGS UP AND YOU SHOULD MAYBE ONLY UPDATE THE LINES WHERE IT'S 0,000000

UPDATE ps_orders SET conversion_rate = '1.000000'

Hope this can help

Absolutely amazing, many, many thanks for posting this!

Share this post


Link to post
Share on other sites

Thank you for the help. In my ps_orders table the currency was ok everywhere. But I noticed that a customer has id_currency set to 0 (I have only one currency). So I replaced to 1 and no more error 500 on this customer !

 

Share this post


Link to post
Share on other sites

Thank you for your answer.

In my ps_orders table, all id_currency values are at 1.

I do not have the id_currency field in my ps_customer table ...

Share this post


Link to post
Share on other sites

Similar issue here. I did just check database.
- id_currency reads either 1 or 2; no empty record nor value "0" ( I use EUR and USD)
- all conversion rates are either set to 1 or the the real conversion rate (for USD). No empty records.
Nevertheless I endup with error 500 when trying to edit most customers. But it looks like I can edit customers who did NOT place an order yet, and all the customers which I cannot edit already have placed an order. I have this issue also for recently new added customers who did create their account running PS 1.7.6.0 / 1.7.6.1
I also endup with error 500 if I try to set the order state to "payment accepted". Other order states work fine.

May be there is another field which causes this issue?

Share this post


Link to post
Share on other sites

I had the same issue, but no of  the above solutions worked.

- in my ps_orders convertions_rate was set to 1.000000

- in my ps_customer the id_currency doesn't exist

- in ps_orders id_currency was not 0

 

After making a small investigation I've found out that my payment module was using in its code wrong path to its files, instead of

_PS_MODULE_DIR_ ."/modulename/rest/path"

it was using hardcoded "modules/modulename/rest/path" which when run from some other controller was an incorrect path. But this is my fault (I wrote this module for myself).

The real issue is, that CustomerController.php is wrongly written. As I understand, the function editAction() has serious mistake:

try {

	// create object of $customerForm
	// create some other variables

	// if any of those created object fails (eg. wrong module path etc.) then go to "catch" part,
} catch(Exception $e){
	
	if($e instanceof CustomerNotFoundException){
	 return
	}
	// and here goes the incorrect part, if the error is didfferent than customerNotFound then the script continues as everything was fine
	
}

// So if the exception is anything else than CustomerNotFoundException it executes following code:
return $this->render('@PrestaShop/Admin/Sell/Customer/edit.html.twig', [
            'customerForm' => $customerForm->createView(),
            'customerInformation' => $customerInformation,
            'isB2bFeatureActive' => $this->get('prestashop.core.b2b.b2b_feature')->isActive(),
            'minPasswordLength' => Password::MIN_LENGTH,
            'help_link' => $this->generateSidebarLink($request->attributes->get('_legacy_controller')),
        ]);

//the problem is that $customerForm doesn't exists here as it went to the "catch" part - no $customerForm creation.

 

So for everyone who struggles with this error, I'd recommend temporary (!) changing this function so you see what exactly causes your problem:

replace ONLY TEMPORARY this code(file src/PrestaShopBundle/Controller/Admin/Sell/Customer/CustomerController.php  function editAction(), line 195):

} catch (Exception $e) {
            $this->addFlash('error', $this->getErrorMessageForException($e, $this->getErrorMessages($e)));
            if ($e instanceof CustomerNotFoundException) {
                return $this->redirectToRoute('admin_customers_index');
            }
        }

with this:

        } catch (Exception $e) {

            /** @var ViewableCustomer $customerInformation */
            $customerInformation = $this->getQueryBus()->handle(new GetCustomerForViewing((int) $customerId));
            $customerFormOptions = [
                'is_password_required' => false,
            ];
            $customerForm = $this->get('prestashop.core.form.identifiable_object.builder.customer_form_builder')
                ->getFormFor((int) $customerId, [], $customerFormOptions);
            $customerForm->handleRequest($request);
            $customerFormHandler = $this->get('prestashop.core.form.identifiable_object.handler.customer_form_handler');
            $result = $customerFormHandler->handleFor((int) $customerId, $customerForm);

            $this->addFlash('error', $this->getErrorMessageForException($e, $this->getErrorMessages($e)));
            if ($e instanceof CustomerNotFoundException) {
                return $this->redirectToRoute('admin_customers_index');
            }
        }

 

Now open again the customer edit page, and it should show you the real error of your case.

AFTER SEEING WHAT IS THE ERROR REMEMBER TO RESTORE THE CHANGED CODE OF CustomerController.php TO HOW IT WAS BEFORE.

Share this post


Link to post
Share on other sites

Finally someone who cares about this terrible bug of PS. Thanx Greg for this post.
However, I see still the same (standard) 500 Error. Do I need to delete some cache files? which ones?
Thanx

Share this post


Link to post
Share on other sites
44 minutes ago, Lukas Truninger said:

Finally someone who cares about this terrible bug of PS. Thanx Greg for this post.
However, I see still the same (standard) 500 Error. Do I need to delete some cache files? which ones?
Thanx

Hm.. sure you can try to delete the cache, as far as I know deleting cache can not make any harm. So delete everything in    'var/cache/dev'    and in    'var/cache/prod'

Share this post


Link to post
Share on other sites

Hmmm, also after deleting the cache, all I see is:
"Oops! An Error Occurred

The server returned a "500 Internal Server Error".

Something is broken. Please let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused."

Share this post


Link to post
Share on other sites

I am not backend developer, but my guess how to investigate this would be to add below line 195 this two lines (echo... and var_dump...). so it looks like this:

195 } catch (Exception $e) {
196		echo $this->getErrorMessageForException($e, $this->getErrorMessages($e))
197 	var_dump($e);
198 	$this->addFlash('error', $this->getErrorMessageForException($e, $this->getErrorMessages($e)));
        

And then maybe you can see what causes the problem in your case. It should show you all the information about the error variable.

Edited by Greg1234 (see edit history)

Share this post


Link to post
Share on other sites

Unfortunately, this also does not show any new results. It looks like the error is already produced in line

178           $this->addGroupSelectionToRequest($request);

thus we will never get to the "try" nor "catch Exeption ...

=> If I write debugg code        print_r("test");exit;       before line 178, the I see "test" on the website; If I write this debug code after line 178, the I see the standard Error 500 message.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More