📖
Open-Capture Documentation
  • 🏠Accueil
  • 🖥️Technique
    • Installation
      • Création d'instances supplémentaires
      • Paramétrage d'un partage Samba
      • Récupération des fournisseurs
      • Capture de mail
      • Mise en place des scripts de purge
    • Architecture fonctionnelle
    • Mise à jour
    • Ajout d'une nouvelle langue
    • Connexion sans login/mdp depuis une application externe
    • Développement custom
    • Gestion des erreurs
    • Web Services
      • Authentification
      • Comptes tiers et clients
      • Configurations
      • Champs personnalisés
      • Formulaires
      • Module Vérificateur
      • Pièces jointes
      • Monitoring
  • 🛠️Paramétrages
    • Statistiques
    • Monitoring des processus
    • Liste des comptes clients
    • Liste des comptes fournisseurs
    • Historique
    • Paramètres Généraux
      • A propos
      • Configurations
      • Zone de stockage
      • Liste des Regex
      • MailCollect
      • Liste des utilisateurs
      • Quota d'utilisateurs
      • Liste des rôles
        • Privilèges des rôles
      • Champs personnalisés
      • Méthodes d'authentification
    • Paramètres Vérificateur
      • Paramétrages divers
      • Workflows
        • Exemples de scriptings
      • Récupération du contact
      • Liste des Formulaires
        • Modification du formulaire
        • Création de formulaire
      • Chaînes sortantes
        • Export XML
        • Export MEM Courrier
        • Export PDF
      • Masques de positionnement
        • Créer un nouveau masque
        • Modification du masque
    • Paramètres Splitter
      • Workflows
      • Liste des Formulaires
        • Modification du formulaire
        • Création de formulaire
      • Chaînes sortantes
        • Export PDF
        • Export XML
        • Export CMIS
        • Export OpenADS
      • Séparateurs de documents
      • Types de documents
        • Ajouter un type de document
        • Ajouter une chemise
      • Intelligence artificielle
      • Changement de statut
  • 📝Utilisation
    • Introduction
    • Mot de passe oublié
    • Vérifier
    • Splitter
    • Télécharger le lot factures d’essai
    • Télécharger le lot documents RH
Powered by GitBook
On this page
  • Détection FacturX
  • Détection de QR Code
  1. Paramétrages
  2. Paramètres Vérificateur
  3. Workflows

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

Vérification si le document est de type FacturX, afin de l'envoyer vers le workflow spécifique à 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

Vérification de la présence d'un QR code contenant le mot clé facture. S'il n'est pas présent, renvoi du document vers le workflow d'océrisation uniquement.

# 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
# Si vous utilisez la fonction send_to_workflow(), il faut la combiner avec un return
# Si la fonction send_to_workflow() est utilisée uniquement dans un cas, et pas dans un autre, finir la fonction par "return 'continue_workflow'"

# La liste des librairies Python disponible sont visibles ici :
# https://github.com/edissyum/opencapture/blob/master/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 pdf2image
from pyzbar.pyzbar import decode
from src.backend.scripting_functions import send_to_workflow

def read_qrcode(args):
    args['log'].info('[INPUT_SCRIPT] Recherche de code QR dans le document')
    pages = pdf2image.convert_from_path(args['file'])
    barcodes = []
    cpt = 0
    for page in pages:
        detected_barcode = decode(page)
        if detected_barcode:
            for barcode in detected_barcode:
                if barcode.type == 'QRCODE':
                    barcodes.append({'text': barcode.data.decode('utf-8')})
        cpt += 1
    return barcodes


def main(args):
    args['log'].info(f"[INPUT_SCRIPT] Traitement du fichier {args['file']}")
    barcodes = read_qrcode(args)
    is_invoice = False

    for barcode in barcodes:
        if 'facture' in barcode['text'].lower():
            is_invoice = True

    if is_invoice:
        args['log'].info('[INPUT_SCRIPT] Le document est bien une facture, le traitement continue...')
        return 'continue_workflow'
    else:
        args['log'].info('[INPUT_SCRIPT] Le document n\'est pas une facture, lancement du workflow ocr_only')
        return send_to_workflow({
            'ip': args['ip'],
            'log': args['log'],
            'file': args['file'],
            'user_info': args['user_info'],
            'workflow_id': 'ocr_only',
            'custom_id': args['custom_id'],
        })

PreviousWorkflowsNextRécupération du contact

Last updated 2 months ago

🛠️