BF [ 2588326 ] Cash Lines are not correctly updated on voiding

https://sourceforge.net/tracker/index.php?func=detail&aid=2588326&group_id=176962&atid=879332

* Better exception handling
This commit is contained in:
teo_sarca 2009-02-11 08:48:16 +00:00
parent 34a5b37c55
commit 9895920594
2 changed files with 21 additions and 11 deletions

View File

@ -46,11 +46,15 @@ import org.compiere.util.TimeUtil;
* <li>BF [ 1831997 ] Cash journal allocation reversed
* <li>BF [ 1894524 ] Pay an reversed invoice
* <li>BF [ 1899477 ] MCash.getLines should return only active lines
* <li>BF [ 2588326 ] Cash Lines are not correctly updated on voiding
*/
public class MCash extends X_C_Cash implements DocAction
{
/**
*
*/
private static final long serialVersionUID = 9153922329895288746L;
private static final long serialVersionUID = 1L;
/**
* Get Cash Journal for currency, org and date
@ -126,7 +130,7 @@ public class MCash extends X_C_Cash implements DocAction
// Create New Journal
retValue = new MCash (cb, dateAcct);
retValue.save(trxName);
retValue.saveEx(trxName);
return retValue;
} // get
@ -627,18 +631,18 @@ public class MCash extends X_C_Cash implements DocAction
MPayment payment = new MPayment(getCtx(), cashline.getC_Payment_ID(),get_TrxName());
payment.reverseCorrectIt();
if (!payment.save())
throw new IllegalStateException("Cannot reverse payment");
payment.saveEx();
}
cashline.saveEx();
}
setName(getName()+"^");
addDescription(Msg.getMsg(getCtx(), "Voided"));
setDocStatus(DOCSTATUS_Reversed); // for direct calls
setProcessed(true);
setPosted(true);
setDocAction(DOCACTION_None);
if (!save())
throw new IllegalStateException("Cannot save journal cash");
saveEx();
// Delete Posting
MFactAcct.deleteEx(Table_ID, getC_Cash_ID(), get_TrxName());

View File

@ -1,5 +1,5 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
@ -38,6 +38,12 @@ import org.compiere.util.Msg;
*/
public class MCashLine extends X_C_CashLine
{
/**
*
*/
private static final long serialVersionUID = 2962077554051498950L;
/**
* Standard Constructor
* @param ctx context
@ -146,10 +152,10 @@ public class MCashLine extends X_C_CashLine
//
if (MOrder.DOCSTATUS_WaitingPayment.equals(order.getDocStatus()))
{
save(trxName);
saveEx(trxName);
order.setC_CashLine_ID(getC_CashLine_ID());
order.processIt(MOrder.ACTION_WaitComplete);
order.save(trxName);
order.saveEx(trxName);
// Set Invoice
MInvoice[] invoices = order.getInvoices();
int length = invoices.length;
@ -298,9 +304,9 @@ public class MCashLine extends X_C_CashLine
protected boolean beforeSave (boolean newRecord)
{
// Cannot change generated Invoices
if (is_ValueChanged("C_Invoice_ID"))
if (is_ValueChanged(COLUMNNAME_C_Invoice_ID))
{
Object generated = get_ValueOld("IsGenerated");
Object generated = get_ValueOld(COLUMNNAME_IsGenerated);
if (generated != null && ((Boolean)generated).booleanValue())
{
log.saveError("Error", Msg.getMsg(getCtx(), "CannotChangeCashGenInvoice"));