Zum Inhalt springen

Eine NetSuite-Journalbuchung buchen

Buchen Sie Journalbuchungen aus PlaidCloud-Projekttabellen mit dem Workflow-Schritt Post NetSuite Journal Entry in NetSuite. Dieser Leitfaden erstellt einen Stapel aus einer Kopftabelle und einer Positionstabelle, prüft ihn in der Vorschau, ohne NetSuite zu berühren, bucht ihn anschließend und liest das Ergebnis zurück.

  • Eine funktionierende NetSuite-Verbindung mit einer Rolle, die Journalbuchungen erstellen darf (Create-Zugriff auf den Datensatz „Journal Entry“, zusätzlich zur REST/OAuth-Einrichtung, die der Leitfaden zum Lesen behandelt).
  • Zwei Quelltabellen in Ihrem Projekt:
    • Eine Kopftabelle mit einer Zeile pro Journalbuchung.
    • Eine Positionstabelle mit einer oder mehreren Soll-/Haben-Zeilen pro Journalbuchung.
  1. Erstellen oder importieren Sie eine Kopftabelle mit einer Zeile pro Journalbuchung. Sie benötigt mindestens Folgendes:

    Spalte Zuordnung zu Erforderlich
    Eine Journalkennung Journal ID Ja
    Die NetSuite-Tochtergesellschaft Subsidiary Ja
    Das Datum der Buchung Buchungsdatum Ja
    Die NetSuite-Währung Currency Nein
    Ein Memo auf Buchungsebene Memo Nein
    Eine vom Aufrufer vergebene externe ID External ID Nein
  2. Erstellen oder importieren Sie eine Positionstabelle mit einer oder mehreren Zeilen pro Journalbuchung, die dieselbe Journalkennung wie ihre Kopfzeile verwendet:

    Spalte Zuordnung zu Erforderlich
    Die Journalkennung Journal ID Ja
    Das Hauptbuchkonto Account Ja
    Der Sollbetrag (0, falls keiner) Debit Ja
    Der Habenbetrag (0, falls keiner) Credit Ja
    Ein Memo auf Positionsebene Memo Nein
    Abteilung, Klasse, Standort, Entität Department / Class / Location / Entity Nein
  3. Gruppieren Sie die Beträge auf diesen beiden Tabellen auf der Ebene, auf der Sie buchen – eine Buchung pro Tag, pro Beleg oder pro Stapel – mit Ihren gewohnten Tabellenschritten (ein Pivot, eine Gruppierung mit Aggregation oder ein Join). Die Journal ID verknüpft eine Gruppe von Positionen mit ihrer Kopfzeile. Bilden Sie sie daher als Schlüssel, der pro Journalbuchung eindeutig ist und von allen zugehörigen Positionen geteilt wird.

  1. Fügen Sie Ihrem Workflow einen Schritt Post NetSuite Journal Entry hinzu.

  2. Legen Sie auf der Registerkarte Connection unter NetSuite-Verbindung Ihre NetSuite-Verbindung fest und wählen Sie eine Umgebung.

  3. Auf der Registerkarte Daten:

    • Legen Sie Journalbuchungs-Kopftabelle und Journalbuchungs-Positionstabelle auf die oben erstellten Tabellen fest.
    • Lassen Sie Test Only Mode vorerst aktiviert – siehe Vorschau und Validierung.
    • Lassen Sie Continue posting remaining entries if one entry fails aktiviert, es sei denn, ein Stapel soll bei der ersten fehlerhaften Buchung sofort anhalten.
    • Lassen Sie Submit Asynchronously deaktiviert, es sei denn, Sie benötigen für einen Stapel mit hohem Volumen ausdrücklich den asynchronen Annahmepfad von NetSuite – siehe Asynchrone Übermittlung weiter unten.
    • Legen Sie als Buchungsergebnistabelle eine Tabelle fest, die PlaidCloud erstellen oder überschreiben kann. Sie benötigen sie bei jeder Ausführung, nicht nur bei der ersten – siehe Die Ergebnistabelle lesen.
  4. Ordnen Sie auf der Registerkarte Kopfzuordnung die Spalten Ihrer Kopftabelle den Feldern Journal ID, Subsidiary, Buchungsdatum und (falls vorhanden) Currency, Memo und External ID zu. Verwenden Sie Kopffilter, wenn Sie nur eine Teilmenge der Kopfzeilen buchen möchten.

  5. Ordnen Sie auf der Registerkarte Zeilenzuordnung die Spalten Ihrer Positionstabelle den Feldern Journal ID, Account, Debit, Credit und (falls vorhanden) Memo, Department, Class, Location und Entity zu. Verwenden Sie Zeilenfilter auf dieselbe Weise.

