Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Funktion wf_timer()
- * Return: Long
- * Arguments: (None)
- */
- // Wird folgendermaßen aus dem timer() Event aufgerufen:
- // DK: Test ob Cron-Tabelle Einträge enthält
- //SELECT FIRST("it_cron"."bez")
- //INTO :ls_taskplaner
- //FROM "it_cron"
- //USING sqlca;
- // DK: Wenn nicht wird der neue Taskplaner genutzt
- //IF sqlca.sqlcode = 100 THEN
- //wf_timer()
- //RETURN 0
- //END IF
- /***
- * Prozesse Zeit gesteuert ausführen
- */
- i_counter++
- st_timer.text = "Timer-Event um: " + String(now()) + " Uhr"
- // DK: Falls ein Prozess bereits aktiv ist herausspringen
- IF processactive THEN
- st_timer.text = "Prozess aktiv um " + String(now()) + " Uhr"
- RETURN 0
- END IF
- DECLARE c_task CURSOR FOR
- SELECT
- /* Tasks */
- COALESCE("it_taskplaner_task"."lfdnr", 0),
- COALESCE("it_taskplaner_task"."text", ''),
- COALESCE("it_taskplaner_task"."status", 20),
- COALESCE("it_taskplaner_task"."kommando_lfdnr", 0),
- /* Zeiten */
- COALESCE("it_taskplaner_zeit"."lfdnr", 0),
- COALESCE("it_taskplaner_zeit"."typ", 10),
- COALESCE("it_taskplaner_zeit"."status", 20),
- COALESCE("it_taskplaner_zeit"."startdatum", TODAY()),
- COALESCE("it_taskplaner_zeit"."startzeit", NOW()),
- COALESCE("it_taskplaner_zeit"."stopzeit", NOW()),
- COALESCE("it_taskplaner_zeit"."intervall", 0),
- COALESCE("it_taskplaner_zeit"."einheit_lfdnr", 0),
- COALESCE("it_taskplaner_zeit"."argument", ''),
- COALESCE("it_taskplaner_zeit"."sprache", 0)
- FROM "it_taskplaner_task",
- "it_taskplaner_zeit"
- WHERE "it_taskplaner_task"."status" = 10 /* 10 = aktiv, 20 = inaktiv */
- AND "it_taskplaner_task"."lfdnr" = "it_taskplaner_zeit"."task_lfdnr"
- ORDER BY "it_taskplaner_zeit"."startdatum", "it_taskplaner_zeit"."startzeit"
- USING sqlcur;
- OPEN c_task ;
- IF sqlcur.sqlcode <> 0 then
- Error.of_Intern('w_it_batch','Fehler beim Aktualisieren der Tabelle it_taskplaner_task. (Cursor) ' + String(sqlcur.sqlcode))
- END IF
- mle_status.text = "Prozesscheck " + String( i_counter ) + "~r~n"
- /***
- * DK: In allen Einträgen in dieser Minute prüfen
- * ob für aktuelle Zeit ein Auftrag vorliegt
- */
- STRING ls_task_text, ls_zeit_argument
- LONG ll_task_lfdnr, ll_task_status, ll_task_kommando_lfdnr, ll_zeit_lfdnr, ll_zeit_typ, ll_zeit_sprache, ll_zeit_status, ll_einheit_lfdnr
- DATE ld_zeit_startdatum
- TIME lt_zeit_startzeit, lt_zeit_stopzeit
- DOUBLE ld_zeit_intervall
- LONG weiter
- weiter = 1
- // DK: Fetch der Ergebnisse
- DO WHILE weiter > 0
- FETCH NEXT c_task INTO :ll_task_lfdnr, :ls_task_text, :ll_task_status, :ll_task_kommando_lfdnr, :ll_zeit_lfdnr,
- :ll_zeit_typ, :ll_zeit_status, :ld_zeit_startdatum, :lt_zeit_startzeit, :lt_zeit_stopzeit,
- :ld_zeit_intervall, :ll_einheit_lfdnr, :ls_zeit_argument, :ll_zeit_sprache;
- // DK: Fetch in Ordnung
- CHOOSE CASE sqlcur.sqlcode
- CASE 0
- LONG ll_kommando_lfdnr
- STRING ls_kommando_text, ls_kommando_kommando
- SELECT "it_taskplaner_kommando"."lfdnr",
- "it_taskplaner_kommando"."text",
- "it_taskplaner_kommando"."kommando"
- INTO :ll_kommando_lfdnr,
- :ls_kommando_text,
- :ls_kommando_kommando
- FROM "it_taskplaner_kommando"
- WHERE "it_taskplaner_kommando"."lfdnr" = :ll_task_kommando_lfdnr
- USING sqlca;
- IF sqlca.sqlcode < 0 THEN
- msg.MsgBox("Fehler", "Keine gültige Verknüpfung mit der Tabelle it_taskplaner_kommando vorhanden!")
- HALT
- END IF
- STRING ls_task_einheit_text
- LONG ll_task_einheit_lfdnr, ll_task_einheit_faktor
- SELECT "it_taskplaner_zeit_einheit"."lfdnr",
- "it_taskplaner_zeit_einheit"."text",
- "it_taskplaner_zeit_einheit"."faktor"
- INTO :ll_task_einheit_lfdnr,
- :ls_task_einheit_text,
- :ll_task_einheit_faktor
- FROM "it_taskplaner_zeit_einheit"
- WHERE "it_taskplaner_zeit_einheit"."lfdnr" = :ll_einheit_lfdnr
- USING sqlca;
- IF sqlca.sqlcode < 0 THEN
- msg.MsgBox("Fehler", "Keine gültige Verknüpfung mit der Tabelle it_taskplaner_zeit_einheit vorhanden!")
- HALT
- END IF
- // DK: Startdatum erreicht / überschritten
- IF ld_zeit_startdatum >= TODAY() THEN
- CHOOSE CASE ll_zeit_typ
- // DK: Intervall
- CASE 10
- TIME lt_cur_time
- STRING ls_cur_time, ls_zeit_startzeit, ls_zeit_stopzeit, ls_kalk_zeit
- LONG ll_multiplikant
- BOOLEAN lb_intervall, lb_fertig
- // DK: Aktuelle Zeit
- lt_cur_time = TIME(STRING(NOW(), "hh:mm"))
- // DK: Zeiten aus der Tabelle als String
- ls_cur_time = STRING(NOW(), "hh:mm")
- ls_zeit_startzeit = STRING(lt_zeit_startzeit, "hh:mm")
- ls_zeit_stopzeit = STRING(lt_zeit_stopzeit, "hh:mm")
- // DK: Weitere Hilfsvariablen initialisieren
- ll_multiplikant = 1
- lb_intervall = FALSE
- lb_fertig = FALSE
- // DK: Kalkulierte Zeit auf Startzeit setzen
- ls_kalk_zeit = STRING(lt_zeit_startzeit, "hh:mm")
- // DK: Momentane Zeit kleiner / gleich Stopzeit
- IF lt_cur_time <= lt_zeit_stopzeit THEN
- // DK: Solange die kalkulierte Zeit kleiner / gleich der Stoppzeit ist und die Bedingung noch nicht durchlaufen wurde
- DO WHILE ls_kalk_zeit <= ls_zeit_stopzeit AND lb_fertig = FALSE
- // DK: Prüfe ob die aktuelle Zeit der kalkulierten Zeit entspricht
- IF ls_cur_time = ls_kalk_zeit THEN
- lb_intervall = TRUE
- //-----------------------------------------------------------------------------
- // Transfer
- IF POS(ls_kommando_kommando,"transfer") > 0 THEN cbx_transfer.checked = TRUE
- //-----------------------------------------------------------------------------
- // Sprache
- IF ll_zeit_sprache = 0 THEN rb_sprache1.checked = TRUE
- IF ll_zeit_sprache = 1 THEN rb_sprache2.checked = TRUE
- IF ll_zeit_sprache = 2 THEN rb_sprache3.checked = TRUE
- IF ll_zeit_sprache = 3 THEN rb_sprache4.checked = TRUE
- IF ll_zeit_sprache = 4 THEN rb_sprache5.checked = TRUE
- IF ll_zeit_sprache = 5 THEN rb_sprache6.checked = TRUE
- //-----------------------------------------------------------------------------
- // Export
- IF POS(ls_kommando_kommando,"exArtikelstamm") > 0 THEN cbx_artikelstamm_ex.checked = TRUE
- IF POS(ls_kommando_kommando,"exGrundlagen") > 0 THEN cbx_grundlagen_ex.checked = TRUE
- IF POS(ls_kommando_kommando,"exKundenstamm") > 0 THEN cbx_kundenstamm_ex.checked = TRUE
- IF POS(ls_kommando_kommando,"exKonditionen") > 0 THEN cbx_konditionen_ex.checked = TRUE
- IF POS(ls_kommando_kommando,"exOffenePosten") > 0 THEN cbx_op_ex.checked = TRUE
- IF POS(ls_kommando_kommando,"exDispo") > 0 THEN cbx_dispo_ex.checked = TRUE
- IF POS(ls_kommando_kommando,"exAdressen") > 0 THEN cbx_adressen_ex.checked = TRUE
- IF POS(ls_kommando_kommando,"exBestand") > 0 THEN cbx_bestand_ex.checked = TRUE
- //-----------------------------------------------------------------------------
- // Upload
- IF POS(ls_kommando_kommando,"ulArtikelstamm") > 0 THEN cbx_artikelstamm_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"ulBestand") > 0 THEN cbx_bestand_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"ulGrundlagen") > 0 THEN cbx_konditionen_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"ulKundenstamm") > 0 THEN cbx_kundenstamm_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"ulKonditionen") > 0 THEN cbx_konditionen_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"ulOffenePosten") > 0 THEN cbx_op_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"ulDispo") > 0 THEN cbx_dispo_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"ulAdressen") > 0 THEN cbx_adressen_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- //-----------------------------------------------------------------------------
- // Download
- IF POS(ls_kommando_kommando,"dlKundenstamm") > 0 THEN cbx_kundenstamm_im.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"dlAuftraege") > 0 THEN cbx_auftraege_im.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"dlStatistik") > 0 THEN cbx_statistik_im.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"dlNewsletter") > 0 THEN cbx_newsletter_dl.checked = TRUE AND cbx_transfer.checked = TRUE
- //-----------------------------------------------------------------------------
- // Import
- IF POS(ls_kommando_kommando,"imAuftraege") > 0 THEN cbx_auftraege_im.checked = TRUE
- IF POS(ls_kommando_kommando,"imStatistik") > 0 THEN cbx_statistik_im.checked = TRUE
- IF POS(ls_kommando_kommando,"imKundenstamm") > 0 THEN
- cbx_kundenstamm_im.checked = TRUE
- //msg.MsgBox("Info", "Kundenstamm markiert bei Intervall " + STRING(ld_zeit_intervall))
- END IF
- IF POS(ls_kommando_kommando,"executesql") > 0 THEN cbx_sql.checked = TRUE
- IF POS(ls_kommando_kommando,"imNewsletter") > 0 THEN cbx_newsletter_dl.checked = TRUE
- //-----------------------------------------------------------------------------
- // Export Kundenindividuelle Daten
- IF POS(ls_kommando_kommando,"exIndArtikelstamm") > 0 THEN ddlb_genartikel_pers.text = ls_zeit_argument
- IF POS(ls_kommando_kommando,"exIndBestand") > 0 THEN ddlb_syncbestand_pers.text = ls_zeit_argument
- //-----------------------------------------------------------------------------
- // Media
- IF POS(ls_kommando_kommando,"syncmedia") > 0 THEN cbx_media.checked = TRUE
- //-----------------------------------------------------------------------------
- // System
- IF POS(ls_kommando_kommando,"shutdown") > 0 THEN
- POST close(this)
- POST close(w_haupt)
- END IF
- lb_fertig = TRUE
- END IF
- IF NOT lb_intervall THEN ll_multiplikant++
- ls_kalk_zeit = STRING(RelativeTime(lt_zeit_startzeit, ll_multiplikant * ld_zeit_intervall * ll_task_einheit_faktor * 60))
- ls_kalk_zeit = STRING(TIME(ls_kalk_zeit), "hh:mm")
- LOOP
- END IF
- // DK: Fixzeit
- CASE 20
- // DK: Prüfen ob Startzeit der aktuellen Zeit entspricht
- IF STRING(lt_zeit_startzeit, "hh:mm") = STRING(NOW(), "hh:mm") THEN
- //-----------------------------------------------------------------------------
- // Transfer
- IF POS(ls_kommando_kommando,"transfer") > 0 THEN cbx_transfer.checked = TRUE
- //-----------------------------------------------------------------------------
- // Sprache
- IF ll_zeit_sprache = 0 THEN rb_sprache1.checked = TRUE
- IF ll_zeit_sprache = 1 THEN rb_sprache2.checked = TRUE
- IF ll_zeit_sprache = 2 THEN rb_sprache3.checked = TRUE
- IF ll_zeit_sprache = 3 THEN rb_sprache4.checked = TRUE
- IF ll_zeit_sprache = 4 THEN rb_sprache5.checked = TRUE
- IF ll_zeit_sprache = 5 THEN rb_sprache6.checked = TRUE
- //-----------------------------------------------------------------------------
- // Export
- IF POS(ls_kommando_kommando,"exArtikelstamm") > 0 THEN cbx_artikelstamm_ex.checked = TRUE
- IF POS(ls_kommando_kommando,"exGrundlagen") > 0 THEN cbx_grundlagen_ex.checked = TRUE
- IF POS(ls_kommando_kommando,"exKundenstamm") > 0 THEN cbx_kundenstamm_ex.checked = TRUE
- IF POS(ls_kommando_kommando,"exKonditionen") > 0 THEN cbx_konditionen_ex.checked = TRUE
- IF POS(ls_kommando_kommando,"exOffenePosten") > 0 THEN cbx_op_ex.checked = TRUE
- IF POS(ls_kommando_kommando,"exDispo") > 0 THEN cbx_dispo_ex.checked = TRUE
- IF POS(ls_kommando_kommando,"exAdressen") > 0 THEN cbx_adressen_ex.checked = TRUE
- IF POS(ls_kommando_kommando,"exBestand") > 0 THEN cbx_bestand_ex.checked = TRUE
- //-----------------------------------------------------------------------------
- // Upload
- IF POS(ls_kommando_kommando,"ulArtikelstamm") > 0 THEN cbx_artikelstamm_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"ulBestand") > 0 THEN cbx_bestand_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"ulGrundlagen") > 0 THEN cbx_konditionen_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"ulKundenstamm") > 0 THEN cbx_kundenstamm_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"ulKonditionen") > 0 THEN cbx_konditionen_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"ulOffenePosten") > 0 THEN cbx_op_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"ulDispo") > 0 THEN cbx_dispo_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"ulAdressen") > 0 THEN cbx_adressen_ex.checked = TRUE AND cbx_transfer.checked = TRUE
- //-----------------------------------------------------------------------------
- // Download
- IF POS(ls_kommando_kommando,"dlKundenstamm") > 0 THEN cbx_kundenstamm_im.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"dlAuftraege") > 0 THEN cbx_auftraege_im.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"dlStatistik") > 0 THEN cbx_statistik_im.checked = TRUE AND cbx_transfer.checked = TRUE
- IF POS(ls_kommando_kommando,"dlNewsletter") > 0 THEN cbx_newsletter_dl.checked = TRUE AND cbx_transfer.checked = TRUE
- //-----------------------------------------------------------------------------
- // Import
- IF POS(ls_kommando_kommando,"imAuftraege") > 0 THEN cbx_auftraege_im.checked = TRUE
- IF POS(ls_kommando_kommando,"imStatistik") > 0 THEN cbx_statistik_im.checked = TRUE
- IF POS(ls_kommando_kommando,"imKundenstamm") > 0 THEN cbx_kundenstamm_im.checked = TRUE
- IF POS(ls_kommando_kommando,"executesql") > 0 THEN cbx_sql.checked = TRUE
- IF POS(ls_kommando_kommando,"imNewsletter") > 0 THEN cbx_newsletter_dl.checked = TRUE
- //-----------------------------------------------------------------------------
- // Export Kundenindividuelle Daten
- IF POS(ls_kommando_kommando,"exIndArtikelstamm") > 0 THEN ddlb_genartikel_pers.text = ls_zeit_argument
- IF POS(ls_kommando_kommando,"exIndBestand") > 0 THEN ddlb_syncbestand_pers.text = ls_zeit_argument
- //-----------------------------------------------------------------------------
- // Media
- IF POS(ls_kommando_kommando,"syncmedia") > 0 THEN cbx_media.checked = TRUE
- //-----------------------------------------------------------------------------
- // System
- IF POS(ls_kommando_kommando,"shutdown") > 0 THEN
- POST close(this)
- POST close(w_haupt)
- END IF
- END IF
- END CHOOSE
- END IF
- // DK: Keinen weiteren Datensatz gefunden
- CASE 100
- weiter = 0
- // DK: Es ist ein Fehler im Cursor aufgetreten
- CASE ELSE
- msg.MsgBox("Fehler", "Es ist ein Fehler im Cursor c_task aufgetreten!")
- RETURN 0
- END CHOOSE
- LOOP
- CLOSE c_task;
- //-----------------------------------------------------------------------------
- // Nun Prozesse ausführen
- this.PostEvent ( "ue_startbat" )
- RETURN 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement