IDEMPIERE-1174 Found a matchinv created on matchpo was not being posted on immediate accounting / follow recommendation from Heng Sin about privacy of method
This commit is contained in:
parent
46585842d2
commit
61b9cd9508
|
@ -1630,7 +1630,6 @@ public class MInOut extends X_M_InOut implements DocAction
|
|||
addDocsPostProcess(po);
|
||||
if (po.getMatchInvCreated() != null) {
|
||||
addDocsPostProcess(po.getMatchInvCreated());
|
||||
po.setMatchInvCreated(null);
|
||||
}
|
||||
}
|
||||
// Update PO with ASI
|
||||
|
|
|
@ -651,8 +651,12 @@ public class MInOutLine extends X_M_InOutLine
|
|||
MInvoiceLine m_il = MInvoiceLine.getOfInOutLine(this);
|
||||
if (m_il == null)
|
||||
{
|
||||
log.severe("No Invoice Line for: " + this.toString());
|
||||
return Env.ZERO;
|
||||
m_il = MInvoiceLine.getOfInOutLineFromMatchInv(this);
|
||||
if (m_il == null)
|
||||
{
|
||||
log.severe("No Invoice Line for: " + this.toString());
|
||||
return Env.ZERO;
|
||||
}
|
||||
}
|
||||
return this.getMovementQty().multiply(m_il.getPriceActual()); // Actual delivery
|
||||
}
|
||||
|
|
|
@ -52,7 +52,7 @@ public class MInvoiceLine extends X_C_InvoiceLine
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -5113860437274708398L;
|
||||
private static final long serialVersionUID = 6157080330492848409L;
|
||||
|
||||
/**
|
||||
* Get Invoice Line referencing InOut Line
|
||||
|
@ -78,6 +78,29 @@ public class MInvoiceLine extends X_C_InvoiceLine
|
|||
return retValue;
|
||||
} // getOfInOutLine
|
||||
|
||||
/**
|
||||
* Get Invoice Line referencing InOut Line - from MatchInv
|
||||
* @param sLine shipment line
|
||||
* @return (first) invoice line
|
||||
*/
|
||||
public static MInvoiceLine getOfInOutLineFromMatchInv(MInOutLine sLine) {
|
||||
if (sLine == null)
|
||||
return null;
|
||||
final String whereClause = "C_InvoiceLine_ID IN (SELECT C_InvoiceLine_ID FROM M_MatchInv WHERE M_InOutLine_ID=?)";
|
||||
List<MInvoiceLine> list = new Query(sLine.getCtx(),I_C_InvoiceLine.Table_Name,whereClause,sLine.get_TrxName())
|
||||
.setParameters(sLine.getM_InOutLine_ID())
|
||||
.list();
|
||||
|
||||
MInvoiceLine retValue = null;
|
||||
if (list.size() > 0) {
|
||||
retValue = list.get(0);
|
||||
if (list.size() > 1)
|
||||
s_log.warning("More than one C_InvoiceLine of " + sLine);
|
||||
}
|
||||
|
||||
return retValue;
|
||||
}
|
||||
|
||||
/** Static Logger */
|
||||
private static CLogger s_log = CLogger.getCLogger (MInvoiceLine.class);
|
||||
|
||||
|
@ -1053,9 +1076,9 @@ public class MInvoiceLine extends X_C_InvoiceLine
|
|||
// end MZ
|
||||
if (base.signum() != 0)
|
||||
{
|
||||
double result = getLineNetAmt().multiply(base).doubleValue();
|
||||
result /= total.doubleValue();
|
||||
lca.setAmt(result, getPrecision());
|
||||
BigDecimal result = getLineNetAmt().multiply(base);
|
||||
result = result.divide(total, BigDecimal.ROUND_HALF_UP);
|
||||
lca.setAmt(result.doubleValue(), getPrecision());
|
||||
}
|
||||
if (!lca.save()){
|
||||
msgreturn = new StringBuilder("Cannot save line Allocation = ").append(lca);
|
||||
|
@ -1079,6 +1102,8 @@ public class MInvoiceLine extends X_C_InvoiceLine
|
|||
lca.setM_Product_ID(iol.getM_Product_ID());
|
||||
lca.setM_AttributeSetInstance_ID(iol.getM_AttributeSetInstance_ID());
|
||||
BigDecimal base = iol.getBase(lc.getLandedCostDistribution());
|
||||
if (base.signum() == 0)
|
||||
return "Base value is 0 - " + lc.getLandedCostDistribution();
|
||||
lca.setBase(base);
|
||||
lca.setAmt(getLineNetAmt());
|
||||
// MZ Goodwill
|
||||
|
@ -1174,9 +1199,9 @@ public class MInvoiceLine extends X_C_InvoiceLine
|
|||
// end MZ
|
||||
if (base.signum() != 0)
|
||||
{
|
||||
double result = getLineNetAmt().multiply(base).doubleValue();
|
||||
result /= total.doubleValue();
|
||||
lca.setAmt(result, getPrecision());
|
||||
BigDecimal result = getLineNetAmt().multiply(base);
|
||||
result = result.divide(total, BigDecimal.ROUND_HALF_UP);
|
||||
lca.setAmt(result.doubleValue(), getPrecision());
|
||||
}
|
||||
if (!lca.save()){
|
||||
msgreturn = new StringBuilder("Cannot save line Allocation = ").append(lca);
|
||||
|
|
|
@ -551,15 +551,24 @@ public class MMatchPO extends X_M_MatchPO
|
|||
|
||||
|
||||
private MMatchInv m_matchInv;
|
||||
|
||||
/**
|
||||
* Register the match inv created for immediate accounting purposes
|
||||
* @param matchInv
|
||||
*/
|
||||
public void setMatchInvCreated(MMatchInv matchInv) {
|
||||
private void setMatchInvCreated(MMatchInv matchInv) {
|
||||
m_matchInv = matchInv;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the match inv created for immediate accounting purposes
|
||||
* Is cleared after read, so if you read twice second time it returns null
|
||||
* @param matchInv
|
||||
*/
|
||||
public MMatchInv getMatchInvCreated() {
|
||||
return m_matchInv;
|
||||
MMatchInv tmp = m_matchInv;
|
||||
m_matchInv = null;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
/** Static Logger */
|
||||
|
|
Loading…
Reference in New Issue