Funktionen

Funktionale Dokumentation

Dieses Modul enthält Funktionen zur Manipulation von Dokumentdaten und zur Durchführung verschiedener Operationen im Zusammenhang mit Dokumentfeldern.

Funktionen

set_field_value()

Setzt den Wert eines Feldes in den Dokumentdaten.

po_number = get_field_value(fields_dict, 'purchase_order', None)
if not po_number:
    po_number = ''
    
if po_number:
    set_field_value(fields_dict, "invoice_sub_type", 'Purchase Invoice')
else:
    set_field_value(fields_dict, "invoice_sub_type", 'Cost Invoice')

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

field_name*

string

Der Name des zu setzenden Feldes

value*

any

Der Wert, der für das Feld gesetzt werden soll

remove_link (optional)

bool

Entfernt den "coords"-Schlüssel aus dem Feld.

set_date_value()

Setzt den Wert eines Datumsfeldes in den Dokumentdaten.

invoice_date = get_field_value(document_data, 'invoice_date', None)
    
if not document_json.get("script_executed", False):
    if invoice_date:
        set_date_value(document_data, "accounting_date", invoice_date)
        document_json["script_executed"] = True

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

field_name*

string

Der Name des zu setzenden Feldes

value*

string

Der Datumswert, der im ISO-Format gesetzt werden soll (z.B. "2020-12-31").

add_days (optional)

int

Fügt zusätzliche Tage zum angegebenen Datum hinzu Standard ist 0

skip_weekend (optional)

bool

Überspringt das Datum, wenn es auf das Wochenende fällt Standard ist False

remove link (optional)

bool

Entfernt den "coords"-Schlüssel aus dem Feld.

exclude_final_days (optional)

entweder string oder int

Gibt die auszuschließenden Tage an (0-6 oder Sonntag bis Samstag)

set_amount_value()

Setzt den Wert eines Betragsfeldes in den Dokumentdaten.

total_amount = get_field_value(document_data, "net_amount")
lines_total = 0.0
set_amount_value(document_data, "net_amount",str(lines_total))

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

field_name*

string

Der Name des zu setzenden Feldes

value*

string

Der Wert, der für das Feld gesetzt werden soll (geben Sie eine Zahl als String an, z.B. "123456")

remove link (optional)

bool

Entfernt den "coords"-Schlüssel aus dem Feld.

get_field_value()

Erhält den Wert eines Feldes aus den Dokumentdaten.

total_amount = get_field_value(document_data, "net_amount")
lines_total = 0.0
set_amount_value(document_data, "net_amount", str(lines_total))

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

field_name*

string

Der Name des zu setzenden Feldes

default_value (optional)

any

Gibt default_value zurück, wenn kein Feldwert gefunden wird Standard ist None

is_clean (optional)

bool

Konvertiert den Wert in Großbuchstaben und entfernt zusätzliche Leerzeichen Standard ist False

Gibt zurück:

  • Wert des angegebenen Feldes

create_new_field()

Erstellt ein neues Feld mit dem angegebenen Namen und Wert.

currency = get_field_value(document_data, 'currency', None)

if not currency:
    if 'currency' not in fields_dict:
        new_field = create_new_field('currency','')
        fields_dict['currency'] = new_field
        document_json['fields'].append(new_field)
    set_field_value(document_data, "currency", "USD")

Parameter:

Name
Typ
Beschreibung

field_name*

str

Die Dokumentdaten, die Feldinformationen enthalten

value (optional)

any

Der Anfangswert für das Feld Standard ist ""

Gibt zurück:

  • Dictionary des neu erstellten Feldes

delete_field()

Löscht ein Feld aus den Dokumentdaten.

field_amount = get_field_value(document_data, field_name)
    if not field_amount:
        delete_field(document_data, fields_dict, field_name)
    else:
        field_amount = float(field_amount)
        if field_amount == 0:
            delete_field(document_data, fields_dict, field_name)

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

field_name*

string

Der Name des zu löschenden Feldes

Gibt zurück:

  • Document_data als json und als dict, nachdem das Feld gelöscht wurde

set_is_required()

Setzt das Attribut 'is_required' eines Feldes in den Dokumentdaten.

net_amount = get_field_value(document_data, "net_amount", None)
if net_amount:
    set_is_required(document_data, "tax_country", True)
    set_is_required(document_data, "tax_code_without_country", True)

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

field_name*

string

Der Name des zu setzenden Feldes

value*

bool

Der Wert, der für das Feld gesetzt werden soll

set_force_validation()

Setzt das Attribut 'force_validation' eines Feldes in den Dokumentdaten.

if supplier_id in supplier_to_check:
    set_force_validation(document_data, 'purchase_order', True, reset_validation=reset_validation)

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

field_name*

string

Der Name des zu setzenden Feldes

value*

bool

Der Wert, der für das Feld gesetzt werden soll

reset_validation (optional)

bool

Setzt das Attribut "is_validated" auf den angegebenen Wert Standard ist False

set_field_as_invalid()

Markiert ein Feld im Validierungsbildschirm als ungültig und hebt es hervor.

if not document_date:
    set_field_as_invalid(document_data, "document_date", "Es ist kein Datum vorhanden", "INVALID_VALUE")

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

field_name*

string

Der Name des Feldes, das als ungültig markiert werden soll

message*

string

Die Validierungsnachricht für das Feld

code (optional)

string

Fehlercode für die Validierung

Standard ist None

set_field_attribute()

Setzt ein benutzerdefiniertes Attribut eines Feldes in den Dokumentdaten.

if purchase_order:
    if po_supplier_id != invoice_supplier_id:
        set_field_as_invalid(document_data, "supplier_name", "Supplier is different from PO supplier")
    else:
        set_field_attribute(document_data, "supplier_name", "is_valid", True)
        set_field_attribute(document_data, "supplier_name", "validation_message","")

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

field_name*

string

Der Name des zu setzenden Feldes

attribute_name*

string

Der Name des Attributs, das gesetzt werden soll

value*

any

Der Wert, der für das Attribut gesetzt werden soll

is_supplier_valid()

Überprüft, ob ein Lieferant basierend auf den angegebenen Kriterien gültig ist.

bool = is_supplier_valid(user, {"name": "Supplier Inc."})

Parameter:

Name
Typ
Beschreibung

user*

UserAuthentication

Der authentifizierte Benutzer

filter_data_json*

json

Filterkriterien zur Validierung des Lieferanten

sub_org_id (optional)

string

Optionale Sub-Organisations-ID für die Filterung Standard ist None

Gibt zurück:

  • True, wenn der Benutzer gültig ist

  • False, wenn der Benutzer ungültig ist

get_document_content()

Dekodiert Dokumentdaten und gibt sie als String zurück.

document_content = get_document_content(doc)
if document_content:
    document_content = document_content.lower()

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

Gibt zurück:

  • Dokumentdaten als String.

update_document_status_with_doc_id()

Aktualisiert den Status eines Dokuments mit einer bestimmten ID auf den angegebenen Status.

genehmigung_user_1 = get_field_value(document_data, 'genehmigung_user_1', None)

if genehmigung_user_1 != "LEER":
    update_document_status_with_doc_id(document_json['doc_id'], user, document_json['org_id'], "validated_pending_approval")

Parameter:

Name
Typ
Beschreibung

doc_id*

string

Die ID des zu aktualisierenden Dokuments

user*

entweder user ID oder UserAuthentication Objekt

Der Benutzer, der die Aktualisierung durchführt

org_id*

string

Die ID der Organisation, zu der das Dokument gehört

status*

string

Der neue Status des Dokuments

message (optional)

string

Optionale Nachricht, die mit der Statusaktualisierung verbunden ist Standard ist None

doc_classification_class (optional)

string

Optionale Dokumentklassifikationsklasse Standard ist None

get_lov_values()

Erhält die LOV-Werte von einer bestimmten org_id und einem Schlüssel.

reverse_charge_to_check = get_lov_values(org_id, 'Kosten', return_type="list_of_values")

Parameter:

Name
Typ
Beschreibung

org_id*

string

Die ID der Organisation, zu der das Dokument gehört

key*

string

Der Schlüssel der benötigten Liste von Werten

return_type (optional)

string

Der Typ, in dem die Daten zurückgegeben werden sollen Standard ist 'list_of_objects'

sub_org_id (optional)

string

Optionale Sub-Organisations-ID für die Filterung Standard ist None

language_code (optional)

string

Dieser Parameter legt die Sprache fest, in der die Werte zurückgegeben werden. Er akzeptiert Sprachcodes, wie "en" für Englisch oder "fr" für Französisch. Standard ist ""

Gibt zurück:

  • LOV-Werte als Liste von Objekten oder als Liste.

format_decimal_to_locale()

Formatiert einen Dezimalwert im Format en_US.UTF-8.

standard_value = "{0:.2f}".format(total)
formatted_value = format_decimal_to_locale(
    standard_value, document_json['amount_format_locale']
)

Parameter:

Name
Typ
Beschreibung

value*

float, decimal.Decimal, str

Der Wert, der formatiert werden soll.

to_locale (optional)

string

Das Format, in das der Wert umgewandelt werden soll. Standard ist 'en_US.UTF-8'

max_decimal_places (optional)

int

Die maximale Anzahl von Dezimalstellen, die berücksichtigt werden sollen. Standard ist 4

min_decimal_places (optional)

int

Die minimale Anzahl von Dezimalstellen, die berücksichtigt werden sollen. Standard ist 2

  • value: Der Wert, der formatiert werden soll.

  • to_locale (optional): Das Format, in das der Wert umgewandelt wird.

  • max_decimal_places (optional): Die maximale Anzahl von Dezimalstellen, die berücksichtigt werden sollen.

  • min_decimal_places (optional): Die minimale Anzahl von Dezimalstellen, die berücksichtigt werden sollen.

Gibt zurück:

  • Den formatierten Wert.

compare_values()

Vergleicht zwei Werte auf Gleichheit und behandelt verschiedene Datentypen.

result = compare_values(10, "10")

Parameter:

Name
Typ
Beschreibung

value1*

any

Der erste Wert, der verglichen werden soll

value2*

any

Der zweite Wert, der verglichen werden soll

Gibt zurück:

  • True, wenn die Werte gleich sind, und False, wenn sie unterschiedlich sind.

create_document_task()

Erstellt eine Aufgabe, weist sie einem Benutzer oder einer Gruppe zu, setzt die Priorität und sendet optional eine E-Mail.

if not is_task_created:
            create_document_task(user, document_data, "Herkunftsland außerhalb der EU", "Die Gelangensbestätigung kommt von einem Land außerhalb der EU. Bitte das MRN-Dokument anhängen.", "high", 1007, None, False)
            document_data["document_json"]["country_check_task_created"] = True

Parameter:

Name
Typ
Beschreibung

user*

entweder user ID oder UserAuthentication Objekt

Der Benutzer, der die Aktualisierung durchführt

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

title*

string

Der Titel der Aufgabe

description*

string

Die Beschreibung der Aufgabe

priority*

string

Die Priorität der Aufgabe

assigned_to_user_id*

int

Die ID des Benutzers, dem die Aufgabe zugewiesen werden soll

assigned_to_group_id*

int

Die ID der Gruppe, der die Aufgabe zugewiesen werden soll

send_email*

bool

Bestimmt, ob eine E-Mail gesendet werden soll oder nicht

Gibt zurück:

  • Dict, das angibt, ob der Prozess erfolgreich war oder nicht.

set_document_sub_org_id()

Setzt die sub_org_id der angegebenen document_data.

if sub_org_id != current_sub_org_id:
    document_data["document_json"]["sub_org_id4"] = sub_org_id
    set_document_sub_org_id(document_data, sub_org_id)

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

sub_org_id*

string

Optionale Sub-Organisations-ID für die Filterung

get_user_by_id()

Erhält den Benutzer mit der entsprechenden Benutzer-ID.

requester_mail = str(get_user_by_id(str(requester)).email.lower())

Parameter:

Name
Typ
Beschreibung

user_id*

string

Die ID des Benutzers

Gibt zurück:

  • Den Benutzer mit der entsprechenden Benutzer-ID.

get_group_by_id()

Erhält die Gruppe mit der entsprechenden Gruppen-ID.

