From f7ed749d5c81f29e0a18042f1a1db1014c282122 Mon Sep 17 00:00:00 2001 From: walid seghier Date: Thu, 6 Apr 2023 13:34:39 +0100 Subject: [PATCH] fix bug Mass Suppl. Stock Move Invoicing regler le probleme de facturations en mass pour BR , relier la facture et le bon de recepetion --- .../StockMoveMultiInvoiceServiceImpl.java | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/StockMoveMultiInvoiceServiceImpl.java b/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/StockMoveMultiInvoiceServiceImpl.java index ae6f99f7..bcae0a92 100644 --- a/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/StockMoveMultiInvoiceServiceImpl.java +++ b/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/StockMoveMultiInvoiceServiceImpl.java @@ -523,13 +523,16 @@ public class StockMoveMultiInvoiceServiceImpl implements StockMoveMultiInvoiceSe } else { stockMoveList.forEach( stockMove -> { - if (stockMove.getInvoiceSet() != null) { - stockMove.getInvoiceSet().add(invoice); - } else { + Set invoiceSet = new HashSet<>(); invoiceSet.add(invoice); stockMove.setInvoiceSet(invoiceSet); - } + + String sqlString = String.format("INSERT INTO public.account_invoice_stock_move_set( invoice_set, stock_move_set) VALUES (:invoiceSet, :stockMoveSet)"); + javax.persistence.Query query = JPA.em().createNativeQuery(sqlString); + query.setParameter("invoiceSet", invoice.getId()); + query.setParameter("stockMoveSet", stockMove.getId()); + JPA.runInTransaction(query::executeUpdate); }); return Optional.of(invoice); } @@ -676,14 +679,8 @@ public class StockMoveMultiInvoiceServiceImpl implements StockMoveMultiInvoiceSe /** This method will throw an exception if the given stock move is already invoiced. */ protected void checkIfAlreadyInvoiced(StockMove stockMove) throws AxelorException { if (stockMove.getInvoiceSet() != null - && stockMove - .getStockMoveLineList() - .stream() - .map(StockMoveLine::getQtyInvoiced) - .reduce(BigDecimal::add) - .orElse(BigDecimal.ZERO) - .compareTo(BigDecimal.ZERO) - == 0) { + && stockMove.getInvoiceSet().stream() + .anyMatch(invoice -> invoice.getStatusSelect() != InvoiceRepository.STATUS_CANCELED)) { String templateMessage; if (stockMove.getTypeSelect() == StockMoveRepository.TYPE_OUTGOING) { templateMessage = IExceptionMessage.OUTGOING_STOCK_MOVE_INVOICE_EXISTS;