1 17 package org.openbravo.erpCommon.ad_forms; 18 19 import org.openbravo.erpCommon.utility.SequenceIdData; 20 import org.openbravo.base.secureApp.VariablesSecureApp; 21 import java.math.*; 22 import java.util.*; 23 import javax.servlet.*; 24 import org.apache.log4j.Logger ; 25 import org.openbravo.database.ConnectionProvider; 27 import java.sql.Connection ; 28 import org.openbravo.data.FieldProvider; 29 30 31 32 public class DocBank extends AcctServer { 33 static Logger log4jDocBank = Logger.getLogger(DocBank.class); 34 35 private String SeqNo = "0"; 36 37 41 public DocBank(String AD_Client_ID){ 42 super(AD_Client_ID); 43 } 44 45 public void loadObjectFieldProvider(ConnectionProvider conn, String AD_Client_ID, String Id) throws ServletException{ 46 setObjectFieldProvider(DocBankData.selectRegistro(conn, AD_Client_ID, Id)); 47 } 48 49 54 public boolean loadDocumentDetails (FieldProvider [] data,ConnectionProvider conn){ 55 DocumentType = AcctServer.DOCTYPE_BankStatement; 56 DateDoc = data[0].getField("StatementDate"); 57 Amounts[AcctServer.AMTTYPE_Gross] = data[0].getField("StatementDifference"); 59 if (Amounts[AcctServer.AMTTYPE_Gross] == null) 60 Amounts[AcctServer.AMTTYPE_Gross] = ZERO.toString(); 61 62 setBankAccountInfo(conn); 64 loadDocumentType(); String strCount = ""; 66 try{ 67 strCount = DocLineBankData.selectLinesPeriodClosed(conn, Record_ID); 68 } 69 catch (ServletException e){ 70 e.printStackTrace(); 71 return false; 72 } 73 if(!strCount.equals("0"))return false; 74 else { 75 p_lines = loadLines(conn); 77 log4jDocBank.debug("Record_ID = " + Record_ID + " - Lines=" + p_lines.length); 78 } 79 return true; 80 } 82 85 private void setBankAccountInfo(ConnectionProvider conn){ 86 DocBankData [] data =null; 87 log4jDocBank.debug("C_BankAccount_ID : "+ C_BankAccount_ID); 88 try{ 89 data = DocBankData.selectCurrency(conn, C_BankAccount_ID); 90 }catch(ServletException e){ 91 log4jDocBank.warn(e); 92 } 93 if (data != null && data.length > 0){ 94 C_Currency_ID = data[0].cCurrencyId; 95 } 96 } 98 99 108 private DocLine[] loadLines(ConnectionProvider conn){ 109 ArrayList<Object > list = new ArrayList<Object >(); 110 DocLineBankData [] data = null; 111 try{ 112 data = DocLineBankData.select(conn, Record_ID); 113 }catch(ServletException e){ 114 log4jDocBank.warn(e); 115 } 116 for (int i=0;data!=null && i<data.length;i++){ 118 String Line_ID = data[i].getField("C_BANKSTATEMENTLINE_ID"); 119 DocLine_Bank docLine = new DocLine_Bank (DocumentType, Record_ID, Line_ID); 120 docLine.loadAttributes(data[i], this); 121 docLine.m_DateAcct = data[i].getField("DATEACCT"); 122 docLine.m_DateDoc = data[i].getField("VALUTADATE"); 123 docLine.m_C_Payment_ID = data[i].getField("C_DEBT_PAYMENT_ID"); 124 docLine.m_Record_Id2 = data[i].getField("C_DEBT_PAYMENT_ID"); 125 docLine.m_IsReversal = data[i].getField("ISREVERSAL"); 126 docLine.chargeAmt = data[i].getField("CHARGEAMT"); 127 docLine.isManual = data[i].getField("ISMANUAL"); 128 docLine.setAmount(data[i].getField("STMTAMT"), data[i].getField("TRXAMT")); 129 docLine.convertChargeAmt = data[i].getField("CONVERTCHARGEAMT"); 130 list.add(docLine); 131 } 132 133 DocLine[] dl = new DocLine[list.size()]; 135 list.toArray(dl); 136 return dl; 137 } 139 143 public BigDecimal getBalance(){ 144 BigDecimal retValue = ZERO; 145 StringBuffer sb = new StringBuffer (" ["); 146 retValue = retValue.add(new BigDecimal(getAmount(AcctServer.AMTTYPE_Gross))); 148 sb.append(getAmount(AcctServer.AMTTYPE_Gross)); 149 for (int i = 0; i < p_lines.length; i++){ 151 BigDecimal lineBalance = new BigDecimal(((DocLine_Bank)p_lines[i]).m_StmtAmt); 152 retValue = retValue.subtract(lineBalance); 153 sb.append("-").append(lineBalance); 154 } 155 sb.append("]"); 156 log4jDocBank.debug(" Balance=" + retValue + sb.toString()); 158 return retValue; 159 } 161 173 public Fact createFact (AcctSchema as,ConnectionProvider conn,Connection con,VariablesSecureApp vars) throws ServletException{ 174 log4jDocBank.debug("createFact - Inicio"); 175 Fact fact = null; 177 String Fact_Acct_Group_ID = SequenceIdData.getSequence(conn, "Fact_Acct_Group", vars.getClient()); 178 log4jDocBank.debug("createFact - object created"); 179 BigDecimal TrxAmt = null; 181 BigDecimal ChargeAmt = null; 182 BigDecimal ConvertChargeAmt = null; 183 fact = new Fact(this, as, Fact.POST_Actual); 186 for (int i = 0;p_lines != null && i < p_lines.length; i++){ 187 DocLine_Bank line = (DocLine_Bank)p_lines[i]; 188 TrxAmt = new BigDecimal(line.m_TrxAmt); 191 ChargeAmt = new BigDecimal(line.chargeAmt); 192 ConvertChargeAmt = new BigDecimal(line.convertChargeAmt); 193 log4jDocBank.debug("createFact - p_lines.length = " + p_lines.length + " - i="+i); 194 log4jDocBank.debug("createFact - Record_ID = " + Record_ID); 195 log4jDocBank.debug("createFact - C_BPARTNER_ID = " + line.m_C_BPartner_ID); 196 log4jDocBank.debug("createFact - PAYMENT_ID = " + line.m_C_Payment_ID); 198 log4jDocBank.debug("createFact - isManual = " + line.isManual); 199 200 fact.createLine(line,getAccount(AcctServer.ACCTTYPE_BankAsset, as, conn),line.m_C_Currency_ID, line.m_StmtAmt, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 202 fact.createLine(line,getAccount(AcctServer.ACCTTYPE_BankInTransitDefault, as, conn),line.m_C_Currency_ID, TrxAmt.negate().toString(), Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 205 fact.createLine(line,new Account(conn,DocLineBankData.selectChargeAccount(conn, C_BankAccount_ID,as.m_C_AcctSchema_ID)),line.m_C_Currency_ID, ChargeAmt.toString(), "", Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 207 212 if (ConvertChargeAmt.signum() > 0) fact.createLine(line,getAccount(AcctServer.ACCTTYPE_ConvertChargeLossAmt, as, conn),line.m_C_Currency_ID, line.convertChargeAmt,"", Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 215 else 216 fact.createLine(line,getAccount(AcctServer.ACCTTYPE_ConvertChargeGainAmt, as, conn),line.m_C_Currency_ID, "",ConvertChargeAmt.negate().toString(), Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 217 218 log4jDocBank.debug("createTaxCorrection - (NIY)"); 219 } 220 SeqNo = "0"; 221 return fact; 222 } 224 230 260 public String nextSeqNo(String oldSeqNo){ 261 log4jDocBank.debug("DocBank - oldSeqNo = " + oldSeqNo); 262 BigDecimal seqNo = new BigDecimal(oldSeqNo); 263 SeqNo = (seqNo.add(new BigDecimal("10"))).toString(); 264 log4jDocBank.debug("DocBank - nextSeqNo = " + SeqNo); 265 return SeqNo; 266 } 267 268 272 public boolean getDocumentConfirmation(ConnectionProvider conn, String strRecordId) { 273 String strCount = ""; 274 try { 275 strCount = DocLineBankData.selectLinesPeriodClosed(conn, strRecordId); 276 }catch (ServletException e){ 277 e.printStackTrace(); 278 return false; 279 } 280 if(!strCount.equals("0")) return false; 282 else return true; 283 } 284 285 public String getServletInfo() { 286 return "Servlet for the accounting"; 287 } } 289 | Popular Tags |