Jump to content
allibaba

bug envoie mail administrateur module devis depuis mise à jour presta

Recommended Posts

Bonjour, 

 

Depuis la mise à jour de presta de 1.4 à 1.6 j'ai pleins de bug sur mon module devis perso. J'en ai résolu quelques un mais comme je ne code pas à la base ça deviens compliqué...

 

En l’occurrence le problème qui me reste c'est que lors d'une nouvelle demande de devis il n'y a pas d'envoie de mail à l'administrateur.

 

Après être passé en mode debug j'ai les message d'erreur suivants sur le back office:

 

avant d’accéder au module:

 

Strict Standards: Declaration of AdminDevis::getList() should be compatible with AdminTabCore::getList($id_lang, $orderBy = NULL, $orderWay = NULL, $start = 0, $limit = NULL, $id_lang_shop = false) in  /modules/devisperso/AdminDevis.php on line 15 

 

 

et une fois sur la page du module: 

 

Notice à la ligne 227 du fichier /modules/devisperso/AdminDevis.php
[8] Undefined variable: cookie

Notice à la ligne 227 du fichier /modules/devisperso/AdminDevis.php
[8] Trying to get property of non-object

 

 

Je vous mets le code au cas où vous pourriez m'aider.

 

Merci d'avance !

 

ligne 5 à 95:

 

 include_once (PS_ADMIN_DIR . '/../classes/AdminTab.php');
 
    include_once (_PS_MODULE_DIR_.'devisperso/DevisClass.php');
 
    include_once (_PS_MODULE_DIR_.'devisperso/devisperso.php');
 
 
 
    class AdminDevis extends AdminTab
 
    {
 
    private $module = 'devisperso';
 
      /* liste des devis dans l'onglet Devis */
 
   public function __construct()
 
{
 
global $cookie;
 
$devisperso = new Devisperso();
 
   
 
$this->table = 'devis';
 
$this->className = 'DevisClass';
 
$this->lang = false;
 
$this->edit = true;
 
$this->delete = true;
 
$this->colorOnBackground = true;
 
 
 
$this->_listTotal = Db::getInstance()->getValue('SELECT FOUND_ROWS()');
 
 
 
 
 
$this->_select = 'CONCAT(c.`firstname`, \' \', c.`lastname`) as `customer`, s.`statut_desc` as `statut_devis`, s.color ';
 
$this->_join = 'LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = a.`id_customer`)
 
LEFT JOIN `'._DB_PREFIX_.'devis_statut` s ON (s.`id_statut` = a.`id_statut` AND s.`id_lang` = '.$cookie->id_lang.' )';
 
 
 
$statusArray = array();
 
$status = DevisClass::getStatut((int)$cookie->id_lang);
 
 
 
foreach ($status AS $stat)
 
$statusArray[$stat['id_statut']] = $stat['statut_desc'];
 
 
 
 
 
$this->fieldsDisplay = array(
 
'statut_devis' => array('title' => $devisperso->getL('Status'), 'align' =>'center', 'width' => 90, 'type' => 'select', 'select' => $statusArray, 'filter_key' => 's!id_statut'),
 
'id_devis' => array('title' => 'ID', 'align' => 'center', 'width' => 30),
 
'id_customer' => array('title' => $devisperso->getL('ID Customer'), 'align' => 'center', 'width' => 30, 'filter_key' => 'a!id_customer'),
 
'customer' => array('title' => $devisperso->getL('Customer'), 'left' => 'center', 'width' => 150, 'filter_key' => 'customer', 'tmpTableFilter' => true),
 
'total_devis' => array('title' => $devisperso->getL('Total'), 'width' => 70, 'align' => 'right', 'prefix' => '<b>', 'suffix' => '</b>', 'price' => true, 'currency' => true),
 
'date_demande' => array('title' => $devisperso->getL('Request Date'), 'align' => 'right', 'widthColumn' => 110, 'width' => 80, 'type' => 'date', 'filter_key' => 'a!date_demande'),
 
'date_reponse' => array('title' => $devisperso->getL('Answer Date'), 'align' => 'right', 'widthColumn' => 110, 'width' => 80, 'type' => 'date', 'filter_key' => 'a!date_reponse'),
 
'date_expiration'=> array('title' => $devisperso->getL('Expiration Date'), 'align' => 'right', 'widthColumn' => 110, 'width' => 80, 'type' => 'date',  'filter_key' => 'a!date_expiration')//, 
 
);

 

 

 

 

ligne 187 à 229 :

 

       // + mail client (mail dans la langue du devis)
 
      $lang = new Language($dev->id_lang);
 
      $customer = new Customer($liste['id_customer']); 
 
      if (strpos(_PS_VERSION_, '1.4') !== false && strpos(_PS_VERSION_, '1.4.0') === false)
 
$objet = Mail::l('A quote request has expired !');
 
else
 
$objet = $devisperso->getL('A quote request has expired !');
 
Mail::Send(
 
      $liste['id_lang'], 
 
      'devis_expiration', 
 
      $objet, 
 
array('{id_devis}' => $liste['id_devis']), 
 
$customer->email, 
 
$customer->firstname.' '.$customer->lastname, 
 
strval(Configuration::get('PS_SHOP_EMAIL')), 
 
strval(Configuration::get('PS_SHOP_NAME')), 
 
NULL, NULL, _PS_MODULE_DIR_.'devisperso/mails/');
 
      }
 
      }
 
   
 
      return parent::getList((int)($cookie->id_lang), !Tools::getValue($this->table.'Orderby') ? 'date_demande' : NULL, !Tools::getValue($this->table.'Orderway') ? 'DESC' : NULL);
 
      }
Edited by allibaba (see edit history)

Share this post


Link to post
Share on other sites

Alors, d'après mes recherches, pour la ligne 227 il faudrait que j'applique "context" à cette partie du code ... mais je ne sais pas faire :-( 

 

return parent::getList((int)($cookie->id_lang), !Tools::getValue($this->table.'Orderby') ? 'date_demande' : NULL, !Tools::getValue($this->table.'Orderway') ? 'DESC' : NULL);

 
 
Si quelqu'un peut m'aider? Merci d'avance!      

Share this post


Link to post
Share on other sites

Bonjour,

 

Essaye de remplacer '$cookie->id_lang' par '$this->context->cookie->id_lang'.

 

Bon courage !

  • Like 1

Share this post


Link to post
Share on other sites

Bonjour, 

 

Merci beaucoup le code à résolu les 2 problèmes de la ligne 227! 

 

Merci encore

Share this post


Link to post
Share on other sites

Maintenant il me reste le problème de la ligne 15. 

 

Strict Standards: Declaration of AdminDevis::getList() should be compatible with AdminTabCore::getList($id_lang, $orderBy = NULL, $orderWay = NULL, $start = 0, $limit = NULL, $id_lang_shop = false) in /modules/devisperso/AdminDevis.php on line 15 

 

J'ai trouvé un début de réponse sur ces posts: https://stackoverflow.com/questions/17234259/strict-standards-declaration-of-should-be-compatible-with et https://stackoverflow.com/questions/3115388/declaration-of-methods-should-be-compatible-with-parent-methods-in-php/9243127#9243127

mais idem, malgré plusieurs tentatives je n'ai pas réussi à corriger l'erreur.

 

Je vais continuer à tester mais je prends tous vos conseils! 

 

Merci d'avance

Share this post


Link to post
Share on other sites

Bonjour,

 

Pour moi c'est le même problème. ;)

 

Mais dans ce cas je ne sais pas d'où sort $id_lang. Tu peux montrer le code de la fonction ?

 

Merci !

Share this post


Link to post
Share on other sites

Re, 

 

J'ai pu corriger l'erreur en modifiant la fonction getList (je ne sais pas pourquoi je ne l'ai pas vu plus tôt) 

 

avant

 

  public function getList($id_lang=null, $orderBy = NULL, $orderWay = NULL, $start = 0, $limit = NULL)

 

après

 

  public function getList($id_lang=null /*this one can be optional */, $orderBy = NULL, $orderWay = NULL, $start = 0, $limit = NULL, $id_lang_shop = false)

 

 

... mais le plus drôle c'est que l'envoi de mail administrateur ne fonctionne toujours pas! 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

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