Funzioni

Documentazione Funzionale

Questo modulo contiene funzioni per manipolare i dati dei documenti e per eseguire varie operazioni relative ai campi del documento.

Funzioni

set_field_value()

Imposta il valore di un campo nei dati del documento.

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

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

field_name*

string

Il nome del campo da impostare

value*

any

Il valore da impostare per il campo

set_date_value()

Imposta il valore di un campo data nei dati del documento.

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

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

field_name*

string

Il nome del campo da impostare

value*

string

Il valore della data da impostare in formato ISO (es. "2020-12-31").

add_days (opzionale)

int

Aggiunge giorni aggiuntivi alla data fornita Il valore predefinito è 0

skip_weekend (opzionale)

bool

Salta la data se cade nel fine settimana Il valore predefinito è False

set_amount_value()

Imposta il valore di un campo importo nei dati del documento.

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

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

field_name*

string

Il nome del campo da impostare

value*

string

Il valore da impostare per il campo (passa un numero come stringa es. "123456")

get_field_value()

Ottiene il valore di un campo dai dati del documento.

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

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

field_name*

string

Il nome del campo da impostare

default_value (opzionale)

any

Restituisce default_value se non viene trovato alcun valore di campo Il valore predefinito è None

is_clean (opzionale)

bool

Converte il valore in maiuscolo e rimuove eventuali spazi extra Il valore predefinito è False

Restituisce:

  • Valore del campo specificato

create_new_field()

Crea un nuovo campo con il nome e il valore specificati.

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

Parametri:

Nome
Tipo
Descrizione

field_name*

str

I dati del documento contenenti informazioni sui campi

value (opzionale)

any

Il valore iniziale per il campo Il valore predefinito è ""

Restituisce:

  • Dizionario del nuovo campo creato

delete_field()

Elimina un campo dai dati del documento

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)

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

field_name*

string

Il nome del campo da eliminare

Restituisce:

  • Document_data come json e come dict dopo che il campo è stato eliminato

set_is_required()

Imposta l'attributo 'is_required' di un campo nei dati del documento.

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)

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

field_name*

string

Il nome del campo da impostare

value*

bool

Il valore da impostare per il campo

set_force_validation()

Imposta l'attributo 'force_validation' di un campo nei dati del documento.

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

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

field_name*

string

Il nome del campo da impostare

value*

bool

Il valore da impostare per il campo

reset_validation (opzionale)

bool

Imposta l'attributo "is_validated" al valore specificato Il valore predefinito è False

set_field_as_invalid()

Contrassegna un campo nella schermata di validazione come non valido e lo evidenzia.

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

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

field_name*

string

Il nome del campo da contrassegnare come non valido

message*

string

Il messaggio di validazione per il campo

code (opzionale)

string

Codice di errore per la validazione

Il valore predefinito è None

set_field_attribute()

Imposta un attributo personalizzato di un campo nei dati del documento.

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

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

field_name*

string

Il nome del campo da impostare

attribute_name*

string

Il nome dell'attributo da impostare

value*

any

Il valore da impostare per l'attributo

is_supplier_valid()

Controlla se un fornitore è valido in base ai criteri forniti.

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

Parametri:

Nome
Tipo
Descrizione

user*

UserAuthentication

L'utente autenticato

filter_data_json*

json

Criteri di filtro per la validazione del fornitore

sub_org_id (opzionale)

string

ID della sotto-organizzazione opzionale per il filtraggio Il valore predefinito è None

Restituisce:

  • True, se l'utente è valido

  • False se l'utente non è valido

get_document_content()

Decodifica i dati del documento e li restituisce come stringa.

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

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

Restituisce:

  • Dati del documento come stringa.

update_document_status_with_doc_id()

Aggiorna lo stato di un documento con un ID specifico allo stato dato.

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

Parametri:

Nome
Tipo
Descrizione

doc_id*

string

L'ID del documento da aggiornare

user*

sia user ID che UserAuthentication object

L'utente che esegue l'aggiornamento

org_id*

string

L'ID dell'organizzazione a cui appartiene il documento

status*

string

Il nuovo stato del documento

message (opzionale)

string

Messaggio opzionale associato all'aggiornamento dello stato Il valore predefinito è None

doc_classification_class (opzionale)

string

Classe di classificazione del documento opzionale Il valore predefinito è None

get_lov_values()

Ottiene i valori LOV da un specifico org_id e chiave.

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

