Funzioni di Logica Aziendale

Funzioni per ricerche, abbinamento OA, attivita, gestione utenti/gruppi e cambiamenti di stato.

Sorgente: module/script/helper/document_script_functions.py


get_lookup_records()

Interroga i dati master dalle tabelle di ricerca (fornitori, articoli, conti contabili, ecc.).

get_lookup_records(org_id, sub_org_id, lookup_name, filters, **kwargs)

Parametri:

Nome
Tipo
Descrizione

org_id

str

UUID dell'organizzazione

sub_org_id

str/None

UUID della sotto-organizzazione (o None)

lookup_name

str

Nome della ricerca (es. "supplier", "item", "gl_account")

filters

list

Condizioni di filtro (vedi formati sotto)

skip

int

Offset per la paginazione (predefinito: 0)

limit

int

Risultati massimi (predefinito: 100)

match_all

bool

True = AND, False = OR (predefinito: True)

sort_order

list

Ordinamento (opzionale)

Formati di Filtro

Sono supportati tre formati:

Ordinamento

Esempio — Ricerca fornitore per ID venditore:

Esempio — Cercare conti contabili con filtri multipli:

circle-info

Internamente utilizza search_operator="SMART" che supporta la corrispondenza approssimativa.


is_supplier_valid()

Verifica se un fornitore esiste nei dati di ricerca.

Parametri:

Nome
Tipo
Descrizione

user

UserAuthentication

L'oggetto di contesto user

filter_data_json

dict

Filtro nel formato {"match_all": True, "filters": [...]}

sub_org_id

str/None

Sotto-organizzazione

Restituisce: True se almeno 1 corrispondenza, altrimenti False

Esempio — Validare il fornitore:


auto_po_match_for_purchase_orders()

Attiva l'abbinamento automatico OA tramite il microservizio po-match-service.

Parametri:

Nome
Tipo
Descrizione

user

UserAuthentication

Deve essere un oggetto utente reale

document_data

dict

Contesto del documento

po_numbers

str/list

Numeri OA (separati da virgola o lista)

Restituisce: document_data aggiornato con po_items, po_match_status, po_multi_matched

Esempio — Abbinamento automatico OA:

circle-exclamation

get_next_sequence_number()

Ottiene e incrementa atomicamente un numero di sequenza nel database.

Parametri:

Nome
Tipo
Descrizione

org_id

str

UUID dell'organizzazione

sequence_name

str

Deve contenere "sequence" (es. "invoice_sequence")

default_value

int

Valore iniziale quando la sequenza viene creata

Restituisce: int — il numero successivo, oppure None se il nome non e valido

Esempio — Generare un numero documento interno:

triangle-exclamation

create_document_task()

Crea un'attivita per il documento corrente.

Parametri:

Nome
Tipo
Descrizione

user

UserAuthentication

Contesto utente

title

str

Titolo dell'attivita

description

str

Descrizione

priority

str/int

Priorita

assigned_to_user_id

str/None

Utente assegnato

assigned_to_group_id

str/None

Gruppo assegnato

send_email

bool

Inviare notifica email

Esempio — Creare un'attivita per fatture con importo elevato:


set_document_sub_org_id()

Assegna una sotto-organizzazione a un documento.

Effetti collaterali:

  • Imposta sub_org_id in document_json

  • Salva direttamente nel database (se doc_id e presente)

Esempio — Instradamento basato sul fornitore:


update_document_status_with_doc_id()

Cambia lo stato di un documento.

Parametri:

Nome
Tipo
Descrizione

doc_id

str

UUID del documento

status

str

Nuovo stato (es. "error", "ready_for_validation")

message

str/None

Messaggio di stato

doc_classification_class

str/None

Per lo stato CLASSIFIED: nuovo tipo di documento

Esempio — Impostare lo stato del documento su errore:

circle-exclamation

get_document_content()

Restituisce il testo OCR completo del documento.

Restituisce: str — Testo concatenato di tutte le pagine

Esempio — Cercare parole chiave nel testo completo:

circle-info

Il risultato viene memorizzato nella cache per 60 secondi (cache TTL con massimo 128 voci).


get_user_by_id() / get_user_by_email()

Cerca un utente per ID o email.

Restituisce: Oggetto UsersCache con attributi come .email, .first_name, .last_name, .user_id

Esempio — Assegnare un'attivita a un utente specifico:


get_group_by_id() / get_group_by_name()

Cerca un gruppo utenti per ID o nome.

Restituisce: Oggetto GroupCache

Esempio — Trovare un gruppo per l'assegnazione dell'attivita:


compare_values()

Confronto intelligente di valori con conversione di tipo.

Logica di confronto:

  1. None == NoneTrue

  2. None != non-NoneFalse

  3. Stringhe che sono numeri → confronto numerico ("1.0" == "1.00"True)

  4. Stringhe → senza distinzione maiuscole/minuscole, senza distinzione spazi ("ABC " == " abc"True)

  5. Bool vs Stringa → confronto stringa (True == "true"True)

  6. Confronto Decimal come fallback

Esempio — Verificare la corrispondenza degli importi:


get_lov_values()

Recupera le voci della Lista di Valori (LOV).

Parametri:

Nome
Tipo
Descrizione

org_id

str

UUID dell'organizzazione

key

str

Chiave LOV

return_type

str

"list_of_objects" o "list_of_values"

sub_org_id

str/None

Filtro sotto-organizzazione opzionale

language_code

str

Codice lingua (es. "en", "de")

Restituisce: Valori LOV come lista di oggetti o come lista semplice.

Esempio — Ottenere i codici fiscali configurati:

Last updated