use of org.compiere.util.Trx in project adempiere by adempiere.
the class WProcess method createProcessPage.
// createParameterPage
//Modified by Rob klein 4/29/07
/**************************************************************************
* Create Parocess Page
* @param request request
* @param AD_Process_ID Process
* @return Page
*/
public void createProcessPage(HttpServletRequest request, HttpServletResponse response, int AD_Process_ID, int AD_Window_ID) {
MobileSessionCtx wsc = MobileSessionCtx.get(request);
MProcess process = MProcess.get(wsc.ctx, AD_Process_ID);
log.info("PI table id " + process.get_Table_ID());
log.info("PI table name id " + process.get_TableName());
log.info("PI table client id " + process.getAD_Client_ID());
log.info("PI table process id " + process.getAD_Process_ID());
log.info("PI process class name " + process.getClassname());
// need to check if Role can access
MobileDoc doc = null;
if (process == null) {
doc = MobileDoc.createWindow("Process Not Found");
} else {
doc = MobileDoc.createWindow(process.getName());
fieldset center = new fieldset();
doc.getBody().addElement(center);
if (process.getDescription() != null)
center.addElement(new p(new i(process.getDescription())));
if (process.getHelp() != null)
center.addElement(new p(process.getHelp(), AlignType.LEFT));
// Create Process Instance
MPInstance pInstance = fillParameter(request, process);
//
int AD_Table_ID = MobileUtil.getParameterAsInt(request, "AD_Table_ID");
int AD_Record_ID = MobileUtil.getParameterAsInt(request, "AD_Record_ID");
ProcessInfo pi = new ProcessInfo(process.getName(), process.getAD_Process_ID(), AD_Table_ID, AD_Record_ID);
pi.setAD_User_ID(Env.getAD_User_ID(wsc.ctx));
pi.setAD_Client_ID(Env.getAD_Client_ID(wsc.ctx));
pi.setClassName(process.getClassname());
log.info("PI client id " + pi.getAD_Client_ID());
pi.setAD_PInstance_ID(pInstance.getAD_PInstance_ID());
// Info
p p = new p();
p.addElement(Msg.translate(wsc.ctx, "AD_PInstance_ID") + ": " + pInstance.getAD_PInstance_ID());
center.addElement(p);
// Start
boolean processOK = false;
if (process.isWorkflow()) {
Trx trx = Trx.get(Trx.createTrxName("WebPrc"), true);
try {
WProcessCtl.process(this, AD_Window_ID, pi, trx, request);
//processOK = process.processIt(pi, trx);
trx.commit();
trx.close();
} catch (Throwable t) {
trx.rollback();
trx.close();
}
if (pi.isError()) {
center.addElement(new p("Error:" + pi.getSummary(), AlignType.LEFT).setClass("Cerror"));
processOK = false;
} else {
center.addElement(new p("OK: Workflow Started", AlignType.LEFT));
processOK = true;
}
center.addElement(new p().addElement(pi.getSummary()));
center.addElement(pi.getLogInfo(true));
}
String jasper = process.getJasperReport();
if (process.isJavaProcess()) {
if (jasper != null) {
pi.setPrintPreview(false);
pi.setIsBatch(true);
}
Trx trx = Trx.get(Trx.createTrxName("WebPrc"), true);
try {
processOK = process.processIt(pi, trx);
trx.commit();
trx.close();
} catch (Throwable t) {
trx.rollback();
trx.close();
}
if (!processOK || pi.isError()) {
center.addElement(new p("Error:" + pi.getSummary(), AlignType.LEFT).setClass("Cerror"));
processOK = false;
} else {
if (jasper != null) {
String error = MobileUtil.streamFile(response, pi.getPDFReport());
//String error = streamResult (request, response, pInstance.getAD_PInstance_ID(), file);
if (error == null)
return;
doc = MobileDoc.create(error);
wsc.ctx.put("AD_PInstance_ID=" + pInstance.getAD_PInstance_ID(), "ok");
} else {
center.addElement(new p().addElement(pi.getSummary()));
center.addElement(pi.getLogInfo(true));
}
}
}
// Report
if (process.isReport()) //if (processOK && process.isReport())
{
if (jasper == null) {
log.info(response.toString());
ReportEngine re = ReportEngine.get(wsc.ctx, pi);
if (re == null) {
center.addElement(new p("Could not start ReportEngine", AlignType.LEFT).setClass("Cerror"));
} else {
try {
File file = File.createTempFile("WProcess", ".pdf");
boolean ok = re.createPDF(file);
if (ok) {
String error = MobileUtil.streamFile(response, file);
//String error = streamResult (request, response, pInstance.getAD_PInstance_ID(), file);
if (error == null)
return;
doc = MobileDoc.create(error);
//Modified by Rob Klein 6/1/07
/**
String url = "WProcess?AD_PInstance_ID="
+ pInstance.getAD_PInstance_ID()
+ "&File="
+ URLEncoder.encode(file.getAbsolutePath(), WebEnv.ENCODING);
a link = new a (url, null, a.TARGET_BLANK, process.getName());
center
.addElement(new p()
.addElement("Report created: ")
.addElement(link));
// Marker that Process is OK
* */
wsc.ctx.put("AD_PInstance_ID=" + pInstance.getAD_PInstance_ID(), "ok");
} else
center.addElement(new p("Could not create Report", AlignType.LEFT).setClass("Cerror"));
} catch (Exception e) {
center.addElement(new p("Could not create Report:", AlignType.LEFT).setClass("Cerror"));
center.addElement(e.toString());
}
}
}
}
}
try {
MobileUtil.createResponse(request, response, this, null, doc, false);
} catch (IOException e) {
log.info(e.toString());
}
}
use of org.compiere.util.Trx in project adempiere by adempiere.
the class VOrderDistributionReceipt method generateMovements.
// saveSelection
/**************************************************************************
* Generate Shipments
*/
private void generateMovements() {
log.info("DD_Order_ID=" + m_DD_Order_ID);
log.info("MovementDate" + m_MovementDate);
String trxName = Trx.createTrxName("IOG");
//trx needs to be committed too
Trx trx = Trx.get(trxName, true);
// prevents from being called twice
m_selectionActive = false;
statusBar.setStatusLine(Msg.translate(Env.getCtx(), "M_Movement_ID"));
statusBar.setStatusDB(String.valueOf(selection.size()));
if (selection.size() <= 0)
return;
Properties m_ctx = Env.getCtx();
Timestamp MovementDate = (Timestamp) m_MovementDate;
MDDOrder order = new MDDOrder(m_ctx, Integer.parseInt(m_DD_Order_ID.toString()), trxName);
MMovement movement = new MMovement(m_ctx, 0, trxName);
movement.setDD_Order_ID(order.getDD_Order_ID());
movement.setAD_User_ID(order.getAD_User_ID());
movement.setPOReference(order.getPOReference());
movement.setReversal_ID(0);
movement.setM_Shipper_ID(order.getM_Shipper_ID());
movement.setDescription(order.getDescription());
movement.setC_BPartner_ID(order.getC_BPartner_ID());
movement.setC_BPartner_Location_ID(order.getC_BPartner_Location_ID());
movement.setAD_Org_ID(order.getAD_Org_ID());
movement.setAD_OrgTrx_ID(order.getAD_OrgTrx_ID());
movement.setAD_User_ID(order.getAD_User_ID());
movement.setC_Activity_ID(order.getC_Activity_ID());
movement.setC_Campaign_ID(order.getC_Campaign_ID());
movement.setC_Project_ID(order.getC_Project_ID());
movement.setMovementDate(MovementDate);
movement.setDeliveryRule(order.getDeliveryRule());
movement.setDeliveryViaRule(order.getDeliveryViaRule());
movement.setDocAction(MMovement.ACTION_Prepare);
movement.setDocStatus(MMovement.DOCSTATUS_Drafted);
//Look the document type for the organization
int docTypeDO_ID = getDocType(MDocType.DOCBASETYPE_MaterialMovement, order.getAD_Org_ID());
if (docTypeDO_ID > 0)
movement.setC_DocType_ID(docTypeDO_ID);
movement.saveEx();
for (int i = 0; i < selection.size(); i++) {
int DD_OrderLine_ID = selection.get(i);
MDDOrderLine oline = new MDDOrderLine(m_ctx, DD_OrderLine_ID, trxName);
MMovementLine line = new MMovementLine(movement);
line.setM_Product_ID(oline.getM_Product_ID());
BigDecimal QtyDeliver = (BigDecimal) miniTable.getValueAt(i, 1);
if (QtyDeliver == null | QtyDeliver.compareTo(oline.getQtyInTransit()) > 0)
throw new AdempiereException("Error in Qty");
line.setOrderLine(oline, QtyDeliver, true);
line.saveEx();
}
movement.setDocAction(MMovement.DOCACTION_Close);
movement.setDocStatus(movement.completeIt());
movement.saveEx();
trx.commit();
generateMovements_complete(movement);
//
}
use of org.compiere.util.Trx in project adempiere by adempiere.
the class AlertProcessor method notifyUsers.
// processAlert
/**
* Notify users
* @param users AD_User_ID list
* @param subject email subject
* @param message email message
* @param attachments
* @return how many email were sent
*/
private int notifyUsers(Collection<Integer> users, String subject, String message, Collection<File> attachments) {
int countMail = 0;
for (int user_id : users) {
MUser user = MUser.get(getCtx(), user_id);
if (user.isNotificationEMail()) {
if (m_client.sendEMailAttachments(user_id, subject, message, attachments)) {
countMail++;
}
}
if (user.isNotificationNote()) {
Trx trx = null;
try {
trx = Trx.get(Trx.createTrxName("AP_NU"), true);
// Notice
int AD_Message_ID = 52244;
/* TODO - Hardcoded message=notes */
MNote note = new MNote(getCtx(), AD_Message_ID, user_id, trx.getTrxName());
note.setClientOrg(m_model.getAD_Client_ID(), m_model.getAD_Org_ID());
note.setTextMsg(message);
note.saveEx();
// Attachment
MAttachment attachment = new MAttachment(getCtx(), MNote.Table_ID, note.getAD_Note_ID(), trx.getTrxName());
for (File f : attachments) {
attachment.addEntry(f);
}
attachment.setTextMsg(message);
attachment.saveEx();
countMail++;
trx.commit();
} catch (Throwable e) {
if (trx != null)
trx.rollback();
} finally {
if (trx != null)
trx.close();
}
}
}
return countMail;
}
use of org.compiere.util.Trx in project adempiere by adempiere.
the class AlertProcessor method processAlert.
// doWork
/**
* Process Alert
* @param alert alert
* @return true if processed
*/
private boolean processAlert(MAlert alert) {
if (!alert.isValid())
return false;
log.info("" + alert);
StringBuffer message = new StringBuffer(alert.getAlertMessage()).append(Env.NL);
//
boolean valid = true;
boolean processed = false;
ArrayList<File> attachments = new ArrayList<File>();
MAlertRule[] rules = alert.getRules(false);
for (int i = 0; i < rules.length; i++) {
if (i > 0)
message.append(Env.NL);
// assume r/o
String trxName = null;
MAlertRule rule = rules[i];
if (!rule.isValid())
continue;
log.fine("" + rule);
// Pre
String sql = rule.getPreProcessing();
if (sql != null && sql.length() > 0) {
int no = DB.executeUpdate(sql, false, trxName);
if (no == -1) {
ValueNamePair error = CLogger.retrieveError();
rule.setErrorMsg("Pre=" + error.getName());
m_errors.append("Pre=" + error.getName());
rule.setIsValid(false);
rule.saveEx();
valid = false;
break;
}
}
// Pre
// The processing
sql = rule.getSql(true);
try {
String text = null;
if (MSysConfig.getBooleanValue("ALERT_SEND_ATTACHMENT_AS_XLS", true, Env.getAD_Client_ID(getCtx())))
text = getExcelReport(rule, sql, trxName, attachments);
else
text = getPlainTextReport(rule, sql, trxName, attachments);
if (text != null && text.length() > 0) {
message.append(text);
processed = true;
}
} catch (Exception e) {
rule.setErrorMsg("Select=" + e.getLocalizedMessage());
m_errors.append("Select=" + e.getLocalizedMessage());
rule.setIsValid(false);
rule.saveEx();
valid = false;
break;
}
// Post
sql = rule.getPostProcessing();
if (sql != null && sql.length() > 0) {
int no = DB.executeUpdate(sql, false, trxName);
if (no == -1) {
ValueNamePair error = CLogger.retrieveError();
rule.setErrorMsg("Post=" + error.getName());
m_errors.append("Post=" + error.getName());
rule.setIsValid(false);
rule.saveEx();
valid = false;
break;
}
}
/** Trx */
if (trxName != null) {
Trx trx = Trx.get(trxName, false);
if (trx != null) {
trx.commit();
trx.close();
}
}
}
// Update header if error
if (!valid) {
alert.setIsValid(false);
alert.saveEx();
return false;
}
// Nothing to report
if (!processed) {
m_summary.append(alert.getName()).append("=No Result - ");
return true;
}
//
// Report footer - Date Generated
DateFormat df = DisplayType.getDateFormat(DisplayType.DateTime);
message.append("\n\n");
message.append(Msg.translate(getCtx(), "Date")).append(" : ").append(df.format(new Timestamp(System.currentTimeMillis())));
Collection<Integer> users = alert.getRecipientUsers();
int countMail = notifyUsers(users, alert.getAlertSubject(), message.toString(), attachments);
m_summary.append(alert.getName()).append(" (EMails+Notes=").append(countMail).append(") - ");
return valid;
}
use of org.compiere.util.Trx in project adempiere by adempiere.
the class ADTreeOnDropListener method moveNode.
// moveNode
private void moveNode(DefaultTreeNode movingNode, DefaultTreeNode toNode, boolean moveInto) {
DefaultTreeNode newParent;
int index;
// remove
DefaultTreeNode oldParent = treeModel.getParent(movingNode);
treeModel.removeNode(movingNode);
//get new index
if (!moveInto) {
newParent = treeModel.getParent(toNode);
// the next node
index = newParent.getChildren().indexOf(toNode) + 1;
} else // drop on a summary node
{
newParent = toNode;
// the first node
index = 0;
}
// insert
treeModel.addNode(newParent, movingNode, index);
int[] path = treeModel.getPath(movingNode);
Treeitem movingItem = tree.renderItemByPath(path);
tree.setSelectedItem(movingItem);
Events.sendEvent(tree, new Event(Events.ON_SELECT, tree));
// *** Save changes to disk
Trx trx = Trx.get(Trx.createTrxName("ADTree"), true);
try {
int no = 0;
MTreeNode oldMParent = (MTreeNode) oldParent.getData();
for (int i = 0; i < oldParent.getChildCount(); i++) {
DefaultTreeNode nd = (DefaultTreeNode) oldParent.getChildAt(i);
MTreeNode md = (MTreeNode) nd.getData();
StringBuffer sql = new StringBuffer("UPDATE ");
sql.append(mTree.getNodeTableName()).append(" SET Parent_ID=").append(oldMParent.getNode_ID()).append(", SeqNo=").append(i).append(", Updated=SysDate").append(" WHERE AD_Tree_ID=").append(mTree.getAD_Tree_ID()).append(" AND Node_ID=").append(md.getNode_ID());
log.fine(sql.toString());
no = DB.executeUpdate(sql.toString(), trx.getTrxName());
}
if (oldParent != newParent) {
MTreeNode newMParent = (MTreeNode) newParent.getData();
for (int i = 0; i < newParent.getChildCount(); i++) {
DefaultTreeNode nd = (DefaultTreeNode) newParent.getChildAt(i);
MTreeNode md = (MTreeNode) nd.getData();
StringBuffer sql = new StringBuffer("UPDATE ");
sql.append(mTree.getNodeTableName()).append(" SET Parent_ID=").append(newMParent.getNode_ID()).append(", SeqNo=").append(i).append(", Updated=SysDate").append(" WHERE AD_Tree_ID=").append(mTree.getAD_Tree_ID()).append(" AND Node_ID=").append(md.getNode_ID());
log.fine(sql.toString());
no = DB.executeUpdate(sql.toString(), trx.getTrxName());
}
}
// COMMIT *********************
trx.commit(true);
} catch (Exception e) {
trx.rollback();
FDialog.error(windowNo, tree, "TreeUpdateError", e.getLocalizedMessage());
}
trx.close();
trx = null;
}
Aggregations