Exemples de scriptings
Exemples de script permettant d'automatiser certaines tâches dans les workflows d'Open-Capture. Ces derniers sont exhaustifs et permettent seulement d'avoir une idée de ce qu'il est possible de faire.
Détection FacturX
# La fonction `main` sera appelé avant le traitement d'un document, ne changez pas le nom de cette fonction
# Ce script sera effectué avant la partie `traitement`, si cette dernière est activée
# Depuis l'étape `entrée` vous avez accès aux variables suivantes :
# - ip --> (string) Adresse IP de l'utilisateur
# - user_info --> (string) Informations sur l'utilisateur courant
# - custom_id --> (string) Identifiant du custom
# - file --> (string) Chemin complet du fichier à traiter
# - opencapture_path --> (string) Racine du dossier d'installation Open-Capture
# - log --> (classe Log) Instance de la classe Log permettant de logger (info ou error) différentes données
# - input_path --> (string) Chemin de capture des documents
# - customer_id --> (integer) Identifiant du compte client
# - ia_model_id --> (integer) Identifiant du modèle d'intelligence artificielle
# Depuis l'étape `entrée` vous avez accès aux fonctions suivantes :
# - send_to_workflow() --> Envoi du document vers un autre workflow
# - arguments : ip, log, file, user_info, workflow_id, custom_id
# La liste des librairies Python disponible sont visibles ici :
# https://github.com/edissyum/opencapture/blob/master/bin/install/pip-requirements.txt
# Ce script est un exemple permettant de lire les code QR dans le document en cours de traitement
# Si le contenu du QR Code dispose du mot clé facture, le workflow continue
# Sinon, le workflow s'arrête et un autre est automatiquement lancé
import os
import facturx
from src.backend.scripting_functions import send_to_workflow
def main(args):
args['log'].info(f"[INPUT_SCRIPT] Vérification si le document {os.path.basename(args['file'])} est de type FacturX")
with open(args['file'], 'rb') as pdf_file:
_, xml_content = facturx.get_facturx_xml_from_pdf(pdf_file.read())
if _ is not None:
args['log'].info(f"[INPUT_SCRIPT] Le document est detecté comme FacturX, changement de workflow...")
res = send_to_workflow({
'ip': args['ip'],
'log': args['log'],
'file': args['file'],
'user_info': args['user_info'],
'workflow_id': 'facturx',
'custom_id': args['custom_id'],
})
return res
else:
args['log'].info(f"[INPUT_SCRIPT] Le document n'est pas detecté comme FacturX, poursuite du workflow classique...")
return 'continue_workflow'Détection de QR Code
Last updated