Erreur lors de la ventilation de la facture

Bonjour,

Je ne comprends pas en quoi j’obtiens une telle erreur au stade de la ventillation alors que j’ai validé tout les précédents documents :

  • devis : ok
  • commande : ok
  • édition de la livraison client : ok
  • précision des n° de lot de chaque référence en stock : ok
  • édition de la facture : ok
  • validation de la facture : ok
  • validation de la ventilation : erreur.

Anomalie
java.lang.NullPointerException

Erreur
com.axelor.apps.supplychain.service.StockMoveInvoiceServiceImpl.isInvoiceRefundingStockMove(StockMoveInvoiceServiceImpl.java:546)

Trace
java.lang.NullPointerException
at com.axelor.apps.supplychain.service.StockMoveInvoiceServiceImpl.isInvoiceRefundingStockMove(StockMoveInvoiceServiceImpl.java:546)
at com.axelor.apps.supplychain.service.workflow.WorkflowVentilationServiceSupplychainImpl.stockMoveProcess(WorkflowVentilationServiceSupplychainImpl.java:261)
at com.axelor.apps.supplychain.service.workflow.WorkflowVentilationServiceSupplychainImpl.afterVentilation(WorkflowVentilationServiceSupplychainImpl.java:112)
at com.axelor.apps.businessproject.service.WorkflowVentilationProjectServiceImpl.afterVentilation(WorkflowVentilationProjectServiceImpl.java:86)

Ma piste de réflexion :
Un lot terminé bloque la ventilation qui veut (je ne sais pas pourquoi) vérifier la disponibilité du stock de ce lot.

Version Axlor : 5.3.3

Excellente journée

Bonjour,

Toujours cette erreur, et ce ne sont pas les quantités en stocks qui semblent être le probleme.

isInvoiceRefundingStockMove => https://github.com/axelor/WorkflowVentilationServiceSupplychainImpl.java
// Allez à l’avant dernière fonction | je me permet de recopier ici la fonction en date du 04/05/2020

  private void stockMoveProcess(Invoice invoice) throws AxelorException {
// update qty invoiced in stock move line
for (InvoiceLine invoiceLine : invoice.getInvoiceLineList()) {
  StockMoveLine stockMoveLine = invoiceLine.getStockMoveLine();
  if (stockMoveLine != null) {
    BigDecimal qty = stockMoveLine.getQtyInvoiced();
    StockMove stockMove = stockMoveLine.getStockMove();

    if (stockMoveInvoiceService.isInvoiceRefundingStockMove(stockMove, invoice)) {
      qty = qty.subtract(invoiceLine.getQty());
    } else {
      qty = qty.add(invoiceLine.getQty());
    }
    if (stockMoveLine.getRealQty().compareTo(qty) >= 0) {
      stockMoveLine.setQtyInvoiced(qty);
    } else {
      throw new AxelorException(
          TraceBackRepository.CATEGORY_INCONSISTENCY,
          I18n.get(IExceptionMessage.STOCK_MOVE_INVOICE_QTY_MAX));
    }
  }
}

Ma dernière piste de reflexion :
La répartition en multiligne d’une référence pour les n° de séries lors d’un bon de livraison,
empêche le “refunding stock move” pour la ventilation de la facture qui ne comporte qu’une ligne avec la quantité cumulée.

Exemple :
La référence 1234 est un produit avec n° de serie
Dans la commande j’ajoute 5 produits de la référence 1234
Je valide les documents jusqu’à la validation.
L’erreur survient à la ventilation, parce que les lignes dispatchées des n° de series ne correspondent pas à la ligne de facture avec une quantité de 5.

Excellente journée

J’ai créé l’issue sur le github :

https://github.com/axelor/axelor-open-suite/issues/5386

j’ai pu recréer l’erreur sur la démo en ligne.

Changelog

5.3.5 - 2020-05-11

Bug Fixes
Invoice: qty check on ventilation now deals with different units between invoice line and stock move line.

Dès que j’ai la MAJ sur mon installation, je fais les tests pour confirmer la correction.

très intéressant

Merci.
Je précise que le correctif n’a pas résolu le problème sur mon serveur
La démo Axelor donne aussi le même problème