Det seneste uges tid har vi modtaget mails fra kunder, som ikke kan forstå at de ikke har modtaget en ordrebekræftelse. Det er der i sig selv ikke noget underligt i, for det kan der være mange årsager til.

Der hvor jeg blev bekymret var da ordrene heller ikke var at finde som aktive ordre i BO, men hvis man søger på kundens emailadresse eller kurv, så kunne man finde ordren som værende gennemført, men ikke godkendt – og det er jo noget møg for det giver i den grad utilfredse kunder.

Hvad skyldes det?
Jeg er ikke helt sikker på hvad det skyldes, udover at det er en bug i det mail system som prestashop bruger. Swift hedder det og har virker upåklageligt indtil nu, derfor mistænker jeg at det måske kan være opstået i forbindelse med en opdatering af PHP eller ligende, men det kan jeg ikke bekræfte på nuværende tidspunkt.

Hvordan finder jeg ud af om jeg mangler ordre?
Vi gør det at vi tjekker epay manageren, hvis der står betalinger når alle ordre er pakket, så er det fordi der mangler en ordre i back office, eller det kan være derfor. Det kan også skyldes at en ordre måske er registreret med dobbelt betaling, så det er en måde at undersøge det på. Det ordre ID man kan se i epay, er ikke ordreID i prestashop. Her er det id_cart man skal lede efter, og det kan man gøre ved at vælge fanen customers->carts og så med en ganske simpel søgning se om kurven findes. På kurvens side kan man så se om der er et ordrenummer i højre side, hvis der er det så klikker man på det og kommer til ordren, har den status “afventer betaling” så skifter man den til betaling accepteret. Herefter kan ordren ses via ordrefanen i BO. Samme metode kan bruges hvis man bruger quickpay.

Kan jeg undersøge om det påvirker os?
Udover at man selvfølgelig kan kigge efter de manglende ordre, så kan man kigge i fejloggen på serveren efter fejl der ligner denne her:

“Fatal error: Uncaught exception ‘Swift_Message_MimeException’ with message ‘Something went wrong whilst trying to move some MIME parts during an attach(). The MIME component threw an exception:
Cannot remove child part identified by ‘5009133501643’ as it does not exist. Consider using hasChild() to check.’ in /tools/swift/Swift/Message.php:542 Stack trace: #0 /classes/Mail.php(215): Swift_Message->attach(Object(Swift_Message_Part)) #1 /admin/tabs/AdminOrders.php(224): MailCore::Send(1, ‘order_merchant_…’, ‘New message reg…’, Array, ‘[email protected]…’, ‘Customer Name’, NULL, NULL, NULL, NULL, ‘/p…’, true) #2 /admin/index.php(112): AdminOrders->postProcess() #3 {main} thrown in /tools/swift/Swift/Message.php on line 542″

Andre symptomer:
Det kan være du oplever samme fejl under ændring af ordre satus, her vil du se den på skærmen. Bruger du epay, vil du også kunne opleve af epay boksen på ordresiden ikke er der, det skyldes temlig sikkert samme problem. Det er vigtigt at understrege at ikke alle ordre rammes, og det derfor ikke er nok at kigge efter ordre i Back office.

Jeg forlænger naturligvis tråden her når jeg ved lidt mere om det, og forhåbentlig har en løsning – De nyeste version skulle idag være blevet opdateret med en patch og ændret ordre håndtering for at undgå problemet, men det hjælper jo ikke os på de version som ikke er downloadet i dag og frem.

EDIT: Vores host bekræfter at have opdaret PHP version inden for de sidste 14 dage.

EDIT: Så skulle der været fundet en løsning på problemet, det er ikke min egen løsning men en jeg har fundet på den franske del af prestashop forumet, men det er jo også lige meget bare den virker:
Åben /tools/swift/swift/Messages.php og find line 623 som ser sådan her ud


$this->getReference("parent", $old_branch)->removeChild($id);

Erstat den med:


if($this->getReference("parent", $old_branch)->hasChild($id))
{
    $this->getReference("parent", $old_branch)->removeChild($id);
}
Tilmeld dig nyhedsbrevet, så står du forrest i køen når jeg finder de lækre tips og tricks eller gode tilbud frem.

5 Kommentarer

  1. 11. november 2012 at 06:54

    Hej Tim..

    Vi har det samme problem og vi tjekker ved at tælle om alle ordrenumre til stede. Fejlen er lidt forskellig og nogle gange kan den rettes ved bare at ændre status og andre gange kan den slet ikke ændres og vi må kopiere den oprindelige kurv over i et Worddokumet og ekspedere den på den måde.

    Ved du om den er gal i alle versioner af Prestahop eller om der er versioner hvor det fungerer?

    • Timpet-Reply
      11. november 2012 at 07:00

      Hej Jan.

      Det er vidst nok en bug i prestashop op til version 1.4.9, jeg må tilstå at jeg ikke har undersøgt de nyere 1.5 versioner og derfor ikke ved om det er fulgt med derover. I hvert fald kan du løse problemet som beskrevet. Jeg tror egentlig der er mange der ikke opdager at de mangler ordrene, der er i hvert fald meget få kommentar til det her indlæg, og det er 100% noget der rammer alle som bruger den nyeste version af PHP sammen med prestashop.

  2. 15. november 2012 at 22:58

    Jeg har også levet fejlen desværre.

  3. Bettina-Reply
    20. september 2013 at 09:53

    Vi har lige fået den nye version i Prestashop og da glemmer den ikke at få ordrene med over som i den gamle verison men nogen gange er ordren kommet fint igennem med beløb men varerne er ikke kommet med over fra shoppen til Prestashop, så skal jeg taste dem manuelt ind og rette prisen til i Meeboks, ingen har kunnet finde ud hvorfor den gør det nogen der måske kan hjælpe???
    Hilsen
    Bettina

  4. Alexander-Reply
    8. november 2013 at 17:02

    Hej Tim
    Jeg har det problem at mine ordre ikke vises i backenden? De vises fint i QuickPay, som jeg bruger til betaling. Men ordren vises ikke under “Ordre”, men kundens indkøbskurv kan man se under indkøbskurve i backenden.
    Ved du hvad det skyldes?

Skriv en kommentar