Serienvorlagen/Warteschlange automatisch abarbeiten (Cronjob)

Beispiel für die automatische Generierung mit anschließendem Versand auf Basis der gSales 2 API.

Damit die E-Mails versendet werden können, müssen diese beim Generieren der Rechnungen aus der Warteschlange natürlich im Mailspool landen. Damit dies geschieht, muss beim verknüpften Kunden die Option "Rechnugen automatisch spoolen" aktiviert sein.

$strAPIKey = 'xxxxxxxxxxxxxxxxxxxxx';  $strApiWsdlUrl = 'http://meinedomain.de/gsales2/api/api.php?wsdl';  ini_set("soap.wsdl_cache_enabled", "0");  $client = new soapclient($strApiWsdlUrl);   // fällige serienrechnungen verarbeiten  $arrCount = $client->processContractsRepayable($strAPIKey);  // gab es fällige serienrechnungen?  if ($arrCount['result'] > 0){      // dann gibt es nun einträge in der warteschlange -> aus diesen einträgen rechnungen generieren      $arrayOfInvoices = $client->createInvoicesFromQueueForAll($strAPIKey);      // wenn beim Kunden "Rechnungen automatisch spoolen" gecheckt ist landen die Rechnungen auch im Mailspool      // diese Rechnungen anhand der Verknüpfung (rechnungs-id und dem bereich identifier "subinvoice") ermitteln und für den Versand freigeben      foreach ((array)$arrayOfInvoices['result'] as $key => $objInvoice){          $arrFilterMailspool[] = array('field'=>'sub_recordset_id', 'operator'=>'is', 'value'=>$objInvoice->base->id);          $arrFilterMailspool[] = array('field'=>'sub', 'operator'=>'is', 'value'=>'subinvoice');          $arrSortMailspool = array('field'=>'created', 'direction'=>'asc');          $arrMailspoolEntries = $client->getMailspoolEntries($strAPIKey, $arrFilterMailspool, $arrSortMailspool,999,0);          // eintrag im mailspool gefunden?          if (isset($arrMailspoolEntries['result']['0'])){              //anhand der id des ermittelten mailspool eintrags den eintrag für den versand freigeben              $client->setMailspoolSendApprovalForEntry($strAPIKey, $arrMailspoolEntries['result']['0']->id);              // zurücksetzen der filter für den nächsten durchlauf              unset($arrFilterMailspool, $arrSortMailspool, $arrMailspoolEntries);          }      }      // mailspool versenden (achtung: versendet alle freigegebenen mails im spool)      $client->sendMailspool($strAPIKey);