En af de udfordringer jeg for nyligt løste på vores egen PrestaShop er hvordan man tilføjer selve Track & Trace-nummeret til de mails PrestaShop sender ud når en ordre sættes til “Afsendt”

Hvis du kun er ude efter løsningen, så kan du scrolle lidt længere ned.

Først får du lige alle mellemregningerne, for hvorfor der er et problem.

Jeg har selv været utallige sider igennem på Google, PrestaShop forums, og forge.prestashop.com uden at finde en brugbar løsning.

Der findes en variable i PrestaShops mail-skabeloner hvor du egentlig blot skal indsætte {shipping_number}

Så jeg gav mig til at kigge lidt i MySQL-databsen.

Før version 1.6x, der blev tracking nummeret gemt i tabellen “ps_orders” i kolonnen “shipping_number”.

shipping-number-mysql

Feltet det er der stadigvæk – og det er stadig det flet, som variablen der kan indsættes i mail-skabelonerne henter shipping-nummeret fra.

Men det er ikke her, det bliver gemt… Længere.

Det lavede PrestaShop nemlig om i version 1.6

Der hvor det ligger nu er i tabellen

“ps_order_carrier” i kolonnen “tracking_number”

shipping-number-mysql-rigtig

Så track & trace-nummeret har altså holdt flyttedag i forbindelse med PrestaShop 1.6.

De har bare ikke flyttet variablen til mailskabelonen {shipping_number} med.

Forøvrigt. Hvis du bruger Webshipr til at lave dine pakkelabels, så vil de overføre tracking-URL til dig, i stedet for kun track & trace-nummeret.

Som standard er felter kolonnen “tracking-number” begrænset til 64 tegn. Dette skaber problemer med bl.a. PostNord, hvor Tracking-URL’en længere end de 64 tegn – og så cutter den de sidste 4 cifre af – og så har du et ukomplet tracking nummer, som du og dine kunder, ikke kan bruge til noget som helst.

Læs mit (kommende) indlæg her, om hvordan du forøger dette til 80.

Sådan løser du problemet med de manglende Tracking-numre i “Afsendt” mailen

Du kan løse det med et mindre fix, i form af en override til PrestaShop.

En override til OrderHistory.php er kort fortalt et tillæg til din PrestaShop installation, som i stedet for at ændre ved selve core-filerne, laver et tillæg til dem. Så undgår du at eventuelle rettelser i dit system, forsvinder i fremtidige opgraderinger.

Lokationen er vigtig: /overrides/classes/order/

Du må aldrig overskrive filen med den originale OrderHistory.php i /classes/order/OrderHistory.php

Det er på eget ansvar at implementere nedenstående.

Hvis du har brug for hjælp til implementering at kontakte mig. Jeg er sideløbende med min titel som webshop-ejer også selvstændig konsulent der hjælper med diverse opgaver inden for PrestaShop og webshops.

<?php
class OrderHistory extends OrderHistoryCore
{


    public function sendEmail($order, $template_vars = false)
    {

         if($order->getCurrentOrderState()->id==Configuration::get('PS_OS_SHIPPING'))
         {   

            if(!$template_vars)
                $template_vars=array();
             $carrier = new Carrier($order->id_carrier, $order->id_lang);
             if($carrier !=null)
             {
                $ocid=$order->getIdOrderCarrier();                  
                $url=$carrier->url;
                $order_carrier = new OrderCarrier($ocid);
                if($order_carrier!=null)
                {
                   $trck=$order_carrier->tracking_number;
                   $template_vars['{shipping_number}']=$trck;
                   if((strlen($url)==0)==false)
                   {
                        $trackingurl=str_replace('@', $trck, $url);
                        $template_vars['{followup}']=$trackingurl;
                   }
                }
             }
         }
        
        return parent::sendEmail($order,$template_vars);
    }

}
OrderHistory.php

 

Når dette er implementeret, kan du nu bruge {shipping_number} i dine mail-skabeloner. Det kan du læse om hvordan du gør i mit (kommende) indlæg her: