Commit 17ce9806 authored by gahmad's avatar gahmad

changes made for porcp confirmation


git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@91507 ce508802-f39f-4f6c-b175-0d175dae99d5
parent ee80a262
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>fin</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
</natures>
</projectDescription>
package ibase.webitm.ejb.fin; package ibase.webitm.ejb.fin;
import java.sql.*;
import java.text.*;
import ibase.utility.CommonConstants; import ibase.utility.CommonConstants;
import ibase.webitm.ejb.ITMDBAccessEJB; import ibase.webitm.ejb.ITMDBAccessEJB;
import ibase.webitm.utility.TransIDGenerator; import ibase.webitm.utility.TransIDGenerator;
import ibase.webitm.utility.GenericUtility; import ibase.webitm.utility.GenericUtility;
import ibase.webitm.utility.ITMException; import ibase.webitm.utility.ITMException;
import ibase.webitm.utility.*;
import ibase.system.config.*;
import ibase.webitm.ejb.*;
import java.sql.*;
import java.text.*;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import ibase.webitm.utility.*;
import java.util.HashMap; import java.util.HashMap;
import ibase.webitm.ejb.*; import javax.naming.InitialContext;
import org.w3c.dom.*; import org.w3c.dom.*;
import ibase.webitm.ejb.fin.FinCommon; import ibase.webitm.ejb.fin.FinCommon;
...@@ -85,8 +87,13 @@ public class CreatePoRcpVoucher ...@@ -85,8 +87,13 @@ public class CreatePoRcpVoucher
double rcpDiscAmt = 0, rcpAmount = 0, vouchQuantity = 0, vouchAmount = 0, taxMultiplier = 1, totAmount = 0, purcRateStd = 0; double rcpDiscAmt = 0, rcpAmount = 0, vouchQuantity = 0, vouchAmount = 0, taxMultiplier = 1, totAmount = 0, purcRateStd = 0;
String chgDate = null, acctCodeAP = "", ccrtCodeAP = "", msgType = "", taxVar1 = "", taxVar2 = ""; String chgDate = null, acctCodeAP = "", ccrtCodeAP = "", msgType = "", taxVar1 = "", taxVar2 = "";
MasterStatefulLocal masterStatefulLocal = null;
try try
{ {
AppConnectParm appConnect = new AppConnectParm();
Properties p = appConnect.getProperty();
InitialContext ctx = new InitialContext(p);
userId = genericUtility.getValueFromXTRA_PARAMS(xtraParams,"loginCode"); userId = genericUtility.getValueFromXTRA_PARAMS(xtraParams,"loginCode");
sql = "SELECT PROFILE_ID FROM USERS WHERE CODE = ? "; sql = "SELECT PROFILE_ID FROM USERS WHERE CODE = ? ";
...@@ -114,11 +121,12 @@ public class CreatePoRcpVoucher ...@@ -114,11 +121,12 @@ public class CreatePoRcpVoucher
{ {
roundString = "VOUCH-RNDTO"; roundString = "VOUCH-RNDTO";
roundString = finCommon.getFinparams("999999", roundString, conn); roundString = finCommon.getFinparams("999999", roundString, conn);
} System.out.println("roundString.....::"+roundString);
if (!"NULLFOUND".equals(roundString)) if (!"NULLFOUND".equals(roundString))
{ {
roundTo = Integer.parseInt(roundString); roundTo = Integer.parseInt(roundString);
} }
}
// added by deepali 18/03/04 // added by deepali 18/03/04
confFinVar = finCommon.getFinparams("999999", "AUTO_CONF_VOUCH", conn); confFinVar = finCommon.getFinparams("999999", "AUTO_CONF_VOUCH", conn);
if (!"NULLFOUND".equals(confFinVar)) if (!"NULLFOUND".equals(confFinVar))
...@@ -457,8 +465,8 @@ public class CreatePoRcpVoucher ...@@ -457,8 +465,8 @@ public class CreatePoRcpVoucher
rs = pstmt.executeQuery(); rs = pstmt.executeQuery();
if(rs.next()) if(rs.next())
{ {
finEntity = rs.getString("PAY_MODE"); finEntity = rs.getString("FIN_ENTITY");
bankCode = rs.getString("PAY_MODE"); bankCode = rs.getString("BANK_CODE");
} }
rs.close(); rs.close();
rs = null; rs = null;
...@@ -708,9 +716,9 @@ public class CreatePoRcpVoucher ...@@ -708,9 +716,9 @@ public class CreatePoRcpVoucher
// :totAmount, :remarks, :roundOff, :roundTo, 'A', // :totAmount, :remarks, :roundOff, :roundTo, 'A',
// :acctCodeCFAP,:cctrCodeCFAP) ; // :acctCodeCFAP,:cctrCodeCFAP) ;
if (analCode.trim().length() == 0) if ( analCode == null || analCode.trim().length() == 0)
{ {
analCode = null; analCode = "";
} }
//added by prince --18-01-07 //added by prince --18-01-07
if (suppCodePay == null || suppCodePay.trim().length() == 0) if (suppCodePay == null || suppCodePay.trim().length() == 0)
...@@ -725,6 +733,10 @@ public class CreatePoRcpVoucher ...@@ -725,6 +733,10 @@ public class CreatePoRcpVoucher
StringBuffer xmlBuff = new StringBuffer(); StringBuffer xmlBuff = new StringBuffer();
String xmlString = null; String xmlString = null;
String [] authencate = new String[2];
authencate[0] = "";
authencate[1] = "";
xmlBuff.append("<?xml version='1.0' encoding='ISO-8859-1'?>\n"); xmlBuff.append("<?xml version='1.0' encoding='ISO-8859-1'?>\n");
xmlBuff.append("<DocumentRoot>"); xmlBuff.append("<DocumentRoot>");
xmlBuff.append("<description>").append("Datawindow Root").append("</description>"); xmlBuff.append("<description>").append("Datawindow Root").append("</description>");
...@@ -751,12 +763,19 @@ public class CreatePoRcpVoucher ...@@ -751,12 +763,19 @@ public class CreatePoRcpVoucher
today = new java.sql.Timestamp(System.currentTimeMillis()); today = new java.sql.Timestamp(System.currentTimeMillis());
sdf = new java.text.SimpleDateFormat(genericUtility.getApplDateFormat()); sdf = new java.text.SimpleDateFormat(genericUtility.getApplDateFormat());
xmlBuff.append("<tran_date><![CDATA[" + sdf.parse(today.toString()) + "]]></tran_date>");
xmlBuff.append("<tran_date><![CDATA[" + sdf.format(today) + "]]></tran_date>");
xmlBuff.append("<tran_type><![CDATA[" + tranType + "]]></tran_type>"); xmlBuff.append("<tran_type><![CDATA[" + tranType + "]]></tran_type>");
xmlBuff.append("<eff_date><![CDATA[" + sdf.parse(receiptDate.toString()) + "]]></eff_date>"); if ( receiptDate != null )
{
xmlBuff.append("<eff_date><![CDATA[" + sdf.format(receiptDate) + "]]></eff_date>");
}
xmlBuff.append("<supp_code><![CDATA[" + suppCodePay + "]]></supp_code>"); xmlBuff.append("<supp_code><![CDATA[" + suppCodePay + "]]></supp_code>");
xmlBuff.append("<bill_no><![CDATA[" + invoiceNo + "]]></bill_no>"); xmlBuff.append("<bill_no><![CDATA[" + invoiceNo + "]]></bill_no>");
xmlBuff.append("<bill_date><![CDATA[" + sdf.parse(invoiceDate.toString()) + "]]></bill_date>"); if ( invoiceDate != null )
{
xmlBuff.append("<bill_date><![CDATA[" + sdf.format(invoiceDate) + "]]></bill_date>");
}
xmlBuff.append("<purc_order><![CDATA[" + purcOrder + "]]></purc_order>"); xmlBuff.append("<purc_order><![CDATA[" + purcOrder + "]]></purc_order>");
xmlBuff.append("<curr_code><![CDATA[" + currCode + "]]></curr_code>"); xmlBuff.append("<curr_code><![CDATA[" + currCode + "]]></curr_code>");
xmlBuff.append("<exch_rate><![CDATA[" + exchRate + "]]></exch_rate>"); xmlBuff.append("<exch_rate><![CDATA[" + exchRate + "]]></exch_rate>");
...@@ -766,10 +785,16 @@ public class CreatePoRcpVoucher ...@@ -766,10 +785,16 @@ public class CreatePoRcpVoucher
xmlBuff.append("<auto_pay><![CDATA[" + "Y" + "]]></auto_pay>"); xmlBuff.append("<auto_pay><![CDATA[" + "Y" + "]]></auto_pay>");
xmlBuff.append("<adv_amt><![CDATA[0]]></adv_amt>"); xmlBuff.append("<adv_amt><![CDATA[0]]></adv_amt>");
xmlBuff.append("<cr_term><![CDATA[" + crTerm + "]]></cr_term>"); xmlBuff.append("<cr_term><![CDATA[" + crTerm + "]]></cr_term>");
xmlBuff.append("<due_date><![CDATA[" + sdf.parse(dueDate.toString()) + "]]></due_date>"); if ( dueDate != null )
{
xmlBuff.append("<due_date><![CDATA[" + sdf.format(dueDate) + "]]></due_date>");
}
xmlBuff.append("<site_code><![CDATA[" + siteCode + "]]></site_code>"); xmlBuff.append("<site_code><![CDATA[" + siteCode + "]]></site_code>");
xmlBuff.append("<fin_entity><![CDATA[" + finEntity + "]]></fin_entity>"); xmlBuff.append("<fin_entity><![CDATA[" + finEntity + "]]></fin_entity>");
xmlBuff.append("<tax_date><![CDATA[" + sdf.parse(taxDate.toString()) + "]]></tax_date>"); if ( taxDate != null )
{
xmlBuff.append("<tax_date><![CDATA[" + sdf.format(taxDate) + "]]></tax_date>");
}
xmlBuff.append("<vouch_type><![CDATA[P]]></vouch_type>"); xmlBuff.append("<vouch_type><![CDATA[P]]></vouch_type>");
xmlBuff.append("<anal_code><![CDATA[" + analCode + "]]></anal_code>"); xmlBuff.append("<anal_code><![CDATA[" + analCode + "]]></anal_code>");
xmlBuff.append("<proj_code><![CDATA[" + projCode + "]]></proj_code>"); xmlBuff.append("<proj_code><![CDATA[" + projCode + "]]></proj_code>");
...@@ -794,7 +819,7 @@ public class CreatePoRcpVoucher ...@@ -794,7 +819,7 @@ public class CreatePoRcpVoucher
xmlBuff.append("<chg_user><![CDATA[" + userId + "]]></chg_user>"); xmlBuff.append("<chg_user><![CDATA[" + userId + "]]></chg_user>");
xmlBuff.append("<chg_term><![CDATA[" + termId + "]]></chg_term>"); xmlBuff.append("<chg_term><![CDATA[" + termId + "]]></chg_term>");
sdf = new java.text.SimpleDateFormat(genericUtility.getApplDateTimeFormat()); sdf = new java.text.SimpleDateFormat(genericUtility.getApplDateTimeFormat());
xmlBuff.append("<chg_date><![CDATA[" + sdf.parse(today.toString()) + "]]></chg_date>"); xmlBuff.append("<chg_date><![CDATA[" + sdf.format(today) + "]]></chg_date>");
xmlBuff.append("</Detail1>"); xmlBuff.append("</Detail1>");
...@@ -823,15 +848,15 @@ public class CreatePoRcpVoucher ...@@ -823,15 +848,15 @@ public class CreatePoRcpVoucher
rcpNetAmount = rs.getDouble("NET_AMT"); rcpNetAmount = rs.getDouble("NET_AMT");
rcpQtyStd = rs.getDouble("QUANTITY__STDUOM"); rcpQtyStd = rs.getDouble("QUANTITY__STDUOM");
rcpRateStd = rs.getDouble("RATE__STDUOM"); rcpRateStd = rs.getDouble("RATE__STDUOM");
acctCodeDR = rs.getString(""); acctCodeDR = rs.getString("ACCT_CODE__DR");
cctrCodeDR = rs.getString(""); cctrCodeDR = rs.getString("CCTR_CODE__DR");
deptCode = rs.getString(""); deptCode = rs.getString("DEPT_CODE");
acctCodeCR = rs.getString(""); acctCodeCR = rs.getString("ACCT_CODE__CR");
cctrCodeCR = rs.getString(""); cctrCodeCR = rs.getString("CCTR_CODE__CR");
acctCodeProvDR = rs.getString(""); acctCodeProvDR = rs.getString("ACCT_CODE__PROV_DR");
cctrCodeProvDR = rs.getString(""); cctrCodeProvDR = rs.getString("CCTR_CODE__PROV_DR");
acctCodeProvCR = rs.getString(""); acctCodeProvCR = rs.getString("ACCT_CODE__PROV_CR");
cctrCodeProvCR = rs.getString(""); cctrCodeProvCR = rs.getString("CCTR_CODE__PROV_CR");
// amit - 27/08/02 // amit - 27/08/02
rateDiscount = getPurcRate(purcOrderDet, rcpItemCode,purcRate,purcDisc, conn); rateDiscount = getPurcRate(purcOrderDet, rcpItemCode,purcRate,purcDisc, conn);
...@@ -1169,7 +1194,7 @@ public class CreatePoRcpVoucher ...@@ -1169,7 +1194,7 @@ public class CreatePoRcpVoucher
xmlBuff.append("<net_amt><![CDATA[" + rcpNetAmount + "]]></net_amt>"); xmlBuff.append("<net_amt><![CDATA[" + rcpNetAmount + "]]></net_amt>");
xmlBuff.append("<post_diff><![CDATA[I]]></post_diff>"); xmlBuff.append("<post_diff><![CDATA[I]]></post_diff>");
sdf = new java.text.SimpleDateFormat(genericUtility.getDBDateTimeFormat()); sdf = new java.text.SimpleDateFormat(genericUtility.getDBDateTimeFormat());
xmlBuff.append("<chg_date><![CDATA[" + sdf.parse(today.toString()) + "]]></chg_date>"); xmlBuff.append("<chg_date><![CDATA[" + sdf.format(today) + "]]></chg_date>");
xmlBuff.append("<chg_user><![CDATA[" + userId + "]]></chg_user>"); xmlBuff.append("<chg_user><![CDATA[" + userId + "]]></chg_user>");
xmlBuff.append("<chg_term><![CDATA[" + termId + "]]></chg_term>"); xmlBuff.append("<chg_term><![CDATA[" + termId + "]]></chg_term>");
xmlBuff.append("<item_ser><![CDATA[" + itemSer + "]]></item_ser>"); xmlBuff.append("<item_ser><![CDATA[" + itemSer + "]]></item_ser>");
...@@ -1499,12 +1524,6 @@ public class CreatePoRcpVoucher ...@@ -1499,12 +1524,6 @@ public class CreatePoRcpVoucher
//xmlBuff.append("<proj_code><![CDATA[" + projCode + "]]></proj_code>"); //xmlBuff.append("<proj_code><![CDATA[" + projCode + "]]></proj_code>");
xmlBuff.append("</Detail3>"); xmlBuff.append("</Detail3>");
taxMultiplier = -1;
sql = "update porcp set vouch_created = 'Y' where tran_id = ? "; //:;
pstmtUpd = conn.prepareStatement(sql);
pstmtUpd.setString(1, returnId);
pstmtUpd.executeUpdate();
} // return details } // return details
rs.close(); rs.close();
rs = null; rs = null;
...@@ -1515,6 +1534,21 @@ public class CreatePoRcpVoucher ...@@ -1515,6 +1534,21 @@ public class CreatePoRcpVoucher
{ {
return errString; return errString;
} }
masterStatefulLocal = (MasterStatefulLocal)ctx.lookup("ibase/MasterStatefulEJB/local");
String retString = masterStatefulLocal.processRequest( authencate, siteCode, true, xmlBuff.toString());
System.out.println("retString.:: "+retString);
String tranIdVoucher = retString.substring( retString.indexOf("<TranID>")+8, retString.indexOf("</TranID>"));
System.out.println("tranIdVoucher is :"+tranIdVoucher);
if( retString.indexOf("Success") != -1 )
{
taxMultiplier = -1;
sql = "update porcp set vouch_created = 'Y' where tran_id = ? ";
pstmtUpd = conn.prepareStatement(sql);
pstmtUpd.setString(1, returnId);
pstmtUpd.executeUpdate();
}
/* // /* //
// 3 Added by Vilas // 3 Added by Vilas
lds_vouchdet.reset() lds_vouchdet.reset()
......
...@@ -1372,12 +1372,14 @@ public class FinCommon ...@@ -1372,12 +1372,14 @@ public class FinCommon
public String getFinparams(String prdCode,String varName,Connection conn)throws ITMException public String getFinparams(String prdCode,String varName,Connection conn)throws ITMException
{ {
String retVal=""; String varValue="";
String sql=""; String sql="";
ResultSet rs = null; ResultSet rs = null;
Statement stmt = null; //Statement stmt = null;//Gulzar - 13/10/11
PreparedStatement pstmt = null;
try try
{ {
/*-- changes made by gulzar - 13/10/11 as it is not working
System.out.println("In FINPARAMS......"); System.out.println("In FINPARAMS......");
stmt = conn.createStatement(); stmt = conn.createStatement();
sql="SELECT VAR_VALUE FROM FINPARM WHERE PRD_CODE ='"+prdCode.trim()+"' AND VAR_NAME ='"+varName.trim()+"'"; sql="SELECT VAR_VALUE FROM FINPARM WHERE PRD_CODE ='"+prdCode.trim()+"' AND VAR_NAME ='"+varName.trim()+"'";
...@@ -1392,6 +1394,20 @@ public class FinCommon ...@@ -1392,6 +1394,20 @@ public class FinCommon
} }
stmt.close(); stmt = null; stmt.close(); stmt = null;
rs.close(); rs = null; rs.close(); rs = null;
*/
sql = "SELECT VAR_VALUE FROM FINPARM WHERE PRD_CODE = ? AND VAR_NAME = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, prdCode);
pstmt.setString(2, varName);
rs = pstmt.executeQuery();
if ( rs.next() )
{
varValue = rs.getString("VAR_VALUE");
}
if ( varValue == null || varValue.trim().length() == 0 )
{
varValue = "NULLFOUND";
}
} }
catch(Exception e) catch(Exception e)
{ {
...@@ -1403,6 +1419,7 @@ public class FinCommon ...@@ -1403,6 +1419,7 @@ public class FinCommon
{ {
try try
{ {
/*
if (stmt != null) if (stmt != null)
{ {
stmt.close(); stmt = null; stmt.close(); stmt = null;
...@@ -1411,13 +1428,24 @@ public class FinCommon ...@@ -1411,13 +1428,24 @@ public class FinCommon
{ {
rs.close(); rs = null; rs.close(); rs = null;
} }
*/
if ( rs != null )
{
rs.close();
rs = null;
}
if ( pstmt != null )
{
pstmt.close();
pstmt = null;
}
} }
catch (Exception e) catch (Exception e)
{ {
System.out.println("Exception []" + e.getMessage() + ":"); System.out.println("Exception []" + e.getMessage() + ":");
} }
} }
return(retVal); return(varValue);
}//getFinparams() }//getFinparams()
public double getDailyExchRateSellBuy(String as_curr_code,String as_curr_code__to,String as_login_site,String as_tran_date,String as_type,Connection conn)throws ITMException public double getDailyExchRateSellBuy(String as_curr_code,String as_curr_code__to,String as_login_site,String as_tran_date,String as_type,Connection conn)throws ITMException
......
...@@ -123,7 +123,7 @@ public class InvAcct ...@@ -123,7 +123,7 @@ public class InvAcct
rs = pstmt.executeQuery(); rs = pstmt.executeQuery();
if(rs.next()) if(rs.next())
{ {
currCodeBase = rs.getString("PORD_TYPE"); currCodeBase = rs.getString("CURR_CODE");
} }
rs.close(); rs.close();
rs = null; rs = null;
...@@ -131,6 +131,7 @@ public class InvAcct ...@@ -131,6 +131,7 @@ public class InvAcct
pstmt = null; pstmt = null;
invOnline = finCommon.getFinparams("999999", "INV_ACCT_PORCP", conn); invOnline = finCommon.getFinparams("999999", "INV_ACCT_PORCP", conn);
System.out.println("invOnline = ["+invOnline+"]");
if ("NULLFOUND".equals(invOnline)) if ("NULLFOUND".equals(invOnline))
{ {
errCode = "VTFINPARM"; errCode = "VTFINPARM";
...@@ -138,7 +139,7 @@ public class InvAcct ...@@ -138,7 +139,7 @@ public class InvAcct
return errString; return errString;
} }
if (!"Y".equals(invOnline) || !"N".equals(invOnline) || !"S".equals(invOnline) ) if (!"Y".equals(invOnline) && !"N".equals(invOnline) && !"S".equals(invOnline) )
{ {
errCode = "VTFINPARM"; errCode = "VTFINPARM";
errString = itmDBAccessEJB.getErrorString("",errCode,"","",conn); errString = itmDBAccessEJB.getErrorString("",errCode,"","",conn);
...@@ -146,6 +147,7 @@ public class InvAcct ...@@ -146,6 +147,7 @@ public class InvAcct
} }
vouchOnLine = finCommon.getFinparams("999999", "VOUCHER_CREATION", conn); vouchOnLine = finCommon.getFinparams("999999", "VOUCHER_CREATION", conn);
System.out.println("vouchOnLine = ["+vouchOnLine+"]");
if ("NULLFOUND".equals(vouchOnLine)) if ("NULLFOUND".equals(vouchOnLine))
{ {
errCode = "VTFINPARM"; errCode = "VTFINPARM";
...@@ -529,8 +531,8 @@ public class InvAcct ...@@ -529,8 +531,8 @@ public class InvAcct
pstmt1 = conn.prepareStatement(sql); pstmt1 = conn.prepareStatement(sql);
pstmt1.setString(1,tranSer); pstmt1.setString(1,tranSer);
pstmt1.setString(1,tranId); pstmt1.setString(2,tranId);
pstmt1.setString(1,lineNo); pstmt1.setString(3,lineNo);
rs1 = pstmt1.executeQuery(); rs1 = pstmt1.executeQuery();
while (rs1.next()) while (rs1.next())
{ {
...@@ -613,8 +615,8 @@ public class InvAcct ...@@ -613,8 +615,8 @@ public class InvAcct
+ " AND A.TRAN_CODE = ? " + " AND A.TRAN_CODE = ? "
+ " AND A.TRAN_ID = ? " + " AND A.TRAN_ID = ? "
+ " AND A.LINE_NO = ? " + " AND A.LINE_NO = ? "
+ " A.TAX_AMT <> 0 " + " AND A.TAX_AMT <> 0 "
+ " B.NON_PAYABLE = 'Y' " + " AND B.NON_PAYABLE = 'Y' "
+ " GROUP BY A.ACCT_CODE, A.CCTR_CODE" ; + " GROUP BY A.ACCT_CODE, A.CCTR_CODE" ;
pstmt1 = conn.prepareStatement(sql); pstmt1 = conn.prepareStatement(sql);
...@@ -1053,8 +1055,12 @@ public class InvAcct ...@@ -1053,8 +1055,12 @@ public class InvAcct
} }
poRcpMapEntry = null; poRcpMapEntry = null;
System.out.println("poRcpMap = "+poRcpMap);//Gulzar
if ( poRcpMap != null )
{
poRcpSet = poRcpMap.entrySet(); poRcpSet = poRcpMap.entrySet();
itrPoRcp = poRcpSet.iterator(); itrPoRcp = poRcpSet.iterator();
}
while(itrPoRcp.hasNext()) while(itrPoRcp.hasNext())
{ {
poRcpMapEntry = (Map.Entry)itrPoRcp.next(); poRcpMapEntry = (Map.Entry)itrPoRcp.next();
...@@ -1131,6 +1137,7 @@ public class InvAcct ...@@ -1131,6 +1137,7 @@ public class InvAcct
// Debit the Inventory & Credit PO Receipt // Debit the Inventory & Credit PO Receipt
// amit-26-04-02 // amit-26-04-02
if (qcReqd == false && "Y".equals(vouchOnLine)) if (qcReqd == false && "Y".equals(vouchOnLine))
{ {
errString = "CREATE-VOUCHER"; errString = "CREATE-VOUCHER";
......
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