diff --git a/db/ddlutils/oracle/functions/C_Payment_Allocated.sql b/db/ddlutils/oracle/functions/C_Payment_Allocated.sql index a564a4545b..8b369e55b9 100644 --- a/db/ddlutils/oracle/functions/C_Payment_Allocated.sql +++ b/db/ddlutils/oracle/functions/C_Payment_Allocated.sql @@ -42,7 +42,7 @@ BEGIN FROM C_Payment WHERE C_Payment_ID=p_C_Payment_ID AND C_Charge_ID > 0; IF (v_PayAmt IS NOT NULL) THEN - RETURN 0; + RETURN v_PayAmt; END IF; -- Calculate Allocated Amount diff --git a/db/ddlutils/postgresql/functions/C_Payment_Allocated.sql b/db/ddlutils/postgresql/functions/C_Payment_Allocated.sql index bb138393c0..e3cf28c248 100644 --- a/db/ddlutils/postgresql/functions/C_Payment_Allocated.sql +++ b/db/ddlutils/postgresql/functions/C_Payment_Allocated.sql @@ -39,7 +39,7 @@ BEGIN WHERE C_Payment_ID=p_C_Payment_ID AND C_Charge_ID > 0; IF (v_PayAmt IS NOT NULL) THEN - RETURN 0; + RETURN v_PayAmt; END IF; -- Calculate Allocated Amount diff --git a/db/ddlutils/postgresql/functions/C_Payment_Available.sql b/db/ddlutils/postgresql/functions/C_Payment_Available.sql index 8ccd4fa0e7..1e1496de5e 100644 --- a/db/ddlutils/postgresql/functions/C_Payment_Available.sql +++ b/db/ddlutils/postgresql/functions/C_Payment_Available.sql @@ -31,7 +31,7 @@ BEGIN FROM C_Payment WHERE C_Payment_ID=p_C_Payment_ID AND C_Charge_ID > 0; IF (v_Amt IS NOT NULL) THEN - RETURN v_Amt; + RETURN 0; END IF; -- Get Currency @@ -63,4 +63,3 @@ BEGIN END; $body$ LANGUAGE plpgsql; - diff --git a/sqlj/src/org/compiere/sqlj/Payment.java b/sqlj/src/org/compiere/sqlj/Payment.java index 6b76fbda52..195fea4d16 100644 --- a/sqlj/src/org/compiere/sqlj/Payment.java +++ b/sqlj/src/org/compiere/sqlj/Payment.java @@ -39,13 +39,25 @@ public class Payment public static BigDecimal allocated (int p_C_Payment_ID, int p_C_Currency_ID) throws SQLException { - // Charge - nothing available - String sql = "SELECT C_Charge_ID " - + "FROM C_Payment " + BigDecimal PayAmt = null; + int C_Charge_ID = 0; + // + String sql = "SELECT PayAmt, C_Charge_ID " + + "FROM C_Payment_v " // corrected for AP/AR + "WHERE C_Payment_ID=?"; - int C_Charge_ID = Adempiere.getSQLValue(sql, p_C_Payment_ID); + PreparedStatement pstmt = Adempiere.prepareStatement(sql); + pstmt.setInt(1, p_C_Payment_ID); + ResultSet rs = pstmt.executeQuery(); + if (rs.next()) + { + PayAmt = rs.getBigDecimal(1); + C_Charge_ID = rs.getInt(2); + } + rs.close(); + pstmt.close(); + if (C_Charge_ID > 0) - return Adempiere.ZERO; + return PayAmt; int C_ConversionType_ID = 0;