U bent hier

Voor een klant had ik de uitdaging het volgende te maken.

De klant krijgt per mail opdrachten binnen die dienen te worden bevestigd per mail en een PDF bijlage waarin de opdracht wordt bevestigd.
Hiervoor dienen meerdere handeling te worden verricht

  1. Word document maken en opslaan als PDF
  2. Mail opstellen en PDF bijlage mee sturen
  3. Online het logboek updaten en PDF bijlage uploaden

De wens is om dit alles te doen via het online logboek systeem

Dit betekend dat het volgende gedaan dient te worden:

  1. Node aanmaken en opslaan
  2. PDF opslaan met huisstijl en standaard tekst
  3. Mail versturen naar opdrachtgever met bevestigingstekst en PDF als bijlage

De uitdaging was om slechts met enkele klikjes de node aan te maken en de teksten te laten genereren door het systeem,

Het recept

De benodigde modules om dit te kunnen bouwen zijn:

  • Views
  • Views PDF
  • Rules
  • PHP

 

1: View aanmaken

  • Met Views en Views PDF maak je een PDF pagina aan.
  • Filter het content type dat je wilt gebruiken
  • Zet het contextual filter in op content:NID , standaard waarde en onbewerkte waarde uit URL.
  • Stel bij PDF Template Settings de achtergrond in.

2.1: Rules, opslaan van PDF op je server

maak een nieuwe regel met als voorwaarde na opslaan van Node
maak een actie: Save PDF as file on server, kies de net gemaakte view en zet views arguments op [node:nid].
Vul dan het pad in waar je het PDF bestand wilt opslaan path/[node:title]  

- opslaan -
2.2 Rules versturen van mail met PDF

Maak een nieuwe actie Send HTML e-mail en vul de gegevens in. Let op bij de bijlagen. Geef hier het pad op[ dat je net hebt gemaakt inclusief pdf extensie: path/[node:title].pdf
- opslaan -

2.3 Rules  PDF opslaan in een filefield

Nieuwe actie Eigen PHP code uitvoeren

global $user;
$uid = $user->uid;
$nid = $node->nid;

$source_node = node_load($nid);
$filename = '[node:nid].pdf'; //your specific filename
$dir = 'public://'.$filename; //path to specific file with name
$file_size = filesize($dir);
$source_node->type = 'node_type'; //EntityMalformedException when not active

//New file object
$file = new stdClass;
//$file->uid = $source_node->uid;
$file->uid = $uid;
$file->filename = $filename; //your file name;
$file->uri = $dir;
$file->filemime = file_get_mimetype($dir);
// Make it permanent, otherwise it will get deleted later.
$file->status = FILE_STATUS_PERMANENT;
// Save file object to make it a 'managed file'.
$file_obj = file_copy($file, 'public://', FILE_EXISTS_REPLACE);
$file->type = 'document';

$source_node->field_custom['und'][0] = array(
 'fid'  => $file_obj->fid,
 'uid'  => $file_obj->uid,
 'filename'  => $file_obj->filename,
 'uri'  => $file_obj->uri,
 'filemime'  => $file_obj->filemime,
 'filesize'  => $file_obj->filesize,
 'status'  => 1,
 'display'  => 1,
 'description'  => '',
 );

node_save($source_node);
file_usage_add($file_obj, 'file', 'node', $source_node->nid);

En Voila. Je hebt nu een node aangemaakt waarna ene mail wordt verstuurd met een PDF bijlage en deze bijlage wordt en een filefield in je node opgeslagen

 

Latest Comments

  • afbeelding van globecom
    globecom

    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo invent

    vrijdag, 16 mei 2014 11:09
  • afbeelding van globecom
    globecom

    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo invent

    woensdag, 4 december 2013 15:12

Onze klanten

From the blog

afbeelding van globecom
afbeelding van globecom

Changing next number in a Drupal serial field

After searching for 2 days on Drupal.org without finding a good way to change the starting point of a serial field I

Read more...
afbeelding van globecom

Automatisch PDF maken, mailen en toevoegen als bijlage

Voor een klant had ik de uitdaging het volgende te maken.

Read more...

Neem contact op

  • Globecom
          Schoolstraat 245
          7606EM
          Almelo
  • +31 (0)634924795
  • info@globecom.nl

Laatste Tweets

Latest Shots