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);             Â
    Â
}Â
Â