Chaque groupe d'« éléments de ligne » dans une feuille de calcul produit un e-mail avec un PDF joint.

Des lignes adjacentes dans la feuille de calcul avec la même adresse e-mail sont utilisées pour produire une seule facture PDF avec des éléments de ligne. Il s'agit d'un exemple avancé où la méthode « lignes vers e-mail » est « Une ou plusieurs lignes génèrent un e-mail ». Cet exemple illustre également l'utilisation d'un fichier HTML comme modèle.

Les modèles HTML sont idéalement utilisés pour cela, car ils peuvent utiliser JavaScript ou le langage de modélisation Liquid pour formater le document.

Étape 1. Créer un fichier CSV ou une feuille de calcul Excel

La feuille de calcul a des champs de fusion comme en-têtes de colonnes. Chaque ligne doit avoir une adresse e-mail. Créez des lignes consécutives avec la même adresse e-mail pour chaque élément de ligne que vous souhaitez dans le PDF.

Dans cet exemple, 3 e-mails seront envoyés, chacun avec une seule pièce jointe.

  • Le premier aura 5 éléments de ligne
  • Le deuxième aura 4 éléments de ligne
  • Le troisième aura 1 élément de ligne

Étape 2. Créer un HTML avec JavaScript.

pdfMachine merge s'installe avec des profils prêts à l'emploi pour vous aider à démarrer.
Cet exemple est « Test Profile - HTML template with line items »

Entourez les champs de fusion qui ne doivent pas être utilisés comme éléments de ligne avec {{ }}. Les noms des champs de fusion doivent correspondre exactement aux noms de colonnes dans la source de données. Les champs de fusion peuvent être formatés à l'aide du langage de modélisation Liquid.

<tr>
   <td>Invoice Number</td>
   <td>{{invoice_id}}</td>
</tr>

Créez le code JavaScript pour itérer sur les lignes groupées (comme indiqué ci-dessous).

Exemple JavaScript

Votre modèle HTML doit contenir la balise spéciale suivante :

var data = {{json_here}};

Lorsque traités par les modèles HTML pdfMachine merge, ceux-ci seront remplacés par une chaîne JSON (JavaScript Object Notation) contenant toutes les données pour les lignes groupées. Cela vous permet d'écrire du JavaScript qui itère à travers les données, pour le calcul ou le rendu. La balise « json_here » ressemblera à :

                                
                                var data = [
{"email": "[email protected]","customer": "Acme Corp","invoice_id":223,"invoice_date": "23/01/2011 12:00:00 AM","item": "blue widget","unit_cost":23,"quantity":4,"amt_due":391},
{"email": "[email protected]","customer": "Acme Corp","invoice_id":223,"invoice_date": "23/01/2011 12:00:00 AM","item": "red widget","unit_cost":21,"quantity":2,"amt_due":391},
];

JavaScript peut ensuite être utilisé pour itérer à travers le tableau de données afin de créer du HTML pour afficher les éléments de ligne.

function generateLineItems()
{
   var html = "<table class='hor-minimalist-b'><thead><tr><th>Item</th><th>Quantity</th><th>Unit Cost</th><th>Price</th></tr></thead>\
   <tfoot><tr><td></td><td></td><td></td><td class='amountDue'>${{amt_due}}</td></tr></tfoot><tbody>";

   for (var i = 0; i < data.length; i++)
   {
      var ob = data[i];
      html += "<tr><td>" +
      ob.item + "</td><td>" +
      ob.quantity + "</td><td>" +
      ob.unit_cost + "</td><td>" +
      "$" + ob.quantity*ob.unit_cost + "</td></tr>";
   }
   html += "</tbody></table>";

   document.getElementById("lineItemsTable").innerHTML =html;
}
        

Lorsque vous utilisez des modèles HTML, n'oubliez pas de configurer votre mise en page dans Internet Explorer pour des éléments tels que le format de papier et l'orientation, les en-têtes, les pieds de page, les marges, l'impression de fond et l'ajustement à la page. Vous devez également configurer vos préférences d'impression Broadgun pdfMachine. Cet exemple doit être configuré comme :

 

Étape 3. Définir la « méthode lignes vers e-mails » sur « Une ou plusieurs lignes génèrent un e-mail ».