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 DocInOut extends AcctServer { 33 static Logger log4jDocInOut = Logger.getLogger(DocInOut.class); 34 35 36 private String SeqNo = "0"; 37 38 39 43 public DocInOut(String AD_Client_ID){ 44 super(AD_Client_ID); 45 } 46 47 public void loadObjectFieldProvider(ConnectionProvider conn, String AD_Client_ID, String Id) throws ServletException{ 48 setObjectFieldProvider(DocInOutData.selectRegistro(conn, AD_Client_ID, Id)); 49 } 50 51 56 public boolean loadDocumentDetails(FieldProvider [] data,ConnectionProvider conn){ 57 C_Currency_ID = NO_CURRENCY; 58 log4jDocInOut.debug("loadDocumentDetails - C_Currency_ID : " + C_Currency_ID); 59 DateDoc = data[0].getField("MovementDate"); 60 C_BPartner_Location_ID = data[0].getField("C_BPartner_Location_ID"); 61 62 63 loadDocumentType(); p_lines = loadLines(conn); 66 log4jDocInOut.debug("Lines=" + p_lines.length); 67 return true; 68 } 70 74 public DocLine[] loadLines(ConnectionProvider conn){ 75 ArrayList<Object > list = new ArrayList<Object >(); 76 DocLineInOutData [] data = null; 77 try{ 78 data = DocLineInOutData.select(conn, Record_ID); 79 }catch(ServletException e){ 80 log4jDocInOut.warn(e); 81 } 82 for(int i=0;data!=null && i<data.length;i++){ 84 String Line_ID = data[i].getField("M_INOUTLINE_ID"); 85 DocLine_Material docLine = new DocLine_Material (DocumentType, Record_ID, Line_ID); 86 docLine.loadAttributes(data[i], this); 87 docLine.setQty (data[i].getField("MOVEMENTQTY"), conn); docLine.m_M_Locator_ID = data[i].getField("M_LOCATOR_ID"); 89 if (docLine.m_M_Product_ID.equals("")) log4jDocInOut.debug(" - No Product - ignored"); 91 else list.add (docLine); 92 } 93 DocLine[] dl = new DocLine[list.size()]; 95 list.toArray(dl); 96 return dl; 97 } 99 103 public BigDecimal getBalance(){ 104 BigDecimal retValue = ZERO; 105 return retValue; 106 } 108 125 public Fact createFact(AcctSchema as,ConnectionProvider conn,Connection con,VariablesSecureApp vars) throws ServletException{ 126 C_Currency_ID = as.getC_Currency_ID(); 127 Fact fact = new Fact(this, as, Fact.POST_Actual); 129 String Fact_Acct_Group_ID = SequenceIdData.getSequence(conn, "Fact_Acct_Group", vars.getClient()); 130 FactLine dr = null; 132 FactLine cr = null; 133 134 if (DocumentType.equals(AcctServer.DOCTYPE_MatShipment)){ 136 for (int i = 0;p_lines != null && i < p_lines.length; i++){ 137 DocLine_Material line = (DocLine_Material)p_lines[i]; 138 String costs = line.getProductCosts(as, conn, con); 139 log4jDocInOut.debug("(MatShipment) - DR account: " + line.getAccount(ProductInfo.ACCTTYPE_P_Cogs, as, conn)); 140 log4jDocInOut.debug("(MatShipment) - DR costs: " + costs); 141 dr = fact.createLine(line,line.getAccount(ProductInfo.ACCTTYPE_P_Cogs, as, conn),as.getC_Currency_ID(), costs, "",Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 143 dr.setM_Locator_ID(line.m_M_Locator_ID); 144 dr.setLocationFromLocator(line.m_M_Locator_ID, true, conn); dr.setLocationFromBPartner(C_BPartner_Location_ID, false, conn); log4jDocInOut.debug("(MatShipment) - CR account: " + getAccount(AcctServer.ACCTTYPE_NotInvoicedReceipts, as, conn)); 147 log4jDocInOut.debug("(MatShipment) - CR costs: " + costs); 148 cr = fact.createLine(line,line.getAccount(ProductInfo.ACCTTYPE_P_Asset, as, conn),as.getC_Currency_ID(), "", costs,Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 150 cr.setM_Locator_ID(line.m_M_Locator_ID); 151 cr.setLocationFromLocator(line.m_M_Locator_ID, true, conn); cr.setLocationFromBPartner(C_BPartner_Location_ID, false, conn); } 154 updateProductInfo(as.getC_AcctSchema_ID(), conn, con); } 156 else if (DocumentType.equals(AcctServer.DOCTYPE_MatReceipt)){ 158 for (int i = 0;p_lines != null && i < p_lines.length; i++){ 159 DocLine_Material line = (DocLine_Material)p_lines[i]; 160 String costs = line.getProductCosts(as, conn, con); 161 log4jDocInOut.debug("(matReceipt) - DR account: " + line.getAccount(ProductInfo.ACCTTYPE_P_Asset, as, conn)); 162 log4jDocInOut.debug("(matReceipt) - DR costs: " + costs); 163 dr = fact.createLine(line,line.getAccount(ProductInfo.ACCTTYPE_P_Asset, as, conn),as.getC_Currency_ID(), costs, "",Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 165 dr.setM_Locator_ID(line.m_M_Locator_ID); 166 dr.setLocationFromBPartner(C_BPartner_Location_ID, true, conn); dr.setLocationFromLocator(line.m_M_Locator_ID, false, conn); log4jDocInOut.debug("(matReceipt) - CR account: " + getAccount(AcctServer.ACCTTYPE_NotInvoicedReceipts, as, conn)); 169 log4jDocInOut.debug("(matReceipt) - CR costs: " + costs); 170 cr = fact.createLine(line,getAccount(AcctServer.ACCTTYPE_NotInvoicedReceipts, as, conn),as.getC_Currency_ID(), "", costs,Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn); 172 cr.setM_Locator_ID(line.m_M_Locator_ID); 173 cr.setLocationFromBPartner(C_BPartner_Location_ID, true, conn); cr.setLocationFromLocator(line.m_M_Locator_ID, false, conn); } 176 }else{ 177 log4jDocInOut.warn("createFact - " + "DocumentType unknown: " + DocumentType); 178 return null; 179 } 180 SeqNo = "0"; 182 return fact; 183 } 185 193 private void updateProductInfo (String C_AcctSchema_ID,ConnectionProvider conn,Connection con){ 194 log4jDocInOut.debug("updateProductInfo - M_InOut_ID=" + Record_ID); 195 196 int no = 0; 197 try{ 198 no = DocInOutData.updateProductCosting(con, conn, Record_ID); 199 }catch(ServletException e){ 200 log4jDocInOut.warn(e); 201 } 202 log4jDocInOut.debug("M_Product_Costing - Updated=" + no); 203 } 205 public String nextSeqNo(String oldSeqNo){ 206 log4jDocInOut.debug("DocInOut - oldSeqNo = " + oldSeqNo); 207 BigDecimal seqNo = new BigDecimal(oldSeqNo); 208 SeqNo = (seqNo.add(new BigDecimal("10"))).toString(); 209 log4jDocInOut.debug("DocInOut - nextSeqNo = " + SeqNo); 210 return SeqNo; 211 } 212 213 217 public boolean getDocumentConfirmation(ConnectionProvider conn, String strRecordId) { 218 return true; 219 } 220 221 public String getServletInfo() { 222 return "Servlet for the accounting"; 223 } } 225 | Popular Tags |