Werfen wir zunächst einen Blick auf eine Gesamtbild von dem, was die Oracle BRM Abrechnung Prozess tut:
- Erfasst den Gesamtbetrag der Saldoauswirkungen, die im vergangenen Monat aufgetreten sind. Dies kann Nutzungsgebühren und Abonnementgebühren beinhalten.
- Ändert den Status aller mit der Rechnung verknüpften Rechnungsposten von ausstehend auf offen, so dass sie keine Gebühren mehr anhäufen und Zahlungen auf sie angewendet werden können. Darüber hinaus wird der Rechnung ein Fälligkeitsdatum hinzugefügt.
- Fordert automatisch Zahlungen von einem Kreditkartenverarbeiter an oder fordert Zahlungen durch den Versand von Rechnungen an.
- Aktualisiert automatisch den Kontostand eines Kunden, wenn eine Zahlung in der BRM-Datenbank erfasst wird.
Wie wird all dies nun in der Praxis umgesetzt?
Bevor Sie eine brm-Abrechnung in der Produktion durchführen, müssen alle erforderlichen Schritte ausgeführt werden. Der erste Schritt besteht darin, eine Kopie der Produktionsumgebung vorzubereiten - dies kann entweder die Vorproduktions- oder eine Testumgebung sein. Dieser Schritt umfasst die Installation der neuesten Produktionsversion in dieser Umgebung und das Kopieren der Produktionsdatenbank. Als nächstes müssen die Umgebungskonfigurationen denen der Produktionsumgebung entsprechen. Hier sind die wichtigsten Konfigurationen, die entsprechend eingestellt werden sollten:
- cm Konfiguration ($HOME/pin/sys/cm/pin.conf),
o Überprüfen Sie, ob der Eintrag loglevel auf 1 gesetzt ist.
o Ändern Sie den Eintrag für den Parameter agent_return auf 0
o Ändern Sie den Eintrag für den Parameter simulate_agent auf 1
Diese beiden letzten Änderungen werden vorgenommen, damit während des Rechnungslaufs keine Provisionierungsmaßnahmen erforderlich sind.
- dm_oracle Konfiguration ($HOME/pin/sys/dm_oracle/pin.conf),
o Setzen Sie den Parameter dm_bigsize auf 8388608 oder höher
o Setzen Sie den Parameter dm_shmsize auf 33554432 oder höher.
o Setzen Sie dm_n_fe auf 8
o Setzen Sie dm_max_per_fe auf 16
o Setzen Sie dm_n_be auf 24
o Setzen Sie dm_trans_be_max auf 22
- pin_rechnung_akkten Konfiguration ($HOME/pin/apps/pin_billd/pin.conf),
o Überprüfen Sie den Loglevel. Ändern Sie den Wert auf den entsprechenden Wert, je nachdem, was während des Rechnungstests überprüft werden muss, entweder 1 oder 3.
o Ändern Sie den Parameter children für pin_billd und pin_mta auf 5
o Ändern Sie den Parameter per_batch für pin_billd und pin_mta auf 20000
o Ändern Sie den Parameter fetch_size für pin_billd und pin_mta auf 150000
- pin_inv_accts Konfiguration ($HOME/pin/apps/pin_inv/pin.conf),
o Überprüfen Sie den Loglevel. Ändern Sie den Wert auf den entsprechenden Wert, je nachdem, was während des Rechnungstests überprüft werden muss, entweder 1 oder 3.
o Ändern Sie den Parameter children für pin_billd und pin_mta auf 5
o Ändern Sie den Parameter per_batch für pin_billd und pin_mta auf 2000
o Ändern Sie den Parameter fetch_size für pin_billd und pin_mta auf 15000
Um die bestmögliche Simulation der Produktion zu erhalten, muss der billrun pin_virtual_time auf das Datum gesetzt werden, an dem der echte billrun auf der Produktion ausgeführt wird. Sobald dies geschehen ist, kann der Billrun gestartet werden.
Wir führen die Rechnungsstellung monatlich mit dem Skript pin_bill_day durch, das etwa 100.000 Rechnungen pro Stunde erstellt. Das Skript erstellt Rechnungen für Konten, deren Rechnungsdatum an einem beliebigen Tag vor Mitternacht des Tages liegt, an dem wir die Abrechnung durchführen. Was macht das Skript pin_billd_day eigentlich? Es führt die folgenden Dienstprogramme für die Rechnungsstellung aus:
- pin_deferred_act: Führt aufgeschobene Aktionen aus. Wenn z.B. ein Konto inaktiv werden soll, führt dieses Dienstprogramm die Statusänderung zum geplanten Datum durch.
- pin_rechnung_konten: Berechnet den fälligen Saldo für Konten und erstellt eine Rechnung über den fälligen Saldo.
- pin_collect: Zieht den fälligen Saldo für Konten ein, die mit Kreditkarten und Lastschriftverfahren bezahlt werden.
- pin_refund: Findet Konten mit Erstattungsposten und führt Online-Erstattungstransaktionen durch.
- pin_inv_accts: Erstellt eine Rechnung für jedes Konto, das in Rechnung gestellt wird.
- pin_cycle_fees: Wendet die Auswirkungen der Zyklusgebühren auf das Kundenkonto an und storniert Produkte, deren Stornierungsdatum abgelaufen ist.
Um den Fortschritt und die Leistung des Skripts pin_bill_day zu überprüfen, führen wir Abfragen in der Datenbank durch, um Informationen darüber zu erhalten, wie viele Rechnungen erledigt sind, wie viele noch zu erledigen sind, ob es Rechnungen mit Fehlern gibt, usw.
Nachdem der Teil von brm billing abgeschlossen ist und alle Rechnungen erstellt wurden, beginnt die Rechnungsstellung. Nachdem die Rechnungen erstellt wurden, werden sie in XML-Dokumente exportiert, die anschließend in das PDF-Format konvertiert werden.
Neben den bereits erwähnten Abfragen gibt es noch weitere Abfragen, die nach Abschluss der Fakturierung und Rechnungsstellung ausgeführt werden müssen, um die Richtigkeit der durch diesen Prozess erzeugten Daten zu überprüfen. Wir führen einen Stapel von Abfragen aus; hier sind einige von ihnen:
- Ist die Rechnungsstellung fehlgeschlagen?
select * from billinfo_t where billing_state = 4 and bill_info_id'Rechnungseinheit(1)';
-Erwartete Ergebnisse: Keine Zeilen gefunden
- Gibt es noch nicht abgerechnete Konten?
select poid_id0, vor_name,nach_name,a.status from konto_t a, konto_nameinfo_t an where
a.poid_id0=an.obj_id0 und
created_t< und
not exists (select b.account_obj_id0 from bill_t b
wo end_t= und
b.account_obj_id0=a.poid_id0);
-Erwartete Ergebnisse: Keine Zeilen gefunden
- Gibt es Rechnungen ohne Rechnungsnummer?
select * from bill_t where end_t= and bill_no is null;
- Erwartet: Keine Zeilen gefunden
Alle gefundenen Probleme werden dann untersucht und über das Versionskontrollsystem behoben, wobei die Korrekturen später in die nächste Version aufgenommen werden.