Encoding der DB Dateien zu Windows 1252 konvertiert
This commit is contained in:
@@ -5,11 +5,11 @@ create or replace package body pck_auto_import as
|
||||
PROCEDURE p_create_wv_autonomous(i_swv_bemerkung inkasso.sy_wiedervorlage.swv_bemerkung%TYPE DEFAULT NULL
|
||||
)
|
||||
/*Kopf------------------------------------------------------------------------------------------------
|
||||
-- Beschreibung: Erstellt eine Wiedervorlage innerhalb eine autonomous transaction, damit rollback/commits in Fehlerfällen, diese Wiedervorlage nicht beeinflussen.
|
||||
-- Beschreibung: Erstellt eine Wiedervorlage innerhalb eine autonomous transaction, damit rollback/commits in Fehlerfällen, diese Wiedervorlage nicht beeinflussen.
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- Parameter: —
|
||||
-- Parameter: —
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- MA Datum Änderung
|
||||
-- MA Datum Änderung
|
||||
-- SCK 2026-04-27 Prozedur erstellt
|
||||
------------------------------------------------------------------------------------------------Kopf*/
|
||||
is
|
||||
@@ -17,7 +17,7 @@ create or replace package body pck_auto_import as
|
||||
BEGIN
|
||||
pck_wiedervorlage.p_wiedervorlage_anlegen (i_swv_stp_id_art => pck_stammdaten.f_get_stp_id_by_programmid('WV_IMPORT_BA_KORRES')
|
||||
,i_swv_wdatum => sysdate
|
||||
,i_swv_bemerkung => i_swv_bemerkung --'Bitte manuell Prüfen: Beim automatischen Import der BA-Datei "' || l_filename || '" ist folgende Fehler aufgetreten: "' || SQLERRM || '" (Siehe "' || i_object_key || '").'
|
||||
,i_swv_bemerkung => i_swv_bemerkung --'Bitte manuell Prüfen: Beim automatischen Import der BA-Datei "' || l_filename || '" ist folgende Fehler aufgetreten: "' || SQLERRM || '" (Siehe "' || i_object_key || '").'
|
||||
,i_swv_mit_id_wsachbearbeiter => pck_system.f_get_par_wert_by_programmid('BA_IMPORT_SB_MIT_ID')
|
||||
);
|
||||
COMMIT; -- Nur diese autonome Transaktion
|
||||
@@ -25,16 +25,16 @@ create or replace package body pck_auto_import as
|
||||
|
||||
procedure p_run_ba_korrespondenz_dateieingang_automation
|
||||
/*Kopf------------------------------------------------------------------------------------------------
|
||||
-- Beschreibung: Einstiegspunkt für die APEX Automation (stündlich).
|
||||
-- Schritt 1: p_process_incoming_ba_data aufrufen — verarbeitet Batches, die bereits
|
||||
-- in OCI liegen (Fallback für den Fall, dass der ORDS-Aufruf im letzten
|
||||
-- Beschreibung: Einstiegspunkt für die APEX Automation (stündlich).
|
||||
-- Schritt 1: p_process_incoming_ba_data aufrufen — verarbeitet Batches, die bereits
|
||||
-- in OCI liegen (Fallback für den Fall, dass der ORDS-Aufruf im letzten
|
||||
-- Quarkus-Lauf fehlgeschlagen ist).
|
||||
-- Schritt 2: Quarkus Dateieingang Service via HTTP POST anstoßen (fire & forget).
|
||||
-- Schlägt Schritt 2 fehl, läuft Schritt 1 beim nächsten Stundenlauf erneut.
|
||||
-- Schritt 2: Quarkus Dateieingang Service via HTTP POST anstoßen (fire & forget).
|
||||
-- Schlägt Schritt 2 fehl, läuft Schritt 1 beim nächsten Stundenlauf erneut.
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- Parameter: —
|
||||
-- Parameter: —
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- MA Datum Änderung
|
||||
-- MA Datum Änderung
|
||||
-- SCK 2026-04-21 Prozedur erstellt
|
||||
------------------------------------------------------------------------------------------------Kopf*/
|
||||
is
|
||||
@@ -66,11 +66,11 @@ create or replace package body pck_auto_import as
|
||||
,i_message => 'Verarbeitung offener BA-Korrespondenz-Dateien aus OCI abgeschlossen'
|
||||
);
|
||||
|
||||
-- Quarkus anstoßen — Fehler werden geloggt, nicht eskaliert
|
||||
-- Quarkus anstoßen — Fehler werden geloggt, nicht eskaliert
|
||||
pck_log.p_info(
|
||||
i_module => c_log_module
|
||||
,i_action => l_log_action
|
||||
,i_message => 'Quarkus Dateieingang Service wird angestoßen'
|
||||
,i_message => 'Quarkus Dateieingang Service wird angestoßen'
|
||||
);
|
||||
begin
|
||||
l_service_url := pck_system.f_get_par_wert_by_programmid('AUTOMATON_BASE_URL') || l_automaton_endpoint;
|
||||
@@ -94,15 +94,15 @@ create or replace package body pck_auto_import as
|
||||
pck_log.p_info(
|
||||
i_module => c_log_module
|
||||
,i_action => l_log_action
|
||||
,i_message => 'BA Dateieingang Service angestoßen (202 Accepted)'
|
||||
,i_message => 'BA Dateieingang Service angestoßen (202 Accepted)'
|
||||
);
|
||||
when 409
|
||||
then
|
||||
-- Service läuft bereits — kein Fehler, kein zweiter Lauf nötig
|
||||
-- Service läuft bereits — kein Fehler, kein zweiter Lauf nötig
|
||||
pck_log.p_info(
|
||||
i_module => c_log_module
|
||||
,i_action => l_log_action
|
||||
,i_message => 'BA Dateieingang Service läuft bereits (409 Conflict) — kein neuer Lauf gestartet'
|
||||
,i_message => 'BA Dateieingang Service läuft bereits (409 Conflict) — kein neuer Lauf gestartet'
|
||||
);
|
||||
else
|
||||
pck_log.p_error(
|
||||
@@ -116,7 +116,7 @@ create or replace package body pck_auto_import as
|
||||
when others
|
||||
then
|
||||
-- Quarkus-Aufruf fehlgeschlagen: loggen, nicht eskalieren.
|
||||
-- Nächster Stundenlauf führt BA-Import-Schritt erneut aus.
|
||||
-- Nächster Stundenlauf führt BA-Import-Schritt erneut aus.
|
||||
pck_log.p_error(
|
||||
i_module => c_log_module
|
||||
,i_action => l_log_action
|
||||
@@ -134,16 +134,16 @@ create or replace package body pck_auto_import as
|
||||
/*Kopf------------------------------------------------------------------------------------------------
|
||||
-- Beschreibung: Importiert eine einzelne Datei aus dem OCI Eingangsordner in die Datenbank.
|
||||
-- Ruft inkasso.pck_import.f_import_ba_dokument auf.
|
||||
-- Bei Rückgabe 1 (Erfolg): Datei in den Zielordner verschieben.
|
||||
-- Bei Rückgabe != 1 (z.B. ungültiger Dateiname): Warnung loggen und Exception werfen
|
||||
-- — Datei bleibt liegen, Commit/Rollback liegt beim Aufrufer.
|
||||
-- Kein Commit hier — wird von p_process_incoming_ba_data übernommen.
|
||||
-- Bei Rückgabe 1 (Erfolg): Datei in den Zielordner verschieben.
|
||||
-- Bei Rückgabe != 1 (z.B. ungültiger Dateiname): Warnung loggen und Exception werfen
|
||||
-- — Datei bleibt liegen, Commit/Rollback liegt beim Aufrufer.
|
||||
-- Kein Commit hier — wird von p_process_incoming_ba_data übernommen.
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- Parameter: i_object_key Vollständiger OCI-Objektkey der zu verarbeitenden Datei
|
||||
-- Parameter: i_object_key Vollständiger OCI-Objektkey der zu verarbeitenden Datei
|
||||
-- i_content Dateiinhalt als BLOB
|
||||
-- i_target_folder Zielordner-Prefix für erfolgreich verarbeitete Dateien
|
||||
-- i_target_folder Zielordner-Prefix für erfolgreich verarbeitete Dateien
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- MA Datum Änderung
|
||||
-- MA Datum Änderung
|
||||
-- SCK 2026-04-08 Stub erstellt
|
||||
-- SCK 2026-04-09 Implementierung: Aufruf f_import_ba_dokument, Wiedervorlage bei Fehler
|
||||
-- SCK 2026-04-09 Move nach erfolgreichem Import in p_import_ba_korrespondenz verschoben
|
||||
@@ -177,12 +177,12 @@ create or replace package body pck_auto_import as
|
||||
pck_log.p_warn(
|
||||
i_module => c_log_module
|
||||
,i_action => l_log_action
|
||||
,i_message => 'Aufruf von pck_import.f_import_ba_dokument für Datei "' || l_filename || '" hat einen Fehler geworfen (' || SQLERRM || '). Erstelle wiedervorlage...'
|
||||
,i_message => 'Aufruf von pck_import.f_import_ba_dokument für Datei "' || l_filename || '" hat einen Fehler geworfen (' || SQLERRM || '). Erstelle wiedervorlage...'
|
||||
,i_object_ref => i_object_key
|
||||
);
|
||||
|
||||
-- Bei einem Import Fehler: Wiedervorlage für Sachbearbeiter erstellen & Fehlermeldung mit in die Wiedervorlage schreiben
|
||||
p_create_wv_autonomous(i_swv_bemerkung => 'Bitte manuell Prüfen: Beim automatischen Import der BA-Datei "' || l_filename
|
||||
-- Bei einem Import Fehler: Wiedervorlage für Sachbearbeiter erstellen & Fehlermeldung mit in die Wiedervorlage schreiben
|
||||
p_create_wv_autonomous(i_swv_bemerkung => 'Bitte manuell Prüfen: Beim automatischen Import der BA-Datei "' || l_filename
|
||||
|| '" ist folgender Fehler aufgetreten: "' || SQLERRM || '" (Siehe "' || i_object_key || '").'
|
||||
);
|
||||
raise;
|
||||
@@ -193,12 +193,12 @@ create or replace package body pck_auto_import as
|
||||
pck_log.p_warn(
|
||||
i_module => c_log_module
|
||||
,i_action => l_log_action
|
||||
,i_message => 'Import für Datei "' || l_filename || '" fehlgeschlagen (Rückgabe: ' || l_return || ') — Wiedervorlage erforderlich'
|
||||
,i_message => 'Import für Datei "' || l_filename || '" fehlgeschlagen (Rückgabe: ' || l_return || ') — Wiedervorlage erforderlich'
|
||||
,i_object_ref => i_object_key
|
||||
);
|
||||
|
||||
-- Wiedervorlage für Sachbearbeiter erstellen
|
||||
p_create_wv_autonomous(i_swv_bemerkung => 'Bitte manuell Prüfen: Die BA-Datei "' || l_filename || '" konnte nicht automatisch importiert werden (Siehe "' || i_object_key || '").'
|
||||
-- Wiedervorlage für Sachbearbeiter erstellen
|
||||
p_create_wv_autonomous(i_swv_bemerkung => 'Bitte manuell Prüfen: Die BA-Datei "' || l_filename || '" konnte nicht automatisch importiert werden (Siehe "' || i_object_key || '").'
|
||||
);
|
||||
|
||||
pck_log.p_info(
|
||||
@@ -208,7 +208,7 @@ create or replace package body pck_auto_import as
|
||||
,i_object_ref => i_object_key
|
||||
);
|
||||
|
||||
raise_application_error(-20000, 'Import fehlgeschlagen: "' || l_filename || '" (Rückgabe: ' || l_return || ')');
|
||||
raise_application_error(-20000, 'Import fehlgeschlagen: "' || l_filename || '" (Rückgabe: ' || l_return || ')');
|
||||
end if;
|
||||
|
||||
pck_log.p_info(
|
||||
@@ -236,13 +236,13 @@ create or replace package body pck_auto_import as
|
||||
/*Kopf------------------------------------------------------------------------------------------------
|
||||
-- Beschreibung: Verarbeitet alle fertigen Eingangs-Batches aus dem OCI Eingangsordner (Netzlaufwerk).
|
||||
-- Wird von ORDS-Endpunkt (von Quarkus Automaton) und aus Apex Automation aufgerufen.
|
||||
-- Pro Datei: Import + Move → Commit; bei Exception: Rollback, Datei bleibt liegen,
|
||||
-- nächste Datei wird trotzdem verarbeitet.
|
||||
-- Nach dem Datei-Loop: DB-Marker immer löschen (verhindert erneuten Durchlauf).
|
||||
-- Pro Datei: Import + Move -> Commit; bei Exception: Rollback, Datei bleibt liegen,
|
||||
-- nächste Datei wird trotzdem verarbeitet.
|
||||
-- Nach dem Datei-Loop: DB-Marker immer löschen (verhindert erneuten Durchlauf).
|
||||
-- Wenn danach noch Dateien im Ordner liegen: Sachbearbeiter(SB)-Marker anlegen damit Sachbearbeiter
|
||||
-- die übriggebliebenen Dateien manuell prüfen können.
|
||||
-- die übriggebliebenen Dateien manuell prüfen können.
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- MA Datum Änderung
|
||||
-- MA Datum Änderung
|
||||
-- SCK 2026-04-08 Prozedur erstellt
|
||||
-- SCK 2026-04-09 Fehlerbehandlung: Datei bleibt liegen, Fehler-Marker, kein erneuter Durchlauf
|
||||
-- SCK 2026-04-09 SB-Marker statt l_had_errors-Flag; Move in p_import_ba_korrespondenz verschoben
|
||||
@@ -271,7 +271,7 @@ create or replace package body pck_auto_import as
|
||||
l_target_prefix := pck_system.f_get_par_wert_by_programmid('NETSTORE_TENANT_ID') || pck_system.f_get_par_wert_by_programmid('NETSTORE_BA_PREFIX') || pck_system.f_get_par_wert_by_programmid('NETSTORE_BA_KOR_ARC') || ' ' || to_char(sysdate, 'YYYY') || '/';
|
||||
l_eingang_prefix := pck_system.f_get_par_wert_by_programmid('NETSTORE_TENANT_ID') || pck_system.f_get_par_wert_by_programmid('NETSTORE_BA_PREFIX') || pck_system.f_get_par_wert_by_programmid('NETSTORE_BA_KOR_IM');
|
||||
|
||||
-- Unterordner in eingangs-ordner auflisten (es gibt einen Ordner für jeden entpackte ZIP-Datei)
|
||||
-- Unterordner in eingangs-ordner auflisten (es gibt einen Ordner für jeden entpackte ZIP-Datei)
|
||||
l_folders := pck_net_storage.f_list_objects(
|
||||
i_parent_folder => l_eingang_prefix
|
||||
,i_include_subfolders => 'N'
|
||||
@@ -293,17 +293,17 @@ create or replace package body pck_auto_import as
|
||||
);
|
||||
|
||||
-- Der Marker ist eine Datei mit speziellem Namen, welche vom quarkus automaton in einen entpackten zip-ordner gelegt wird um zu signalisieren, dass alle Dateien des ZIPs erfolgreich in den ordner gelegt wurden.
|
||||
-- Das verhindert die verarbeitung von unvollständig entpackten zips
|
||||
-- Das verhindert die verarbeitung von unvollständig entpackten zips
|
||||
l_db_processing_marker_key := rec_folder.object_key || pck_system.f_get_par_wert_by_programmid('NETSTORE_MARKER_DB');
|
||||
|
||||
pck_log.p_info(
|
||||
i_module => c_log_module
|
||||
,i_action => l_log_action
|
||||
,i_message => 'Marker für Ordner wird geprüft. Marker: ' || l_db_processing_marker_key || ' in Ordner: ' || rec_folder.object_key
|
||||
,i_message => 'Marker für Ordner wird geprüft. Marker: ' || l_db_processing_marker_key || ' in Ordner: ' || rec_folder.object_key
|
||||
,i_object_ref => rec_folder.object_key
|
||||
);
|
||||
|
||||
-- Marker prüfen: -20001 = nicht vorhanden → Upload noch nicht abgeschlossen
|
||||
-- Marker prüfen: -20001 = nicht vorhanden -> Upload noch nicht abgeschlossen
|
||||
begin
|
||||
l_meta := pck_net_storage.f_get_object_metadata(l_db_processing_marker_key);
|
||||
exception
|
||||
@@ -314,7 +314,7 @@ create or replace package body pck_auto_import as
|
||||
pck_log.p_info(
|
||||
i_module => c_log_module
|
||||
,i_action => l_log_action
|
||||
,i_message => 'Kein DB-Verarbeitungsmarker vorhanden — Entpackter ZIP-Ordner wird übersprungen (Upload noch nicht abgeschlossen)'
|
||||
,i_message => 'Kein DB-Verarbeitungsmarker vorhanden — Entpackter ZIP-Ordner wird übersprungen (Upload noch nicht abgeschlossen)'
|
||||
,i_object_ref => rec_folder.object_key
|
||||
);
|
||||
continue;
|
||||
@@ -322,7 +322,7 @@ create or replace package body pck_auto_import as
|
||||
raise;
|
||||
end;
|
||||
|
||||
-- Zip-Namen aus Ordnerpfad ableiten: eingang/<zip-name>/ → <zip-name>
|
||||
-- Zip-Namen aus Ordnerpfad ableiten: eingang/<zip-name>/ -> <zip-name>
|
||||
l_zip_name := substr(
|
||||
rec_folder.object_key
|
||||
,length(l_eingang_prefix) + 1
|
||||
@@ -333,7 +333,7 @@ create or replace package body pck_auto_import as
|
||||
pck_log.p_info(
|
||||
i_module => c_log_module
|
||||
,i_action => l_log_action
|
||||
,i_message => 'ZIP-START: Verarbeitung von entpacktem ZIP-Ordner gestartet — Zielordner: "' || l_target_folder || '"'
|
||||
,i_message => 'ZIP-START: Verarbeitung von entpacktem ZIP-Ordner gestartet — Zielordner: "' || l_target_folder || '"'
|
||||
,i_object_ref => rec_folder.object_key
|
||||
);
|
||||
|
||||
@@ -345,7 +345,7 @@ create or replace package body pck_auto_import as
|
||||
|
||||
for rec_file in (select object_key, is_folder from table(l_files))
|
||||
loop
|
||||
-- Marker und Pseudo-Ordner überspringen
|
||||
-- Marker und Pseudo-Ordner überspringen
|
||||
if rec_file.object_key = l_db_processing_marker_key or rec_file.is_folder = 'Y'
|
||||
then
|
||||
continue;
|
||||
@@ -365,8 +365,8 @@ create or replace package body pck_auto_import as
|
||||
-- 2. Fachliche Verarbeitung + Move bei Erfolg (innerhalb p_import_ba_korrespondenz)
|
||||
p_import_ba_korrespondenz(rec_file.object_key, l_file_content, l_target_folder);
|
||||
|
||||
-- Commit pro Datei: OCI-Move ist nicht transaktional, daher DB-Änderungen sofort sichern
|
||||
-- sonst würde ein Fehler bei einer späteren Datei den DB-Import bereits verschobener Dateien zurückrollen
|
||||
-- Commit pro Datei: OCI-Move ist nicht transaktional, daher DB-Änderungen sofort sichern
|
||||
-- sonst würde ein Fehler bei einer späteren Datei den DB-Import bereits verschobener Dateien zurückrollen
|
||||
commit;
|
||||
|
||||
exception
|
||||
@@ -383,17 +383,17 @@ create or replace package body pck_auto_import as
|
||||
end;
|
||||
end loop;
|
||||
|
||||
-- DB-Marker immer entfernen — verhindert erneute Verarbeitung beim nächsten Lauf
|
||||
-- DB-Marker immer entfernen — verhindert erneute Verarbeitung beim nächsten Lauf
|
||||
pck_net_storage.p_delete_object(l_db_processing_marker_key);
|
||||
|
||||
pck_log.p_info(
|
||||
i_module => c_log_module
|
||||
,i_action => l_log_action
|
||||
,i_message => 'DB-Verarbeitungsmarker gelöscht'
|
||||
,i_message => 'DB-Verarbeitungsmarker gelöscht'
|
||||
,i_object_ref => l_db_processing_marker_key
|
||||
);
|
||||
|
||||
-- Prüfen ob noch Dateien im Unterordner liegen (nicht erfolgreich importierte Dateien)
|
||||
-- Prüfen ob noch Dateien im Unterordner liegen (nicht erfolgreich importierte Dateien)
|
||||
l_files := pck_net_storage.f_list_objects(
|
||||
i_parent_folder => rec_folder.object_key
|
||||
,i_include_subfolders => 'Y'
|
||||
@@ -415,11 +415,11 @@ create or replace package body pck_auto_import as
|
||||
pck_log.p_warn(
|
||||
i_module => c_log_module
|
||||
,i_action => l_log_action
|
||||
,i_message => 'ZIP-ENDE: Entpackter ZIP-Ordner mit Fehlern abgeschlossen — mind. eine Datei konnte nicht importiert werden, SB-Marker wird hochgeladen...'
|
||||
,i_message => 'ZIP-ENDE: Entpackter ZIP-Ordner mit Fehlern abgeschlossen - mind. eine Datei konnte nicht importiert werden, SB-Marker wird hochgeladen...'
|
||||
,i_object_ref => rec_folder.object_key
|
||||
);
|
||||
|
||||
-- Sachbearbeiter (SB)-Marker anlegen: signalisiert Sachbearbeitern, dass Dateien manuell geprüft werden müssen
|
||||
-- Sachbearbeiter (SB)-Marker anlegen: signalisiert Sachbearbeitern, dass Dateien manuell geprüft werden müssen
|
||||
l_sb_marker_key := rec_folder.object_key || pck_system.f_get_par_wert_by_programmid('NETSTORE_MARKER_SB');
|
||||
pck_net_storage.p_upload_object(
|
||||
i_object_key => l_sb_marker_key
|
||||
|
||||
Reference in New Issue
Block a user