From 28ac2b4f83f1d1a7b951daf5170b27ada876637e Mon Sep 17 00:00:00 2001 From: "Hesham S. Ahmed" Date: Tue, 10 Jul 2012 21:00:53 +0300 Subject: [PATCH] IDEMPIERE-103 - In progress invocies can not be deleted if linked with an Order --- .../src/org/compiere/model/MInvoice.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MInvoice.java b/org.adempiere.base/src/org/compiere/model/MInvoice.java index 2efa911cdb..93aef95cfb 100644 --- a/org.adempiere.base/src/org/compiere/model/MInvoice.java +++ b/org.adempiere.base/src/org/compiere/model/MInvoice.java @@ -984,11 +984,33 @@ public class MInvoice extends X_C_Invoice implements DocAction { if (getC_Order_ID() != 0) { - log.saveError("Error", Msg.getMsg(getCtx(), "CannotDelete")); - return false; + //Load invoice lines for afterDelete() + getLines(); } return true; } // beforeDelete + + /** + * After Delete + * @param success success + * @return deleted + */ + protected boolean afterDelete(boolean success) { + // If delete invoice failed then do nothing + if (!success) + return success; + + if (getC_Order_ID() != 0) { + // reset shipment line invoiced flag + MInvoiceLine[] lines = getLines(false); + for (int i = 0; i < lines.length; i++) { + MInOutLine sLine = new MInOutLine(getCtx(), lines[i].getM_InOutLine_ID(), get_TrxName()); + sLine.setIsInvoiced(false); + sLine.saveEx(); + } + } + return true; + } //afterDelete /** * String Representation