Parametri:

Nome
Tipo
Descrizione

org_id*

string

L'ID dell'organizzazione a cui appartiene il documento

key*

string

La chiave della Lista di Valori richiesta

return_type (opzionale)

string

Il tipo in cui i dati devono essere restituiti Il valore predefinito è 'list_of_objects'

sub_org_id (opzionale)

string

ID della sotto-organizzazione opzionale per il filtraggio Il valore predefinito è None

Restituisce:

  • Valori LOV come lista di oggetti o come lista.

format_decimal_to_locale()

Formatta un valore decimale nel formato en_US.UTF-8.

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

Parametri:

Nome
Tipo
Descrizione

value*

float, decimal.Decimal, str

Il valore che deve essere formattato.

to_locale (opzionale)

string

Il formato in cui il valore deve essere trasformato. Il valore predefinito è 'en_US.UTF-8'

max_decimal_places (opzionale)

int

Il massimo numero di cifre decimali che devono essere considerate. Il valore predefinito è 4

min_decimal_places (opzionale)

int

Il minimo numero di cifre decimali che devono essere considerate. Il valore predefinito è 2

  • value: Il valore che deve essere formattato.

  • to_locale (opzionale): Il formato in cui il valore viene trasformato.

  • max_decimal_places (opzionale): Il massimo numero di cifre decimali che devono essere considerate.

  • min_decimal_places (opzionale): Il minimo numero di cifre decimali che devono essere considerate.

Restituisce:

  • Il valore formattato.

compare_values()

Confronta due valori per uguaglianza, gestendo vari tipi di dati.

result = compare_values(10, "10")

Parametri:

Nome
Tipo
Descrizione

value1*

any

Il primo valore da confrontare

value2*

any

Il secondo valore da confrontare

Restituisce:

  • True se i valori sono uguali e False se differiscono

create_document_task()

Crea un'attività, la assegna a un utente o a un gruppo, imposta la priorità e, facoltativamente, invia un'email.

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

Parametri:

Nome
Tipo
Descrizione

user*

sia user ID che UserAuthentication object

L'utente che esegue l'aggiornamento

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

title*

string

Il titolo dell'attività

description*

string

La descrizione dell'attività

priority*

string

La priorità dell'attività

assigned_to_user_id*

int

L'id dell'utente a cui l'attività deve essere assegnata

assigned_to_group_id*

int

L'id del gruppo a cui l'attività deve essere assegnata

send_email*

bool

Determina se un'email deve essere inviata o meno

Restituisce:

  • Dict che indica se il processo è stato completato con successo o meno

set_document_sub_org_id()

Imposta il sub_org_id dei dati del documento specificato.

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)

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

sub_org_id*

string

ID della sotto-organizzazione opzionale per il filtraggio

get_user_by_id()

Ottiene l'utente con l'ID utente corrispondente.

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

Parametri:

Nome
Tipo
Descrizione

user_id*

string

L'ID dell'utente

Restituisce:

  • L'utente con l'ID utente corrispondente

get_group_by_id()

Ottiene il gruppo con l'ID gruppo corrispondente.

group_name  = str(get_group_by_id(assigned_to_group_id))

Parametri:

Nome
Tipo
Descrizione

group_id*

string

L'ID del gruppo

Restituisce:

  • Il gruppo con l'ID gruppo corrispondente

add_table_column()

Aggiunge una colonna alla tabella specificata.

table = tables_dict.get("ORDER_CONFIRMATION_TABLE")

if table:
    add_table_column(table, "PROMISED_DELIVERY_DATE")

Parametri:

Nome
Tipo
Descrizione

table*

string

La tabella in cui deve essere aggiunta la colonna

col_name*

string

Il nome della colonna

default_value (opzionale)

any

Il valore iniziale per il campo

Il valore predefinito è None

get_column_value()

Ottiene il valore di una colonna specificata.

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

Parametri:

Nome
Tipo
Descrizione

row*

string

La riga in cui si trova il valore

col_name*

string

Il nome della colonna

default_value (opzionale)

any

Il valore iniziale per il campo Il valore predefinito è None

is_clean (opzionale)

bool

Converte il valore in maiuscolo e rimuove eventuali spazi extra Il valore predefinito è False

Restituisce:

  • Il valore della colonna specificata

set_column_value()

Imposta il valore di una colonna specificata.

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)

Parametri:

Nome
Tipo
Descrizione

row*

string

