public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { TableSQLData tableSQL = null; VariablesSecureApp vars = new VariablesSecureApp(request); Boolean saveRequest = (Boolean) request.getAttribute("autosave"); if (saveRequest != null && saveRequest) { String currentOrg = vars.getStringParameter("inpadOrgId"); String currentClient = vars.getStringParameter("inpadClientId"); boolean editableTab = (!org.openbravo.erpCommon.utility.WindowAccessData.hasReadOnlyAccess( this, vars.getRole(), tabId) && (currentOrg.equals("") || Utility.isElementInList( Utility.getContext(this, vars, "#User_Org", windowId, accesslevel), currentOrg)) && (currentClient.equals("") || Utility.isElementInList( Utility.getContext(this, vars, "#User_Client", windowId, accesslevel), currentClient))); OBError myError = new OBError(); String commandType = request.getParameter("inpCommandType"); String strcBpGroupId = request.getParameter("inpcBpGroupId"); if (editableTab) { int total = 0; if (commandType.equalsIgnoreCase("EDIT") && !strcBpGroupId.equals("")) total = saveRecord(vars, myError, 'U'); else total = saveRecord(vars, myError, 'I'); if (!myError.isEmpty() && total == 0) throw new OBException(myError.getMessage()); } vars.setSessionValue(request.getParameter("mappingName") + "|hash", vars.getPostDataHash()); vars.setSessionValue(tabId + "|Header.view", "EDIT"); return; } try { tableSQL = new TableSQLData( vars, this, tabId, Utility.getContext(this, vars, "#AccessibleOrgTree", windowId, accesslevel), Utility.getContext(this, vars, "#User_Client", windowId), Utility.getContext(this, vars, "ShowAudit", windowId).equals("Y")); } catch (Exception ex) { ex.printStackTrace(); } String strOrderBy = vars.getSessionValue(tabId + "|orderby"); if (!strOrderBy.equals("")) { vars.setSessionValue(tabId + "|newOrder", "1"); } if (vars.commandIn("DEFAULT")) { String strC_BP_Group_ID = vars.getGlobalVariable("inpcBpGroupId", windowId + "|C_BP_Group_ID", ""); String strView = vars.getSessionValue(tabId + "|BusinessPartnerCategory.view"); if (strView.equals("")) { strView = defaultTabView; if (strView.equals("EDIT")) { if (strC_BP_Group_ID.equals("")) strC_BP_Group_ID = firstElement(vars, tableSQL); if (strC_BP_Group_ID.equals("")) strView = "RELATION"; } } if (strView.equals("EDIT")) printPageEdit(response, request, vars, false, strC_BP_Group_ID, tableSQL); else printPageDataSheet(response, vars, strC_BP_Group_ID, tableSQL); } else if (vars.commandIn("DIRECT")) { String strC_BP_Group_ID = vars.getStringParameter("inpDirectKey"); if (strC_BP_Group_ID.equals("")) strC_BP_Group_ID = vars.getRequiredGlobalVariable("inpcBpGroupId", windowId + "|C_BP_Group_ID"); else vars.setSessionValue(windowId + "|C_BP_Group_ID", strC_BP_Group_ID); vars.setSessionValue(tabId + "|BusinessPartnerCategory.view", "EDIT"); printPageEdit(response, request, vars, false, strC_BP_Group_ID, tableSQL); } else if (vars.commandIn("TAB")) { String strView = vars.getSessionValue(tabId + "|BusinessPartnerCategory.view"); String strC_BP_Group_ID = ""; if (strView.equals("")) { strView = defaultTabView; if (strView.equals("EDIT")) { strC_BP_Group_ID = firstElement(vars, tableSQL); if (strC_BP_Group_ID.equals("")) strView = "RELATION"; } } if (strView.equals("EDIT")) { if (strC_BP_Group_ID.equals("")) strC_BP_Group_ID = firstElement(vars, tableSQL); printPageEdit(response, request, vars, false, strC_BP_Group_ID, tableSQL); } else printPageDataSheet(response, vars, "", tableSQL); } else if (vars.commandIn("SEARCH")) { vars.getRequestGlobalVariable("inpParamName", tabId + "|paramName"); vars.getRequestGlobalVariable("inpParamUpdated", tabId + "|paramUpdated"); vars.getRequestGlobalVariable("inpParamUpdatedBy", tabId + "|paramUpdatedBy"); vars.getRequestGlobalVariable("inpParamCreated", tabId + "|paramCreated"); vars.getRequestGlobalVariable("inpparamCreatedBy", tabId + "|paramCreatedBy"); vars.removeSessionValue(windowId + "|C_BP_Group_ID"); String strC_BP_Group_ID = ""; String strView = vars.getSessionValue(tabId + "|BusinessPartnerCategory.view"); if (strView.equals("")) strView = defaultTabView; if (strView.equals("EDIT")) { strC_BP_Group_ID = firstElement(vars, tableSQL); if (strC_BP_Group_ID.equals("")) { // filter returns empty set strView = "RELATION"; // switch to grid permanently until the user changes the view again vars.setSessionValue(tabId + "|BusinessPartnerCategory.view", strView); } } if (strView.equals("EDIT")) printPageEdit(response, request, vars, false, strC_BP_Group_ID, tableSQL); else printPageDataSheet(response, vars, strC_BP_Group_ID, tableSQL); } else if (vars.commandIn("RELATION")) { String strC_BP_Group_ID = vars.getGlobalVariable("inpcBpGroupId", windowId + "|C_BP_Group_ID", ""); vars.setSessionValue(tabId + "|BusinessPartnerCategory.view", "RELATION"); printPageDataSheet(response, vars, strC_BP_Group_ID, tableSQL); } else if (vars.commandIn("NEW")) { printPageEdit(response, request, vars, true, "", tableSQL); } else if (vars.commandIn("EDIT")) { @SuppressWarnings("unused") // In Expense Invoice tab this variable is not used, to be fixed String strC_BP_Group_ID = vars.getGlobalVariable("inpcBpGroupId", windowId + "|C_BP_Group_ID", ""); vars.setSessionValue(tabId + "|BusinessPartnerCategory.view", "EDIT"); setHistoryCommand(request, "EDIT"); printPageEdit(response, request, vars, false, strC_BP_Group_ID, tableSQL); } else if (vars.commandIn("NEXT")) { String strC_BP_Group_ID = vars.getRequiredStringParameter("inpcBpGroupId"); String strNext = nextElement(vars, strC_BP_Group_ID, tableSQL); printPageEdit(response, request, vars, false, strNext, tableSQL); } else if (vars.commandIn("PREVIOUS")) { String strC_BP_Group_ID = vars.getRequiredStringParameter("inpcBpGroupId"); String strPrevious = previousElement(vars, strC_BP_Group_ID, tableSQL); printPageEdit(response, request, vars, false, strPrevious, tableSQL); } else if (vars.commandIn("FIRST_RELATION")) { vars.setSessionValue(tabId + "|BusinessPartnerCategory.initRecordNumber", "0"); response.sendRedirect(strDireccion + request.getServletPath() + "?Command=RELATION"); } else if (vars.commandIn("PREVIOUS_RELATION")) { String strInitRecord = vars.getSessionValue(tabId + "|BusinessPartnerCategory.initRecordNumber"); String strRecordRange = Utility.getContext(this, vars, "#RecordRange", windowId); int intRecordRange = strRecordRange.equals("") ? 0 : Integer.parseInt(strRecordRange); if (strInitRecord.equals("") || strInitRecord.equals("0")) { vars.setSessionValue(tabId + "|BusinessPartnerCategory.initRecordNumber", "0"); } else { int initRecord = (strInitRecord.equals("") ? 0 : Integer.parseInt(strInitRecord)); initRecord -= intRecordRange; strInitRecord = ((initRecord < 0) ? "0" : Integer.toString(initRecord)); vars.setSessionValue(tabId + "|BusinessPartnerCategory.initRecordNumber", strInitRecord); } vars.removeSessionValue(windowId + "|C_BP_Group_ID"); response.sendRedirect(strDireccion + request.getServletPath() + "?Command=RELATION"); } else if (vars.commandIn("NEXT_RELATION")) { String strInitRecord = vars.getSessionValue(tabId + "|BusinessPartnerCategory.initRecordNumber"); String strRecordRange = Utility.getContext(this, vars, "#RecordRange", windowId); int intRecordRange = strRecordRange.equals("") ? 0 : Integer.parseInt(strRecordRange); int initRecord = (strInitRecord.equals("") ? 0 : Integer.parseInt(strInitRecord)); if (initRecord == 0) initRecord = 1; initRecord += intRecordRange; strInitRecord = ((initRecord < 0) ? "0" : Integer.toString(initRecord)); vars.setSessionValue(tabId + "|BusinessPartnerCategory.initRecordNumber", strInitRecord); vars.removeSessionValue(windowId + "|C_BP_Group_ID"); response.sendRedirect(strDireccion + request.getServletPath() + "?Command=RELATION"); } else if (vars.commandIn("FIRST")) { String strFirst = firstElement(vars, tableSQL); printPageEdit(response, request, vars, false, strFirst, tableSQL); } else if (vars.commandIn("LAST_RELATION")) { String strLast = lastElement(vars, tableSQL); printPageDataSheet(response, vars, strLast, tableSQL); } else if (vars.commandIn("LAST")) { String strLast = lastElement(vars, tableSQL); printPageEdit(response, request, vars, false, strLast, tableSQL); } else if (vars.commandIn("SAVE_NEW_RELATION", "SAVE_NEW_NEW", "SAVE_NEW_EDIT")) { OBError myError = new OBError(); int total = saveRecord(vars, myError, 'I'); if (!myError.isEmpty()) { response.sendRedirect(strDireccion + request.getServletPath() + "?Command=NEW"); } else { if (myError.isEmpty()) { myError = Utility.translateError(this, vars, vars.getLanguage(), "@CODE=RowsInserted"); myError.setMessage(total + " " + myError.getMessage()); vars.setMessage(tabId, myError); } if (vars.commandIn("SAVE_NEW_NEW")) response.sendRedirect(strDireccion + request.getServletPath() + "?Command=NEW"); else if (vars.commandIn("SAVE_NEW_EDIT")) response.sendRedirect(strDireccion + request.getServletPath() + "?Command=EDIT"); else response.sendRedirect(strDireccion + request.getServletPath() + "?Command=RELATION"); } } else if (vars.commandIn( "SAVE_EDIT_RELATION", "SAVE_EDIT_NEW", "SAVE_EDIT_EDIT", "SAVE_EDIT_NEXT")) { String strC_BP_Group_ID = vars.getRequiredGlobalVariable("inpcBpGroupId", windowId + "|C_BP_Group_ID"); OBError myError = new OBError(); int total = saveRecord(vars, myError, 'U'); if (!myError.isEmpty()) { response.sendRedirect(strDireccion + request.getServletPath() + "?Command=EDIT"); } else { if (myError.isEmpty()) { myError = Utility.translateError(this, vars, vars.getLanguage(), "@CODE=RowsUpdated"); myError.setMessage(total + " " + myError.getMessage()); vars.setMessage(tabId, myError); } if (vars.commandIn("SAVE_EDIT_NEW")) response.sendRedirect(strDireccion + request.getServletPath() + "?Command=NEW"); else if (vars.commandIn("SAVE_EDIT_EDIT")) response.sendRedirect(strDireccion + request.getServletPath() + "?Command=EDIT"); else if (vars.commandIn("SAVE_EDIT_NEXT")) { String strNext = nextElement(vars, strC_BP_Group_ID, tableSQL); vars.setSessionValue(windowId + "|C_BP_Group_ID", strNext); response.sendRedirect(strDireccion + request.getServletPath() + "?Command=EDIT"); } else response.sendRedirect(strDireccion + request.getServletPath() + "?Command=RELATION"); } } else if (vars.commandIn("DELETE")) { String strC_BP_Group_ID = vars.getRequiredStringParameter("inpcBpGroupId"); // BusinessPartnerCategoryData data = getEditVariables(vars); int total = 0; OBError myError = null; if (org.openbravo.erpCommon.utility.WindowAccessData.hasNotDeleteAccess( this, vars.getRole(), tabId)) { myError = Utility.translateError( this, vars, vars.getLanguage(), Utility.messageBD(this, "NoWriteAccess", vars.getLanguage())); vars.setMessage(tabId, myError); } else { try { total = BusinessPartnerCategoryData.delete( this, strC_BP_Group_ID, Utility.getContext(this, vars, "#User_Client", windowId, accesslevel), Utility.getContext(this, vars, "#User_Org", windowId, accesslevel)); } catch (ServletException ex) { myError = Utility.translateError(this, vars, vars.getLanguage(), ex.getMessage()); if (!myError.isConnectionAvailable()) { bdErrorConnection(response); return; } else vars.setMessage(tabId, myError); } if (myError == null && total == 0) { myError = Utility.translateError( this, vars, vars.getLanguage(), Utility.messageBD(this, "NoWriteAccess", vars.getLanguage())); vars.setMessage(tabId, myError); } vars.removeSessionValue(windowId + "|cBpGroupId"); vars.setSessionValue(tabId + "|BusinessPartnerCategory.view", "RELATION"); } if (myError == null) { myError = Utility.translateError(this, vars, vars.getLanguage(), "@CODE=RowsDeleted"); myError.setMessage(total + " " + myError.getMessage()); vars.setMessage(tabId, myError); } response.sendRedirect(strDireccion + request.getServletPath()); } else if (vars.commandIn("SAVE_XHR")) { OBError myError = new OBError(); JSONObject result = new JSONObject(); String commandType = vars.getStringParameter("inpCommandType"); char saveType = "NEW".equals(commandType) ? 'I' : 'U'; try { int total = saveRecord(vars, myError, saveType); if (myError.isEmpty()) { myError = Utility.translateError(this, vars, vars.getLanguage(), "@CODE=RowsUpdated"); myError.setMessage(total + " " + myError.getMessage()); myError.setType("Success"); } result.put("oberror", myError.toMap()); result.put("tabid", vars.getStringParameter("tabID")); result.put("redirect", strDireccion + request.getServletPath() + "?Command=" + commandType); } catch (Exception e) { log4j.error("Error saving record (XHR request): " + e.getMessage(), e); myError.setType("Error"); myError.setMessage(e.getMessage()); } response.setContentType("application/json"); PrintWriter out = response.getWriter(); out.print(result.toString()); out.flush(); out.close(); } else if (vars.getCommand().toUpperCase().startsWith("BUTTON") || vars.getCommand().toUpperCase().startsWith("SAVE_BUTTON")) { pageErrorPopUp(response); } else pageError(response); }
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; }