> wie genau die Quoten gezählt werden
Der statistic() Befehl zählt standardmäßig nur abgeschlossene Fälle, vgl.
https://www.soscisurvey.de/help/doku.php/de:create:functions:statistic
Falls Sie das noch genauer steuern möchten, könnten Sie das put('SD29_01', getLanguage()); an eine andere Stelle setzen, mehr dazu unten.
> Wenn die zurückgestellten Personen den Hauptfragebogen über eine neue Serienmail aufrufen (ID 10 statt ID1), benötigen sie vermutlich eigene Erinnerungen
Über die Funktion panelData() können Sie ermitteln, ob jemand per Serienmail teilgenommen hat und wenn ja, über welche. Eventuell reicht das schon, um den Hauptfragebogen geeignet zu variieren.
> Wenn die zurückgestellten Personen den Hauptfragebogen über eine neue Serienmail aufrufen (ID 10 statt ID1), benötigen sie vermutlich eigene Erinnerungen
Ich sehe spontan keine Notwendigkeit, bei den Erinnerungsmails zu differenzieren. Eventuell müssen Sie nur den Zeitpunkt anpassen, wann diese verschickt werden sollen.
> Und es sieht so aus als würden die Personen, die direkt zum Hauptfragebogen gelangen, nicht korrekt behandelt.
Wenn Sie mittels goToQuestionnaire() den aktuellen Fragebogen verlassen, wird der Fall nicht als abgeschlossen markiert, das ist korrekt. Sie können aber folgende Zeile ergänzen, um zumindest den korrekten Status zu vermerken:
setStatus('complete');
Und ja, für die statistic()-Funktion ist das problematisch. Auf welcher Seite des Fragebogens steht denn Ihr Quotestopp? Vermutlich müssen Sie in statistic() noch angeben, dass auch unvollständige Fälle gezählt werden sollen.
Und wie kommen die Befragten denn zu diesem ersten Fragebogen? Nachdem Sie mailSchedule(false,...) verwenden, vermute ich, dass sie bereits mit einem personalisierten Link dorthin gelangen. Das würde aber auch bedeuten, dass sie bei mehrfachem Aufruf des Links immer im selben Fall landen und mehrfache Aufrufe daher für die statistic()-Funktion unproblematisch wären.
> Zum anderen kann keine Information aus $info['mailing']; ausgelesen werden.
Sprechen wir von panelData()? Wenn ja, dann lassen Sie sich doch mal ein debug($info) ausgeben. Setzen Sie im Adresseintrag das Häkchen, dass es sich um einen Test-Eintrag handelt (vor dem Erzeugen des Links/Versand der Serienmail), damit Sie Debug-Informationen sehen.