Fonctions

Documentation Fonctionnelle

Ce module contient des fonctions pour manipuler les données de document et effectuer diverses opérations liées aux champs de document.

Fonctions

set_field_value()

Définit la valeur d'un champ dans les données du document.

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

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

field_name*

string

Le nom du champ à définir

value*

any

La valeur à définir pour le champ

set_date_value()

Définit la valeur d'un champ de date dans les données du document.

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

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

field_name*

string

Le nom du champ à définir

value*

string

La valeur de date à définir au format ISO (par exemple, "2020-12-31").

add_days (optionnel)

int

Ajoute des jours supplémentaires à la date donnée Par défaut, c'est 0

skip_weekend (optionnel)

bool

Ignore la date si elle tombe le week-end Par défaut, c'est False

set_amount_value()

Définit la valeur d'un champ de montant dans les données du document.

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

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

field_name*

string

Le nom du champ à définir

value*

string

La valeur à définir pour le champ (passer un nombre sous forme de chaîne par exemple, "123456"

get_field_value()

Obtient la valeur d'un champ à partir des données du document.

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

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

field_name*

string

Le nom du champ à définir

default_value (optionnel)

any

Renvoie default_value si aucune valeur de champ n'est trouvée Par défaut, c'est None

is_clean (optionnel)

bool

Convertit la valeur en majuscules et supprime les espaces supplémentaires Par défaut, c'est False

Renvoie:

  • Valeur du champ spécifié

create_new_field()

Crée un nouveau champ avec le nom et la valeur spécifiés.

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

Paramètres:

Nom
Type
Description

field_name*

str

Les données du document contenant des informations sur les champs

value (optionnel)

any

La valeur initiale pour le champ Par défaut, c'est ""

Renvoie:

  • Dictionnaire du nouveau champ créé

delete_field()

Supprime un champ des données du document

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)

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

field_name*

string

Le nom du champ à supprimer

Renvoie:

  • Document_data en tant que json et en tant que dict après que le champ a été supprimé

set_is_required()

Définit l'attribut 'is_required' d'un champ dans les données du document.

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)

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

field_name*

string

Le nom du champ à définir

value*

bool

La valeur à définir pour le champ

set_force_validation()

Définit l'attribut 'force_validation' d'un champ dans les données du document.

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

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

field_name*

string

Le nom du champ à définir

value*

bool

La valeur à définir pour le champ

reset_validation (optionnel)

bool

Définit l'attribut "is_validated" à la valeur spécifiée Par défaut, c'est False

set_field_as_invalid()

Marque un champ dans l'écran de validation comme invalide et le met en surbrillance.

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

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

field_name*

string

Le nom du champ à marquer comme invalide

message*

string

Le message de validation pour le champ

code (optionnel)

string

Code d'erreur pour la validation

Par défaut, c'est None

set_field_attribute()

Définit un attribut personnalisé d'un champ dans les données du document.

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

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

field_name*

string

Le nom du champ à définir

attribute_name*

string

Le nom de l'attribut à définir

value*

any

La valeur à définir pour l'attribut

is_supplier_valid()

Vérifie si un fournisseur est valide en fonction des critères fournis.

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

Paramètres:

Nom
Type
Description

user*

UserAuthentication

L'utilisateur authentifié

filter_data_json*

json

Critères de filtrage pour valider le fournisseur

sub_org_id (optionnel)

string

ID de sous-organisation optionnel pour le filtrage Par défaut, c'est None

Renvoie:

  • True, si l'utilisateur est valide

  • False si l'utilisateur n'est pas valide

get_document_content()

Décode les données du document et les renvoie sous forme de chaîne.

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

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

Renvoie:

  • Données du document sous forme de chaîne.

update_document_status_with_doc_id()

Met à jour le statut d'un document avec un ID spécifique au statut donné.

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

Paramètres:

Nom
Type
Description

doc_id*

string

L'ID du document à mettre à jour

user*

soit user ID soit UserAuthentication objet

L'utilisateur effectuant la mise à jour

org_id*

string

L'ID de l'organisation à laquelle appartient le document

status*

string

Le nouveau statut du document

message (optionnel)

string

Message optionnel associé à la mise à jour du statut Par défaut, c'est None

doc_classification_class (optionnel)

string

Classe de classification de document optionnelle Par défaut, c'est None

get_lov_values()

Obtient les valeurs LOV d'un org_id et d'une clé spécifiques.

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

Paramètres:

Nom
Type
Description

org_id*

string

L'ID de l'organisation à laquelle appartient le document

key*

string

La clé de la liste des valeurs requises

return_type (optionnel)

string

Le type dans lequel les données doivent être renvoyées Par défaut, c'est 'list_of_objects'

sub_org_id (optionnel)

string

ID de sous-organisation optionnel pour le filtrage Par défaut, c'est None

Renvoie:

  • Valeurs LOV sous forme de liste d'objets ou sous forme de liste.

format_decimal_to_locale()

Formate une valeur décimale au format en_US.UTF-8.

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

Paramètres:

Nom
Type
Description

value*

float, decimal.Decimal, str

La valeur qui doit être formatée.

to_locale (optionnel)

string

Le format dans lequel la valeur est transformée. Par défaut, c'est 'en_US.UTF-8'

max_decimal_places (optionnel)

int

Le maximum de décimales qui doivent être considérées. Par défaut, c'est 4

min_decimal_places (optionnel)

int

Le minimum de décimales qui doivent être considérées. Par défaut, c'est 2

Renvoie:

  • La valeur formatée.

compare_values()

Compare deux valeurs pour l'égalité, en gérant divers types de données.

result = compare_values(10, "10")

Paramètres:

Nom
Type
Description

value1*

any

La première valeur à comparer

value2*

any

La deuxième valeur à comparer

Renvoie:

  • True si les valeurs sont égales et False si elles diffèrent

create_document_task()

Crée une tâche, l'assigne à un utilisateur ou un groupe, définit la priorité et envoie éventuellement un 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

Paramètres:

Nom
Type
Description

user*

soit user ID soit UserAuthentication objet

L'utilisateur effectuant la mise à jour

document_data*

dictionary

Les données du document contenant des informations sur les champs

title*

string

Le titre de la tâche

description*

string

La description de la tâche

priority*

string

La priorité de la tâche

assigned_to_user_id*

int

L'ID de l'utilisateur auquel la tâche doit être assignée

assigned_to_group_id*

int

L'ID du groupe auquel la tâche doit être assignée

send_email*

bool

Détermine si un e-mail doit être envoyé ou non

Renvoie:

  • Dict indiquant si le processus a été réussi ou non

set_document_sub_org_id()

Définit le sub_org_id des données de document spécifiées.

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)

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

sub_org_id*

string

ID de sous-organisation optionnel pour le filtrage

get_user_by_id()

Obtient l'utilisateur avec l'ID utilisateur correspondant.

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

Paramètres:

Nom
Type
Description

user_id*

string

L'ID de l'utilisateur

Renvoie:

  • L'utilisateur avec l'ID utilisateur correspondant

get_group_by_id()

Obtient le groupe avec l'ID de groupe correspondant.

group_name  = str(get_group_by_id(assigned_to_group_id))

Paramètres:

Nom
Type
Description

group_id*

string

L'ID du groupe

Renvoie:

  • Le groupe avec l'ID de groupe correspondant

add_table_column()

Ajoute une colonne à la table spécifiée.

table = tables_dict.get("ORDER_CONFIRMATION_TABLE")

if table:
    add_table_column(table, "PROMISED_DELIVERY_DATE")

Paramètres:

Nom
Type
Description

table*

string

La table où la colonne doit être ajoutée

col_name*

string

Le nom de la colonne

default_value (optionnel)

any

La valeur initiale pour le champ

Par défaut, c'est None

get_column_value()

Obtient la valeur d'une colonne spécifiée.

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

Paramètres:

Nom
Type
Description

row*

string

La ligne où la valeur est située

col_name*

string

Le nom de la colonne

default_value (optionnel)

any

La valeur initiale pour le champ Par défaut, c'est None

is_clean (optionnel)

bool

Convertit la valeur en majuscules et supprime les espaces supplémentaires Par défaut, c'est False

Renvoie:

  • La valeur de la colonne spécifiée

set_column_value()

Définit la valeur d'une colonne spécifiée.

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)

Paramètres:

Nom
Type
Description

row*

string

La ligne où la valeur est située

col_name*

string

Le nom de la colonne

value*

any

La valeur qui sera définie à l'emplacement spécifié

