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.
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.