Script Process

From ADempiere ERP Wiki

Jump to: navigation, search

Table of Contents | Script Process | Process

  This contribution was provided by Carlos Ruiz, Quality Systems & Solutions - QSS Ltda.
http://globalqss.com

Status: working in version > 3.3.1b

Contents

Create the Rule

Within the script you can use:

  • Login context variables start with G_ prefix
  • Process Parameters for the process start with P_ prefix, for example P_Name
  • If the parameter is a range then the parameters will be P_Name1 and P_Name2

And the following predefined arguments:

  • A_Ctx - the context
  • A_Trx - the transaction
  • A_TrxName
  • A_Record_ID
  • A_AD_Client_ID
  • A_AD_User_ID
  • A_AD_PInstance_ID
  • A_Table_ID

Image:01_ScriptForProcess.png

Configure the Process

Image:02_ProcessWithScript.png

Code provided for copy/paste testing

On the Report & Process:

@script:beanshell:ImportDelete

On the Rule Search Key:

beanshell:ImportDelete

On the Rule Script:

import org.compiere.model.MTable;
import org.compiere.util.DB;
import org.compiere.util.Msg;

/* get Table Info */
MTable table = new MTable (A_Ctx, P_AD_Table_ID, A_TrxName);
if (table.get_ID() == 0)
    throw new IllegalArgumentException ("No AD_Table_ID=" + P_AD_Table_ID);
String tableName = table.getTableName();
if (!tableName.startsWith("I"))
    throw new IllegalArgumentException ("Not an import table = " + tableName);

/* Delete */
String sql = "DELETE FROM " + tableName + " WHERE AD_Client_ID=" + A_AD_Client_ID;
int no = DB.executeUpdate(sql, A_TrxName);
A_ProcessInfo.addLog (0, null, null, "Deleted "+no+" rows from table "+tableName);
result = "OK";

See Also

Personal tools