Renvoie:

  • True si le changement a été réussi

set_column_date_value()

Définit la valeur de date d'une colonne spécifiée.

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

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

row*

string

La ligne où la valeur est située

col_name*

string

Le nom de la colonne

value*

string

La valeur de date à définir au format ISO (par exemple, "2020-12-31")

add_days (optionnel)

int

Ajoute des jours supplémentaires à la date donnée Par défaut, c'est 2

set_column_amount_value()

  • Convertit la valeur en chaîne et définit la valeur pour la colonne

  • Définit le contenu de la colonne sur la valeur

  • Formate la valeur selon la locale

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

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

row*

string

La ligne où la valeur est située

column_name*

string

Le nom de la colonne

value*

string

La valeur à définir pour le champ (passer un nombre sous forme de chaîne par exemple, "123456")

remove_rows_from_table()

Supprime des lignes de la table spécifiée.

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

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

table_name*

string

Le nom de la table

count*

int

Combien de lignes doivent être supprimées

start*

int

Le point de départ

remove_all_rows_except_one_from_table()

Supprime toutes les lignes sauf une de la table spécifiée.

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

Paramètres:

Nom
Type
Description

document_data*

dictionary

Les données du document contenant des informations sur les champs

line_number*

int

Le numéro de la ligne qui ne doit pas être supprimée

Fonctions intégrées Python

Vous pouvez également utiliser certaines des fonctions intégrées de Python :

  • abs() : Renvoie la valeur absolue d'un nombre.

  • len() : Renvoie la longueur (nombre d'éléments) d'un objet, comme une liste ou une chaîne.

  • isinstance() : Vérifie si un objet est une instance d'une classe ou d'un type particulier.

  • print() : Imprime la sortie sur la console.

  • round() : Arrondit un nombre à virgule flottante à un nombre spécifié de décimales.

  • str_to_bool() : Convertit une chaîne en une valeur booléenne (True ou False).

  • type() : Renvoie le type d'un objet.

  • dict() : Crée un objet dictionnaire.

  • list() : Crée un objet liste.

  • str() : Convertit une valeur en chaîne.

  • float() : Convertit une valeur en nombre à virgule flottante.

  • int() : Convertit une valeur en entier.

Pour plus de détails, visitez la documentation officielle de Python : Fonctions intégrées.

Fonctions de la classe String

Vous pouvez également utiliser ces fonctions spécifiquement pour travailler avec des chaînes :

  • lower() : Convertit tous les caractères d'une chaîne en minuscules.

  • upper() : Convertit tous les caractères d'une chaîne en majuscules.

  • split() : Divise une chaîne en une liste basée sur un délimiteur (par exemple, espace ou virgule).

  • startswith() : Vérifie si une chaîne commence par un préfixe spécifié.

  • endswith() : Vérifie si une chaîne se termine par un suffixe spécifié.

  • strip() : Supprime tout espace blanc en début ou en fin de chaîne.

Fonctions du module Math de Python

Ces fonctions font partie du module math et sont utiles pour les opérations mathématiques :

  • floor() : Renvoie le plus grand entier inférieur ou égal à un nombre donné.

  • ceil() : Renvoie le plus petit entier supérieur ou égal à un nombre donné.

Pour plus d'informations, consultez la documentation officielle de Python : Fonctions du module Math.

Fonction d'expression régulière

  • re.search() : Recherche un motif dans une chaîne et renvoie la première correspondance.

Voir plus de détails ici : Documentation re.search.

Fonctions externes

Voici quelques fonctions utiles provenant de bibliothèques externes :

  • deepcopy() : Crée une copie d'un objet, y compris des objets imbriqués (du module copy). Documentation Deepcopy.

  • levenshtein_distance() : Calcule le nombre de modifications (insertions, suppressions, substitutions) nécessaires pour transformer une chaîne en une autre. Cette fonction est disponible dans la bibliothèque Jellyfish.

Fonctions de date et d'heure

Vous pouvez utiliser les fonctions suivantes pour travailler avec des dates et des heures :

  • strptime() : Convertit une chaîne en un objet datetime basé sur un format spécifié.

  • strftime() : Formate un objet datetime en une chaîne basée sur un format spécifié.

Pour plus d'informations, consultez la documentation officielle : Fonctions de date et d'heure.

Last updated