Funkcje

Dokumentacja funkcjonalna

Ten moduł zawiera funkcje do manipulacji danymi dokumentów oraz wykonywania różnych operacji związanych z polami dokumentów.

Funkcje

set_field_value()

Ustawia wartość pola w danych dokumentu.

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')

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

field_name*

string

Nazwa pola do ustawienia

value*

any

Wartość do ustawienia dla pola

set_date_value()

Ustawia wartość pola daty w danych dokumentu.

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

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

field_name*

string

Nazwa pola do ustawienia

value*

string

Wartość daty do ustawienia w formacie ISO (np. "2020-12-31").

add_days (opcjonalnie)

int

Dodaje dodatkowe dni do podanej daty Domyślnie 0

skip_weekend (opcjonalnie)

bool

Pomija datę, jeśli przypada na weekend Domyślnie False

set_amount_value()

Ustawia wartość pola kwoty w danych dokumentu.

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

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

field_name*

string

Nazwa pola do ustawienia

value*

string

Wartość do ustawienia dla pola (przekaż liczbę jako string np. "123456"

get_field_value()

Pobiera wartość pola z danych dokumentu.

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

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

field_name*

string

Nazwa pola do ustawienia

default_value (opcjonalnie)

any

Zwraca default_value, jeśli nie znaleziono wartości pola Domyślnie None

is_clean (opcjonalnie)

bool

Konwertuje wartość na wielkie litery i usuwa dodatkowe spacje Domyślnie False

Zwraca:

  • Wartość określonego pola

create_new_field()

Tworzy nowe pole o określonej nazwie i wartości.

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")

Parametry:

Nazwa
Typ
Opis

field_name*

str

Dane dokumentu zawierające informacje o polach

value (opcjonalnie)

any

Początkowa wartość dla pola Domyślnie ""

Zwraca:

  • Słownik nowo utworzonego pola

delete_field()

Usuwa pole z danych dokumentu.

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)

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

field_name*

string

Nazwa pola do usunięcia

Zwraca:

  • Document_data jako json i jako dict po usunięciu pola

set_is_required()

Ustawia atrybut 'is_required' pola w danych dokumentu.

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)

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

field_name*

string

Nazwa pola do ustawienia

value*

bool

Wartość do ustawienia dla pola

set_force_validation()

Ustawia atrybut 'force_validation' pola w danych dokumentu.

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

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

field_name*

string

Nazwa pola do ustawienia

value*

bool

Wartość do ustawienia dla pola

reset_validation (opcjonalnie)

bool

Ustawia atrybut "is_validated" na określoną wartość Domyślnie False

set_field_as_invalid()

Oznacza pole na ekranie walidacji jako nieważne i podświetla je.

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

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

field_name*

string

Nazwa pola do oznaczenia jako nieważne

message*

string

Wiadomość walidacyjna dla pola

code (opcjonalnie)

string

Kod błędu dla walidacji

Domyślnie None

set_field_attribute()

Ustawia niestandardowy atrybut pola w danych dokumentu.

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","")

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

field_name*

string

Nazwa pola do ustawienia

attribute_name*

string

Nazwa atrybutu do ustawienia

value*

any

Wartość do ustawienia dla atrybutu

is_supplier_valid()

Sprawdza, czy dostawca jest ważny na podstawie podanych kryteriów.

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

Parametry:

Nazwa
Typ
Opis

user*

UserAuthentication

Użytkownik uwierzytelniony

filter_data_json*

json

Kryteria filtrowania do walidacji dostawcy

sub_org_id (opcjonalnie)

string

Opcjonalny identyfikator podorganizacji do filtrowania Domyślnie None

Zwraca:

  • True, jeśli użytkownik jest ważny

  • False, jeśli użytkownik nie jest ważny

get_document_content()

Dekoduje dane dokumentu i zwraca je jako string.

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

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

Zwraca:

  • Dane dokumentu jako string.

update_document_status_with_doc_id()

Aktualizuje status dokumentu o określonym ID na dany 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")

Parametry:

Nazwa
Typ
Opis

doc_id*

string

ID dokumentu do aktualizacji

user*

albo user ID albo UserAuthentication obiekt

Użytkownik wykonujący aktualizację

org_id*

string

ID organizacji, do której należy dokument

status*

string

Nowy status dokumentu

message (opcjonalnie)

string

Opcjonalna wiadomość związana z aktualizacją statusu Domyślnie None

doc_classification_class (opcjonalnie)

string

Opcjonalna klasa klasyfikacji dokumentu Domyślnie None

get_lov_values()

Pobiera wartości LOV z określonego org_id i klucza.

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

Parametry:

Nazwa
Typ
Opis

org_id*

string

ID organizacji, do której należy dokument

key*

string

Klucz wymaganej Listy Wartości

return_type (opcjonalnie)

string

Typ, w jakim dane powinny być zwrócone Domyślnie 'list_of_objects'

sub_org_id (opcjonalnie)

string

Opcjonalny identyfikator podorganizacji do filtrowania Domyślnie None

Zwraca:

  • Wartości LOV jako lista obiektów lub jako lista.

format_decimal_to_locale()

Formatuje wartość dziesiętną do formatu en_US.UTF-8.

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

Parametry:

Nazwa
Typ
Opis

value*

float, decimal.Decimal, str

Wartość, która powinna być sformatowana.

to_locale (opcjonalnie)

string

Typ, w jakim dane powinny być zwrócone Domyślnie 'en_US.UTF-8'

max_decimal_places (opcjonalnie)

int

Opcjonalny identyfikator podorganizacji do filtrowania Domyślnie 4

min_decimal_places (opcjonalnie)

int

Minimalna liczba miejsc dziesiętnych, które powinny być brane pod uwagę Domyślnie 2

  • value: Wartość, która powinna być sformatowana.

  • to_locale (opcjonalnie): Format, w jakim wartość jest przekształcana.

  • max_decimal_places (opcjonalnie): Maksymalna liczba miejsc dziesiętnych, które powinny być brane pod uwagę.

  • min_decimal_places (opcjonalnie): Minimalna liczba miejsc dziesiętnych, które powinny być brane pod uwagę.

Zwraca:

  • Sformatowana wartość.

compare_values()

Porównuje dwie wartości pod kątem równości, obsługując różne typy danych.

result = compare_values(10, "10")

Parametry:

Nazwa
Typ
Opis

value1*

any

Pierwsza wartość do porównania

value2*

any

Druga wartość do porównania

Zwraca:

  • True, jeśli wartości są równe, i False, jeśli się różnią

create_document_task()

Tworzy zadanie, przypisuje je do użytkownika lub grupy, ustawia priorytet i opcjonalnie wysyła 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

Parametry:

Nazwa
Typ
Opis

user*

albo user ID albo UserAuthentication obiekt

Użytkownik wykonujący aktualizację

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

title*

string

Tytuł zadania

description*

string

Opis zadania

priority*

string

Priorytet zadania

assigned_to_user_id*

int

ID użytkownika, do którego zadanie powinno być przypisane

assigned_to_group_id*

int

ID grupy, do której zadanie powinno być przypisane

send_email*

bool

Określa, czy e-mail powinien być wysłany, czy nie

Zwraca:

  • Dict, który wskazuje, czy proces był udany, czy nie

set_document_sub_org_id()

Ustawia sub_org_id w określonych 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)

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

sub_org_id*

string

Opcjonalny identyfikator podorganizacji do filtrowania

get_user_by_id()

Pobiera użytkownika o odpowiadającym identyfikatorze użytkownika.

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

Parametry:

Nazwa
Typ
Opis

user_id*

string

ID użytkownika

Zwraca:

  • Użytkownika o odpowiadającym identyfikatorze użytkownika

get_group_by_id()

Pobiera grupę o odpowiadającym identyfikatorze grupy.

group_name  = str(get_group_by_id(assigned_to_group_id))

Parametry:

Nazwa
Typ
Opis

group_id*

string

ID grupy

Zwraca:

  • Grupę o odpowiadającym identyfikatorze grupy

add_table_column()

Dodaje kolumnę do określonej tabeli.

table = tables_dict.get("ORDER_CONFIRMATION_TABLE")

if table:
    add_table_column(table, "PROMISED_DELIVERY_DATE")

Parametry:

Nazwa
Typ
Opis

table*

string

Tabela, do której powinna być dodana kolumna

col_name*

string

Nazwa kolumny

default_value (opcjonalnie)

any

Początkowa wartość dla pola

Domyślnie None

get_column_value()

Pobiera wartość określonej kolumny.

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

Parametry:

Nazwa
Typ
Opis

row*

string

Wiersz, w którym znajduje się wartość

col_name*

string

Nazwa kolumny

default_value (opcjonalnie)

any

Początkowa wartość dla pola Domyślnie None

is_clean (opcjonalnie)

bool

Konwertuje wartość na wielkie litery i usuwa dodatkowe spacje Domyślnie False

Zwraca

  • Wartość określonej kolumny

set_column_value()

Ustawia wartość określonej kolumny.

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)

Parametry:

Nazwa
Typ
Opis

row*

string

Wiersz, w którym znajduje się wartość

col_name*

string

Nazwa kolumny

value*

any

Wartość, która zostanie ustawiona w określonym miejscu

