procedure Create_Sales_Per_Wahl_And_Section_aus_Telemetriedaten;
var
{------------------------------------------------------}
{----- Hilfsvariablen zum Sichern der Datenfelder -----}
{------------------------------------------------------}
DatumZeit :
string;
IP_Adresse :
string;
Rufnummer :
string;
Zielrufnummer :
string;
Transaktionscode :
string;
TransaktionsID :
string;
SubMandantenID :
string;
SubMandantenID2 :
string;
SubMandantenID3 :
string;
{---------------------------------------------------------------------}
{----- Hilfsvariablen zum Speichern aller Mandanteninformationen -----}
{---------------------------------------------------------------------}
Server_IP :
string;
Datenbank :
string;
{------------------------------------------------------------}
{----- Hilfsvariablen zum Speichern des Datenbanklogins -----}
{------------------------------------------------------------}
Username :
string;
Password :
string;
{--------------------------------------------------------------------}
{----- Hilfsvariable um den Wert einer Transaktion zu speichern -----}
{--------------------------------------------------------------------}
Wert :
string;
{--------------------------------------------------------------------}
{----- Hilfsvariable um die Wahl einer Transaktion zu speichern -----}
{--------------------------------------------------------------------}
Wahl :
string;
begin
{-------------------------------------------------}
{----- Einmalige Prozessverarbeitung starten -----}
{-------------------------------------------------}
if RunOnce=true
then
begin
try
PSQLQuery_Work1.Active:=false;
PSQLQuery_Work1.SQL.Text:='
select * from anruf_telemetrie where '+
'
(rufnummer_ankommend='+'
''
'+'
--zensiert--'+'
''
'+'
) or'+
'
(rufnummer_ankommend='+'
''
'+'
--zensiert--'+'
''
'+'
) or'+
'
(rufnummer_ankommend='+'
''
'+'
--zensiert--'+'
''
'+'
) or'+
'
(rufnummer_ankommend='+'
''
'+'
--zensiert--'+'
''
'+'
) or'+
'
(rufnummer_ankommend='+'
''
'+'
--zensiert--'+'
''
'+'
) or'+
'
(rufnummer_ankommend='+'
''
'+'
--zensiert--'+'
''
'+'
) or'+
'
(rufnummer_ankommend='+'
''
'+'
--zensiert--'+'
''
'+'
) or'+
'
(rufnummer_ankommend='+'
''
'+'
--zensiert--'+'
''
'+'
) or'+
'
(rufnummer_ankommend='+'
''
'+'
--zensiert--'+'
''
'+'
) or'+
'
(rufnummer_ankommend='+'
''
'+'
--zensiert--'+'
''
'+'
) '+
'
order by datumzeit_ankommend;';
PSQLQuery_Work1.Active:=true;
{---------------------------------------------------}
{----- Verarbeitungsstatus in Listbox ausgeben -----}
{---------------------------------------------------}
Work_Trace_ListBox.Items.Insert(0,TimeToStr(Now)+'
| Tabelle - Anruf_Telemetrie - geöffnet!');
except
{---------------------------------------------------}
{----- Verarbeitungsstatus in Listbox ausgeben -----}
{---------------------------------------------------}
Work_Trace_ListBox.Items.Insert(0,TimeToStr(Now)+'
| Tabelle - Anruf_Telemetrie - konnte nicht geöffnet werden!');
end;
{-------------------------------------------------------}
{----- Telemetriemeldungen sequentiell durchlaufen -----}
{-------------------------------------------------------}
while (
not PSQLQuery_Work1.Eof)
do
begin
Application.ProcessMessages;
DatumZeit:=PSQLQuery_Work1.FieldByName('
datumzeit_ankommend').AsString;
IP_Adresse:=PSQLQuery_Work1.FieldByName('
ip_sender').AsString;
Rufnummer:=PSQLQuery_Work1.FieldByName('
rufnummer_ankommend').AsString;
Zielrufnummer:=PSQLQuery_Work1.FieldByName('
zielrufnummer').AsString;
TransaktionsID:=PSQLQuery_Work1.FieldByName('
transaktion_id').AsString;
Transaktionscode:=PSQLQuery_Work1.FieldByName('
transaktionscode').AsString;
{-----------------------------------------------------}
{----- Variablen für Verabreitung initialisieren -----}
{-----------------------------------------------------}
Status:=0;Mandanten_ID:='
';Server_IP:='
';Datenbank:='
';
Username:='
';Password:='
';
{------------------------------------}
{----- Bildschirm-Trace starten -----}
{------------------------------------}
Com_Trace_ListBox.Items.Insert(0,'
----- Action-Snapshot Anfang -----');
{------------------------------------------------------------------}
{----- Prüfen ob der Abenser der Telemetriemeldung gültig ist -----}
{------------------------------------------------------------------}
Check_for_valid_Sender(Status,IP_Adresse);
{----------------------------------------------}
{----- Mandanten zur Rufnummern ermitteln -----}
{----------------------------------------------}
Get_Client(Status,Mandanten_ID,Rufnummer,DatumZeit,ZielRufnummer);
{----------------------------------------------}
{----- Detaildaten des Mandaten ermitteln -----}
{----------------------------------------------}
Get_Client_Details(Status,MandantenName,Server_IP,Datenbank,Mandanten_ID);
{---------------------------------------------------------}
{----- Login-Daten für Mandantendantenbank ermitteln -----}
{---------------------------------------------------------}
Get_DB_Login(Status,Username,Password,Server_IP);
{----------------------------------------}
{----- Mandantendatenbank verbinden -----}
{----------------------------------------}
Connect_Client_Database(Datenbank,Server_IP,Username,Password);
{---------------------------------------------------------------}
{----- Transaktionsdetails lesen wenn die Verbindung steht -----}
{---------------------------------------------------------------}
Get_Transaction_Details(Transaktionscode,Wert,Rufnummer, Wahl, SubMandantenID, SubMandantenID2, SubMandantenID3);
{---------------------------------------------------------------}
{----- Prüfen ob wegen einer Automatenbefüllung die Anzahl -----}
{----- der Leeranwahlen zurückgesetzt werden muss -----}
{---------------------------------------------------------------}
Check_Reset_Leeranwahlen(Rufnummer,DatumZeit,Transaktionscode,true);
{------------------------------------------------------------}
{----- Sofern erforderlich Statistikdaten aktualisieren -----}
{------------------------------------------------------------}
Verarbeite_Verkaufe__per_Wahl_und_Section(Rufnummer,DatumZeit,Transaktionscode,Wahl);
{-----------------------------------------}
{----- Bildschirm-Trace abschliessen -----}
{-----------------------------------------}
Com_Trace_ListBox.Items.Insert(0,'
----- Action-Snapshot Ende -----');
Com_Trace_ListBox.Items.Insert(0,'
');
{-----------------------------------------}
{----- Sprung zum nächsten Datensatz -----}
{-----------------------------------------}
PSQLQuery_Work1.Next;
end;
{------------------------------}
{----- Query's schliessen -----}
{------------------------------}
try
PSQLQuery_Work1.Active:=false;
except
end;
end
end;
{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
begin
{------------------------------------------}
{------ Hilfsvariablen initialisieren -----}
{------------------------------------------}
Process:=true;
with MainDlg
do
begin
{-------------------------------------------------------}
{----- Timer während der Verarbeitung deaktivieren -----}
{-------------------------------------------------------}
ValidateData.Enabled:=false;
{------------------------------------}
{----- Bildschirm-Trace starten -----}
{------------------------------------}
Work_Trace_ListBox.Items.Insert(0,'
----- Action-Snapshot Anfang -----');
try
PSQLQueryMandanten.Active:=false;
PSQLQueryMandanten.SQL.Text:='
select * from public.mandaten';
PSQLQueryMandanten.Active:=true;
{---------------------------------------------------}
{----- Verarbeitungsstatus in Listbox ausgeben -----}
{---------------------------------------------------}
Work_Trace_ListBox.Items.Insert(0,TimeToStr(Now)+'
| Tabelle Mandanten geöffnet!');
except
{-----------------------------}
{----- Status definieren -----}
{-----------------------------}
Process:=false;
{---------------------------------------------------}
{----- Verarbeitungsstatus in Listbox ausgeben -----}
{---------------------------------------------------}
Work_Trace_ListBox.Items.Insert(0,TimeToStr(Now)+'
| Tabelle Mandanten konnte nicht geöffnet werden!');
end;
{-----------------------------------------------------------------}
{------ Verarbeitung für alle angelegten Mandanten vornehmen -----}
{-----------------------------------------------------------------}
while (
not PSQLQueryMandanten.Eof)
and (Process=true)
do
begin
{---------------------------------------------------}
{----- Verarbeitungsstatus in Listbox ausgeben -----}
{---------------------------------------------------}
Work_Trace_ListBox.Items.Insert(0,TimeToStr(Now)+'
| Verarbeitung für Mandant '+PSQLQueryMandanten.FieldByName('
name').AsString+'
...');
{-----------------------------------------------------------------}
{----- MandatenID zur Prozessverifizierung zwischenspeichern -----}
{-----------------------------------------------------------------}
MandantenID:=PSQLQueryMandanten.FieldByName('
mandanten_id').AsString;
{-----------------------------------------------}
{------ Login-Daten zum Mandantn ermitteln -----}
{-----------------------------------------------}
if (PSQLQueryMandanten.FieldByName('
name').AsString<>'
')
and
(PSQLQueryMandanten.FieldByName('
name').AsString<>'
m-Transaktion')
then
begin
try
PSQLQueryDatenbankserver.Active:=false;
PSQLQueryDatenbankserver.SQL.Text:='
select * from datenbankserver where '+
'
servername ='+'
''
'+PSQLQueryMandanten.FieldByName('
servername').AsString+'
''
'+'
;';
PSQLQueryDatenbankserver.Active:=true;
{---------------------------------------------------}
{----- Verarbeitungsstatus in Listbox ausgeben -----}
{---------------------------------------------------}
Work_Trace_ListBox.Items.Insert(0,TimeToStr(Now)+'
| Datenbankparameter für Mandanten ermittelt!');
{--------------------------------------------}
{----- Datenbanknamen zwischenspeichern -----}
{--------------------------------------------}
Datenbank:=PSQLQueryMandanten.Fieldbyname('
datenbank').AsString;
{---------------------------------------}
{----- Server-IP zwischenspeichern -----}
{---------------------------------------}
Server_IP:=PSQLQueryDatenbankserver.Fieldbyname('
server_ip').AsString;
{---------------------------------------}
{----- Usernamen zwischenspeichern -----}
{---------------------------------------}
Username:=PSQLQueryDatenbankserver.Fieldbyname('
username').AsString;
{--------------------------------------}
{----- Password zwischenspeichern -----}
{--------------------------------------}
Password:=PSQLQueryDatenbankserver.Fieldbyname('
passwort').AsString;
except
on E:
Exception do
begin
{-----------------------------}
{----- Status definieren -----}
{-----------------------------}
Process:=false;
{---------------------------------------------------}
{----- Verarbeitungsstatus in Listbox ausgeben -----}
{---------------------------------------------------}
Work_Trace_ListBox.Items.Insert(0,TimeToStr(Now)+'
| Datenbankparameter für Mandanten konnt nicht ermittelt werden!');
end;
end;
{--------------------------------------------}
{----- Query Datenbankserver schliessen -----}
{--------------------------------------------}
try
if PSQLQueryDatenbankserver.Active
then PSQLQueryDatenbankserver.Active:=false;
except;
end;
{---------------------------------------------------------------}
{----- Sofern keine Verarbeitungsfehler aufgetreten sind -----}
{----- wird nun die Verbindung zur Datenbank des aktuellen -----}
{----- Mandanten hergestellt. -----}
{---------------------------------------------------------------}
if Process
then
begin
try
PSQLDatabase_Work.Connected:=false;
PSQLDatabase_Work.Databasename:=Datenbank;
PSQLDatabase_Work.Host:=Server_IP;
PSQLDatabase_Work.Username:=Username;
PSQLDatabase_Work.UserPassword:=Password;
PSQLDatabase_Work.Connected:=true;
{---------------------------------------------------}
{----- Verarbeitungsstatus in Listbox ausgeben -----}
{---------------------------------------------------}
Work_Trace_ListBox.Items.Insert(0,TimeToStr(Now)+'
| Verbindung zur Mandantendatenbank hergestellt - '+PSQLQueryMandanten.FieldByName('
name').AsString);
except
on E:
Exception do
begin
{-----------------------------}
{----- Status definieren -----}
{-----------------------------}
Process:=false;
{---------------------------------------------------}
{----- Verarbeitungsstatus in Listbox ausgeben -----}
{---------------------------------------------------}
Work_Trace_ListBox.Items.Insert(0,TimeToStr(Now)+'
| Verbindung zur Mandantendatenbank fehlgeschlagen - '+PSQLQueryMandanten.FieldByName('
name').AsString+'
!');
Work_Trace_ListBox.Items.Insert(0,TimeToStr(Now)+'
| '+e.
Message);
end;
end;
{--------------------------------------------------------------}
{----- Aufgaben in der Datenbank des Mandanten abarbeiten -----}
{--------------------------------------------------------------}
if Process
then
begin
{----------------------------------------------------------}
{----- Prüfen ob für jeden angelegten Automaten ein -----}
{----- entsprechender Datensatz in der Tabelle -----}
{----- Automatenprodukte vorhanden ist. -----}
{----- In Automantenprodukte wird zu jedem Automat -----}
{----- eine eindeutige Produktbestückung gespeichert. -----}
{----------------------------------------------------------}
Validate_Record_in_Automatenprodukte;
{----------------------------------------------------}
{----- Setzt eine Default Konfiguration für das -----}
{----- Eskalationsmanagement. -----}
{----------------------------------------------------}
Set_Default_Escalation_Configuration;
{-----------------------------------------------------------------------}
{----- Ermittlung der Statistikdaten zurückliegender Transaktionen -----}
{-----------------------------------------------------------------------}
if (ParamStr(1)='
X')
or (ParamStr(2)='
X')
then Create_Sales_Per_Wahl_And_Section_aus_Telemetriedaten;
end;
{------------------------------------------------------}
{----- Dynamischen Datenbankverbindung schliessen -----}
{------------------------------------------------------}
try
PSQLDatabase_Work.Connected:=false;
except
end;
end;
end;
{-----------------------------------------}
{----- Sprung zum nächsten Datensatz -----}
{-----------------------------------------}
PSQLQueryMandanten.Next;
{---------------------------------}
{----- Prozessorzeit abgeben -----}
{---------------------------------}
Application.ProcessMessages;
end;
{------------------------------}
{----- Query's schliessen -----}
{------------------------------}
try
if PSQLQueryMandanten.Active
then PSQLQueryMandanten.Active:=false;
except
end;
{-----------------------------------------}
{----- Bildschirm-Trace abschliessen -----}
{-----------------------------------------}
Work_Trace_ListBox.Items.Insert(0,'
----- Action-Snapshot Ende -----');
Work_Trace_ListBox.Items.Insert(0,'
');
{------------------------------------}
{----- Statusvariable umsetzten -----}
{------------------------------------}
RunOnce:=false;
{----------------------------------------------------------}
{----- Timer nach Abschluss aller Aktionen aktivieren -----}
{----------------------------------------------------------}
ValidateData.Enabled:=true;
end;
end;