private void processButton(VariablesSecureApp vars, String strClient) throws ServletException { String pinstance = SequenceIdData.getUUID(); OBError myMessage = null; try { if (strClient.equals("")) { myMessage = new OBError(); myMessage.setType("Error"); myMessage.setTitle( Utility.parseTranslation( this, vars, vars.getLanguage(), "@DeleteClient_NoClientSelected@")); myMessage.setMessage( Utility.parseTranslation( this, vars, vars.getLanguage(), "@DeleteClient_SelectClient@")); } else { Client client = OBDal.getInstance().get(Client.class, strClient); SystemService.getInstance().deleteClient(client); } } catch (Exception e) { myMessage = Utility.translateError(this, vars, vars.getLanguage(), e.getMessage()); e.printStackTrace(); log4j.warn("Error"); } if (myMessage == null) { myMessage = new OBError(); myMessage.setType("Success"); myMessage.setTitle(""); myMessage.setMessage(Utility.messageBD(this, "Success", vars.getLanguage())); } vars.setMessage("DeleteClient", myMessage); }
/** * Execute this process. * * @param conn the database connection * @throws ServletException */ public String execute(ConnectionProvider conn) throws ServletException { Process process = null; try { process = bundle.getProcessClass().newInstance(); } catch (final Exception e) { log.error(e.getMessage(), e); throw new ServletException(e.getMessage(), e); } final String requestId = SequenceIdData.getUUID(); String status = SCHEDULED; final ProcessContext ctx = bundle.getContext(); ProcessRequestData.insert( conn, ctx.getOrganization(), ctx.getClient(), ctx.getUser(), ctx.getUser(), requestId, bundle.getProcessId(), ctx.getUser(), status, "Direct", ctx.toString(), "", null, null, null, null); final String executionId = SequenceIdData.getUUID(); final long startTime = System.currentTimeMillis(); long endTime = startTime; status = PROCESSING; ProcessRunData.insert( conn, ctx.getOrganization(), ctx.getClient(), ctx.getUser(), ctx.getUser(), executionId, status, null, bundle.getLog(), requestId); try { log.debug("Calling execute on process " + requestId); process.execute(bundle); endTime = System.currentTimeMillis(); status = SUCCESS; } catch (final Exception e) { endTime = System.currentTimeMillis(); status = ERROR; log.error("Process " + requestId + " threw an Exception: " + e.getMessage(), e); throw new ServletException(e); } finally { final String duration = ProcessMonitor.getDuration(endTime - startTime); ProcessRequestData.update(conn, COMPLETE, requestId); ProcessRunData.update(conn, ctx.getUser(), status, duration, bundle.getLog(), executionId); } return executionId; }
private OBError processButton( VariablesSecureApp vars, String strKey, String strProjectType, String strDateFrom, String windowId) { Connection conn = null; OBError myMessage = new OBError(); if (strProjectType == null || strProjectType.equals("")) { try { releaseRollbackConnection(conn); } catch (Exception ignored) { } log4j.warn("Rollback in transaction"); myMessage.setType("Error"); myMessage.setTitle(Utility.messageBD(this, "Error", vars.getLanguage())); myMessage.setMessage(Utility.messageBD(this, "NoProjectTypeSelected", vars.getLanguage())); } else { try { conn = this.getTransactionConnection(); ProjectSetTypeData[] data = ProjectSetTypeData.select(this, strProjectType); ProjectSetTypeData[] dataProject = ProjectSetTypeData.selectProject(this, strKey); String strProjectPhase = ""; String strProjectTask = ""; // Variables used for Project Scheduling purposes DateFormat DateFormatter = Utility.getDateFormatter(vars); int firstProjectPhase = 0; String strPhaseStartDate = ""; String strPhaseContractDate = ""; String strTaskStartDate = ""; String strTaskContractDate = ""; String strLastContractDate = ""; for (int i = 0; data != null && i < data.length; i++) { strProjectPhase = SequenceIdData.getUUID(); // Calculates the Starting Date of the Phase if (firstProjectPhase == 0) { strPhaseStartDate = strDateFrom; } else { strPhaseStartDate = calculateStartDate(strLastContractDate, DateFormatter); } // Calculates the Contract Date of the Phase strPhaseContractDate = calculateContractDate(strPhaseStartDate, data[i].stdduration, DateFormatter); try { if (ProjectSetTypeData.insertProjectPhase( conn, this, strKey, dataProject[0].adClientId, dataProject[0].adOrgId, vars.getUser(), data[i].description, data[i].mProductId, data[i].cPhaseId, strProjectPhase, data[i].help, data[i].name, data[i].standardqty, strPhaseStartDate, strPhaseContractDate, data[i].seqno) == 1) { strLastContractDate = strPhaseContractDate; ProjectSetTypeData[] data1 = ProjectSetTypeData.selectTask(this, data[i].cPhaseId); int firstProjectTask = 0; for (int j = 0; data1 != null && j < data1.length; j++) { strProjectTask = SequenceIdData.getUUID(); // Calculates the Starting Date of the Task if (firstProjectTask == 0) { strTaskStartDate = strPhaseStartDate; } else { strTaskStartDate = calculateStartDate(strLastContractDate, DateFormatter); } // Calculates the Contract Date of the Task strTaskContractDate = calculateContractDate(strTaskStartDate, data1[j].stdduration, DateFormatter); try { ProjectSetTypeData.insertProjectTask( conn, this, strProjectTask, data1[j].cTaskId, dataProject[0].adClientId, dataProject[0].adOrgId, vars.getUser(), data1[j].seqno, data1[j].name, data1[j].description, data1[j].help, data1[j].mProductId, strProjectPhase, data1[j].standardqty, strTaskStartDate, strTaskContractDate); } catch (ServletException ex) { myMessage = Utility.translateError(this, vars, vars.getLanguage(), ex.getMessage()); releaseRollbackConnection(conn); return myMessage; } strLastContractDate = strTaskContractDate; firstProjectTask++; } firstProjectPhase++; } } catch (ServletException ex) { myMessage = Utility.translateError(this, vars, vars.getLanguage(), ex.getMessage()); releaseRollbackConnection(conn); return myMessage; } } // Updates project's Type and category String strProjectCategory = ProjectSetTypeData.selectProjectCategory(this, strProjectType); try { ProjectSetTypeData.update( conn, this, vars.getUser(), strProjectType, strProjectCategory, strKey); } catch (ServletException ex) { myMessage = Utility.translateError(this, vars, vars.getLanguage(), ex.getMessage()); releaseRollbackConnection(conn); return myMessage; } // Updates project's Starting and Contract Dates ProjectSetTypeData[] dataDates = ProjectSetTypeData.selectDates(this, strKey); String strStartDate = strDateFrom.equals("") ? dataDates[0].startdate : strDateFrom; String strContractDate = strLastContractDate.equals("") ? dataDates[0].datecontract : strLastContractDate; try { ProjectSetTypeData.updateDates( conn, this, vars.getUser(), strStartDate, strContractDate, strKey); } catch (ServletException ex) { myMessage = Utility.translateError(this, vars, vars.getLanguage(), ex.getMessage()); releaseRollbackConnection(conn); return myMessage; } releaseCommitConnection(conn); myMessage.setType("Success"); myMessage.setTitle(Utility.messageBD(this, "Success", vars.getLanguage())); } catch (Exception e) { try { releaseRollbackConnection(conn); } catch (Exception ignored) { } e.printStackTrace(); log4j.warn("Rollback in transaction"); myMessage = Utility.translateError(this, vars, vars.getLanguage(), e.getMessage()); } } return myMessage; }
/** * Create Facts (the accounting logic) for MMS, MMR. * * <pre> * Shipment * CoGS DR * Inventory CR * Shipment of Project Issue * CoGS DR * Project CR * Receipt * Inventory DR * NotInvoicedReceipt CR * </pre> * * @param as accounting schema * @return Fact */ public Fact createFact( AcctSchema as, ConnectionProvider conn, Connection con, VariablesSecureApp vars) throws ServletException { // Select specific definition String strClassname = AcctServerData.selectTemplateDoc(conn, as.m_C_AcctSchema_ID, DocumentType); if (StringUtils.isEmpty(strClassname)) { strClassname = AcctServerData.selectTemplate(conn, as.m_C_AcctSchema_ID, AD_Table_ID); } else { try { DocCostAdjustmentTemplate newTemplate = (DocCostAdjustmentTemplate) Class.forName(strClassname).newInstance(); return newTemplate.createFact(this, as, conn, con, vars); } catch (Exception e) { log4j.error("Error while creating new instance for DocCostAdjustmentTemplate - ", e); } } C_Currency_ID = as.getC_Currency_ID(); // create Fact Header Fact fact = new Fact(this, as, Fact.POST_Actual); String Fact_Acct_Group_ID = SequenceIdData.getUUID(); String amtDebit = "0"; String amtCredit = "0"; // Lines for (int i = 0; p_lines != null && i < p_lines.length; i++) { DocLine_CostAdjustment line = (DocLine_CostAdjustment) p_lines[i]; String transactionType = line.getTransactionType(); BigDecimal amount = new BigDecimal(line.getAmount()); ProductInfo p = new ProductInfo(line.m_M_Product_ID, conn); log4jDocCostAdjustment.debug( "antes del creteline, line.getAmount(): " + line.getAmount() + " - TransactionType: " + transactionType); if (transactionType.equals(DocLine_CostAdjustment.TRXTYPE_SHIPMENT)) { // Cogs DR // Inventory Asset CR log4jDocCostAdjustment.debug( "********** DocCostAdjustment - factAcct - account - " + p.getAccount(ProductInfo.ACCTTYPE_P_Cogs, as, conn).C_ValidCombination_ID); if (line.isTransactionNegative()) { amtDebit = ""; amtCredit = amount.toPlainString(); } else { amtDebit = amount.toPlainString(); amtCredit = ""; } fact.createLine( line, p.getAccount(ProductInfo.ACCTTYPE_P_Cogs, as, conn), line.m_C_Currency_ID, amtDebit, amtCredit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); fact.createLine( line, p.getAccount(ProductInfo.ACCTTYPE_P_Asset, as, conn), line.m_C_Currency_ID, amtCredit, amtDebit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); } else if (transactionType.equals(DocLine_CostAdjustment.TRXTYPE_RECEIPT)) { Account acct = null; // Inventory Asset DR if (line.getIsSource() && ("PDC").equals(line.getSourceProcess())) { // Price Diff // Correction // Invoice Price Variance CR acct = p.getAccount(ProductInfo.ACCTTYPE_P_IPV, as, conn); } else if (line.getIsSource() && ("LC").equals(line.getSourceProcess())) { throw new IllegalStateException(OBMessageUtils.messageBD("LCNotAccounting")); } else { // Product Exp CR acct = getAccountByWarehouse( AcctServer.ACCTTYPE_InvDifferences, as, line.getWarehouseId(), conn); } log4jDocCostAdjustment.debug( "********** DocCostAdjustment - factAcct - account - " + p.getAccount(ProductInfo.ACCTTYPE_P_Expense, as, conn).C_ValidCombination_ID); if (line.isTransactionNegative()) { amtDebit = amount.toPlainString(); amtCredit = ""; } else { amtDebit = ""; amtCredit = amount.toPlainString(); } fact.createLine( line, acct, line.m_C_Currency_ID, amtDebit, amtCredit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); fact.createLine( line, p.getAccount(ProductInfo.ACCTTYPE_P_Asset, as, conn), line.m_C_Currency_ID, amtCredit, amtDebit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); } else if (transactionType.equals(DocLine_CostAdjustment.TRXTYPE_INVENTORY)) { // Inventory Asset DR // Inventory Adjustment CR log4jDocCostAdjustment.debug( "********** DocCostAdjustment - factAcct - account - " + getAccountByWarehouse( AcctServer.ACCTTYPE_InvDifferences, as, line.getWarehouseId(), conn) .C_ValidCombination_ID); if (line.isTransactionNegative()) { amtDebit = amount.toPlainString(); amtCredit = ""; } else { amtDebit = ""; amtCredit = amount.toPlainString(); } fact.createLine( line, getAccountByWarehouse( AcctServer.ACCTTYPE_InvDifferences, as, line.getWarehouseId(), conn), line.m_C_Currency_ID, amtDebit, amtCredit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); fact.createLine( line, p.getAccount(ProductInfo.ACCTTYPE_P_Asset, as, conn), line.m_C_Currency_ID, amtCredit, amtDebit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); } else if (transactionType.equals(DocLine_CostAdjustment.TRXTYPE_INTERNALMOVEMENTFROM)) { // Inventory Asset DR // Inventory Adjustment CR M_Warehouse_ID = line.getWarehouseId(); log4jDocCostAdjustment.debug( "********** DocCostAdjustment - factAcct - account - " + getAccountByWarehouse( AcctServer.ACCTTYPE_InvDifferences, as, line.getWarehouseId(), conn) .C_ValidCombination_ID); if (line.isTransactionNegative()) { amtDebit = amount.negate().toPlainString(); amtCredit = ""; } else { amtDebit = ""; amtCredit = amount.negate().toPlainString(); } fact.createLine( line, p.getAccount(ProductInfo.ACCTTYPE_P_Asset, as, conn), line.m_C_Currency_ID, amtDebit, amtCredit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); fact.createLine( line, getAccountByWarehouse( AcctServer.ACCTTYPE_InvDifferences, as, line.getWarehouseId(), conn), line.m_C_Currency_ID, amtCredit, amtDebit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); } else if (transactionType.equals(DocLine_CostAdjustment.TRXTYPE_INTERNALMOVEMENTTO)) { // Inventory Asset DR // Inventory Adjustment CR M_Warehouse_ID = line.getWarehouseId(); log4jDocCostAdjustment.debug( "********** DocCostAdjustment - factAcct - account - " + getAccountByWarehouse( AcctServer.ACCTTYPE_InvDifferences, as, line.getWarehouseId(), conn) .C_ValidCombination_ID); if (line.isTransactionNegative()) { amtDebit = amount.toPlainString(); amtCredit = ""; } else { amtDebit = ""; amtCredit = amount.toPlainString(); } fact.createLine( line, getAccountByWarehouse( AcctServer.ACCTTYPE_InvDifferences, as, line.getWarehouseId(), conn), line.m_C_Currency_ID, amtDebit, amtCredit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); fact.createLine( line, p.getAccount(ProductInfo.ACCTTYPE_P_Asset, as, conn), line.m_C_Currency_ID, amtCredit, amtDebit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); } else if (transactionType.equals(DocLine_CostAdjustment.TRXTYPE_INTERNALCONSUMPTION)) { // Inventory Asset DR // Inventory Adjustment CR M_Warehouse_ID = line.getWarehouseId(); log4jDocCostAdjustment.debug( "********** DocCostAdjustment - factAcct - account - " + getAccountByWarehouse( AcctServer.ACCTTYPE_InvDifferences, as, line.getWarehouseId(), conn) .C_ValidCombination_ID); if (line.isTransactionNegative()) { amtDebit = amount.toPlainString(); amtCredit = ""; } else { amtDebit = ""; amtCredit = amount.toPlainString(); } fact.createLine( line, p.getAccount(ProductInfo.ACCTTYPE_P_Asset, as, conn), line.m_C_Currency_ID, amtDebit, amtCredit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); fact.createLine( line, getAccountByWarehouse( AcctServer.ACCTTYPE_InvDifferences, as, line.getWarehouseId(), conn), line.m_C_Currency_ID, amtCredit, amtDebit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); } else if (transactionType.equals(DocLine_CostAdjustment.TRXTYPE_BOM)) { // Inventory Asset DR // Inventory Adjustment CR M_Warehouse_ID = line.getWarehouseId(); log4jDocCostAdjustment.debug( "********** DocCostAdjustment - factAcct - account - " + getAccountByWarehouse( AcctServer.ACCTTYPE_InvDifferences, as, line.getWarehouseId(), conn) .C_ValidCombination_ID); if (line.isTransactionNegative()) { amtDebit = amount.toPlainString(); amtCredit = ""; } else { amtDebit = ""; amtCredit = amount.toPlainString(); } fact.createLine( line, getAccountByWarehouse( AcctServer.ACCTTYPE_InvDifferences, as, line.getWarehouseId(), conn), line.m_C_Currency_ID, amtDebit, amtCredit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); fact.createLine( line, p.getAccount(ProductInfo.ACCTTYPE_P_Asset, as, conn), line.m_C_Currency_ID, amtCredit, amtDebit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); } else if (transactionType.equals(DocLine_CostAdjustment.TRXTYPE_MANUFACTURING)) { // Inventory Asset DR // Inventory Adjustment CR M_Warehouse_ID = line.getWarehouseId(); log4jDocCostAdjustment.debug( "********** DocCostAdjustment - factAcct - account - " + getAccountByWarehouse( AcctServer.ACCTTYPE_InvDifferences, as, line.getWarehouseId(), conn) .C_ValidCombination_ID); if (line.isTransactionNegative()) { amtDebit = amount.toPlainString(); amtCredit = ""; } else { amtDebit = ""; amtCredit = amount.toPlainString(); } fact.createLine( line, getAccountByWarehouse( AcctServer.ACCTTYPE_InvDifferences, as, line.getWarehouseId(), conn), line.m_C_Currency_ID, amtDebit, amtCredit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); fact.createLine( line, p.getAccount(ProductInfo.ACCTTYPE_P_Asset, as, conn), line.m_C_Currency_ID, amtCredit, amtDebit, Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, line.m_DateAcct, null, conn); } } // lines SeqNo = "0"; return fact; } // createFact
private int saveRecord(VariablesSecureApp vars, OBError myError, char type) throws IOException, ServletException { BusinessPartnerCategoryData data = null; int total = 0; if (org.openbravo.erpCommon.utility.WindowAccessData.hasReadOnlyAccess( this, vars.getRole(), tabId)) { OBError newError = Utility.translateError( this, vars, vars.getLanguage(), Utility.messageBD(this, "NoWriteAccess", vars.getLanguage())); myError.setError(newError); vars.setMessage(tabId, myError); } else { Connection con = null; try { con = this.getTransactionConnection(); data = getEditVariables(con, vars); data.dateTimeFormat = vars.getSessionValue("#AD_SqlDateTimeFormat"); String strSequence = ""; if (type == 'I') { strSequence = SequenceIdData.getUUID(); if (log4j.isDebugEnabled()) log4j.debug("Sequence: " + strSequence); data.cBpGroupId = strSequence; } if (Utility.isElementInList( Utility.getContext(this, vars, "#User_Client", windowId, accesslevel), data.adClientId) && Utility.isElementInList( Utility.getContext(this, vars, "#User_Org", windowId, accesslevel), data.adOrgId)) { if (type == 'I') { total = data.insert(con, this); } else { // Check the version of the record we are saving is the one in DB if (BusinessPartnerCategoryData.getCurrentDBTimestamp(this, data.cBpGroupId) .equals(vars.getStringParameter("updatedTimestamp"))) { total = data.update(con, this); } else { myError.setMessage( Replace.replace( Replace.replace( Utility.messageBD(this, "SavingModifiedRecord", vars.getLanguage()), "\\n", "<br/>"), """, "\"")); myError.setType("Error"); vars.setSessionValue(tabId + "|concurrentSave", "true"); } } } else { OBError newError = Utility.translateError( this, vars, vars.getLanguage(), Utility.messageBD(this, "NoWriteAccess", vars.getLanguage())); myError.setError(newError); } releaseCommitConnection(con); } catch (Exception ex) { OBError newError = Utility.translateError(this, vars, vars.getLanguage(), ex.getMessage()); myError.setError(newError); try { releaseRollbackConnection(con); } catch (final Exception e) { // do nothing } } if (myError.isEmpty() && total == 0) { OBError newError = Utility.translateError(this, vars, vars.getLanguage(), "@CODE=DBExecuteError"); myError.setError(newError); } vars.setMessage(tabId, myError); if (!myError.isEmpty()) { if (data != null) { if (type == 'I') { data.cBpGroupId = ""; } else { } vars.setEditionData(tabId, data); } } else { vars.setSessionValue(windowId + "|C_BP_Group_ID", data.cBpGroupId); } } return total; }