group_name  = str(get_group_by_id(assigned_to_group_id))

Parameter:

Name
Typ
Beschreibung

group_id*

string

Die ID der Gruppe

Gibt zurück:

  • Die Gruppe mit der entsprechenden Gruppen-ID.

get_user_by_email()

Erhält den Benutzer mit der entsprechenden E-Mail.

user_name = str(get_user_by_email(email))

Parameter:

Name
Typ
Beschreibung

email*

any

Die E-Mail des Benutzers

Gibt zurück:

  • Den Benutzer mit der entsprechenden E-Mail.

add_table_column()

Fügt eine Spalte zur angegebenen Tabelle hinzu.

table = tables_dict.get("ORDER_CONFIRMATION_TABLE")

if table:
    add_table_column(table, "PROMISED_DELIVERY_DATE")

Parameter:

Name
Typ
Beschreibung

table*

string

Die Tabelle, in der die Spalte hinzugefügt werden soll

col_name*

string

Der Name der Spalte

default_value (optional)

any

Der Anfangswert für das Feld

Standard ist None

get_column_value()

Erhält den Wert einer bestimmten Spalte.

for row in table['rows']:
        unit = get_column_value(row, "UNIT")

Parameter:

Name
Typ
Beschreibung

row*

string

Die Zeile, in der sich der Wert befindet

col_name*

string

Der Name der Spalte

default_value (optional)

any

Der Anfangswert für das Feld Standard ist None

is_clean (optional)

bool

Konvertiert den Wert in Großbuchstaben und entfernt zusätzliche Leerzeichen Standard ist False

Gibt zurück:

  • Gibt den Wert der angegebenen Spalte zurück, wenn er existiert; andernfalls wird None zurückgegeben.

set_column_value()

Setzt den Wert der angegebenen Spalte. Wenn die Spalte nicht existiert, wird sie erstellt.

supplier_id = get_field_value(document_data, "supplier_id", "")

quote_table = tables_dict["QUOTE_TABLE"]

for row in quote_table.get('rows', []):
    set_column_value(row,"SUPPLIER_ID", supplier_id)

Parameter:

Name
Typ
Beschreibung

row*

string

Die Zeile, in der sich der Wert befindet

col_name*

string

Der Name der Spalte

value*

any

Der Wert, der an der angegebenen Stelle gesetzt werden soll

Gibt zurück:

  • True, wenn die Änderung erfolgreich war.

set_column_date_value()

Setzt den Datumswert einer bestimmten Spalte.

set_column_date_value(document_data, row, "DELIVERY_DATE", "2020-12-31", add_days=2)

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

row*

string

Die Zeile, in der sich der Wert befindet

col_name*

string

Der Name der Spalte

value*

string

Der Datumswert, der im ISO-Format gesetzt werden soll (z.B. "2020-12-31")

add_days (optional)

int

Fügt zusätzliche Tage zum angegebenen Datum hinzu Standard ist 2

skip_weekend (optional)

bool

Überspringt das Datum, wenn es auf das Wochenende fällt Standard ist False

exclude_final_days (optional)

entweder string oder int

Gibt die auszuschließenden Tage an (0-6 oder Sonntag bis Samstag)

set_column_amount_value()

  • Konvertiert den Wert in einen String und setzt den Wert für die Spalte

  • Setzt den Spalteninhalt auf den Wert

  • Formatiert den Wert gemäß der Locale

quantity = float(quantity) / 1000
set_column_amount_value(document_data, row, "QUANTITY", str(quantity))

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

row*

string

Die Zeile, in der sich der Wert befindet

column_name*

string

Der Name der Spalte

value*

string

Der Wert, der für das Feld gesetzt werden soll (geben Sie eine Zahl als String an, z.B. "123456")

delete_tables()

Diese Funktion löscht die Tabellen aus den Dokumentdaten.

delete_tables(document_data)

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

restore_tables()

Diese Funktion stellt die Tabellen in den Dokumentdaten wieder her.

restore_tables(document_data)

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

remove_rows_from_table()

Entfernt Zeilen aus der angegebenen Tabelle.

count = 1
start = 1
remove_rows_from_table(document_data,"INVOICE_TABLE",count,start) 

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

