ERP en LOGICIEL LIBRE dédié aux PME-PMI

           Devenez partenaire Principal ou Majeur de Neogia

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

Récupération des clés d'intégration
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"