IDEMPIERE-3965 Allocation posted with error when multi-currency and immediate accounting

This commit is contained in:
Carlos Ruiz 2019-05-08 11:36:55 +02:00
parent d6120e2f80
commit aa580a443b
2 changed files with 26 additions and 7 deletions

View File

@ -22,6 +22,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Properties;
@ -83,8 +84,10 @@ import org.compiere.util.ValueNamePair;
public class MPayment extends X_C_Payment
implements DocAction, ProcessCall, PaymentInterface
{
private static final long serialVersionUID = -7179638016937305380L;
/**
*
*/
private static final long serialVersionUID = -6268462097642919346L;
/**
* Get Payments Of BPartner
@ -2111,6 +2114,16 @@ public class MPayment extends X_C_Payment
return DocAction.STATUS_Completed;
} // completeIt
/* Save array of documents to process AFTER completing this one */
ArrayList<PO> docsPostProcess = new ArrayList<PO>();
protected void addDocsPostProcess(PO doc) {
docsPostProcess.add(doc);
}
public ArrayList<PO> getDocsPostProcess() {
return docsPostProcess;
}
/**
* Set the definite document number after completed
@ -2289,6 +2302,7 @@ public class MPayment extends X_C_Payment
// added AdempiereException by zuhri
if (!alloc.processIt(DocAction.ACTION_Complete))
throw new AdempiereException(Msg.getMsg(getCtx(), "FailedProcessingDocument") + " - " + alloc.getProcessMsg());
addDocsPostProcess(alloc);
// end added
m_processMsg = "@C_AllocationHdr_ID@: " + alloc.getDocumentNo();
return alloc.save(get_TrxName());
@ -2324,6 +2338,7 @@ public class MPayment extends X_C_Payment
// added AdempiereException by zuhri
if (!alloc.processIt(DocAction.ACTION_Complete))
throw new AdempiereException(Msg.getMsg(getCtx(), "FailedProcessingDocument") + " - " + alloc.getProcessMsg());
addDocsPostProcess(alloc);
// end added
alloc.saveEx(get_TrxName());
m_justCreatedAllocInv = alloc;
@ -2418,10 +2433,12 @@ public class MPayment extends X_C_Payment
else
{
// added Adempiere Exception by zuhri
if(alloc.processIt(DocAction.ACTION_Complete))
if (alloc.processIt(DocAction.ACTION_Complete)) {
addDocsPostProcess(alloc);
ok = alloc.save(get_TrxName());
else
} else {
throw new AdempiereException(Msg.getMsg(getCtx(), "FailedProcessingDocument") + " - " + alloc.getProcessMsg());
}
// end added by zuhri
m_processMsg = "@C_AllocationHdr_ID@: " + alloc.getDocumentNo();
}
@ -2709,6 +2726,7 @@ public class MPayment extends X_C_Payment
// added AdempiereException by zuhri
if (!alloc.processIt(DocAction.ACTION_Complete))
throw new AdempiereException(Msg.getMsg(getCtx(), "FailedProcessingDocument") + " - " + alloc.getProcessMsg());
addDocsPostProcess(alloc);
// end added
alloc.saveEx(get_TrxName());
//

View File

@ -323,12 +323,13 @@ public class DocumentEngine implements DocAction
{
// PostProcess documents when invoice or inout (this is to postprocess the generated MatchPO and MatchInv if any)
ArrayList<PO> docsPostProcess = new ArrayList<PO>();
if (m_document instanceof MInvoice || m_document instanceof MInOut) {
if (m_document instanceof MInvoice || m_document instanceof MInOut || m_document instanceof MPayment) {
if (m_document instanceof MInvoice) {
docsPostProcess = ((MInvoice) m_document).getDocsPostProcess();
}
if (m_document instanceof MInOut) {
} else if (m_document instanceof MInOut) {
docsPostProcess = ((MInOut) m_document).getDocsPostProcess();
} else if (m_document instanceof MPayment) {
docsPostProcess = ((MPayment) m_document).getDocsPostProcess();
}
}
if (m_document instanceof PO && docsPostProcess.size() > 0) {