Hi Anders.
when i attempt to use sample bean shell adopted to my tables, i´m receive error message:
"ERROR 05 Sep 2022 16:24:57 org.joget.apps.app.lib.BeanShellTool - jwc_paulomnasc : Error executing script
2224 bsh.EvalError: Sourced file: inline evaluation of: ``import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.R . . . '' : Undefined argument: element "
Code .java:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.joget.apps.app.model.AppDefinition;
import org.joget.apps.app.service.AppService;
import org.joget.apps.app.service.AppUtil;
import org.joget.apps.form.model.Element;
import org.joget.apps.form.model.FormData;
import org.joget.apps.form.model.FormRow;
import org.joget.apps.form.model.FormRowSet;
import org.joget.apps.form.model.FormStoreBinder;
import org.joget.apps.form.service.FormUtil;
import org.joget.plugin.base.PluginManager;
import org.joget.commons.util.LogUtil;
/*Comando legado usado no Database Update Tool
update app_fd_conta_contabil set c_saldo_conta = c_saldo_conta - FORMAT(#form.app_fd_transacao.id_valor_transacao#, 2)
where ID = '#form.app_fd_transacao.cboCtContabil#'
*/
//LÓGICA: Irá gravar app_fd_conta_contabil ao inserir novo registro na tabela app_fd_transacao
public FormRowSet storeData(Element element, FormRowSet rows, FormData formData) {
//check for empty data
if (rows == null || rows.isEmpty()) {
return rows;
}
normalStoring(element, rows, formData);
//store only needed field by create new Form Row Set
FormRow originalRow = rows.get(0);
FormRowSet newRows = new FormRowSet();
FormRow newRow = new FormRow();
newRow.put("cboTipoConta", originalRow.getProperty("cboTipoConta"));
newRow.put("cboCtContabil", originalRow.getProperty("cboCtContabil"));
newRow.put("id_valor_transacao", originalRow.getProperty("id_valor_transacao"));
newRow.put("cboTipoTransacao", originalRow.getProperty("cboTipoTransacao"));
newRows.add(newRow);
//String id = "#currentUser.username#";
//store
storeToOtherFormDataTable(element, newRows, formData, id);
//storeUsingJDBC(element, newRows, formData, id);
return rows;
}
//this function will reuse workflow form binder to store data
public void normalStoring(Element element, FormRowSet rows, FormData formData) {
PluginManager pluginManager = (PluginManager) AppUtil.getApplicationContext().getBean("pluginManager");
FormStoreBinder binder = (FormStoreBinder) pluginManager.getPlugin("org.joget.apps.form.lib.WorkflowFormBinder");
binder.store(element, rows, formData);
}
//this function will store rows data to a form's data table
public void storeToOtherFormDataTable(Element element, FormRowSet rows, FormData formData, String id) {
AppService appService = (AppService) AppUtil.getApplicationContext().getBean("appService");
String formId = "app_fd_transacao"; // the table of database is configured in the form with id "user"
AppDefinition appDef = AppUtil.getCurrentAppDefinition();
appService.storeFormData(appDef.getId(), appDef.getVersion().toString(), formId, rows, id);
}
//call storeData method with injected variables
return storeData(element, rows, formData);