Pages:

SendMail by OrderStatusChange

boboo

Avatar: boboo

2012-12-30 09:14

Najpierw piszemy sobie teksty, które zostaną wysłane przy zmianie statusu zamówienia.
Tekst do ..._topic będzie tytułem e-maila.
Numerki w poniższych zmiennych $lang[] oznaczają statusy (2-w realizacji, 3-zrealizowany, 4-anulowany).
Odpowiednio do potrzeb napisać swój ładny tekst.
W pliku /database/translations/xx.php dodać:


$lang
['order_status_mail_topic'] = "Zmiana statusu zamówienia nr: ";
$lang['order_status_mail_2'] = "Zamówienie w realizacji";
$lang['order_status_mail_3'] = "Zamówienie zrealizowane";
$lang['order_status_mail_4'] = "Zamówienie anulowane";


Następnie tworzymy funkcję pobierającą odpowiedni tekst w zależności od numeru zmienionego statusu oraz adres e-mailowy klienta.
I to robimy w pliku /core/orders-admin.php


private function sendOrderStatusMail($iStatus,$iOrder){
    global 
$lang;
    
$aSend['sTopic']=$lang['order_status_mail_topic'].$iOrder;
    
$aSend['sMailContent']=$lang['order_status_mail_'.$iStatus];
    
$aSend['sSender']=$GLOBALS['config']['orders_email'];
    
$sTargetEmail=$this->aOrders[$iOrder]['sEmail'];
    
sendEmail($aSend,null,$sTargetEmail);
}


Następnie w tym samym pliku w funkcji saveOrder() pod linijką:


$aData
['aStatuses'][] = Array( => time( ), => $aForm['iStatus'] );


Dodajemy:


$this
->sendOrderStatusMail($aForm['iStatus'],$aForm['iOrder']);

» Quick.Cart v6.x

pisiorek

Avatar: pisiorek

2013-01-04 23:17

Witam, bardzo przydałaby mi się ta funkcja. W tej chwili mam wdrożony QuickCart w wersji 5.2 i niestety nie działa ta funkcja w tej formie jak w opisie powyżej. Jakich należałoby dokonać zmian w kodzie żeby ruszyła pod tą starszą wersją.
Pozdrawiam

pi

interkob

Avatar: interkob

2013-01-05 08:19

Try to change status in order details page, not in the list of all orders.

pisiorek

Avatar: pisiorek

2013-01-05 11:35

Dzięki piękne, rzeczywiście pomogło - chociaż, gdyby dało się to zmienic też z tej listy zbiorczej, to byłoby już perfekt.
Pozdrawiam

pi

boboo

Avatar: boboo

2013-01-05 16:29

W /core/orders.php w funkcji saveOrders() pod linijką:

$aChange[$iOrder] = $aForm['iStatus'];


dodaj:

$this->sendOrderStatusMail($aForm['iStatus'],$iOrder);

www.kimla.de

pisiorek

Avatar: pisiorek

2013-01-05 17:03

*boboo
Piękne dzięki za pomoc, wszystko działa jak należy. Mała korekta Twojego wpisu, otóż zmiany należy dokonać w pliku /core/orders-admin.php, bo tam jest funkcja saveOrders(), a nie w /core/orders.php.
Pozdrawiam

pi

euphoria-art

Avatar: euphoria-art

2013-01-05 17:53

Dzięki boboo pięknie wszystko działa :)

euphoria-art

Avatar: euphoria-art

2013-01-05 18:52

po wpisaniu swojego tekstu jest on wysyłany w jednej linii jak leci, jak zrobić odstępy między liniami?

boboo

Avatar: boboo

2013-01-05 21:22

W potrzebnych miejscach daj:

<br/>

www.kimla.de

euphoria-art

Avatar: euphoria-art

2013-01-05 23:38

dałem <br/> i dalej mam teksty w jednej długiej linii i dodatkowo pokazuje mi w tych tekstach <br/> w emailu

boboo

Avatar: boboo

2013-01-06 06:40

No tak,
zapomniałem napisać, że pierwszą rzeczą, którą robię w QC jest zmiana formatu e-maili z tekstowych na html.

W /core/common.php znajdź funkcję sendEmail() a w niej linijkę:

if( @mail$sTargetEmail'=?UTF-8?B?'.base64_encode$sTopic ).'?='$sMailContent'MIME-Version: 1.0'."\r\n".'Content-type: text/plain; charset=UTF-8'."\r\n".'From: '.$sSender ) ){


Zamień:

Content-typetext/plain

na:

Content-typetext/html

www.kimla.de

euphoria-art

Avatar: euphoria-art

2013-01-06 11:55

dzięki

euphoria-art

Avatar: euphoria-art

2013-01-06 12:08

heh tylko teraz standardowe zamówienie rozwala łączy w jedną długą linię

boboo

Avatar: boboo

2013-01-06 12:51

w tej funkcji sendEmail w linijkach:

$sMailContent=...


pozamieniać :

"\n"


na:

'<br/>'

www.kimla.de

interkob

Avatar: interkob

2013-01-12 19:10

That would be really useful to receive LinkToOrder Plugin link together with the changed status text.

boboo

Avatar: boboo

2013-01-12 19:37

so create the link and append it to $sMailContent.

www.kimla.de

interkob

Avatar: interkob

2013-01-12 19:48

You know, the link is different for each of customer. It gets generated after the order. I can insert a simple variable to mail content, but this link didn't work for me at that time.

boboo

Avatar: boboo

2013-01-12 21:02

So, after the linkToOrder is installed,
exchange the function I posted in the first post to:

private function sendOrderStatusMail($iStatus,$iOrder){
 global 
$lang$config;
 
$oPage=Pages::getInstance();
 
$aData=$this->throwOrder($iOrder);
 
$aUrls=throwSiteUrls();
 
$aSend['sTopic']=$lang['order_status_mail_topic'].$iOrder;
 
$aSend['sMailContent']=$lang['order_status_mail_'.$iStatus].'<br/>';
 
$aSend['sMailContent'].=$aUrls['sHomeUrl'].$oPage->aPages[$config['order_print']]['sLinkName'].'& sKey='.$this->throwOrderKey($aData).'<br/>';
 
$aSend['sSender']=$GLOBALS['config']['orders_email'];
 
$sTargetEmail=$this->aOrders[$iOrder]['sEmail'];
 
sendEmail($aSend,null,$sTargetEmail);
}


Should work. Try and raport, please.

www.kimla.de

interkob

Avatar: interkob

2013-01-12 21:39

Yes, your code works fine. Just need to remove empty space in the line below:

['sLinkName'].'& sKey='.$this->throwOrderKey($aData).'<br/>';



Thanks for the plugin

boboo

Avatar: boboo

2013-01-13 04:47

[phpThisIsTheTestLineThatShallShowThatAfterTheNinetyNinthCharacterTheWhiteSpaceWillBeAddedAndTheCodeWillGetTheBreak[/php ]
The word "Will" un upper line should be displayed: "Wi ll".
If it is so, please inform OpenSolution. I did it already few times without any reaction.

www.kimla.de

Pages:
Back to top
about us | contact