Je vous invite à visualiser d’abord la partie 1 si vous ne l’avez pas encore fait
1 – Ajouter un attribut produit dans la facture
Il arrive que vous ajoutez certains attributs à vos produits que vous souhaitez afficher dans votre facture exemple : code barre (ean13) je vous explique comment procéder pour le faire
app/code/local/Mage/Sales/Model/Order/Pdf/Invoice.php
Commençons par ajouter l’entête cherchez ce code deux fois dans le fichier (lignes 88 et 151 pour Magento 1.7.2)
$page->drawText(Mage::helper('sales')->__('SKU'), 255, $this->y, 'UTF-8');
Ajouter après (Changez EAN13 par le nom que vous souhaitez)
$page->drawText(Mage::helper('sales')->__('EAN13'), 310, $this->y, 'UTF-8');
Ajoutons maintenant l’attribut du produit pour tout les produits (on va le mettre après la colonne SKU)
app/code/local/Mage/Sales/Model/Order/Pdf/Items/Invoice/Default.php
Cherchez (ligne 55)
$lines[0][] = array(
'text' => Mage::helper('core/string')->str_split($this->getSku($item), 25),
'feed' => 255
);
Si vous allez ajouter un attribut standard à magento présent par défaut (par exemple le poids) ajouter
$lines[0][] = array(
'text' => $item->getWeight(),
'feed' => 310
);
Par contre s’il s’agit d’un attribut que vous avez créer il faut charger le produit de nouveau { remplacer getean_13() par getCodeDeVotreAttribut() }
$Product = Mage::getModel('catalog/product')->load($item->getProductId());
$lines[0][] = array(
'text' => $Product->getean_13(),
'feed' => 320
);
2 – Ajouter un attribut client
On va ajouter un attribut administrable de la fiche client en bas de la facture juste en dessous du montant globale
app/code/local/Mage/Sales/Model/Order/Pdf/Invoice.php
Chercher
$page = $this->insertTotals($page, $invoice);
Ajouter après
$attr =Mage::getModel('customer/customer')->load($order->getCustomerId())->getPrefix();
if($attr!=''){
$page->drawText('Conditions de règlement:', 416, $this->y, 'UTF-8');
$this->y -=15;
$page->drawText($attr, 416, $this->y, 'UTF-8');
}
Exemples d’attribut que vous pouvez utilisez
[entity_id] => 295
[entity_type_id] => 1
[attribute_set_id] => 0
[website_id] => 1
[email] => xxx@gml.com
[group_id] => 5
[increment_id] => 000000287
[store_id] => 0
[created_at] => 2012-08-30 13:46:32
[updated_at] => 2012-08-31 07:22:08
[is_active] => 1
[created_in] => Admin [prefix] =>
[firstname] => xxx
[middlename] =>
[lastname] => yyy
[suffix] =>
[password_hash] => ZZZ:4h
[taxvat] =>
[default_billing] => 314
[default_shipping] => 314
3 – Ajouter du texte dans le footer des factures de magento (mentions légales, numéro,adresse …)
app/code/local/Mage/Sales/Model/Order/Pdf/Abstract.php
Ajouter la fonction suivante n’importe ou dans le fichier (bien-sur pas à l’intérieur d’une autre fonction!) et modifiez le texte dans les drawtext($text, $x, $y) comme vous voulez
protected function insertFooterText(&$page, $store = null){
$page->setFillColor(new Zend_Pdf_Color_RGB(0.93, 0.92, 0.92));
$page->setLineColor(new Zend_Pdf_Color_GrayScale(0.5));
$page->setLineWidth(0.5);
$posfoot1 = 60;
$page->drawRectangle(20, $posfoot1, 570, $posfoot1 - 55);
$posfoot1 +=10;
$page->setFillColor(new Zend_Pdf_Color_GrayScale(0));
$this->_setFontRegular($page);
$posfoot = 50;
$page->drawText('(*) Remise client :', 30, $posfoot, 'UTF-8');
$page->drawText('Le prix unitaire net HT affiché tient compte de la remise accordée.', 30, $posfoot-10, 'UTF-8');
$page->drawText('Réserve de propriété :', 30, $posfoot-20, 'UTF-8');
$page->drawText("Le transfert de propriété des marchandises est subordonné au paiement complet du prix et de ses accessoires.", 30, $posfoot-30, 'UTF-8');
$page->drawText("Cependant, le client prendra en charge dès la livraison, les risques de perte et de détérioration des produits vendus, ainsi que les dommages qu'elles pourraient occasionner.", 30, $posfoot-40, 'UTF-8');
$posfoot -=10;
}
Editez app/code/local/Mage/Sales/Model/Order/Pdf/Invoice.php
et ajoutez juste après la ligne
$page = $this->insertTotals($page, $invoice); $this->insertFooterText($page);