Commit e91a08f0 authored by prane's avatar prane

To match and select partial amount when collections are treated as advance in...

To match and select partial amount when collections are treated as advance in system and entries are integrated after invoice entries.

git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@186899 ce508802-f39f-4f6c-b175-0d175dae99d5
parent 2fa7872e
...@@ -499,79 +499,125 @@ Put a validation chq amount in filter and total of details matches in case heade ...@@ -499,79 +499,125 @@ Put a validation chq amount in filter and total of details matches in case heade
System.out.println("*******keyset [ "+sp+" ]******"); System.out.println("*******keyset [ "+sp+" ]******");
} }
for (ArrayList<ReceiptBean> templist : custGrpMap.values()) for (ArrayList<ReceiptBean> templist : custGrpMap.values())
{ {
selectedList = new ArrayList<ReceiptBean>(); selectedList = new ArrayList<ReceiptBean>();
Collections.sort(templist, ReceiptBean.receiptComparator); Collections.sort(templist, ReceiptBean.receiptComparator);
double totAmount = 0.0; //Changes done on 26JUN2018 [To match and select partial amount when collections are treated as advance in system and entries are integrated after invoice entries.]
System.out.println("^^^^^^^templist Size["+templist.size()+"]^^^^^^^^^^"); ArrayList<ReceiptBean> posList = new ArrayList<ReceiptBean>();
for (int i = 0; i < templist.size(); i++) ArrayList<ReceiptBean> negList = new ArrayList<ReceiptBean>();
{ System.out.println("^^^^^^^templist Size["+ templist.size() + "]^^^^^^^^^^");
ReceiptBean rcpBean = templist.get(i); double totNegAmt = 0.0, totPosAmt = 0.0;
//System.out.println("--Balance Amount---["+rcpBean.getBalAmt()+"]Cnt["+i+"]");
invoiceId = rcpBean.getInvoiceId(); // Storing Positive amounts List as posList
tranSer = rcpBean.getTranSer(); for (int i = 0; i < templist.size(); i++) {
custRefNo= rcpBean.getCustRefNo(); ReceiptBean rcpBean = templist.get(i);
tranDate = rcpBean.getTranDate(); totAmt = rcpBean.getTotAmt();
totAmt= rcpBean.getTotAmt(); balAmt = rcpBean.getBalAmt();
balAmt = rcpBean.getBalAmt(); adjAmt = rcpBean.getAdjAmt();
adjAmt = rcpBean.getAdjAmt(); adjustedAmt = rcpBean.getAdjustedAmt();
adjustedAmt = rcpBean.getAdjustedAmt(); invAmt = rcpBean.getInvAmt();
invAmt = rcpBean.getInvAmt(); if (balAmt > 0)
reasCode = rcpBean.getReasCode(); {
custName = rcpBean.getCustName(); totPosAmt = totPosAmt + balAmt;
custCode = rcpBean.getCustCode(); posList.add(rcpBean);
bankCode = rcpBean.getBankCode(); }
chequeDate = rcpBean.getChequeDate(); }
chequeNo = rcpBean.getChequeNo(); // Storing Negative amounts List as negList
chqAmount = rcpBean.getChqAmount(); for (int i = 0; i < templist.size(); i++) {
custRefDate = rcpBean.getCustRefDate(); ReceiptBean rcpBean = templist.get(i);
dueDate = rcpBean.getDueDate(); totAmt = rcpBean.getTotAmt();
reasDetail = rcpBean.getReasDetail(); balAmt = rcpBean.getBalAmt();
custRefAmt = rcpBean.getCustRefAmt(); adjAmt = rcpBean.getAdjAmt();
adjustedAmt = rcpBean.getAdjustedAmt();
totAmount = totAmount+balAmt; invAmt = rcpBean.getInvAmt();
System.out.println("@@@totAmount["+totAmount+"]BalAmount["+balAmt+"]cnt["+i+"]"); if (balAmt < 0)
rcpBean.setRunningTotal(getRequiredDecimal(totAmount,3)); {
templist.set(i, rcpBean); totNegAmt = getRequiredDecimal(totNegAmt, 3) + balAmt;
negList.add(rcpBean);
}
}
System.out.println("***Total Amount Positive[" + totPosAmt + "]Negative[" + totNegAmt + "]");
System.out.println("****POSListSize[" + posList.size()+ "]****NEGListSize[" + negList.size() + "]");
// If positive Amt is greater than negative
if (totPosAmt > totNegAmt*(-1))
{
System.out.println("544::totNegAmt["+totNegAmt+"]");
// If positive Amt is greater then select all negative and match and select value with positive
for (int i = 0; i < negList.size(); i++)
{
ReceiptBean rcpBean = negList.get(i);
rcpBean.setIsSelected("Y");
negList.set(i, rcpBean);
}
for (int i = 0; i < posList.size(); i++)
{
ReceiptBean posBean = posList.get(i);
double balsAmt = posBean.getBalAmt();
double temp = totNegAmt;
totNegAmt = getRequiredDecimal(totNegAmt,3) + balsAmt;
System.out.println("555::tatNegAmt["+totNegAmt+"]balsAmt["+balsAmt+"]cnt["+i+"]");
posBean.setIsSelected("Y");
posList.set(i, posBean);
if (totNegAmt > 0) //to updated the to be adjusted amt
{
System.out.println("before break...tatPosAmt::"+totNegAmt);
ReceiptBean posBean2 = posList.get(i);
posBean2.setAdjAmt(temp*(-1));
posList.set(i, posBean2);
break;
}else if (totNegAmt == 0){
System.out.println("only break....!!!");
break;
}
}
} // If negative Amt is greater than positive
else if (totNegAmt*(-1) >= totPosAmt)
{
// If negative Amt is greater then select all positive and match and select value with negative
for (int i = 0; i < posList.size(); i++)
{
ReceiptBean rcpBean = posList.get(i);
rcpBean.setIsSelected("Y");
posList.set(i, rcpBean);
}
for (int i = 0; i < negList.size(); i++)
{
ReceiptBean negBean = negList.get(i);
double balsAmt = negBean.getBalAmt();
double temp = totPosAmt;
totPosAmt = getRequiredDecimal(totPosAmt, 3) + balsAmt;
System.out.println("589::tatNegAmt["+totPosAmt+"]Negative amt["+balsAmt+"]cnt["+i+"]");
negBean.setIsSelected("Y");
negList.set(i, negBean);
if (totPosAmt < 0) //to updated the to be adjusted amt
{
System.out.println("before break...tatPosAmt::"+totPosAmt);
ReceiptBean negBean2 = negList.get(i);
negBean2.setAdjAmt(temp*(-1));
negList.set(i, negBean2);
break;
}else if(totPosAmt == 0)
{
System.out.println("only break...");
break;
}
}
}
System.out.println("@@@@@ POSListSize[" + posList.size()+ "]****NEGListSize[" + negList.size() + "]");
int cnt = 1;
for (int i = 0; i < negList.size(); i++)
{
ReceiptBean rcpBean = negList.get(i);
xmlBuff.append(generateXmls(detailDom, cnt, rcpBean.getIsSelected(), rcpBean));
cnt++;
}
for (int i = 0; i < posList.size(); i++)
{
ReceiptBean rcpBean = posList.get(i);
xmlBuff.append(generateXmls(detailDom, cnt, rcpBean.getIsSelected(), rcpBean));
cnt++;
} }
//reverse loop to find 0 amount(match of +ve and -ve) //Changes done on 26JUN2018 End
for (int index = templist.size() - 1; index >= 0; index--)
{
ReceiptBean rcpBean = templist.get(index);
System.out.println("Balance Amount["+rcpBean.getBalAmt()+"]getRunningTotal():["+rcpBean.getRunningTotal()+"]Cnt["+index+"]");
//If runningTot is 0 then select remianing records else mark unselected
if(rcpBean.getRunningTotal() == 0)
{
int count = 0;
for (int selInx = index; selInx >= 0; selInx--)
{ count = selInx;
rcpBean = templist.get(selInx);
//added for asc ordr viewdata
rcpBean.setIsSelected("Y");
rcpBean.setDomId(selInx);
selectedList.add(rcpBean);
}
index = count;
}
else
{ //unselected list
rcpBean.setIsSelected("N");
rcpBean.setDomId(index);
selectedList.add(rcpBean);
}
}
for(int index = selectedList.size() - 1; index >= 0; index--)
{
ReceiptBean receiptBean = selectedList.get(index);
if ("Y".equals(receiptBean.getIsSelected())) {
xmlBuff.append(generateXmls(headerDom, receiptBean.getDomId(),"Y",receiptBean));
}else if ("N".equals(receiptBean.getIsSelected())) {
xmlBuff.append(generateXmls(headerDom, receiptBean.getDomId(),"N",receiptBean));
}
}
System.out.println("Total Amount - ["+totAmount+"]");
}//end of for (ArrayList templist : custGrpMap.values()) }//end of for (ArrayList templist : custGrpMap.values())
xmlBuff.append("</Header0>"); xmlBuff.append("</Header0>");
xmlBuff.append("</group0>"); xmlBuff.append("</group0>");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment