All posts tagged communication

Zopim Chat by Diglin in the Magento Homepage

Je vous annonce la publication d’un module pour Magento qui vous permet d’intégrer le service de Chat de la société Zopim dans votre installation Magento. C’est une version non officielle, elle n’est pas maintenu par Zopim mais par moi même.

Ce module a pour avantage:

  • de créer une configuration par magasin
  • de paramétrer certaines options du Chat: fenêtre, bulle, bouton (couleur, position, textes, mode de synchronisation de la langue …) par magasin ou pour tous les magasins.
  • d’accéder au tableau de bord de votre compte Zopim directement à partir de votre backend Magento et de dialoguer avec vos visiteurs.

Une version officielle existe également mais elle ne prends pas en compte les avantages de la gestion multi magasin de Magento c’est à dire la prise en compte d’une configuration et d’un affichage du chat en fonction du magasin affiché à l’utilisateur.

Vous pouvez visiter la page sur le site de Magento Connect pour l’obtenir directement. Cliquer sur les images ci-dessous pour agrandir et avoir un aperçu de ce module:

zopim

Qu’est ce que Zopim Chat?

Ce service disponible sous différents tarifs est disponible à l’adresse http://www.zopim.com

Ce service permet notamment d’afficher sur votre site un moyen de communication sous forme de chat et de dialoguer avec les utilisateurs qui visitent directement les pages de votre site internet ou de votre magasin en ligne. Il est facile d’utilisation, d’intégration et d’un coût abordable. Les conversations sont accessibles soit à l’aide de votre logiciel de messagerie instantannée (MSN, AOL, Googe Talk) et/ou soit à l’aide de l’interface de gestion de votre compte Zopim.

L’utilisation d’un chat comme Zopim vous permet

chat_window

dashboard_ss

logo_paypal

Il y a un bug dans Paypal Standard pour Magento, après qu’un client a effectué le processus d’achat et validé son paiement sur Paypal. Le client ne reçoit pas l’email incluant sa facture. Il ne reçoit seulement qu’une confirmation de paiement et un message, après le processus de paiement, lui indiquant que sa commande va être traitée.

Pour résoudre ce problème, deux possibilités:

  • Soit ajouter dans la classe (en faisant une surcharge de cette classe dans un module à vous) Mage_Paypal_Model_Standard (app/code/core/Mage/Paypal/Model/) à la ligne 418 après $invoice->register()->pay();, la ligne suivante: $invoice->sendEmail();
  • Soit créer un évènement (event) à l’aide d’une classe Observer.php qui se déclenchera après l’évènement sales_order_invoice_pay, qui dans Paypal standard démarre à la ligne 418, après le traitement $invoice->register()->pay(). Pour cela, vous dever créer un module (il y a plein de tutoriaux sur Google pour savoir comment on fait) avec les fichiers suivants (remplacer Name par le nom de votre Module):
    • /app/code/local/Name/Sales/etc/config.xml
    • /app/code/local/Name/Sales/Model/Observer.php
    • /app/etc/modules/Name_All.xm
En voici le contenu:
/app/code/local/Name/Sales/etc/config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Name_Sales>
            <version>0.1.0</version>
        </Name_Sales>
    </modules>
    <global>
        <models>
            <sales>
                <rewrite>
                    <observer>Name_Sales_Model_Observer</observer>
                </rewrite>
            </sales>
        </models>
        <events>
            <sales_order_invoice_pay>
                <observers>
                    <sales_notification_observer>
                        <type>singleton</type>
                        <class>sales/observer</class>
                        <method>sendInvoiceEmail</method>
                    </sales_notification_observer>
                </observers>
            </sales_order_invoice_pay>
        </events>
    </global>
</config>

/app/code/local/Name/Sales/Model/Observer.php

<?php
/**
 * Event sales_order_invoice_pay
 *
 */
require_once 'Mage/Sales/Model/Observer.php';
class Name_Sales_Model_Observer extends Mage_Sales_Model_Observer {
 
    public function sendInvoiceEmail($observer) {
            $invoice = $observer->getEvent ()->getInvoice ();
 
            switch ($invoice->getState ()) {
                case Mage_Sales_Model_Order_Invoice::STATE_PAID :
 
		try {
			// Save first time the invoice to get an id and send the invoice to the customer with the correct id
			$invoice->save ();
			Mage::log ('Email sent to the customer by the Name/sales/observer - Invoice number ' . $invoice->getIncrementId(), Zend_Log::DEBUG );
			$invoice->sendEmail ();
			$invoice->setEmailSent ( true );
			// Save a second time to save the EmailSent value
			$invoice->save ();
		} catch ( Exception $e ) {
			$session = Mage::getSingleton ( 'core/session' );
			$exception = new Exception ( Mage::helper('Sales')->__('Error during the email sending.'), 0 );
			$session->addException ( $exception, Mage::helper('Sales')->__('Error to send invoice email. Please, contact the website administrator.') );
		}
            }
        return $this;
    }
}

/app/etc/modules/Name_All.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Name_Sales>
            <active>true</active>
            <codePool>local</codePool>
        </Name_Sales>
    </modules>
</config>

Dans Paypal Express, la ligne qui nous intéresse se situe dans le controller /app/code/core/Mage/Paypal/controllers/expressController.php, dans la méthode updateorderAction(){} ligne où ce code se situe: $invoice->register()->capture(); ajouté $invoice->sendEmail(); ou utiliser cet observer (non testé).

Pour plus d’informations concernant l’utilisation des évènements, je vous invite à visiter le site de Magento qui en fait une bonne explication: Customizing Magento using Event-Observer Method