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

           Devenez partenaire Principal ou Majeur de Neogia

Documentation technique Correction Rapprochement Facture

Contents

Correction lors d'erreur dans le rapprochement facture d'achat


Sommaire

Lors du rapprochement de la facture d'achat avec les réceptions, si le prix su produit à la réception et différents de celui indiqué sur la facture, il est nécessaire de déclenche une opération corrective qui a pour objectifs :

  • D'équilibrer les comptes
  • De recalculer le véritable Prix Moyen Pondéré (PMP)
  • De recalculer les opérations découlant de PMP qui ont été effectuées entre la réception et le rapprochement facture

Justification

A la fin du rapproche de la facture, pour chaque lignes de réception rapprochés est créé une ligne de facture avec la quantité et le montant de la ligne de réception ou la quantité et montant renseigné. dans le dernier cas si le montant est modifié, il est nécessaire de déclencher une opération corrective. Si la quantité est modifié cela à une impact sur les attends de facture et ou de réception mais ne porte pas sur le PMP.

Si lors d'un réception il y a 5 CD à 10€ et que la facture comporte 5 CD à 11€, l'état des comptes et le suivant :

                   408           6
réception =>     -------      -------
                 50 |            | 50
                   408         401
facture   =>     -------      -------
                    | 55      55 |

Nous avons donc une erreur de 5 sur le compte 408, il est nécessaire de rectifier ceci par une opération corrective :

                   408           6
correction =>    -------      -------
                  5 |            | 5

La correction porte donc sur les mêmes comptes que la réception avec en montant :

 montant =  Quantité facture ( Prix facture - Prix réception )


Une fois cette opération faite, il est nécessaire de déclencher une opération du recalcule du PMP (Prix Moyen Pondéré) afin de prendre en compte la correction de prix. Cette correction ene doit être prise en compte que sur les évènements de stock qui se sont passé depuis la récéption de la commande.

Pour chaque nouvelle entrée de stock, il est nécessaire de recalculer le PMP via l'algoritme suivant :

       valeur du stock( produit ) + ( quantité reçu * prix d'achats )
PMP =  --------------------------------------------------------------
                     quantité en stock * quantité reçu

La valeur du stock est :

valeur du stock = quantité en stock * PMP Actuel


Réalisations

Correction de l'erreur de montant

La difficulté de l'opération réside de savoir comment opérer pour retrouver les comptes à ventiler lors de l'opération corrective.

L'idée est de générer un événement à l'origine de la ventillation. Dans notre cas, nous devons créer un nouveau mouvement de stock à quantité 0 au quel nous associons le montant de l'opération corrective.

L'inconveniant de cette solution est l'obligation d'activer l'intégration pour que l'action corrective rentre dans la comptabilité générale, mais oblige l'événement à s'apppliquer sur les règles définies.

La création du stockEvent ce fait au moment de la création de l'invoiceItem, création qui a lieu a chaque rapprochement entre la facture et les expéditions. Il est nécessaire de savoir retrouver le stockEvent à partir de la facture afin de pouvoir détruire ou modifier ce dernier si l'invoiceItem est modifié. La solution est donc de créer le stockEvent avec l'identifiant : Invoice-${invoiceId}-${invoiceItem}

Recacule du PMP

Lors de la correction du montant, il faut déclencher le recalcul du PMP. Cela nécessite une fonction dédié de l'objet StockEventWorker pour retrouver la pile des stockEvents à vérifier et déclencher les opérations nécessaire.

Lors que l'on a retrouvé la pile de stockEvent qui ont été opéré sur le produit entre la récéption et l'integration de l'erreur lors de la saisie de facture, on applique dans l'ordre historique, les évènement suivant :

- Ajout de stock => recalcule du PMP
- Suppression de stock => mise à jour des évènements associé à la sortie de stock

Implémentation

Cette section est censée décrire le plan d'actions (le "how") nécessaire à l'implémentation des changements décidés. Elle peut inclure des sous-sections telles que :



Changements de Code

Correction de l'erreur de montant

C'est lors de la création des invoiceItems généré à partir des rapprochements qu'il est nécessaire de générer les stockEvent de correcton.

L'opération ce passe dans la fonction :

org.ofbiz.accounting.invoice.developed.InvoiceWorker.editInvoiceItemShipmentItemBilling

Après la création de l'invoiceItem, il est nécessaire de vérifier le montant renseigné. En cas d'erreur, il faut déclencher la procédure suivante :

  Retrouver toutes le stockEvent associé à la ligne de facturation
  Si present, modifier son montant
  sinon 
   Créer un nouveau stockEvent avec le montant de correction et une quantité à 0

Lors de la suppression d'une ligne de facturation, il est necessaire de supprimer le stockEvent si présent. Cela se passe dans la fonction :

org.ofbiz.accounting.invoice.developed.InvoiceWorker.removeInvoiceItemShipmentItemBilling

Recalcule du PMP

La création et la suppression du stockEvent doit entrainer le recalcule du PMP. Cette opération est effectuer dans la fonction :

org.ofbiz.facility.developed.stockEventWorker.updateAdverageCost()

Elle se décompose en trois étapes :

1. Récupération de la pile des stockEvents ayant était déclenché depuis le stockEvent de réception de l'article en stock
2. Application des modifications de stock :
      - Si entrée de stock, appel de la fonction :
         org.ofbiz.facility.developed.stockEvent.updateAdverageCost()
      - Si sortie de stock, appel de la fonction :
         org.ofbiz.facility.developed.stockEvent.applyAdverageCostModification()
3. Mise à jour du productPrice de type AVERAGE_COST de l'article

Discussions

Cette partie hébergera les publications plus importantes nécessitant des échanges ; vous pouvez placer quelques XXXs dans la page afin de garder les plus petites publications ouvertes dans l'environnement.


Publications non résolues

Questions/ Réponses