Zwraca:

  • True, jeśli zmiana była udana

set_column_date_value()

Ustawia wartość daty określonej kolumny.

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

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

row*

string

Wiersz, w którym znajduje się wartość

col_name*

string

Nazwa kolumny

value*

string

Wartość daty do ustawienia w formacie ISO (np. "2020-12-31")

add_days (opcjonalnie)

int

Dodaje dodatkowe dni do podanej daty Domyślnie 2

set_column_amount_value()

  • Konwertuje wartość na string i ustawia wartość dla kolumny

  • Ustawia zawartość kolumny na wartość

  • Formatuje wartość zgodnie z lokalizacją

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

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

row*

string

Wiersz, w którym znajduje się wartość

column_name*

string

Nazwa kolumny

value*

string

Wartość do ustawienia dla pola (przekaż liczbę jako string np. "123456")

remove_rows_from_table()

Usuwa wiersze z określonej tabeli.

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

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

table_name*

string

Nazwa tabeli

count*

int

Ile wierszy powinno zostać usuniętych

start*

int

Punkt początkowy

remove_all_rows_except_one_from_table()

Usuwa wszystkie wiersze z wyjątkiem jednego z określonej tabeli.

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

Parametry:

Nazwa
Typ
Opis

document_data*

dictionary

Dane dokumentu zawierające informacje o polach

line_number*

int

Numer linii, która nie powinna zostać usunięta

Wbudowane funkcje Pythona

Możesz również wykorzystać niektóre wbudowane funkcje Pythona:

  • abs(): Zwraca wartość bezwzględną liczby.

  • len(): Zwraca długość (liczbę elementów) obiektu, takiego jak lista lub string.

  • isinstance(): Sprawdza, czy obiekt jest instancją określonej klasy lub typu.

  • print(): Wypisuje wynik na konsoli.

  • round(): Zaokrągla liczbę zmiennoprzecinkową do określonej liczby miejsc dziesiętnych.

  • str_to_bool(): Konwertuje string na wartość boolean (True lub False).

  • type(): Zwraca typ obiektu.

  • dict(): Tworzy obiekt słownika.

  • list(): Tworzy obiekt listy.

  • str(): Konwertuje wartość na string.

  • float(): Konwertuje wartość na liczbę zmiennoprzecinkową.

  • int(): Konwertuje wartość na liczbę całkowitą.

Aby uzyskać więcej informacji, odwiedź oficjalną dokumentację Pythona: Wbudowane funkcje.

Funkcje klasy String

Możesz również używać tych funkcji specjalnie do pracy z stringami:

  • lower(): Konwertuje wszystkie znaki w stringu na małe litery.

  • upper(): Konwertuje wszystkie znaki w stringu na wielkie litery.

  • split(): Dzieli string na listę na podstawie separatora (np. spacja lub przecinek).

  • startswith(): Sprawdza, czy string zaczyna się od określonego prefiksu.

  • endswith(): Sprawdza, czy string kończy się określonym sufiksem.

  • strip(): Usuwa wszelkie wiodące lub końcowe białe znaki ze stringa.

Funkcje z modułu matematycznego Pythona

Te funkcje są częścią modułu matematycznego i są przydatne do operacji matematycznych:

  • floor(): Zwraca największą liczbę całkowitą mniejszą lub równą danej liczbie.

  • ceil(): Zwraca najmniejszą liczbę całkowitą większą lub równą danej liczbie.

Aby uzyskać więcej informacji, sprawdź oficjalną dokumentację Pythona: Funkcje modułu matematycznego.

Funkcja wyrażeń regularnych

  • re.search(): Wyszukuje wzór w stringu i zwraca pierwsze dopasowanie.

Zobacz więcej szczegółów tutaj: Dokumentacja re.search.

Funkcje zewnętrzne

Oto kilka przydatnych funkcji z zewnętrznych bibliotek:

  • deepcopy(): Tworzy kopię obiektu, w tym zagnieżdżonych obiektów (z modułu copy). Dokumentacja Deepcopy.

  • levenshtein_distance(): Oblicza liczbę edycji (wstawień, usunięć, substytucji) wymaganych do przekształcenia jednego stringa w inny. Ta funkcja jest dostępna w bibliotece Jellyfish.

Funkcje daty i czasu

Możesz używać następujących funkcji do pracy z datami i czasami:

  • strptime(): Konwertuje string na obiekt datetime na podstawie określonego formatu.

  • strftime(): Formatuje obiekt datetime na string na podstawie określonego formatu.

Aby uzyskać więcej informacji, sprawdź oficjalną dokumentację: Funkcje daty i czasu.

Last updated

Was this helpful?