diff --git a/org.adempiere.base/src/org/compiere/model/MInvoice.java b/org.adempiere.base/src/org/compiere/model/MInvoice.java index c70f8ce37b..8224feb545 100644 --- a/org.adempiere.base/src/org/compiere/model/MInvoice.java +++ b/org.adempiere.base/src/org/compiere/model/MInvoice.java @@ -1563,13 +1563,22 @@ public class MInvoice extends X_C_Invoice implements DocAction MPaymentTerm pt = new MPaymentTerm(getCtx(), getC_PaymentTerm_ID(), null); log.fine(pt.toString()); + int numSchema = pt.getSchedule(false).length; + MInvoicePaySchedule[] schedule = MInvoicePaySchedule.getInvoicePaySchedule - (getCtx(), getC_Invoice_ID(), 0, get_TrxName()); + (getCtx(), getC_Invoice_ID(), 0, get_TrxName()); - if (schedule.length > 0) + if (schedule.length > 0) { + if (numSchema == 0) + return false; // created a schedule for a payment term that doesn't manage schedule return validatePaySchedule(); - else - return pt.apply(this); // calls validate pay schedule + } else { + boolean isValid = pt.apply(this); // calls validate pay schedule + if (numSchema == 0) + return true; // no schedule, no schema, OK + else + return isValid; + } } // createPaySchedule diff --git a/org.adempiere.base/src/org/compiere/model/MOrder.java b/org.adempiere.base/src/org/compiere/model/MOrder.java index 36d011d013..37a16d73c1 100644 --- a/org.adempiere.base/src/org/compiere/model/MOrder.java +++ b/org.adempiere.base/src/org/compiere/model/MOrder.java @@ -1649,13 +1649,22 @@ public class MOrder extends X_C_Order implements DocAction MPaymentTerm pt = new MPaymentTerm(getCtx(), getC_PaymentTerm_ID(), null); log.fine(pt.toString()); + int numSchema = pt.getSchedule(false).length; + MOrderPaySchedule[] schedule = MOrderPaySchedule.getOrderPaySchedule (getCtx(), getC_Order_ID(), 0, get_TrxName()); - if (schedule.length > 0) + if (schedule.length > 0) { + if (numSchema == 0) + return false; // created a schedule for a payment term that doesn't manage schedule return validatePaySchedule(); - else - return pt.applyOrder(this); // calls validate pay schedule + } else { + boolean isValid = pt.applyOrder(this); // calls validate pay schedule + if (numSchema == 0) + return true; // no schedule, no schema, OK + else + return isValid; + } } // createPaySchedule diff --git a/org.adempiere.base/src/org/compiere/model/MPaymentTerm.java b/org.adempiere.base/src/org/compiere/model/MPaymentTerm.java index 8555508aed..5fb7d75410 100644 --- a/org.adempiere.base/src/org/compiere/model/MPaymentTerm.java +++ b/org.adempiere.base/src/org/compiere/model/MPaymentTerm.java @@ -224,7 +224,7 @@ public class MPaymentTerm extends X_C_PaymentTerm /** * Apply Payment Term without schedule to Invoice * @param invoice invoice - * @return true as no payment schedule + * @return false as no payment schedule */ private boolean applyNoSchedule (MInvoice invoice) { @@ -234,7 +234,7 @@ public class MPaymentTerm extends X_C_PaymentTerm invoice.setC_PaymentTerm_ID(getC_PaymentTerm_ID()); if (invoice.isPayScheduleValid()) invoice.setIsPayScheduleValid(false); - return true; + return false; } // applyNoSchedule /** @@ -324,7 +324,7 @@ public class MPaymentTerm extends X_C_PaymentTerm /** * Apply Payment Term without schedule to Order * @param order order - * @return true as no payment schedule + * @return false as no payment schedule */ private boolean applyOrderNoSchedule (MOrder order) { @@ -334,7 +334,7 @@ public class MPaymentTerm extends X_C_PaymentTerm order.setC_PaymentTerm_ID(getC_PaymentTerm_ID()); if (order.isPayScheduleValid()) order.setIsPayScheduleValid(false); - return true; + return false; } // applyOrderNoSchedule /**