Bienvenue, Invité
Merci de vous identifier ou de vous inscrire.    Mot de passe perdu?

Envoie automatique de la facture
(1 lecteur(s)) (1) Invité(s)
Aller en basPage: 123
SUJET:

Envoie automatique de la facture

#44266
sunburn
Expert Boarder
Messages: 117
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:Envoi automatique de la facture

Il y a 2 Années, 3 Mois
Karma: 1  
Quelqu'un a une idée ?
 
L'administrateur a désactivé l'accès public en écriture.
#44357
sunburn
Expert Boarder
Messages: 117
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:Envoi automatique de la facture

Il y a 2 Années, 3 Mois
Karma: 1  
Pour étayer, je cherche à envoyer l'email de facture de manière automatique après un paiement via un module ATOS (entre autre). La facture est bien générée automatiquement mais l'email de la facture n'est pas envoyé au client.
 
L'administrateur a désactivé l'accès public en écriture.
#44388
Anthony Charrex
Gold Boarder
Messages: 251
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Genève, Suisse

Re:Envoi automatique de la facture

Il y a 2 Années, 3 Mois
Karma: 6  
Code :


protected function saveInvoice(Mage_Sales_Model_Order $order)
{
  if ($order->canInvoice()) 
  {
    $convertor = Mage::getModel('sales/convert_order');
            
    $invoice = $convertor->toInvoice($order);
                       
    foreach ($order->getAllItems() as $orderItem) 
    {
      if (!$orderItem->getQtyToInvoice()) 
      {
        continue;
      }
   
      $item = $convertor->itemToInvoiceItem($orderItem);
      $item->setQty($orderItem->getQtyToInvoice());
      $invoice->addItem($item);
    }
   
    $invoice->collectTotals();
    $invoice->register();
                      
    $invoice->setEmailSent(true);
 
    $invoice->getOrder()->setIsInProcess(true);
 
    Mage::getModel('core/resource_transaction')
      ->addObject($invoice)
      ->addObject($invoice->getOrder())
      ->save();
 
    $invoice->sendEmail(true, '');
 
    $order->addStatusToHistory(
    Mage_Sales_Model_Order::STATE_PROCESSING,
    Mage::helper('atos')->__('Invoice %s was created', $invoice->getIncrementId())
    );
  }

  return false;
}



Source : www.fontis.com.au/blog/magento/resending-magento-order-emails
 
Dernière édition: 07/02/11 à  09:12 Par Anthony Charrex.
L'administrateur a désactivé l'accès public en écriture.
#44406
sunburn
Expert Boarder
Messages: 117
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:Envoi automatique de la facture

Il y a 2 Années, 3 Mois
Karma: 1  
Merci.

Possible d'avoir un petit commentaire sur les modifications ?

En l'occurence :
- pourquoi passer "setEmailSent(true)" ? alors que le mail n'est pas encore envoyé.
- pourquoi faire un "setIsInProcess(true)" ? S'agit de passer la commande au statut "en cours de traitement" ?
- pourquoi faire un "$invoice->sendEmail(true, '');" après la sauvegarde (contrairement à ce qui était proposé dans ton post précédent) ?

Juste pour bien comprendre l'utilité de ces 3 points avec l'envoi de l'email, et comprendre si setIsInProcess est réellement utile, et si l'ordre d'envoi + de statut d'envoi peut être interverti (dans l'ordre logique des choses : envoi + mise à jour du statut dans la foulée).
 
L'administrateur a désactivé l'accès public en écriture.
#44473
sunburn
Expert Boarder
Messages: 117
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:Envoi automatique de la facture

Il y a 2 Années, 3 Mois
Karma: 1  
Après test, ça fonctionne bien, merci Anthony.
Toutefois je n'ai pas utilisé la ligne
Code :


$invoice->getOrder()->setIsInProcess(true);


ne voyant pas son utilité en soit (puisque le statut est à définir dans la configuration du module de paiement, forcer ici son passage à un état spécifique va à l'encontre de la configuration je pense, non ?)
En tout cas merci.
 
Dernière édition: 08/02/11 à  06:02 Par sunburn.
L'administrateur a désactivé l'accès public en écriture.
#44496
Anthony Charrex
Gold Boarder
Messages: 251
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Genève, Suisse

Re:Envoi automatique de la facture

Il y a 2 Années, 3 Mois
Karma: 6  
Je t'avoue ne pas avoir eu le temps de tester cela, mais il me semble que le flag "is_in_process" permet à Magento de distinguer une nouvelle commande (avant de la basculer du statut "New" au statut "Processing").

Pour plus de détails : www.google.com ;)
 
Dernière édition: 08/02/11 à  07:53 Par Anthony Charrex.
L'administrateur a désactivé l'accès public en écriture.
#44502
sunburn
Expert Boarder
Messages: 117
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:Envoi automatique de la facture

Il y a 2 Années, 3 Mois
Karma: 1  
Google n'aide malheureusement pas beaucoup à ce niveau là. On retrouve le même code que tu as proposé dans des articles en ligne mais sans plus.
A voir.
 
L'administrateur a désactivé l'accès public en écriture.
#44504
Anthony Charrex
Gold Boarder
Messages: 251
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Genève, Suisse

Re:Envoi automatique de la facture

Il y a 2 Années, 3 Mois
Karma: 6  
Avant d'enregistrer une commande, Magento contrôle si le flag "is_in_process" est à TRUE et si son état est à "NEW". Si c'est le cas, la commande sera basculée à l'état "PROCESSING".

La définition de ce flag est donc à priori recommandée.

Après ça reste de la théorie... quelques tests pratiques te permettront sans doute de voir la différence entre la configuration à TRUE ou à FALSE de cette valeur ;)
 
L'administrateur a désactivé l'accès public en écriture.
Revenir en hautPage: 123
Modérateur: admin, Gabriiiel, CaPiT