Plugin, beproefd en in gebruik (check feb 2019)

Ideal plugin voor events manager pro

installatie

Dit is een premium plugin, te koop incl installatie op https://www.ideal-checkout.nl/plug-ins/premium-plugins/wordpress-event-manager-pro voor 150 euro excl. BTW (maart 2014)

Gebruik de wizard voor aanpassing van de instellingen. Hiermee kan je instellen naar welke pagina gesprongen moet worden na:

  • een geslaagde betaling
  • een afgebroken betaling
  • een geannuleerde betaling

De configuratie knip/plak je daarna in je configuratiebestand (/idealcheckout/configuration/ideal.php)

Ook moet je bestanden toevoegen aan deze submap: wp-content/plugins/events-manager-pro/add-ons/gateways

En moet je het bestand gateways.php aanpassen. Een stukje code op het einde toevoegen: de laatste 2 regels

function emp_register_gateway($gateway, $class) { EM_Gateways::register_gateway($gateway, $class); } //compatibility, use EM_Gateways directly  }    include('gateway.php');  include('gateways.transactions.php');  include('gateway.paypal.php');  include('gateway.offline.php');  include('gateway.authorize.aim.php');  // Load iDEAL Checkout gateways  include('idealcheckout.inc.php');  
[collapse]
automatische factuur na goedkeuring reservering

Daarna zelf met hulp van deskundige Sabine een factuurfaciliteit gebouwd. zie http://www.web-development-blog.com/archives/create-pdf-documents-online-with-tcpdf/
Zodra de beheerder de reservering bevestigt, wordt de factuur verstuurd als pdf.
Ook als het een reservering was waarbij geen betaling plaatsvond (coupon code: korting 100%).
Die factuur ziet er ietsje anders uit.

Aanwijzingen:

  • Maak een map “facturen” aan in wp-content/uploads; geef het 777 rechten. Hier komen de facturen in terecht. Zelf af en toe eens opruimen.
  • In evenementen forms editor: maak een bookingsform met de gewenste velden. NB: let erop dat je onder Type iets kiest uit het rijtje Registration fields ofwel uit custom registration fields.
