Jump to content

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)
Link to comment
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!      
Link to comment
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

Link to comment
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! 

Link to comment
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...