IDEMPIERE-3235 Posting error when currency rate is different between MR and PO.
This commit is contained in:
parent
bc1da867ef
commit
263759c138
|
@ -202,7 +202,7 @@ public class Doc_MatchPO extends Doc
|
||||||
if (m_oLine.getC_Currency_ID() != as.getC_Currency_ID())
|
if (m_oLine.getC_Currency_ID() != as.getC_Currency_ID())
|
||||||
{
|
{
|
||||||
MOrder order = m_oLine.getParent();
|
MOrder order = m_oLine.getParent();
|
||||||
Timestamp dateAcct = order.getDateAcct();
|
Timestamp dateAcct = inOut.getDateAcct();
|
||||||
BigDecimal rate = MConversionRate.getRate(
|
BigDecimal rate = MConversionRate.getRate(
|
||||||
order.getC_Currency_ID(), as.getC_Currency_ID(),
|
order.getC_Currency_ID(), as.getC_Currency_ID(),
|
||||||
dateAcct, order.getC_ConversionType_ID(),
|
dateAcct, order.getC_ConversionType_ID(),
|
||||||
|
@ -236,7 +236,7 @@ public class Doc_MatchPO extends Doc
|
||||||
if (m_oLine.getC_Currency_ID() != as.getC_Currency_ID())
|
if (m_oLine.getC_Currency_ID() != as.getC_Currency_ID())
|
||||||
{
|
{
|
||||||
MOrder order = m_oLine.getParent();
|
MOrder order = m_oLine.getParent();
|
||||||
Timestamp dateAcct = order.getDateAcct();
|
Timestamp dateAcct = inOut.getDateAcct();
|
||||||
BigDecimal rate = MConversionRate.getRate(
|
BigDecimal rate = MConversionRate.getRate(
|
||||||
order.getC_Currency_ID(), as.getC_Currency_ID(),
|
order.getC_Currency_ID(), as.getC_Currency_ID(),
|
||||||
dateAcct, order.getC_ConversionType_ID(),
|
dateAcct, order.getC_ConversionType_ID(),
|
||||||
|
|
|
@ -253,6 +253,18 @@ public final class Fact
|
||||||
// No lines -> balanced
|
// No lines -> balanced
|
||||||
if (m_lines.size() == 0 || m_doc.isMultiCurrency())
|
if (m_lines.size() == 0 || m_doc.isMultiCurrency())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
// If there is more than 1 currency in fact lines, it is a multi currency doc
|
||||||
|
ArrayList<Integer> list = new ArrayList<Integer>();
|
||||||
|
for (int i = 0; i < m_lines.size(); i++){
|
||||||
|
FactLine line = (FactLine)m_lines.get(i);
|
||||||
|
if (line.getC_Currency_ID() > 0 && !list.contains(line.getC_Currency_ID()))
|
||||||
|
list.add(line.getC_Currency_ID());
|
||||||
|
|
||||||
|
}
|
||||||
|
if (list.size() > 1 )
|
||||||
|
return true;
|
||||||
|
|
||||||
BigDecimal balance = getSourceBalance();
|
BigDecimal balance = getSourceBalance();
|
||||||
boolean retValue = balance.signum() == 0;
|
boolean retValue = balance.signum() == 0;
|
||||||
if (retValue) {
|
if (retValue) {
|
||||||
|
@ -329,6 +341,16 @@ public final class Fact
|
||||||
if (m_lines.size() == 0 || m_doc.isMultiCurrency())
|
if (m_lines.size() == 0 || m_doc.isMultiCurrency())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
// If there is more than 1 currency in fact lines, it is a multi currency doc
|
||||||
|
ArrayList<Integer> list = new ArrayList<Integer>();
|
||||||
|
for (int i = 0; i < m_lines.size(); i++){
|
||||||
|
FactLine line = (FactLine)m_lines.get(i);
|
||||||
|
if (line.getC_Currency_ID() > 0 && !list.contains(line.getC_Currency_ID()))
|
||||||
|
list.add(line.getC_Currency_ID());
|
||||||
|
}
|
||||||
|
if (list.size() > 1 )
|
||||||
|
return true;
|
||||||
|
|
||||||
MAcctSchemaElement[] elements = m_acctSchema.getAcctSchemaElements();
|
MAcctSchemaElement[] elements = m_acctSchema.getAcctSchemaElements();
|
||||||
// check all balancing segments
|
// check all balancing segments
|
||||||
for (int i = 0; i < elements.length; i++)
|
for (int i = 0; i < elements.length; i++)
|
||||||
|
|
Loading…
Reference in New Issue