Führen Sie den Schritt mit aktiviertem Test Only Mode aus. PlaidCloud erstellt jede Journalbuchung aus Ihren zugeordneten Daten und führt dieselben Prüfungen durch wie vor dem Buchen – ausgeglichene Soll- und Habenbeträge, vorhandene Pflichtfelder, ein gültiges Buchungsdatum –, ohne NetSuite auch nur ein einziges Mal aufzurufen. Es wird nichts gebucht.

  1. Führen Sie den Schritt aus (siehe Einen einzelnen Schritt in einem Workflow ausführen).

  2. Öffnen Sie die Ergebnistabelle und prüfen Sie, dass jede Zeile, die Sie buchen wollten, status = validated zeigt. Jede Zeile mit error nennt die Journal ID der Buchung und das Problem – häufig eine nicht ausgeglichene Buchung, ein fehlendes Account oder ein leeres Subsidiary oder Buchungsdatum.

  3. Korrigieren Sie bei jeder error-Zeile die Quelldaten (oder Ihre Zuordnungen und Filter) und führen Sie den Schritt erneut aus, bis der Stapel fehlerfrei validiert wird.

Sobald ein Stapel fehlerfrei validiert wird, deaktivieren Sie Test Only Mode und führen den Schritt erneut aus. Diesmal bucht PlaidCloud jede validierte Buchung tatsächlich in NetSuite.

Submit Asynchronously sendet jede Buchung mit dem asynchronen Accept-Header von NetSuite, statt auf ein synchrones Erstellen mit anschließendem Zurücklesen zu warten. NetSuite stellt die Buchung in eine Warteschlange und antwortet sofort; PlaidCloud erfasst sie mit einer Übermittlungsreferenz als pending statt als posted oder error.

Die Ergebnistabelle enthält eine Zeile pro versuchter Journalbuchung, unabhängig vom Modus, in dem der Schritt lief:

Spalte Beschreibung
journal_id Die Journal ID aus Ihrer Kopftabelle.
external_id Die externe ID, die für diesen Buchungsversuch verwendet wurde (siehe unten).
internal_id Die interne ID von NetSuite für die erstellte Buchung oder, solange pending, die asynchrone Übermittlungsreferenz. Leer im Test Only Mode und bei einem Fehler.
status validated, posted, pending (Submit Asynchronously hat die Buchung angenommen, aber NetSuite hat sie noch nicht bestätigt) oder error.
message Fehlerdetails bei error. Leer bei posted/validated.

Bauen Sie nachgelagerte Schritte – eine Benachrichtigung bei jeder error-Zeile oder einen Join zurück auf Ihre Kopftabelle, um internal_id festzuhalten – auf dieser Tabelle auf und nicht auf dem eigenen Ausführungsstatus des Schritts, da eine fehlerhafte Buchung in einem großen Stapel den gesamten Schritt nicht fehlschlagen lässt, wenn Continue posting remaining entries aktiviert ist.

Jede Buchung wird mit einer deterministischen externen ID gebucht, die aus Ihrem Projekt, der Verbindung, der Journal ID, dem Buchungsdatum und den Positionsbeträgen gebildet wird. Wird der Schritt für eine unveränderte Buchung erneut ausgeführt, verwendet er dieselbe externe ID, und die eigene Behandlung externer IDs in NetSuite verhindert ein Duplikat – die erneute Ausführung eines Workflows nach einem vorübergehenden Fehler ist daher für die unveränderten Buchungen unbedenklich.