IDEMPIERE-3599 allow DocActions to be selected in a more flexible way
This commit is contained in:
parent
0e6ff739b3
commit
0ec3576fe2
|
@ -91,6 +91,9 @@ public interface IEventTopics {
|
||||||
|
|
||||||
public static final String PREF_AFTER_LOAD = "adempiere/pref/afterLoad";
|
public static final String PREF_AFTER_LOAD = "adempiere/pref/afterLoad";
|
||||||
|
|
||||||
|
/** Called after next document actions are set */
|
||||||
|
public static final String DOCACTION = "adempiere/docAction";
|
||||||
|
|
||||||
public static final String BROADCAST_MESSAGE = "idempiere/broadcastMsg";
|
public static final String BROADCAST_MESSAGE = "idempiere/broadcastMsg";
|
||||||
|
|
||||||
public static final String REQUEST_SEND_EMAIL = "idempiere/requestSendEMail";
|
public static final String REQUEST_SEND_EMAIL = "idempiere/requestSendEMail";
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
package org.compiere.process;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
|
import org.compiere.model.PO;
|
||||||
|
|
||||||
|
public class DocActionEventData {
|
||||||
|
|
||||||
|
public String docStatus;
|
||||||
|
public Object processing;
|
||||||
|
public String orderType;
|
||||||
|
public String isSOTrx;
|
||||||
|
public int AD_Table_ID;
|
||||||
|
public ArrayList<String> docAction;
|
||||||
|
public ArrayList<String> options;
|
||||||
|
public AtomicInteger indexObj;
|
||||||
|
public PO po;
|
||||||
|
|
||||||
|
public DocActionEventData(String docStatus, Object processing, String orderType, String isSOTrx,
|
||||||
|
int AD_Table_ID, ArrayList<String> docAction, ArrayList<String> options, AtomicInteger indexObj, PO po) {
|
||||||
|
this.docStatus = docStatus;
|
||||||
|
this.processing = processing;
|
||||||
|
this.orderType = orderType;
|
||||||
|
this.isSOTrx = isSOTrx;
|
||||||
|
this.AD_Table_ID = AD_Table_ID;
|
||||||
|
this.docAction = docAction;
|
||||||
|
this.options = options;
|
||||||
|
this.indexObj = indexObj;
|
||||||
|
this.po = po;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -22,9 +22,14 @@ import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.adempiere.base.event.EventManager;
|
||||||
|
import org.adempiere.base.event.EventProperty;
|
||||||
|
import org.adempiere.base.event.IEventTopics;
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
import org.compiere.acct.Doc;
|
import org.compiere.acct.Doc;
|
||||||
import org.compiere.model.MAcctSchema;
|
import org.compiere.model.MAcctSchema;
|
||||||
|
@ -55,6 +60,7 @@ import org.eevolution.model.I_DD_Order;
|
||||||
import org.eevolution.model.I_HR_Process;
|
import org.eevolution.model.I_HR_Process;
|
||||||
import org.eevolution.model.I_PP_Cost_Collector;
|
import org.eevolution.model.I_PP_Cost_Collector;
|
||||||
import org.eevolution.model.I_PP_Order;
|
import org.eevolution.model.I_PP_Order;
|
||||||
|
import org.osgi.service.event.Event;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Document Action Engine
|
* Document Action Engine
|
||||||
|
@ -907,7 +913,7 @@ public class DocumentEngine implements DocAction
|
||||||
* @return Number of valid options
|
* @return Number of valid options
|
||||||
*/
|
*/
|
||||||
public static int getValidActions(String docStatus, Object processing,
|
public static int getValidActions(String docStatus, Object processing,
|
||||||
String orderType, String isSOTrx, int AD_Table_ID, String[] docAction, String[] options, boolean periodOpen)
|
String orderType, String isSOTrx, int AD_Table_ID, String[] docAction, String[] options, boolean periodOpen, PO po)
|
||||||
{
|
{
|
||||||
if (options == null)
|
if (options == null)
|
||||||
throw new IllegalArgumentException("Option array parameter is null");
|
throw new IllegalArgumentException("Option array parameter is null");
|
||||||
|
@ -1214,6 +1220,25 @@ public class DocumentEngine implements DocAction
|
||||||
options[index++] = DocumentEngine.ACTION_Void;
|
options[index++] = DocumentEngine.ACTION_Void;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (po instanceof DocOptions)
|
||||||
|
index = ((DocOptions) po).customizeValidActions(docStatus, processing, orderType, isSOTrx,
|
||||||
|
AD_Table_ID, docAction, options, index);
|
||||||
|
|
||||||
|
AtomicInteger indexObj = new AtomicInteger(index);
|
||||||
|
ArrayList<String> docActionsArray = new ArrayList<String>(Arrays.asList(docAction));
|
||||||
|
ArrayList<String> optionsArray = new ArrayList<String>(Arrays.asList(options));
|
||||||
|
DocActionEventData eventData = new DocActionEventData(docStatus, processing, orderType, isSOTrx, AD_Table_ID, docActionsArray, optionsArray, indexObj, po);
|
||||||
|
Event event = EventManager.newEvent(IEventTopics.DOCACTION,
|
||||||
|
new EventProperty(EventManager.EVENT_DATA, eventData),
|
||||||
|
new EventProperty("tableName", po.get_TableName()));
|
||||||
|
EventManager.getInstance().sendEvent(event);
|
||||||
|
index = indexObj.get();
|
||||||
|
for (int i = 0; i < optionsArray.size(); i++)
|
||||||
|
options[i] = optionsArray.get(i);
|
||||||
|
for (int i = 0; i < docActionsArray.size(); i++)
|
||||||
|
docAction[i] = docActionsArray.get(i);
|
||||||
|
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,6 @@ import org.compiere.model.MProduction;
|
||||||
import org.compiere.model.MTable;
|
import org.compiere.model.MTable;
|
||||||
import org.compiere.model.PO;
|
import org.compiere.model.PO;
|
||||||
import org.compiere.process.DocAction;
|
import org.compiere.process.DocAction;
|
||||||
import org.compiere.process.DocOptions;
|
|
||||||
import org.compiere.process.DocumentEngine;
|
import org.compiere.process.DocumentEngine;
|
||||||
import org.compiere.swing.CComboBox;
|
import org.compiere.swing.CComboBox;
|
||||||
import org.compiere.swing.CDialog;
|
import org.compiere.swing.CDialog;
|
||||||
|
@ -245,11 +244,7 @@ public class VDocAction extends CDialog
|
||||||
|
|
||||||
String[] docActionHolder = new String[] {DocAction};
|
String[] docActionHolder = new String[] {DocAction};
|
||||||
index = DocumentEngine.getValidActions(DocStatus, Processing, OrderType, IsSOTrx, m_AD_Table_ID,
|
index = DocumentEngine.getValidActions(DocStatus, Processing, OrderType, IsSOTrx, m_AD_Table_ID,
|
||||||
docActionHolder, options, periodOpen);
|
docActionHolder, options, periodOpen, po);
|
||||||
|
|
||||||
if (po instanceof DocOptions)
|
|
||||||
index = ((DocOptions) po).customizeValidActions(DocStatus, Processing, OrderType, IsSOTrx,
|
|
||||||
m_AD_Table_ID, docActionHolder, options, index);
|
|
||||||
|
|
||||||
Integer doctypeId = (Integer)m_mTab.getValue("C_DocType_ID");
|
Integer doctypeId = (Integer)m_mTab.getValue("C_DocType_ID");
|
||||||
if(doctypeId==null || doctypeId.intValue()==0){
|
if(doctypeId==null || doctypeId.intValue()==0){
|
||||||
|
|
|
@ -46,7 +46,6 @@ import org.compiere.model.MProduction;
|
||||||
import org.compiere.model.MTable;
|
import org.compiere.model.MTable;
|
||||||
import org.compiere.model.PO;
|
import org.compiere.model.PO;
|
||||||
import org.compiere.process.DocAction;
|
import org.compiere.process.DocAction;
|
||||||
import org.compiere.process.DocOptions;
|
|
||||||
import org.compiere.process.DocumentEngine;
|
import org.compiere.process.DocumentEngine;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
|
@ -172,11 +171,7 @@ public class WDocActionPanel extends Window implements EventListener<Event>, Dia
|
||||||
|
|
||||||
String[] docActionHolder = new String[]{DocAction};
|
String[] docActionHolder = new String[]{DocAction};
|
||||||
index = DocumentEngine.getValidActions(DocStatus, Processing, OrderType, IsSOTrx,
|
index = DocumentEngine.getValidActions(DocStatus, Processing, OrderType, IsSOTrx,
|
||||||
m_AD_Table_ID, docActionHolder, options, periodOpen);
|
m_AD_Table_ID, docActionHolder, options, periodOpen, po);
|
||||||
|
|
||||||
if (po instanceof DocOptions)
|
|
||||||
index = ((DocOptions) po).customizeValidActions(DocStatus, Processing, OrderType, IsSOTrx,
|
|
||||||
m_AD_Table_ID, docActionHolder, options, index);
|
|
||||||
|
|
||||||
Integer doctypeId = (Integer)gridTab.getValue("C_DocTypeTarget_ID");
|
Integer doctypeId = (Integer)gridTab.getValue("C_DocTypeTarget_ID");
|
||||||
if(doctypeId==null || doctypeId.intValue()==0){
|
if(doctypeId==null || doctypeId.intValue()==0){
|
||||||
|
|
Loading…
Reference in New Issue