Aktionskalender
Doku: https://source.azeero.at/Joniras/azeero.group/wikis/n-m-verteilpunkt
- Es soll einen Aktionskalender geben, bitte dazu eine Oberfläche (bzw. gibts sowas in angular vlt. schon??)
CREATE TABLE action_calender (
seq_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
fperson_contact_seq_id INT(11) NOT NULL,
actiontype VARCHAR(100) NOT NULL, -- 'CollectiveOrderMail'
actionparams VARCHAR(2000), -- 'CollectiveOrderMail:{'key':collective_distribution.seq_id}'
last_actioninfo VARCHAR(2000),
last_actiontime TIMESTAMP,
FOREIGN KEY (fperson_contact_seq_id) REFERENCES person(seq_id)
);
/* action_type z.B.
https://source.azeero.at/Joniras/azeero.group/wikis/n-m-verteilpunkt "Bestellschluss am 17.10"
'CollectiveOrderMail' wichtig: Verteilpunkt angeben {'key':collective_distribution.seq_id}
'CollectiveDeliveryMail' wichtig: Verteilpunkt angeben {'key':collective_distribution.seq_id} und Abholinfo z.B. Tag darauf am Hauptverteilpunkt
weitere folgen wie:
'DistributionFee' Monatliche Einbuchung der Kosten beim Subverteilpunktbetreiber https://source.azeero.at/Joniras/azeero.group/issues/40/
regelmäßige Infos über Neuigkeiten, etc.
Subfunktionen in https://source.azeero.at/Joniras/azeero.communication/blob/master/mail_senderV1.0/spooler.js
schedule.scheduleJob -> wie sendAllMails() -> searchActionType()
*/
-- einmalige Zeiten
CREATE TABLE action_calender_times (
seq_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
fperson_contact_seq_id INT(11) NOT NULL,
faction_calender_seq_id INT(11) NOT NULL,
actiontime TIMESTAMP,
FOREIGN KEY (fperson_contact_seq_id) REFERENCES person(seq_id),
FOREIGN KEY (faction_calender_seq_id) REFERENCES action_calender(seq_id)
);
-- action_calender_times, können beliebig viele sein!
// wiederholte Zeiten
CREATE TABLE action_calender_days (
seq_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
fperson_contact_seq_id INT(11) NOT NULL,
faction_calender_seq_id INT(11) NOT NULL,
calendertype VARCHAR(10),
calendervalue1 INT(11),
calendervalue2 INT(11),
FOREIGN KEY (fperson_contact_seq_id) REFERENCES person(seq_id),
FOREIGN KEY (faction_calender_seq_id) REFERENCES action_calender(seq_id)
);
// action_calender_days, können beliebig viele sein!
// calendertype
//AD..calendervalue1 Tage nach letztem Aufruf
//MD..jedes Monat am calendervalue1 ten Tag (1..31) - wird implementiert
//WD..jede Woche am calendervalue1 ten Tag (1 Montag.. 7 Sonntag)
//MWD..jedes Monat in der calendervalue1 ten Woche (1..5) am calendervalue2 ten Tag
// ausfalls und ersatz tage - feiertage
CREATE TABLE action_calender_days_excpetion (
seq_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
fperson_contact_seq_id INT(11) NOT NULL,
faction_calender_seq_id INT(11) NOT NULL,
actiontime_exception DATE,
actiontime_replacement DATE,
FOREIGN KEY (fperson_contact_seq_id) REFERENCES person(seq_id),
FOREIGN KEY (faction_calender_seq_id) REFERENCES action_calender(seq_id)
);
// actiontime_replacement optional, sonst fällt der Tag aus
- Wie beim Mailing gibt es einen Hintergrundtask (ich werde den Mailtask dazu adaptieren) der periodisch diese Tabellen durchgeht und entsprechende Aktionen auslöst - eben auch die Mails ..)