Commit 3aa824e2 authored by prane's avatar prane

Advance Receipt Customization(remittance form consideration) in AR Settlement Process

git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@216877 ce508802-f39f-4f6c-b175-0d175dae99d5
parent 8f741124
...@@ -51,6 +51,7 @@ public class GenerateReceiptPrc extends ProcessEJB implements GenerateReceiptPrc ...@@ -51,6 +51,7 @@ public class GenerateReceiptPrc extends ProcessEJB implements GenerateReceiptPrc
String sdueDate = ""; String sdueDate = "";
String remarks = ""; String remarks = "";
String suggestAdj=""; String suggestAdj="";
String suggestRemit = "";
java.sql.Timestamp dueDate = null; java.sql.Timestamp dueDate = null;
ArrayList invoiceList = new ArrayList(); ArrayList invoiceList = new ArrayList();
boolean amtFlag = true; boolean amtFlag = true;
...@@ -215,7 +216,7 @@ Put a validation chq amount in filter and total of details matches in case heade ...@@ -215,7 +216,7 @@ Put a validation chq amount in filter and total of details matches in case heade
xmlBuff.append("<group0>"); xmlBuff.append("<group0>");
xmlBuff.append("<description>").append("Group0 description").append("</description>"); xmlBuff.append("<description>").append("Group0 description").append("</description>");
xmlBuff.append("<Header0>"); xmlBuff.append("<Header0>");
StringBuffer subXmlStr = new StringBuffer("");
/*StringBuffer xmlBuffStr = new StringBuffer("<?xml version = \"1.0\"?>"); /*StringBuffer xmlBuffStr = new StringBuffer("<?xml version = \"1.0\"?>");
System.out.println("In GetViewData::["+windowName+"]"); System.out.println("In GetViewData::["+windowName+"]");
if("generate_receipt_process".equals(windowName)) if("generate_receipt_process".equals(windowName))
...@@ -283,8 +284,15 @@ Put a validation chq amount in filter and total of details matches in case heade ...@@ -283,8 +284,15 @@ Put a validation chq amount in filter and total of details matches in case heade
{ {
suggestAdj = "N"; suggestAdj = "N";
} }
//Pavan Rane 20FEB20 Start [Advance Receipt Customization(remittance form consideration)]
suggestRemit = genericUtility.getColumnValue("suggest_remit",headerDom);
if(suggestRemit == null || suggestRemit.trim().length() == 0 || "null".equals(suggestRemit))
{
suggestRemit = "N";
}
//Pavan Rane 20FEB20 End [Advance Receipt Customization(remittance form consideration)]
siteCode = genericUtility.getColumnValue("site_code",headerDom); siteCode = genericUtility.getColumnValue("site_code",headerDom);
System.out.println("siteCode------>"+ siteCode+"suggestAdj----->"+suggestAdj); System.out.println("siteCode------>"+ siteCode+"suggestAdj----->"+suggestAdj+"] suggestRemit--------->"+suggestRemit+"]");
System.out.println("Serialize Dom["+genericUtility.serializeDom(headerDom)); System.out.println("Serialize Dom["+genericUtility.serializeDom(headerDom));
StringBuffer xmlBuffStr = new StringBuffer("<?xml version = \"1.0\"?>"); StringBuffer xmlBuffStr = new StringBuffer("<?xml version = \"1.0\"?>");
...@@ -422,9 +430,96 @@ Put a validation chq amount in filter and total of details matches in case heade ...@@ -422,9 +430,96 @@ Put a validation chq amount in filter and total of details matches in case heade
System.out.println("suggest_adj........["+suggestAdj+"]"); System.out.println("suggest_adj........["+suggestAdj+"]");
HashMap<String, ArrayList<ReceiptBean>> custGrpMap = new HashMap<String, ArrayList<ReceiptBean>>(); HashMap<String, ArrayList<ReceiptBean>> custGrpMap = new HashMap<String, ArrayList<ReceiptBean>>();
ArrayList<ReceiptBean> selectedList = null; HashMap<String, HashMap<String, ArrayList<RemittBean>>> custRemittMap = new HashMap<String, HashMap<String, ArrayList<RemittBean>>>();
//ArrayList<ReceiptBean> selectedList = null;
try try
{ {
//Pavan Rane 20FEB20 Start [Advance Receipt Customization(remittance form consideration)]
if( "Y".equals(suggestRemit))
{
suggestAdj = "Y";
sql = "SELECT A.TRAN_ID__RCP,B.REF_NO, A.CUST_CODE, A.CHQ_AMT, B.RCP_AMT, C.GROUP_CODE"
+ " FROM RECEIPT_FORM A, RCPDET_FORM B, CUSTOMER C"
+ " WHERE A.TRAN_ID = B.TRAN_ID"
+ " AND A.CUST_CODE = C.CUST_CODE"
+ " AND B.ADJ_METHOD='M'"
+ " AND A.SITE_CODE= ?"
+ " AND A.TRAN_ID__RCP IS NOT NULL "
+ " AND A.TRAN_ID__ADJ IS NULL "
+ " AND A.CUST_CODE IN (SELECT CUST_CODE FROM CUSTOMER WHERE GROUP_CODE IN ( SELECT DISTINCT GROUP_CODE FROM CUSTOMER WHERE GROUP_CODE >= ? AND GROUP_CODE <= ? ) )"
+ " AND A.TRAN_DATE >= ? AND A.TRAN_DATE <= ?"
+ " ORDER BY A.TRAN_DATE";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,siteCode.trim());
pstmt.setString(2,custCodeFrom.trim());
pstmt.setString(3,custCodeTo.trim());
pstmt.setTimestamp(4,dueDate);
pstmt.setTimestamp(5,dueDateTo);
//System.out.println("The getDataSQL Becomes ......:"+sql);
rs = pstmt.executeQuery();
while (rs.next())
{
System.out.println("inside while...................");
String tranIdRcp = checkNull(rs.getString("TRAN_ID__RCP"));
int recCount = checkAdvancedDishnor(tranIdRcp, conn);
System.out.println("check rcpdishnor["+tranIdRcp+"] recCount["+recCount+"]");
if(recCount > 0)
{
System.out.println("continue............Advanced Dishnored["+tranIdRcp+"]");
continue;
}
String refNo = checkNull(rs.getString("REF_NO"));
//String custCode = rs.getString("CUST_CODE");
double chqAmt = rs.getDouble("CHQ_AMT");
double rcpAmt = rs.getDouble("RCP_AMT");
groupCode = checkNull(rs.getString("GROUP_CODE"));
System.out.println("Invoice["+refNo+"] Advanced["+tranIdRcp+"] AdvAmt["+chqAmt+"] invAmt["+rcpAmt+"]");
RemittBean remittBean = new RemittBean();
remittBean.setRcpAmount(new BigDecimal(rs.getDouble("CHQ_AMT")));
remittBean.setRefAmt(new BigDecimal(rs.getDouble("RCP_AMT")));
remittBean.setRefNo(refNo);
remittBean.setTranIdRcp(tranIdRcp);
//System.out.println("(!custRemittMap.containsKey(groupCode))["+(!custRemittMap.containsKey(groupCode))+"]");
if (!custRemittMap.containsKey(groupCode))
{
System.out.println("groupCode not matched");
HashMap<String, ArrayList<RemittBean>> advMap = new HashMap<String, ArrayList<RemittBean>>();
ArrayList<RemittBean> tempList = new ArrayList<RemittBean>();
tempList.add(remittBean);
advMap.put(tranIdRcp, tempList);
custRemittMap.put(groupCode, advMap);
}
else {
System.out.println("else...........1.0");
if(custRemittMap.containsKey(groupCode))
{
System.out.println("else...........1.1");
HashMap<String, ArrayList<RemittBean>> advMaptmp = custRemittMap.get(groupCode);
if (!advMaptmp.containsKey(tranIdRcp))
{
System.out.println("else...........1.2");
ArrayList<RemittBean> tempList = new ArrayList<RemittBean>();
tempList.add(remittBean);
advMaptmp.put(tranIdRcp, tempList);
}
else {
System.out.println("else...........1.3");
ArrayList<RemittBean> tempList = advMaptmp.get(tranIdRcp);
tempList.add(remittBean);
advMaptmp.put(tranIdRcp, tempList);
}
custRemittMap.put(groupCode, advMaptmp);
}
}
//advMap.clear();
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
System.out.println("custRemittMap.size()>>["+custRemittMap.size()+"] custRemittMap>>"+custRemittMap+"]\n\n\n\n");
}//Enf of if( "Y".equals(suggestRemit))
//Pavan Rane 20FEB20 End [Advance Receipt Customization(remittance form consideration)]
//*********Added on 28092006 //*********Added on 28092006
sql = "SELECT D.REF_NO,D.TRAN_SER,D.REF_DATE,D.TOT_AMT - D.ADJ_AMT ,C.CUST_NAME ," sql = "SELECT D.REF_NO,D.TRAN_SER,D.REF_DATE,D.TOT_AMT - D.ADJ_AMT ,C.CUST_NAME ,"
+ "' ' BANK_CODE,D.TRAN_DATE,' ' AS CHEQUE_NO,0.0 CHQ_AMOUNT,C.CUST_CODE, " // ADDED BY RAJESH AS ALIAS IS NOT REQUIRED FOR BANK_CODE + "' ' BANK_CODE,D.TRAN_DATE,' ' AS CHEQUE_NO,0.0 CHQ_AMOUNT,C.CUST_CODE, " // ADDED BY RAJESH AS ALIAS IS NOT REQUIRED FOR BANK_CODE
...@@ -590,9 +685,9 @@ Put a validation chq amount in filter and total of details matches in case heade ...@@ -590,9 +685,9 @@ Put a validation chq amount in filter and total of details matches in case heade
retTabSepStrBuff.append("</Header0>"); retTabSepStrBuff.append("</Header0>");
retTabSepStrBuff.append("</group0>"); retTabSepStrBuff.append("</group0>");
retTabSepStrBuff.append("</DocumentRoot>"); retTabSepStrBuff.append("</DocumentRoot>");
//Pavan Rane 20FEB20 Start [Commented for Advance Receipt Customization(remittance form consideration)]
//added by nandkumar gadkari---------------start--------------1/04/19-----for Remittance form Manual flag //added by nandkumar gadkari---------------start--------------1/04/19-----for Remittance form Manual flag
String refNo="",refSer=""; /*String refNo="",refSer="";
int cnt=0; int cnt=0;
ArrayList<String> rcpFormRefNo = new ArrayList<String>(); ArrayList<String> rcpFormRefNo = new ArrayList<String>();
sql = "select b.ref_no ,b.ref_ser from receipt_form a, rcpdet_form b where a.tran_id= b.tran_id and b.adj_method='M' " sql = "select b.ref_no ,b.ref_ser from receipt_form a, rcpdet_form b where a.tran_id= b.tran_id and b.adj_method='M' "
...@@ -638,9 +733,9 @@ Put a validation chq amount in filter and total of details matches in case heade ...@@ -638,9 +733,9 @@ Put a validation chq amount in filter and total of details matches in case heade
pstmt = null; pstmt = null;
cnt =rcpFormRefNo.size(); cnt =rcpFormRefNo.size();
System.out.println("^^^^^^^rcpFormRefNo rcpFormRefNo["+rcpFormRefNo); System.out.println("^^^^^^^rcpFormRefNo rcpFormRefNo["+rcpFormRefNo);*/
//added by nandkumar gadkari---------------end--------------1/04/19-----for Remittance form Manual flag //added by nandkumar gadkari---------------end--------------1/04/19-----for Remittance form Manual flag
//Pavan Rane 20FEB20 End [Commented for Advance Receipt Customization(remittance form consideration)]
//Added by Pavan R on 24MAY18 [F18BGTP001]- "Suggest adjustments" in Automatic AR settlement filter screen. //Added by Pavan R on 24MAY18 [F18BGTP001]- "Suggest adjustments" in Automatic AR settlement filter screen.
if("Y".equalsIgnoreCase(suggestAdj)) if("Y".equalsIgnoreCase(suggestAdj))
{ {
...@@ -649,11 +744,14 @@ Put a validation chq amount in filter and total of details matches in case heade ...@@ -649,11 +744,14 @@ 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+" ]******");
} }
int gCnt = 1; int gCnt = 1;
for (ArrayList<ReceiptBean> templist : custGrpMap.values()) //for (ArrayList<ReceiptBean> templist : custGrpMap.values())
for (Map.Entry<String, ArrayList<ReceiptBean>> entry : custGrpMap.entrySet())
{ {
groupCode = entry.getKey();
ArrayList<ReceiptBean> templist = entry.getValue();
BigDecimal tmpVal = new BigDecimal(-1); BigDecimal tmpVal = new BigDecimal(-1);
System.out.println("Global dom count["+gCnt+"]"); System.out.println("Global dom count["+gCnt+"]");
selectedList = new ArrayList<ReceiptBean>(); //selectedList = new ArrayList<ReceiptBean>();
Collections.sort(templist, ReceiptBean.receiptComparator); Collections.sort(templist, ReceiptBean.receiptComparator);
//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.] //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.]
ArrayList<ReceiptBean> posList = new ArrayList<ReceiptBean>(); ArrayList<ReceiptBean> posList = new ArrayList<ReceiptBean>();
...@@ -674,14 +772,14 @@ Put a validation chq amount in filter and total of details matches in case heade ...@@ -674,14 +772,14 @@ Put a validation chq amount in filter and total of details matches in case heade
adjAmt = rcpBean.getAdjAmt(); adjAmt = rcpBean.getAdjAmt();
adjustedAmt = rcpBean.getAdjustedAmt(); adjustedAmt = rcpBean.getAdjustedAmt();
invAmt = rcpBean.getInvAmt(); invAmt = rcpBean.getInvAmt();
refNo = rcpBean.getInvoiceId();// added by nandkumar gadkari on 2/04/19 //refNo = rcpBean.getInvoiceId();// added by nandkumar gadkari on 2/04/19
System.out.println("Global refNo["+refNo+"]"+balAmt); //System.out.println("Global refNo["+refNo+"]"+balAmt);
//if (balAmt > 0) //if (balAmt > 0)
if ((balAmt.compareTo(BigDecimal.ZERO) == 1)) if ((balAmt.compareTo(BigDecimal.ZERO) == 1))
{ {
//totPosAmt = totPosAmt + balAmt; //totPosAmt = totPosAmt + balAmt;
// added by nandkumar gadkari on 2/04/19-------------start---- // added by nandkumar gadkari on 2/04/19-------------start----
if(cnt > 0) /*if(cnt > 0)
{ {
System.out.println("cnt cnt["+cnt+"]"); System.out.println("cnt cnt["+cnt+"]");
if (rcpFormRefNo.contains(refNo.trim())) if (rcpFormRefNo.contains(refNo.trim()))
...@@ -695,10 +793,10 @@ Put a validation chq amount in filter and total of details matches in case heade ...@@ -695,10 +793,10 @@ Put a validation chq amount in filter and total of details matches in case heade
} }
else // added by nandkumar gadkari on 2/04/19 ------------end else // added by nandkumar gadkari on 2/04/19 ------------end
{ {*/
totPosAmt = totPosAmt.add(balAmt); totPosAmt = totPosAmt.add(balAmt);
posList.add(rcpBean); posList.add(rcpBean);
} //}
} }
} }
...@@ -719,224 +817,295 @@ Put a validation chq amount in filter and total of details matches in case heade ...@@ -719,224 +817,295 @@ Put a validation chq amount in filter and total of details matches in case heade
} }
} }
System.out.println("***Total Amount Positive[" + totPosAmt + "]Negative[" + totNegAmt + "]"); System.out.println("***Total Amount Positive[" + totPosAmt + "]Negative[" + totNegAmt + "]");
System.out.println("****POSListSize[" + posList.size()+ "]****NEGListSize[" + negList.size() + "]"); System.out.println("****POSListSize[" + posList.size()+ "]****NEGListSize[" + negList.size() + "]custRemittMap["+custRemittMap.size()+"]");
// If positive Amt is greater than negative //Pavan Rane 20FEB20 Start [Advance Receipt Customization(remittance form consideration)]
//if (totPosAmt > totNegAmt*(-1)) if("Y".equals(suggestRemit))
if (totPosAmt.compareTo(totNegAmt.multiply(tmpVal)) == 1)
{ {
System.out.println("544::totNegAmt["+totNegAmt+"]"); if(custRemittMap.size() > 0)
// 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); //HashMap<String, ArrayList<RemittBean>> advMap = custRemittMap.get(groupCode);
rcpBean.setIsSelected("Y"); //if(advMap == null || advMap.isEmpty())
negList.set(i, rcpBean); if(custRemittMap.get(groupCode) == null || (custRemittMap.get(groupCode) != null && custRemittMap.get(groupCode).isEmpty()))
} {
for (int i = 0; i < posList.size(); i++) /**If there are no adv in Remittance for curernt custcode in selected period then continue*/
{ System.out.println("There is/are No Adv in Remittance for CustCode["+groupCode+"].....");
ReceiptBean posBean = posList.get(i); continue;
//double balsAmt = posBean.getBalAmt(); }
BigDecimal balsAmt = posBean.getBalAmt(); else
//double temp = totNegAmt; {
BigDecimal temp = totNegAmt; HashMap<String, ArrayList<RemittBean>> advMap = custRemittMap.get(groupCode);/***/
//totNegAmt = getRequiredDecimal(totNegAmt,3) + balsAmt; System.out.println("advMap.size()["+advMap.size()+"]");
totNegAmt = rounded(totNegAmt.add(balsAmt),3); for (Map.Entry<String, ArrayList<RemittBean>> advEntry : advMap.entrySet())
System.out.println("555::totNegAmt["+totNegAmt+"]balsAmt["+balsAmt+"]cnt["+i+"]"); {
posBean.setIsSelected("Y"); String advReceipt = advEntry.getKey();
posList.set(i, posBean); ArrayList<RemittBean> invoicelist = advEntry.getValue();
//if (totNegAmt > 0) //to updated the to be adjusted amt int index = indexOfReference(negList, advReceipt);
if ((totNegAmt.compareTo(BigDecimal.ZERO) == 1)) System.out.println("Index["+index+"] Current Advance["+advReceipt+"] invoicelist["+invoicelist.size()+"]");
{ if(index != -1)
System.out.println("before break...totPosAmt::"+totNegAmt); {
ReceiptBean posBean2 = posList.get(i); BigDecimal totAdvAmt = BigDecimal.ZERO;
//posBean2.setAdjAmt(temp*(-1)); BigDecimal totinvAmt = BigDecimal.ZERO;
posBean2.setAdjAmt(temp.multiply(tmpVal)); StringBuffer xmlBuffDetail = new StringBuffer();
posList.set(i, posBean2); /**Here populate and match the invoices **/
break; for(RemittBean remittBean : invoicelist)
}//else if (totNegAmt == 0){ {
else if (totNegAmt.compareTo(BigDecimal.ZERO) == 0){ int invIndex = indexOfReference(posList, remittBean);
System.out.println("only break....!!!"); System.out.println("Index["+invIndex+"] Invoice...Current Advance["+advReceipt+"]");
break; if(invIndex != -1)
{
ReceiptBean rcpBean = posList.get(invIndex);
totAdvAmt = remittBean.getRcpAmount();
totinvAmt = totinvAmt.add(remittBean.getRefAmt());
rcpBean.setAdjAmt(remittBean.getRefAmt());
//System.out.println("Invoice rcpBean["+rcpBean+"] invIndex["+invIndex+"]");
xmlBuffDetail.append(generateXmls(detailDom, gCnt, "Y", rcpBean));
gCnt++;
}
}
//if(totAdvAmt >= totinvAmt)
System.out.println("Comparing totAdvAmt["+totAdvAmt+"] totinvAmt["+totinvAmt+"]");
if (totAdvAmt.abs().compareTo(totinvAmt) >= 0)
{
ReceiptBean advRcpBean = negList.get(index);//adv
advRcpBean.setAdjAmt(totinvAmt.negate());
//System.out.println("Advanced rcpBean["+advRcpBean+"] invIndex["+index+"]");
subXmlStr.append(generateXmls(detailDom, gCnt, "Y", advRcpBean));
gCnt++;
subXmlStr.append(xmlBuffDetail);
}else
{
xmlBuffDetail.append("");//to clear invoices detail
System.out.println("continue.....");
continue;
}
}
}//adv loop end
//System.out.println("\n\n\nPAVAN RANE->>>>>xmlBuffStr["+xmlBuff+"]\n\n\n");
//xmlBuff.append(xmlBuff);
} }
}
} // If negative Amt is greater than positive
//else if (totNegAmt*(-1) >= totPosAmt)
else if ((totNegAmt.multiply(tmpVal)).compareTo(totPosAmt) == 1 || (totNegAmt.multiply(tmpVal)).compareTo(totPosAmt) == 0)
{
// 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++) }//End of if("Y".equals(suggestRemit))
{ else
ReceiptBean negBean = negList.get(i); { //Pavan Rane 20FEB20 End [Advance Receipt Customization(remittance form consideration)]
//double balsAmt = negBean.getBalAmt(); // If positive Amt is greater than negative
BigDecimal balsAmt = negBean.getBalAmt(); //if (totPosAmt > totNegAmt*(-1))
//double temp = totPosAmt; if (totPosAmt.compareTo(totNegAmt.multiply(tmpVal)) == 1)
BigDecimal temp = totPosAmt; {
//totPosAmt = getRequiredDecimal(totPosAmt, 3) + balsAmt; System.out.println("544::totNegAmt["+totNegAmt+"]");
totPosAmt = rounded(totPosAmt.add(balsAmt),3); // If positive Amt is greater then select all negative and match and select value with positive
System.out.println("589::totNegAmt["+totPosAmt+"]Negative amt["+balsAmt+"]cnt["+i+"]"); for (int i = 0; i < negList.size(); i++)
negBean.setIsSelected("Y");
negList.set(i, negBean);
//if (totPosAmt < 0) //to updated the to be adjusted amt
if (totPosAmt.compareTo(BigDecimal.ZERO)== -1)
{
System.out.println("before break...totPosAmt::"+totPosAmt);
ReceiptBean negBean2 = negList.get(i);
negBean2.setAdjAmt(temp.multiply(tmpVal));
negList.set(i, negBean2);
break;
}else if(totPosAmt.compareTo(BigDecimal.ZERO) == 0)
{ {
System.out.println("only break..."); ReceiptBean rcpBean = negList.get(i);
break; rcpBean.setIsSelected("Y");
negList.set(i, rcpBean);
} }
} for (int i = 0; i < posList.size(); i++)
} {
System.out.println("@@@@@ POSListSize[" + posList.size()+ "]****NEGListSize[" + negList.size() + "]"); ReceiptBean posBean = posList.get(i);
//int cnt = 1; //double balsAmt = posBean.getBalAmt();
//Pavan R on 30aug2018 to get only selected data for process method on preview flag BigDecimal balsAmt = posBean.getBalAmt();
System.out.println("objName["+objName+"]"); //double temp = totNegAmt;
if("generate_receipt_process".equals(objName)) BigDecimal temp = totNegAmt;
{ //totNegAmt = getRequiredDecimal(totNegAmt,3) + balsAmt;
for (int i = 0; i < negList.size(); i++) totNegAmt = rounded(totNegAmt.add(balsAmt),3);
System.out.println("555::totNegAmt["+totNegAmt+"]balsAmt["+balsAmt+"]cnt["+i+"]");
posBean.setIsSelected("Y");
posList.set(i, posBean);
//if (totNegAmt > 0) //to updated the to be adjusted amt
if ((totNegAmt.compareTo(BigDecimal.ZERO) == 1))
{
System.out.println("before break...totPosAmt::"+totNegAmt);
ReceiptBean posBean2 = posList.get(i);
//posBean2.setAdjAmt(temp*(-1));
posBean2.setAdjAmt(temp.multiply(tmpVal));
posList.set(i, posBean2);
break;
}//else if (totNegAmt == 0){
else if (totNegAmt.compareTo(BigDecimal.ZERO) == 0){
System.out.println("only break....!!!");
break;
}
}
} // If negative Amt is greater than positive
//else if (totNegAmt*(-1) >= totPosAmt)
else if ((totNegAmt.multiply(tmpVal)).compareTo(totPosAmt) == 1 || (totNegAmt.multiply(tmpVal)).compareTo(totPosAmt) == 0)
{ {
if( negList.size() > 0 && posList.size() == 0 ) // 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++)
{ {
for (int j = 0; j < negList.size(); j++) ReceiptBean negBean = negList.get(i);
//double balsAmt = negBean.getBalAmt();
BigDecimal balsAmt = negBean.getBalAmt();
//double temp = totPosAmt;
BigDecimal temp = totPosAmt;
//totPosAmt = getRequiredDecimal(totPosAmt, 3) + balsAmt;
totPosAmt = rounded(totPosAmt.add(balsAmt),3);
System.out.println("589::totNegAmt["+totPosAmt+"]Negative amt["+balsAmt+"]cnt["+i+"]");
negBean.setIsSelected("Y");
negList.set(i, negBean);
//if (totPosAmt < 0) //to updated the to be adjusted amt
if (totPosAmt.compareTo(BigDecimal.ZERO)== -1)
{
System.out.println("before break...totPosAmt::"+totPosAmt);
ReceiptBean negBean2 = negList.get(i);
negBean2.setAdjAmt(temp.multiply(tmpVal));
negList.set(i, negBean2);
break;
}else if(totPosAmt.compareTo(BigDecimal.ZERO) == 0)
{ {
ReceiptBean negBean = negList.get(j); System.out.println("only break...");
negBean.setIsSelected("N"); break;
negList.set(j, negBean);
} }
}
ReceiptBean rcpBean = negList.get(i);
//below if condition added to append unselected negative records after matched selected
if ("Y".equals(rcpBean.getIsSelected())) {
xmlBuffStr.append(generateXmls(detailDom, gCnt, rcpBean.getIsSelected(), rcpBean));
gCnt++;
} }
} }
for (int i = 0; i < posList.size(); i++) System.out.println("@@@@@ POSListSize[" + posList.size()+ "]****NEGListSize[" + negList.size() + "]");
//int cnt = 1;
//Pavan R on 30aug2018 to get only selected data for process method on preview flag
System.out.println("objName["+objName+"]");
if("generate_receipt_process".equals(objName))
{ {
if( posList.size() > 0 && negList.size() == 0 ) for (int i = 0; i < negList.size(); i++)
{ {
for (int j = 0; j < posList.size(); j++) if( negList.size() > 0 && posList.size() == 0 )
{ {
ReceiptBean posBean = posList.get(j); for (int j = 0; j < negList.size(); j++)
posBean.setIsSelected("N"); {
posList.set(j, posBean); ReceiptBean negBean = negList.get(j);
negBean.setIsSelected("N");
negList.set(j, negBean);
}
}
ReceiptBean rcpBean = negList.get(i);
//below if condition added to append unselected negative records after matched selected
if ("Y".equals(rcpBean.getIsSelected())) {
xmlBuffStr.append(generateXmls(detailDom, gCnt, rcpBean.getIsSelected(), rcpBean));
gCnt++;
} }
} }
ReceiptBean rcpBean = posList.get(i); for (int i = 0; i < posList.size(); i++)
if ("Y".equals(rcpBean.getIsSelected())) { {
xmlBuffStr.append(generateXmls(detailDom, gCnt, rcpBean.getIsSelected(), rcpBean)); if( posList.size() > 0 && negList.size() == 0 )
gCnt++;
}
}
}//Pavan R on 30aug2018 to get only selected data for process method on preview flag END
else
{
for (int i = 0; i < negList.size(); i++)
{
if( negList.size() > 0 && posList.size() == 0 )
{
for (int j = 0; j < negList.size(); j++)
{ {
ReceiptBean negBean = negList.get(j); for (int j = 0; j < posList.size(); j++)
negBean.setIsSelected("N"); {
negList.set(j, negBean); ReceiptBean posBean = posList.get(j);
posBean.setIsSelected("N");
posList.set(j, posBean);
}
}
ReceiptBean rcpBean = posList.get(i);
if ("Y".equals(rcpBean.getIsSelected())) {
xmlBuffStr.append(generateXmls(detailDom, gCnt, rcpBean.getIsSelected(), rcpBean));
gCnt++;
} }
}
ReceiptBean rcpBean = negList.get(i);
//below if condition added to append unselected negative records after matched selected
if("Y".equalsIgnoreCase(rcpBean.getIsSelected())||"N".equalsIgnoreCase(rcpBean.getIsSelected()))
{
xmlBuff.append(generateXmls(detailDom, gCnt, rcpBean.getIsSelected(), rcpBean));
gCnt++;
} }
}
for (int i = 0; i < posList.size(); i++) }//Pavan R on 30aug2018 to get only selected data for process method on preview flag END
else
{ {
if( posList.size() > 0 && negList.size() == 0 ) for (int i = 0; i < negList.size(); i++)
{ {
for (int j = 0; j < posList.size(); j++) if( negList.size() > 0 && posList.size() == 0 )
{
for (int j = 0; j < negList.size(); j++)
{
ReceiptBean negBean = negList.get(j);
negBean.setIsSelected("N");
negList.set(j, negBean);
}
}
ReceiptBean rcpBean = negList.get(i);
//below if condition added to append unselected negative records after matched selected
if("Y".equalsIgnoreCase(rcpBean.getIsSelected())||"N".equalsIgnoreCase(rcpBean.getIsSelected()))
{ {
ReceiptBean posBean = posList.get(j); xmlBuff.append(generateXmls(detailDom, gCnt, rcpBean.getIsSelected(), rcpBean));
posBean.setIsSelected("N"); gCnt++;
posList.set(j, posBean);
} }
} }
ReceiptBean rcpBean = posList.get(i); for (int i = 0; i < posList.size(); i++)
xmlBuff.append(generateXmls(detailDom, gCnt, rcpBean.getIsSelected(), rcpBean)); {
gCnt++; if( posList.size() > 0 && negList.size() == 0 )
} {
//below loop added to append unselected negative records after matched selected for (int j = 0; j < posList.size(); j++)
for (int i = 0; i < negList.size(); i++) {
{ ReceiptBean posBean = posList.get(j);
ReceiptBean rcpBean = negList.get(i); posBean.setIsSelected("N");
if("".equalsIgnoreCase(rcpBean.getIsSelected())) posList.set(j, posBean);
{//ReceiptBean rcpBean = negList.get(i); }
}
ReceiptBean rcpBean = posList.get(i);
xmlBuff.append(generateXmls(detailDom, gCnt, rcpBean.getIsSelected(), rcpBean)); xmlBuff.append(generateXmls(detailDom, gCnt, rcpBean.getIsSelected(), rcpBean));
gCnt++; gCnt++;
} }
} //below loop added to append unselected negative records after matched selected
//added by nandkumar gadkari on 04/04/19---------------start-------------------for Remittance form Manual flag--------- for (int i = 0; i < negList.size(); i++)
//below loop added to append unselected Positive records after matched selected
if(cnt > 0)
{
for (int i = 0; i < templist.size(); i++) {
ReceiptBean rcpBean = templist.get(i);
totAmt = rcpBean.getTotAmt();
balAmt = rcpBean.getBalAmt();
adjAmt = rcpBean.getAdjAmt();
adjustedAmt = rcpBean.getAdjustedAmt();
invAmt = rcpBean.getInvAmt();
refNo = rcpBean.getInvoiceId();
System.out.println("Global refNo["+refNo+"]"+balAmt);
//if (balAmt > 0)
if ((balAmt.compareTo(BigDecimal.ZERO) == 1))
{
System.out.println("cnt1 cnt1["+cnt+"]");
if (!rcpFormRefNo.contains(refNo.trim()))
{
posList.add(rcpBean);
System.out.println("posList123["+posList+"]");
}
}
}
for (int i = 0; i < posList.size(); i++)
{ {
ReceiptBean rcpBean = negList.get(i);
ReceiptBean rcpBean = posList.get(i);
if("".equalsIgnoreCase(rcpBean.getIsSelected())) if("".equalsIgnoreCase(rcpBean.getIsSelected()))
{//ReceiptBean rcpBean = negList.get(i); {//ReceiptBean rcpBean = negList.get(i);
xmlBuff.append(generateXmls(detailDom, gCnt, rcpBean.getIsSelected(), rcpBean)); xmlBuff.append(generateXmls(detailDom, gCnt, rcpBean.getIsSelected(), rcpBean));
gCnt++; gCnt++;
} }
} }
//Pavan Rane 20FEB20 start [Commented for Advance Receipt Customization(remittance form consideration)]
//added by nandkumar gadkari on 04/04/19---------------start-------------------for Remittance form Manual flag---------
//below loop added to append unselected Positive records after matched selected
/*if(cnt > 0)
{
for (int i = 0; i < templist.size(); i++) {
ReceiptBean rcpBean = templist.get(i);
totAmt = rcpBean.getTotAmt();
balAmt = rcpBean.getBalAmt();
adjAmt = rcpBean.getAdjAmt();
adjustedAmt = rcpBean.getAdjustedAmt();
invAmt = rcpBean.getInvAmt();
refNo = rcpBean.getInvoiceId();
System.out.println("Global refNo["+refNo+"]"+balAmt);
//if (balAmt > 0)
if ((balAmt.compareTo(BigDecimal.ZERO) == 1))
{
System.out.println("cnt1 cnt1["+cnt+"]");
if (!rcpFormRefNo.contains(refNo.trim()))
{
posList.add(rcpBean);
System.out.println("posList123["+posList+"]");
}
}
}
for (int i = 0; i < posList.size(); i++)
{
ReceiptBean rcpBean = posList.get(i);
if("".equalsIgnoreCase(rcpBean.getIsSelected()))
{//ReceiptBean rcpBean = negList.get(i);
xmlBuff.append(generateXmls(detailDom, gCnt, rcpBean.getIsSelected(), rcpBean));
gCnt++;
}
}
}*/
//added by nandkumar gadkari on 04/04/19---------------end-----------------for Remittance form Manual flag-----------
} }
//added by nandkumar gadkari on 04/04/19---------------end-----------------for Remittance form Manual flag----------- }//else end of if("Y".equals(suggestRemit))
}
//Changes done on 26JUN2018 End //Changes done on 26JUN2018 End
}//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>");
xmlBuff.append("</DocumentRoot>"); xmlBuff.append("</DocumentRoot>");*/
//System.out.println("xml xmlBuff::::"+xmlBuff); //System.out.println("xml xmlBuff::::"+xmlBuff);
}//end of suggestion flag }//end of suggestion flag
//Pavan R on 24MAY18 End //Pavan Rane 20FEB20 End [Advance Receipt Customization(remittance form consideration)]
}//try }//try
catch (SQLException e) catch (SQLException e)
{ {
...@@ -952,6 +1121,10 @@ Put a validation chq amount in filter and total of details matches in case heade ...@@ -952,6 +1121,10 @@ Put a validation chq amount in filter and total of details matches in case heade
//if suggested adj is Y then display selected/unselected data else exsting will work //if suggested adj is Y then display selected/unselected data else exsting will work
if("generate_receipt_process".equals(objName) && "Y".equalsIgnoreCase(suggestAdj)) if("generate_receipt_process".equals(objName) && "Y".equalsIgnoreCase(suggestAdj))
{ {
if("Y".equalsIgnoreCase(suggestRemit))
{
xmlBuffStr.append(subXmlStr);
}
xmlBuffStr.append("</Header0>"); xmlBuffStr.append("</Header0>");
xmlBuffStr.append("</group0>"); xmlBuffStr.append("</group0>");
xmlBuffStr.append("</DocumentRoot>"); xmlBuffStr.append("</DocumentRoot>");
...@@ -959,6 +1132,13 @@ Put a validation chq amount in filter and total of details matches in case heade ...@@ -959,6 +1132,13 @@ Put a validation chq amount in filter and total of details matches in case heade
} }
else if("Y".equalsIgnoreCase(suggestAdj)) else if("Y".equalsIgnoreCase(suggestAdj))
{ {
if("Y".equalsIgnoreCase(suggestRemit))
{
xmlBuff.append(subXmlStr);
}
xmlBuff.append("</Header0>");
xmlBuff.append("</group0>");
xmlBuff.append("</DocumentRoot>");
resultString = xmlBuff.toString(); resultString = xmlBuff.toString();
} }
else else
...@@ -1099,8 +1279,13 @@ conn = getConnection(); ...@@ -1099,8 +1279,13 @@ conn = getConnection();
chgTerm = genericUtility.getValueFromXTRA_PARAMS(xtraParams,"termId"); chgTerm = genericUtility.getValueFromXTRA_PARAMS(xtraParams,"termId");
//Added by Pavan R 10-may-18 to flag in filter on receivable JV creation, to create a confirmed or unconfirmed JV. //Added by Pavan R 10-may-18 to flag in filter on receivable JV creation, to create a confirmed or unconfirmed JV.
jvAutoConf = genericUtility.getColumnValue("jv_auto_conf",headerDom); jvAutoConf = genericUtility.getColumnValue("jv_auto_conf",headerDom);
suggestRemit = genericUtility.getColumnValue("suggest_remit",headerDom);
if(suggestRemit == null || suggestRemit.trim().length() == 0 || "null".equals(suggestRemit))
{
suggestRemit = "N";
}
entryBatchNo = checkNull(genericUtility.getColumnValue("entry_batch_no", headerDom));//added by Pavan R 30aug18[to added in receivables header] entryBatchNo = checkNull(genericUtility.getColumnValue("entry_batch_no", headerDom));//added by Pavan R 30aug18[to added in receivables header]
System.out.println("Pavan----jvAutoConf ["+jvAutoConf+"]entryBatchNo["+entryBatchNo+"]"); System.out.println("Pavan----jvAutoConf ["+jvAutoConf+"]entryBatchNo["+entryBatchNo+"] suggestRemit["+suggestRemit+"]");
//Added by Pavan R 10-may-18 end //Added by Pavan R 10-may-18 end
siteCode = genericUtility.getColumnValue("site_code",headerDom); siteCode = genericUtility.getColumnValue("site_code",headerDom);
//custCode = genericUtility.getColumnValue("cust_code",headerDom); //custCode = genericUtility.getColumnValue("cust_code",headerDom);
...@@ -2812,12 +2997,12 @@ conn = getConnection(); ...@@ -2812,12 +2997,12 @@ conn = getConnection();
{ {
//Commented by Manoj dtd 03/05/2014writeLog(filePtr,"[insertReceiptDtl]START:::",true); //Commented by Manoj dtd 03/05/2014writeLog(filePtr,"[insertReceiptDtl]START:::",true);
java.sql.Timestamp refDate = null,dueDate = null; java.sql.Timestamp refDate = null,dueDate = null;
String lineNo = "",refNo = "",currCode = "",custCode = "",acctCodeAr = ""; String lineNo = "",refNo = "",currCode = "",custCode = "",acctCodeAr = "", sqlRemit="";
String cctrCodeAr = "",billDisc = "",refSer=""; String cctrCodeAr = "",billDisc = "",refSer="";
double exchRateRcv = 0,discount = 0,badDebtAmt = 0,exchRate = 0,diffAmtExch = 0; double exchRateRcv = 0,discount = 0,badDebtAmt = 0,exchRate = 0,diffAmtExch = 0;
double taxAmt = 0,netAmt = 0,adjAmt = 0,rcpAmt = 0; double taxAmt = 0,netAmt = 0,adjAmt = 0,rcpAmt = 0;
int lineNoDet = 0; int lineNoDet = 0;
PreparedStatement pstmt =null; PreparedStatement pstmt =null, pstmtRemit =null;
String sql = "INSERT INTO RCPDET ( TRAN_ID,REF_SER,REF_NO,REF_DATE,CURR_CODE,EXCH_RATE__RCV," String sql = "INSERT INTO RCPDET ( TRAN_ID,REF_SER,REF_NO,REF_DATE,CURR_CODE,EXCH_RATE__RCV,"
+ "DISC_AMT,TAX_AMT,EXCH_RATE,NET_AMT,RCP_AMT,DIFF_AMT__EXCH,CUST_CODE,DUE_DATE," + "DISC_AMT,TAX_AMT,EXCH_RATE,NET_AMT,RCP_AMT,DIFF_AMT__EXCH,CUST_CODE,DUE_DATE,"
...@@ -2827,6 +3012,11 @@ conn = getConnection(); ...@@ -2827,6 +3012,11 @@ conn = getConnection();
try try
{ {
if( "Y".equals(suggestRemit))
{
sqlRemit = "update receipt_form set tran_id__adj = ?, status = 'X' where tran_id__rcp = ?";
pstmtRemit = conn.prepareStatement(sqlRemit);
}
pstmt = conn.prepareStatement(sql); pstmt = conn.prepareStatement(sql);
for(int invlCtr = 0; invlCtr < invoiceList.size(); invlCtr++) for(int invlCtr = 0; invlCtr < invoiceList.size(); invlCtr++)
{ {
...@@ -2874,7 +3064,8 @@ conn = getConnection(); ...@@ -2874,7 +3064,8 @@ conn = getConnection();
pstmt.setString(5,currCode); pstmt.setString(5,currCode);
pstmt.setDouble(6,exchRateRcv); pstmt.setDouble(6,exchRateRcv);
pstmt.setDouble(7,discount); pstmt.setDouble(7,discount);
pstmt.setDouble(8,taxAmt); //pstmt.setDouble(8,taxAmt);
pstmt.setDouble(8,0.0); //Pavan Rane 20feb2020[tax_amt to set 0 to handle net_amt>0 Error In RecvJV]
pstmt.setDouble(9,exchRate); pstmt.setDouble(9,exchRate);
pstmt.setDouble(10,netAmt); pstmt.setDouble(10,netAmt);
pstmt.setDouble(11,rcpAmt); pstmt.setDouble(11,rcpAmt);
...@@ -2889,14 +3080,27 @@ conn = getConnection(); ...@@ -2889,14 +3080,27 @@ conn = getConnection();
pstmt.setInt(20,lineNoDet);//line number column added by kailas gaikwad on 27/5/2019 pstmt.setInt(20,lineNoDet);//line number column added by kailas gaikwad on 27/5/2019
pstmt.addBatch(); pstmt.addBatch();
pstmt.clearParameters(); //Pavan Rane 23jul19[for open cursor issue] pstmt.clearParameters(); //Pavan Rane 23jul19[for open cursor issue]
if( "Y".equals(suggestRemit))
{
pstmtRemit.setString(1, tranId);
pstmtRemit.setString(2, refNo);
pstmtRemit.addBatch();
pstmtRemit.clearParameters();
}
} }
pstmt.executeBatch(); int cntJV[] = pstmt.executeBatch();
//Pavan Rane 23jul19[for open cursor issue] //Pavan Rane 23jul19[for open cursor issue]
pstmt.clearBatch(); pstmt.clearBatch();
pstmt.close(); pstmt.close();
pstmt = null; pstmt = null;
if( "Y".equals(suggestRemit) && cntJV.length > 0)
{
int cntRemit[] = pstmtRemit.executeBatch();
pstmtRemit.close();
pstmtRemit = null;
System.out.println("ReceivableJV-Remittance Detail Update cntRemmit["+cntRemit.length+"]");
}
//Pavan Rane 23jul19 end //Pavan Rane 23jul19 end
//Commented by Manoj dtd 03/05/2014writeLog(filePtr,"[billAmt TO BE + UPDATE ]:::"+billAmt,true); //Commented by Manoj dtd 03/05/2014writeLog(filePtr,"[billAmt TO BE + UPDATE ]:::"+billAmt,true);
//Commented by Manoj dtd 03/05/2014writeLog(filePtr,"[billDiscAmt TO BE + UPDATE ]:::"+billDiscAmt,true); //Commented by Manoj dtd 03/05/2014writeLog(filePtr,"[billDiscAmt TO BE + UPDATE ]:::"+billDiscAmt,true);
...@@ -3543,11 +3747,75 @@ conn = getConnection(); ...@@ -3543,11 +3747,75 @@ conn = getConnection();
return objName; return objName;
} }
//Pavan R on 24MAY18 End //Pavan Rane 20FEB20 start [Advance Receipt Customization(remittance form consideration)]
public static BigDecimal rounded(BigDecimal aNumber, int prec) public static BigDecimal rounded(BigDecimal aNumber, int prec)
{ {
return aNumber.setScale(prec, BigDecimal.ROUND_HALF_EVEN); return aNumber.setScale(prec, BigDecimal.ROUND_HALF_EVEN);
} }
private int indexOfReference(ArrayList<ReceiptBean> refList,String RefNo) throws ITMException, Exception
{
int retVal = -1, ctr = 0;
ReceiptBean rcpBean = null;
//System.out.println("indexOfReference.....refList.size()::["+refList.size()+"]");
for (ctr = 0; ctr < refList.size(); ctr++)
{
rcpBean = (ReceiptBean) refList.get(ctr);
//System.out.println("Find ReceiptBean...["+rcpBean.getInvoiceId()+"] RefNo["+RefNo+"]");
if (checkNull(rcpBean.getInvoiceId()).equals(checkNull(RefNo)))
{
retVal = ctr;
break;
}
}
return retVal;
}
private int indexOfReference(ArrayList<ReceiptBean> refList, RemittBean remittBean) throws ITMException, Exception
{
int retVal = -1, ctr = 0;
ReceiptBean rcpBean = null;
//System.out.println("indexOfReference.....refList.size()::["+refList.size()+"]");
for (ctr = 0; ctr < refList.size(); ctr++)
{
rcpBean = (ReceiptBean) refList.get(ctr);
//System.out.println("Find ReceiptBean------[" + rcpBean.getInvoiceId() + "] RemittBean----[" + remittBean.getRefNo()+"]");
if (checkNull(rcpBean.getInvoiceId()).equals(checkNull(remittBean.getRefNo())))
{
retVal = ctr;
break;
}
}
return retVal;
}
private int checkAdvancedDishnor(String RefNo, Connection conn) throws ITMException
{
PreparedStatement pstmt = null;
String sql = "";
ResultSet rs = null;
int recCount = 0;
try
{
sql = "select count(*) from rcpdishnr where receipt_no = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, RefNo);
rs = pstmt.executeQuery();
if (rs.next())
{
recCount = rs.getInt(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
} catch (SQLException se)
{
System.out.println("SQLException :GenerateReceiptPrc :checkAdvancedDishnor(String RefNo, Connection conn).." + se.getMessage());
se.printStackTrace();
throw new ITMException(se);
}
return recCount;
}
//Pavan Rane 20FEB20 end [Advance Receipt Customization(remittance form consideration)]
}//class }//class
...@@ -3792,4 +4060,44 @@ class ReceiptBean ...@@ -3792,4 +4060,44 @@ class ReceiptBean
}; };
} }
//Pavan R on 24MAY18 End //Pavan Rane 20FEB20 start [Advance Receipt Customization(remittance form consideration)]
\ No newline at end of file class RemittBean
{
private String tranIdRcp = "";
private String refNo = "";
private String custCode = "";
private BigDecimal rcpAmount = new BigDecimal(0.0);
private BigDecimal refAmt = new BigDecimal(0.0);
public String getTranIdRcp() {
return tranIdRcp;
}
public void setTranIdRcp(String tranIdRcp) {
this.tranIdRcp = tranIdRcp;
}
public String getRefNo() {
return refNo;
}
public void setRefNo(String refNo) {
this.refNo = refNo;
}
public BigDecimal getRcpAmount() {
return rcpAmount;
}
public void setRcpAmount(BigDecimal rcpAmount) {
this.rcpAmount = rcpAmount;
}
public BigDecimal getRefAmt() {
return refAmt;
}
public void setRefAmt(BigDecimal refAmt) {
this.refAmt = refAmt;
}
/*@Override
public String toString() {
return "\n>>>>>>>>>>>>>>>RemittBean<<<<<<<<<<<<<<<<<<<<<<<<<<\n"
+ "tranIdRcp[" + tranIdRcp + "] refNo [" + refNo + "]\n"
+ "rcpAmount["+ rcpAmount + "] refAmt [" + refAmt + "]\n"
+ ">>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n";
}*/
}
//Pavan Rane 20FEB20 end [Advance Receipt Customization(remittance form consideration)]
\ No newline at end of file
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