La riga in cui si trova il valore

col_name*

string

Il nome della colonna

value*

any

Il valore che verrà impostato nella posizione specificata

Restituisce:

  • True se la modifica è stata effettuata con successo

set_column_date_value()

Imposta il valore della data di una colonna specificata.

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

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

row*

string

La riga in cui si trova il valore

col_name*

string

Il nome della colonna

value*

string

Il valore della data da impostare in formato ISO (es. "2020-12-31")

add_days (opzionale)

int

Aggiunge giorni aggiuntivi alla data fornita Il valore predefinito è 2

set_column_amount_value()

  • Converte il valore in stringa e imposta il valore per la colonna

  • Imposta il contenuto della colonna al valore

  • Format il valore secondo la locale

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

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

row*

string

La riga in cui si trova il valore

column_name*

string

Il nome della colonna

value*

string

Il valore da impostare per il campo (passa un numero come stringa es. "123456")

remove_rows_from_table()

Rimuove righe dalla tabella specificata.

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

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

table_name*

string

Il nome della tabella

count*

int

Quante righe devono essere eliminate

start*

int

Il punto di partenza

remove_all_rows_except_one_from_table()

Rimuove tutte le righe tranne una dalla tabella specificata

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

Parametri:

Nome
Tipo
Descrizione

document_data*

dictionary

I dati del documento contenenti informazioni sui campi

line_number*

int

Il numero della riga che non deve essere rimossa

Funzioni integrate di Python

Puoi anche utilizzare alcune delle funzioni integrate di Python:

  • abs(): Restituisce il valore assoluto di un numero.

  • len(): Restituisce la lunghezza (numero di elementi) di un oggetto, come una lista o una stringa.

  • isinstance(): Controlla se un oggetto è un'istanza di una particolare classe o tipo.

  • print(): Stampa l'output sulla console.

  • round(): Arrotonda un numero in virgola mobile a un numero specificato di cifre decimali.

  • str_to_bool(): Converte una stringa in un valore booleano (True o False).

  • type(): Restituisce il tipo di un oggetto.

  • dict(): Crea un oggetto dizionario.

  • list(): Crea un oggetto lista.

  • str(): Converte un valore in una stringa.

  • float(): Converte un valore in un numero in virgola mobile.

  • int(): Converte un valore in un intero.

Per ulteriori dettagli, visita la documentazione ufficiale di Python: Funzioni integrate.

Funzioni della classe String

Puoi anche utilizzare queste funzioni specificamente per lavorare con le stringhe:

  • lower(): Converte tutti i caratteri in una stringa in minuscolo.

  • upper(): Converte tutti i caratteri in una stringa in maiuscolo.

  • split(): Divide una stringa in una lista in base a un delimitatore (es. spazio o virgola).

  • startswith(): Controlla se una stringa inizia con un prefisso specificato.

  • endswith(): Controlla se una stringa termina con un suffisso specificato.

  • strip(): Rimuove eventuali spazi bianchi all'inizio o alla fine di una stringa.

Funzioni del modulo matematico di Python

Queste funzioni fanno parte del modulo matematico e sono utili per operazioni matematiche:

  • floor(): Restituisce l'intero più grande minore o uguale a un numero dato.

  • ceil(): Restituisce l'intero più piccolo maggiore o uguale a un numero dato.

Per ulteriori informazioni, consulta la documentazione ufficiale di Python: Funzioni del modulo matematico.

Funzione di espressione regolare

  • re.search(): Cerca un modello all'interno di una stringa e restituisce la prima corrispondenza.

Vedi ulteriori dettagli qui: Documentazione re.search.

Funzioni esterne

Ecco alcune funzioni utili da librerie esterne:

  • deepcopy(): Crea una copia di un oggetto, inclusi oggetti annidati (dal modulo copy). Documentazione Deepcopy.

  • levenshtein_distance(): Calcola il numero di modifiche (inserimenti, eliminazioni, sostituzioni) necessarie per cambiare una stringa in un'altra. Questa funzione è disponibile nella libreria Jellyfish.

Funzioni di data e ora

Puoi utilizzare le seguenti funzioni per lavorare con date e orari:

  • strptime(): Converte una stringa in un oggetto datetime in base a un formato specificato.

  • strftime(): Format un oggetto datetime in una stringa in base a un formato specificato.

Per ulteriori informazioni, controlla la documentazione ufficiale: Funzioni di data e ora.

Last updated