[collapse]
Voeg deze functie toe aan functions.php uit je child theme
add_filter( 'wp_mail', 'my_wp_mail_filter' );  function my_wp_mail_filter( $args ) {        global $EM_Event;      $bestandsNaam = null;      $y = '';      $args['headers'] = 'Bcc: <events@dnaindebouw.nl>';        foreach($EM_Event->get_bookings()->bookings as $EM_Booking) {            /* voor testing purposes:          $x = get_object_vars($EM_Booking);          foreach( $x as $k => $v ) {              $y .= $k.' is een ';              if( gettype($v) == 'string' || gettype($v) == 'integer' ) {                  $y .= $v. ' ('.  strtoupper(gettype($v)).')';              } else {                  $y .= gettype($v);              }              $y .= '  ';          }          $y .= '  =====================  ';           *           */            // vergelijk het booking_id in het object met dat in de url en check dat het een bevestiging is          if( $EM_Booking->booking_id == $_GET['booking_id'] && ( isset($_GET['action']) && $_GET['action'] === 'bookings_approve' ) ) {            //begin Karla  	$personObj = $EM_Booking->person;          $userFirstname = $personObj->first_name;          $userLastname  = $personObj->last_name;          $userDispname  = $EM_Booking->person->display_name;  		//$user_info = get_userdata($EM_Person->ID);  		$user_info = get_userdata($EM_Booking->person->ID);                // maak een eigen array met alle informatie er in         $aAlleInfo = array('factuurnr' => $EM_Booking->booking_id, 'booking_spaces' => $EM_Booking->booking_spaces, 'booking_price' => $EM_Booking->booking_price,  	   'event' => $EM_Booking->event, 'persoon' => $EM_Booking->person,  	   'organisatie' => $EM_Booking->person->about,  	   'voornaam' => $EM_Booking->person->first_name,  	   'naam' => $EM_Booking->person->dbem_voorletter_en_achternaam,  	   'achternaam' => $EM_Booking->person->user_name,  	   'adres' => $EM_Booking->person->dbem_address,  	   'postcode' => $EM_Booking->person->dbem_zip,  	   'stad' => $EM_Booking->person->dbem_city,  	   'tel' => $EM_Booking->person->phone,  	   'tickets' => $EM_Booking->tickets->tickets );      //var_dump($aAlleInfo);              // include het script dat de pdf moet genereren              include_once( get_stylesheet_directory() . '/includes/generateInvoice.php' );              // genereer PDF en geef filenaam terug zodat we hem kunnen attachen aan de mail              $oPdf = new clsFactuurPDF( $aAlleInfo );              $bestandsNaam = $oPdf->generatePDF();          }        }        $new_wp_mail = array(              'to'          => $args['to'],              'subject'     => $args['subject'],              'message'     => $args['message'],              'headers'     => $args['headers']      );        if( is_file($bestandsNaam ) ) {          $new_wp_mail['attachments'] = array($bestandsNaam);      }        //exit;      return $new_wp_mail;    }  

Nog 2 filters toegevoegd: deze zorgen ervoor dat de afzender in orde is; die veranderde ineens in WordPress toen ik een BCC instelde:

  add_filter( 'wp_mail_from', function( $email ) {  	return 'x@y.com';  });    add_filter( 'wp_mail_from_name', function( $name ) {  	return 'naam bedrijf';  });
[collapse]
Bij testen in submap

Let op dat je dan bij pad kiest voor:

  $this->pdfPad = $_SERVER['DOCUMENT_ROOT'].'naamsubmap/wp-content/uploads/facturen/';

Want dit werkt niet, geeft foutmelding!

		//$this->pdfPad = 'doeminnaam/naamsubmap/wp-content/uploads/facturen/';
[collapse]
pdf bestanden in map includes plaatsen
  • Maak een map includes in je child theme en plaats hierin de bestanden voor het maken van een pdf. Gratis te downloaden op http://www.tcpdf.org/
    De map heet pctdf; ik hernoemde hem tot pdfgenerator. In de submap config staat het bestandje tcpdf_config.php. Hier kan je lettertype, grootte, marges ed instellen.
  • Maak een bestandje generateInvoice.php en plaats ook dat in de map includes.
  • NB: bij grote update van events manager pro (als het gaat via downloaden bestand) moet je zelf de benodigde bestanden weer toevoegen:
[collapse]
Bij updates van events manager pro

Zoek met ftp programma naar bestand gateways.php in /wp-content/plugins/events-manager-pro/add-ons/gateways.
Voeg dit stukje code op het einde toe:

  // Load iDEAL Checkout gateways  include('idealcheckout.inc.php');  

Ook moet je de ideal-bestanden toevoegen aan deze submap: wp-content/plugins/events-manager-pro/add-ons/gateways

[collapse]
aanpassing Idealcheckout

De laatste aanpassing dd medio september verhielp één probleem, maar schepte een ander:
Verhielp: nu moeten mensen die betaalden voor een evenement ook handmatig worden goedgekeurd. Dat gebeurde eerst niet, met als gevolg dat ons facturen systeem niet meer werkte. Want dat werd juist geactiveerd bij het “goedkeuren” van een boeking.
Nieuw probleem: Bij boeking kregen ze direct een melding dat hun boeking was geaccepteerd, maar bovendien dat het een gratis boeking was.

Ik heb dit gerapporteerd aan ideal checkout en het intussen zelf verholpen: in domeinnaam/wp-content/plugins/events-manager-pro/add-ons/gateways/gateway.idealcheckoutideal.php
Regel 68 veranderd in set_status(1, false); veranderd in set_status(0, false);

  //$EM_Booking->set_status(1, false);   $EM_Booking->set_status(0, false);

Dit zorgt ervoor dat een boeking altijd handmatig moet worden goedgekeurd.

[collapse]

Vergelijkbaar: