Documentation technique Integration
Contents |
Fonctionnement de l'integration
Developpement à réaliser
Information nécessaire pour l'intégration :
Les informations nécessaires à récupérer pour une integration sont :
- le montant de l'opération - la / les clés de l'événement à intégrer - l'acteur intervenant dans l'opération (seulement pour les comptes tiers)
La récupération des informations pour savoir quoi intégrer se fait principalement à partir de l'entité : IntegEventType. Cette entité est la pièce maitresse de l'intégration puisque c'est elle qui définit comment s'opère les enchainements de traitement, les récupérations d'informations et les règles à déclencher.
Le processus normale d'un intégration se passe en deux temps :
1. Exécution de la préparation des écritures en récupérant les informations nécessaire à partir des évènement. 2. Passage des écritures d'intégration au statut "Préparée" dans la comptabilité générale.
Préparation des écritures d'intégration
Le processus de préparation suit le fonctionnement suivant. Dans un premier temps on récupère les écritures d'intégration à préparer, généralement il s'agit des écritures d'intégration au statut "Créée" générées par les évènements ayant une correspondance coptable dans Néoiga (mvt stock, facture, etc ...)
En suite pour chaques écritures, on analyse son évènement. s'il s'agit d'un évènement d'intégration standard, le processus de préparation est directement appelé, si ce n'est le cas, on redirige les opérations sur une fonction d'intégration spécifique afin d'effectuer un pré-traitement avant l'appel du processus d'intégration.
Les événements standard sont :
- Les évènements en relation avec un mouvement de stock - Les évènements de paiment
Les évènements non standard sont :
- Les événement de facture - Les intégration d'aide à la saisie
Procedure standard
Cette procédure va prendre le type d'évènement d'intégration et l'écriture d'intégration pour construire les lignes d'écritures à partir des informations collectées.
Le processus va dans un premier temps chercher tous les comptes demandés par les règles d'intégration ligne à ligne, puis lors de la finalisation d'une ligne d'écriture, il recherche les informations manquante (montant, tier) et regarde la validité du résultat. Si l'écriture est incohérente, soit du à une correspondance non trouvée ou à une inconsistance des informations, il y a deux possibilités :
1. La ligne d'écriture se met en erreur. 2. La ligne d'écriture est annulée.
A la fin de l'application de toutes les règles d'intégration, si une ligne d'écriture est en erreur, l'écriture d'intégration se met en erreur
Procédure non standard
Récupération fonctionnelle
| IET \ BOT | Montant | Article | Catégorie | Caté. Comptable | Magasin | Taxe | Acteur d'ordre | Pays de l'Acteur | Promotion | Centre de profit |
|---|---|---|---|---|---|---|---|---|---|---|
| Mouvement d'inventaire | SE.quantity * SE.unitCost | SE.productId | SE.principalCategory | SE.getCategory( comptable ) | SE.nFacility | |||||
| Transfert | SE.quantity * SE.unitCost | SE.productId | SE.principalCategory | SE.getCategory( comptable ) | SE.nFacility .findParentWarehouse() | |||||
| Transfert planifié | SE.quantity * SE.unitCost | SE.productId | SE.principalCategory | SE.getCategory( comptable ) | SE.nFacility | |||||
| Expédition | SE.quantity * SE.unitCost | SE.productId | SE.principalCategory | SE.getCategory( comptable ) | SE.nFacility | check role BILL_FROM_VENDOR on order | ||||
| Réception d'achat | SE.quantity * SE.unitCost | SE.productId | SE.principalCategory | SE.getCategory( comptable ) | SE.nFacility | check role BILL_FROM_VENDOR on order | ||||
| Sortie vente pour expédition | SE.quantity * SE.unitCost | SE.productId | SE.principalCategory | SE.getCategory( comptable ) | SE.nFacility | check role BILL_TO_CUSTOMER on order | ||||
| Réception de produit | SE.quantity * SE.unitCost | SE.productId | SE.principalCategory | SE.getCategory( comptable ) | SE.nFacility | check role BILL_FROM_VENDOR on order | ||||
| Sortie pour la production | SE.quantity * SE.unitCost | SE.productId | SE.principalCategory | SE.getCategory( comptable ) | SE.nFacility | |||||
| Facture retour fournisseur | ||||||||||
| Facture retour vente | ||||||||||
| Facture fournisseur | I.amount | I.partyIdFrom | I.partyIdFrom.geoId si company | I.getproductStoreId() | ||||||
| Détail facture fournisseur : Taxes | IT.quantity * IT.amount | IT.product.principalCategory | IT.taxAutho -rityRateSeqId | I.partyIdFrom | I.partyIdFrom.geoId si company | I.getproductStoreId() | ||||
| Détail facture fournisseur : Produits | IT.quantity * IT.amount | IT.productId | IT.product.principalCategory | IT.product.getCategory( comptable ) | I.partyIdFrom | I.partyIdFrom.geoId si company | I.getproductStoreId() | |||
| Détail facture fournisseur : Promotions | IT.quantity * IT.amount | I.partyId | I.partyId.geoId si company | IT.getPromoId() | I.getproductStoreId() | |||||
| Détail facture fournisseur : Expédition | IT.quantity * IT.amount | I.partyIdFrom | I.partyIdFrom.geoId si company | I.getproductStoreId() | ||||||
| Facture de vente | I.amount | I.partyId | I.partyId.geoId si company | I.getproductStoreId() | ||||||
| Détail facture de vente : Taxes | IT.quantity * IT.amount | IT.product.principalCategory | IT.taxAutho -rityRateSeqId | I.partyId | I.partyId.geoId si company | I.getproductStoreId() | ||||
| Détail facture de vente : Produits | IT.quantity * IT.amount | IT.productId | IT.product.principalCategory | IT.product.getCategory( comptable ) | I.partyId | I.partyId.geoId si company | I.getproductStoreId() | |||
| Détail facture de vente : Expédition | IT.quantity * IT.amount | I.partyId | I.partyId.geoId si company | I.getproductStoreId() | ||||||
| Détail facture de vente : Promotions | IT.quantity * IT.amount | I.partyId | I.partyId.geoId si company | IT.getPromoId() | I.getproductStoreId() | |||||
| Paiment fournisseur | P.amount | P.partyIdTo | P.partyIdTo.geoId si company | |||||||
| Paiment client | P.amount | P.partyIdFrom | P.partyIdFrom.geoId si company | |||||||
| Avoir de vente | I.amount | I.partyId | I.partyId.geoId si company | I.getproductStoreId() | ||||||
| Détail Avoir de vente : Taxes | IT.quantity * IT.amount | IT.product.principalCategory | IT.taxAutho -rityRateSeqId | I.partyId | I.partyId.geoId si company | I.getproductStoreId() | ||||
| Détail Avoir de vente : Produits | IT.quantity * IT.amount | IT.productId | IT.product.principalCategory | IT.product.getCategory( comptable ) | I.partyId | I.partyId.geoId si company | I.getproductStoreId() | |||
| Détail Avoir de vente : Expédition | IT.quantity * IT.amount | I.partyId | I.partyId.geoId si company | I.getproductStoreId() | ||||||
| Détail Avoir de vente : Promotions | IT.quantity * IT.amount | I.partyId | I.partyId.geoId si company | IT.getPromoId() | I.getproductStoreId() |
Légende des abbréviations utilisées : - IET : IntegEventType - BOT : BusinessObjectType - SE : StockEvent - I : Invoice - IT : InvoiceItem - P : Payment
Détail : Montant
Pour les évènements relatifs au mouvement de stock on remonte :
amount = stockEvent.quantity * sotckEvent.unitCost
Pour les évènements relatifs au facture :
si c'est sur l'entête de facture, on remonte : amount = invoice.amount si non vide sinon amount = somme( invoiceItems.value ) si c'est sur une ligne de facture, on remonte : amount = invoiceItem.quantity * invoiceItem.amount
Pour les évènements relatifs au paiment, on remonte :
amount = payment.amount
Préparation des évènements à l'intégration
Création d'une facture
Lors de la création d'une facture via les processus ofbiz (génération automatique ou création manuelle), un seca sur le service "createInvoice" se déclenche pour associer une écriture d'intégration à la facture. Si la facture est une facture de vente, l'écriture d'intégration reçoit l'évènement "Facture de vente". Sinon l'évènement "Facture fournisseur" est appliqué.
Si la facture est créée à partir de l'environnement comptable de Néogia, la facture est automatiquement intégrée via le système d'aide à la saisie de l'intégration.
Création d'un paiment
Lors de la création d'un paiment via les processus ofbiz (génération automatique ou création manuelle), un seca sur le service "createPaiment" se déclenche pour associer une écriture d'intégration au paiment. Si le paiment est de type "paiment client(CUSTOMER_PAYMENT)", l'écriture d'intégration reçoit l'évènement "Paiment Client". Sinon l'évènement "Paiment fournisseur" est appliqué par défault.
Si le paiment est créée à partir de l'environnement comptable de Néogia, l'intégration du paiment est bloqué. (Application d'une écriture d'intégration _NA_ pour l'aide à la saisie)
Integration des évènements, rassemblement des écritures
Lors d'une opération d'intégration, Neogia va générer pour un événement, une écriture. Lors de la présence d'évènement verbeux, comme les évènements stock, on peut indiquer à Neogia qu'il ne faut créer qu'une écriture par type d'évènement et rassembler les lignes d'écritures. Cette information est à renseigner dans les configurations de la comptabilité sous le nom "NeedMerge-type d'évènement"