table_name*

string

Der Name der Tabelle

count*

int

Wie viele Zeilen gelöscht werden sollen

start*

int

Der Ausgangspunkt

remove_all_rows_except_one_from_table()

Entfernt alle Zeilen außer einer aus der angegebenen Tabelle.

count = 1
start = 1
remove_rows_from_table(document_data,"INVOICE_TABLE",count,start) 

Parameter:

Name
Typ
Beschreibung

document_data*

dictionary

Die Dokumentdaten, die Feldinformationen enthalten

line_number*

int

Die Nummer der Zeile, die nicht entfernt werden soll

Python Eingebaute Funktionen

Sie können auch einige der eingebauten Python-Funktionen nutzen:

  • abs(): Gibt den absoluten Wert einer Zahl zurück.

  • len(): Gibt die Länge (Anzahl der Elemente) eines Objekts, wie einer Liste oder einem String, zurück.

  • isinstance(): Überprüft, ob ein Objekt eine Instanz einer bestimmten Klasse oder eines bestimmten Typs ist.

  • print(): Gibt Ausgaben auf der Konsole aus.

  • round(): Rundet eine Fließkommazahl auf eine bestimmte Anzahl von Dezimalstellen.

  • str_to_bool(): Konvertiert einen String in einen booleschen Wert (True oder False).

  • type(): Gibt den Typ eines Objekts zurück.

  • dict(): Erstellt ein Dictionary-Objekt.

  • list(): Erstellt ein Listenobjekt.

  • str(): Konvertiert einen Wert in einen String.

  • float(): Konvertiert einen Wert in eine Fließkommazahl.

  • int(): Konvertiert einen Wert in eine Ganzzahl.

Für weitere Details besuchen Sie die offizielle Python-Dokumentation: Built-in Functions.

String-Klassenfunktionen

Sie können auch diese Funktionen speziell für die Arbeit mit Strings verwenden:

  • lower(): Konvertiert alle Zeichen in einem String in Kleinbuchstaben.

  • upper(): Konvertiert alle Zeichen in einem String in Großbuchstaben.

  • split(): Teilt einen String basierend auf einem Trennzeichen (z.B. Leerzeichen oder Komma) in eine Liste auf.

  • startswith(): Überprüft, ob ein String mit einem bestimmten Präfix beginnt.

  • endswith(): Überprüft, ob ein String mit einem bestimmten Suffix endet.

  • strip(): Entfernt führende oder nachfolgende Leerzeichen aus einem String.

Funktionen aus dem Python-Math-Modul

Diese Funktionen sind Teil des Math-Moduls und sind nützlich für mathematische Operationen:

  • floor(): Gibt die größte Ganzzahl zurück, die kleiner oder gleich einer gegebenen Zahl ist.

  • ceil(): Gibt die kleinste Ganzzahl zurück, die größer oder gleich einer gegebenen Zahl ist.

Für weitere Informationen siehe die offizielle Python-Dokumentation: Math Module Functions.

Reguläre Ausdrucksfunktion

  • re.search(): Durchsucht einen String nach einem Muster und gibt das erste Match zurück.

Siehe weitere Details hier: re.search Dokumentation.

Externe Funktionen

Hier sind einige nützliche Funktionen aus externen Bibliotheken:

  • deepcopy(): Erstellt eine Kopie eines Objekts, einschließlich verschachtelter Objekte (aus dem copy-Modul). Deepcopy Dokumentation.

  • levenshtein_distance(): Berechnet die Anzahl der Änderungen (Einfügungen, Löschungen, Ersetzungen), die erforderlich sind, um einen String in einen anderen zu ändern. Diese Funktion ist in der Jellyfish-Bibliothek verfügbar.

Datum- und Zeitfunktionen

Sie können die folgenden Funktionen für die Arbeit mit Daten und Zeiten verwenden:

  • strptime(): Konvertiert einen String in ein datetime-Objekt basierend auf einem bestimmten Format.

  • strftime(): Formatiert ein datetime-Objekt in einen String basierend auf einem bestimmten Format.

Für weitere Informationen siehe die offizielle Dokumentation: Datum- und Zeitfunktionen.

Last updated

Was this helpful?