diff --git a/base/src/org/compiere/model/MCash.java b/base/src/org/compiere/model/MCash.java
index a40db0e48d..1cc11b01bb 100644
--- a/base/src/org/compiere/model/MCash.java
+++ b/base/src/org/compiere/model/MCash.java
@@ -42,6 +42,7 @@ import org.compiere.util.TimeUtil;
*
* @author Teo Sarca, SC ARHIPAC SERVICE SRL
*
BF [ 1831997 ] Cash journal allocation reversed
+ * BF [ 1894524 ] Pay an reversed invoice
*/
public class MCash extends X_C_Cash implements DocAction
{
@@ -499,6 +500,15 @@ public class MCash extends X_C_Cash implements DocAction
MCashLine line = lines[i];
if (MCashLine.CASHTYPE_Invoice.equals(line.getCashType()))
{
+ // Check if the invoice is completed - teo_sarca BF [ 1894524 ]
+ MInvoice invoice = line.getInvoice();
+ if (!MInvoice.DOCSTATUS_Completed.equals(invoice.getDocStatus())
+ && !MInvoice.DOCSTATUS_Closed.equals(invoice.getDocStatus()))
+ {
+ m_processMsg = "@Line@ "+line.getLine()+": @InvoiceCreateDocNotCompleted@";
+ return DocAction.STATUS_Invalid;
+ }
+ //
String name = Msg.translate(getCtx(), "C_Cash_ID") + ": " + getName()
+ " - " + Msg.translate(getCtx(), "Line") + " " + line.getLine();
MAllocationHdr hdr = new MAllocationHdr(getCtx(), false,
@@ -507,7 +517,7 @@ public class MCash extends X_C_Cash implements DocAction
hdr.setAD_Org_ID(getAD_Org_ID());
if (!hdr.save())
{
- m_processMsg = "Could not create Allocation Hdr";
+ m_processMsg = CLogger.retrieveErrorString("Could not create Allocation Hdr");
return DocAction.STATUS_Invalid;
}
// Allocation Line
@@ -517,7 +527,7 @@ public class MCash extends X_C_Cash implements DocAction
aLine.setC_CashLine_ID(line.getC_CashLine_ID());
if (!aLine.save())
{
- m_processMsg = "Could not create Allocation Line";
+ m_processMsg = CLogger.retrieveErrorString("Could not create Allocation Line");
return DocAction.STATUS_Invalid;
}
// Should start WF
@@ -554,7 +564,7 @@ public class MCash extends X_C_Cash implements DocAction
pay.setProcessed(true);
if (!pay.save())
{
- m_processMsg = "Could not create Payment";
+ m_processMsg = CLogger.retrieveErrorString("Could not create Payment");
return DocAction.STATUS_Invalid;
}
}