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 DocCash extends AcctServer { 33 static Logger log4jDocCash = Logger.getLogger(DocCash.class); 34 35 private DocTax[] m_taxes = null; 36 private String SeqNo = "0"; 37 38 42 public DocCash(String AD_Client_ID){ 43 super(AD_Client_ID); 44 } 45 46 public void loadObjectFieldProvider(ConnectionProvider conn, String AD_Client_ID, String Id) throws ServletException{ 47 log4jDocCash.debug("************************** DocCash - loadObjectFieldProvider - ID - " + Id); 48 setObjectFieldProvider(DocCashData.selectRegistro(conn, AD_Client_ID, Id)); 49 } 50 51 56 public boolean loadDocumentDetails (FieldProvider [] data,ConnectionProvider conn){ 57 DocumentType = DOCTYPE_CashJournal; 58 log4jDocCash.debug("data.length = " + data.length + " - DocumentType = " + DocumentType); 59 DateDoc = data[0].getField("StatementDate"); 60 61 Amounts[AcctServer.AMTTYPE_Gross] = data[0].getField("StatementDifference"); 63 if (Amounts[AcctServer.AMTTYPE_Gross] == null) 64 Amounts[AcctServer.AMTTYPE_Gross] = ZERO.toString(); 65 66 setCashBookInfo(); 68 loadDocumentType(); 70 p_lines = loadLines(conn); 72 log4jDocCash.debug("Lines=" + p_lines.length); 73 return true; 74 } 76 77 83 private void setCashBookInfo(){ 84 DocCashData [] data = null; 85 try{ 86 data = DocCashData.select(this, Record_ID); 87 } 88 catch (ServletException e){ 89 log4jDocCash.warn(e); 90 } 91 if (data!=null && data.length!=0){ 92 C_CashBook_ID = data[0].cCashbookId; 93 if (AD_Org_ID==null || AD_Org_ID.equals("")) AD_Org_ID = data[0].adOrgId; 94 C_Currency_ID = data[0].cCurrencyId; 95 } 96 log4jDocCash.debug("setCashBookInfo - C_Currency_ID = " + C_Currency_ID + " - AD_Org_ID = " + AD_Org_ID + " - C_CashBook_ID = " + C_CashBook_ID); 97 } 99 103 private DocLine[] loadLines(ConnectionProvider conn){ 104 ArrayList<Object > list = new ArrayList<Object >(); 105 DocLineCashData[] data = null; 106 try{ 107 data = DocLineCashData.select(this, Record_ID); 108 for (int i=0;data!=null && i<data.length;i++){ 109 String t_Line_ID = data[i].cCashlineId; 110 DocLine_Cash docLine = new DocLine_Cash (DocumentType, Record_ID, t_Line_ID); 111 docLine.Line_ID = t_Line_ID; 112 docLine.loadAttributes(data[i], this); 113 docLine.setCashType(data[i].cashtype); 114 docLine.m_C_Order_Id = data[i].cOrderId; 115 docLine.m_C_Debt_Payment_Id = data[i].cDebtPaymentId; 116 docLine.m_Record_Id2 = data[i].cDebtPaymentId; 117 docLine.m_C_BPartner_ID = DocLineCashData.selectDebtBPartner(this, docLine.m_C_Debt_Payment_Id); 118 docLine.setReference(data[i].cOrderId, data[i].cDebtPaymentId, conn); 119 docLine.setAmount (data[i].amount,data[i].discountamt, data[i].writeoffamt); 120 list.add(docLine); 121 } 122 } 123 catch (ServletException e){ 124 log4jDocCash.warn(e); 125 } 126 DocLine[] dl = new DocLine[list.size()]; 128 list.toArray(dl); 129 return dl; 130 } 132 136 public BigDecimal getBalance(){ 137 BigDecimal retValue = ZERO; 138 StringBuffer sb = new StringBuffer (" ["); 139 retValue = retValue.add(new BigDecimal(getAmount(AcctServer.AMTTYPE_Gross))); 141 sb.append(getAmount(AcctServer.AMTTYPE_Gross)); 142 for (int i = 0; i < p_lines.length; i++){ 144 retValue = retValue.subtract(new BigDecimal(p_lines[i].getAmount())); 145 sb.append("-").append(p_lines[i].getAmount()); 146 } 147 sb.append("]"); 148 log4jDocCash.debug(" Balance=" + retValue + sb.toString()); 150 return ZERO; } 154 180 public Fact createFact (AcctSchema as,ConnectionProvider conn,Connection con,VariablesSecureApp vars) throws ServletException{ 181 if (C_CashBook_ID.equals("")){ 183 log4jDocCash.warn("createFact - C_CashBook_ID not set"); 184 return null; 185 } 186 187 Fact fact = new Fact(this, as, Fact.POST_Actual); 189 String Fact_Acct_Group_ID = SequenceIdData.getSequence(conn, "Fact_Acct_Group", vars.getClient()); 190 BigDecimal assetAmt = ZERO; 193 for (int i = 0;p_lines!=null && i < p_lines.length; i++){ 195 DocLine_Cash line = (DocLine_Cash)p_lines[i]; 196 String CashType = line.m_CashType; 197 BigDecimal amount = new BigDecimal(line.getAmount()); 198 log4jDocCash.debug("antes del creteline, line.getAmount(): " + line.getAmount() + " - CashType: " + CashType); 199 if (CashType.equals(DocLine_Cash.CASHTYPE_EXPENSE)){ 200 log4jDocCash.debug("********** DocCash - factAcct - account - " + getAccount(AcctServer.ACCTTYPE_CashExpense, as, conn).C_ValidCombination_ID); 204 fact.createLine(line, getAccount(AcctServer.ACCTTYPE_CashExpense, as, conn),C_Currency_ID, amount.negate().toString(), "", Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 205 assetAmt = assetAmt.subtract(amount.negate()); 208 }else if (CashType.equals(DocLine_Cash.CASHTYPE_RECEIPT)){ 209 assetAmt = assetAmt.add(amount); 215 log4jDocCash.debug("********** DocCash - factAcct - account - " + getAccount(AcctServer.ACCTTYPE_CashReceipt, as, conn).C_ValidCombination_ID); 216 fact.createLine(line, getAccount(AcctServer.ACCTTYPE_CashReceipt, as, conn),C_Currency_ID, "", amount.toString(), Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 217 }else if (CashType.equals(DocLine_Cash.CASHTYPE_CHARGE)){ 218 log4jDocCash.debug("********** DocCash - factAcct - account - " + line.getChargeAccount(as,new BigDecimal(getAmount()), conn).C_ValidCombination_ID); 222 fact.createLine(line, line.getChargeAccount(as,new BigDecimal(getAmount()), conn),C_Currency_ID, amount.negate().toString(), "", Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 223 assetAmt = assetAmt.subtract(amount.negate()); 226 }else if (CashType.equals(DocLine_Cash.CASHTYPE_DIFFERENCE)){ 227 log4jDocCash.debug("********** DocCash - factAcct - account - " + getAccount(AcctServer.ACCTTYPE_CashDifference, as, conn).C_ValidCombination_ID); 231 fact.createLine(line, getAccount(AcctServer.ACCTTYPE_CashDifference, as, conn),C_Currency_ID, amount.negate().toString(), Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 232 assetAmt = assetAmt.add(amount); 235 }else if (CashType.equals(DocLine_Cash.CASHTYPE_INVOICE)){ 236 log4jDocCash.debug("********** DocCash - factAcct - account - " + getAccount(AcctServer.ACCTTYPE_CashAsset, as, conn).C_ValidCombination_ID); 240 if (line.getC_Currency_ID(conn) == C_Currency_ID) assetAmt = assetAmt.add (amount); 241 else fact.createLine(line,getAccount(AcctServer.ACCTTYPE_CashAsset, as, conn),line.getC_Currency_ID(conn), amount.toString(), Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 242 fact.createLine(line,getAccount(AcctServer.ACCTTYPE_CashTransfer, as, conn),line.getC_Currency_ID(conn), amount.negate().toString(), Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 243 }else if (CashType.equals(DocLine_Cash.CASHTYPE_DEBTPAYMENT) || CashType.equals(DocLine_Cash.CASHTYPE_ORDER)){ 244 if (amount.signum() == 1){ 245 log4jDocCash.debug("********** DocCash - factAcct - amount - " + amount.toString() + " - debit"); 246 log4jDocCash.debug("********** DocCash - factAcct - account - " + getAccount(AcctServer.ACCTTYPE_BankInTransitDefault, as, conn).C_ValidCombination_ID); 247 fact.createLine(line,getAccount(AcctServer.ACCTTYPE_BankInTransitDefault, as, conn),line.getC_Currency_ID(conn), "", amount.toString(), Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 248 fact.createLine(line, getAccount(AcctServer.ACCTTYPE_CashAsset, as, conn),C_Currency_ID, amount.toString(), "", Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 249 }else{ 252 log4jDocCash.debug("********** DocCash - factAcct - amount - " + amount.toString() + " - credit"); 253 fact.createLine(line,getAccount(AcctServer.ACCTTYPE_BankInTransitDefault, as, conn),line.getC_Currency_ID(conn), amount.negate().toString(), "", Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 255 fact.createLine(line, getAccount(AcctServer.ACCTTYPE_CashAsset, as, conn),C_Currency_ID, "", amount.negate().toString(), Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 256 } 258 }else if (CashType.equals(DocLine_Cash.CASHTYPE_TRANSFER)){ 285 String temp = C_BankAccount_ID; 289 C_BankAccount_ID = line.m_C_BankAccount_ID; 290 log4jDocCash.debug("********** DocCash - factAcct - account - " + getAccount(AcctServer.ACCTTYPE_BankInTransit, as, conn).C_ValidCombination_ID); 291 fact.createLine(line,getAccount(AcctServer.ACCTTYPE_BankInTransit, as, conn),line.getC_Currency_ID(conn), amount.negate().toString(), Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 292 C_BankAccount_ID = temp; 293 if (line.getC_Currency_ID(conn) == C_Currency_ID) assetAmt = assetAmt.add (amount); 294 else fact.createLine(line,getAccount(AcctServer.ACCTTYPE_CashAsset, as, conn),line.getC_Currency_ID(conn), amount.toString(), Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType,conn); 295 } 296 } 298 log4jDocCash.debug("********** DocCash - factAcct - account2 - " + getAccount(AcctServer.ACCTTYPE_CashAsset, as, conn).C_ValidCombination_ID); 300 if(!assetAmt.toString().equals("0"))fact.createLine(null, getAccount(AcctServer.ACCTTYPE_CashAsset, as, conn),C_Currency_ID, assetAmt.toString(), Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 301 SeqNo = "0"; 302 return fact; 303 } 305 311 343 public String nextSeqNo(String oldSeqNo){ 344 log4jDocCash.debug("DocCash - oldSeqNo = " + oldSeqNo); 345 BigDecimal seqNo = new BigDecimal(oldSeqNo); 346 SeqNo = (seqNo.add(new BigDecimal("10"))).toString(); 347 log4jDocCash.debug("DocCash - nextSeqNo = " + SeqNo); 348 return SeqNo; 349 } 350 351 355 public boolean getDocumentConfirmation(ConnectionProvider conn, String strRecordId) { 356 return true; 357 } 358 359 public String getServletInfo() { 360 return "Servlet for the accounting"; 361 } } 363 | Popular Tags |