From a4130cd988d2b0ee69127dd04015999bfcc78c7e Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Sat, 5 Jan 2019 22:36:17 +0100 Subject: [PATCH] IDEMPIERE-3860 Reversed MatchPO cannot be deleted --- .../org/compiere/process/MatchPODelete.java | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/org.adempiere.base.process/src/org/compiere/process/MatchPODelete.java b/org.adempiere.base.process/src/org/compiere/process/MatchPODelete.java index 01542cdad4..2e39e98697 100644 --- a/org.adempiere.base.process/src/org/compiere/process/MatchPODelete.java +++ b/org.adempiere.base.process/src/org/compiere/process/MatchPODelete.java @@ -53,10 +53,32 @@ public class MatchPODelete extends SvrProcess protected String doIt() throws Exception { if (log.isLoggable(Level.INFO)) log.info ("M_MatchPO_ID=" + p_M_MatchPO_ID); + + String msg = ""; + MMatchPO po = new MMatchPO (getCtx(), p_M_MatchPO_ID, get_TrxName()); if (po.get_ID() == 0) throw new AdempiereUserError("@NotFound@ @M_MatchPO_ID@ " + p_M_MatchPO_ID); - // + int reversalId = po.getReversal_ID(); + if (! deleteMatchPO(po)) { + return "@Error@"; + } + + msg += "@Deleted@"; + + if (reversalId > 0) { + MMatchPO porev = new MMatchPO (getCtx(), reversalId, get_TrxName()); + if (porev.get_ID() == 0) + throw new AdempiereUserError("@NotFound@ @M_MatchPO_ID@ " + reversalId); + if (! deleteMatchPO(porev)) { + return "@Error@ @Reversal_ID@"; + } + msg += " + @Deleted@ @Reversal_ID@"; + } + return msg; + } // doIt + + private boolean deleteMatchPO(MMatchPO po) { MOrderLine orderLine = null; boolean isMatchReceipt = (po.getM_InOutLine_ID() != 0); if (isMatchReceipt) @@ -72,10 +94,10 @@ public class MatchPODelete extends SvrProcess if (!orderLine.save(get_TrxName())) throw new AdempiereUserError("Delete MatchPO failed to restore PO's On Ordered Qty"); } - return "@OK@"; + return true; } po.saveEx(); - return "@Error@"; - } // doIt + return false; + } } // MatchPODelete