Criação de Processo (Script)
No desenvolvimento de um Processo (script) você pode usar:
- Variáveis de contexto de Login com o prefixo G_
- Parâmetros de Processo começando com o prefixo P_
- Se o parâmetro for definido como uma faixa então estarão disponíveis como P_Nome1 e P_Nome2
Além das variáveis são definidos por padrão também os seguintes parâmetros:
- 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
Criando um Relatório & Processo
Adicionando à Janela PN
Com o novo Relatório & Processo criado, agora precisamos adicionar uma nova coluna à tabela C_BPartner para que um botão seja disponibilizado para o usuário disparar o processo.
Feito isso, é necessário adicionar o novo campo à janela de Parceiro de Negócios para a coluna recém criada e o resultado final será:
Nota: um Processo (Script) também pode ser adicionado diretamene ao menu ou também agendado para execução automática.
Exemplo de código para copiar, colar e testar
No campo Classname da janela Relatório & Processo:
@script:groovy:contarPedidosPN
Na Chave de Busca da Regra:
groovy:contarPedidosPN
No campo Script da Regra:
import org.compiere.model.MTable;
import org.compiere.model.MBPartner;
import org.compiere.util.DB;
import org.compiere.util.Msg;
/* verifica a tabela - executar somente se = C_BPartner */
MTable table = new MTable (A_Ctx, A_Table_ID, A_TrxName);
if (table.get_ID() == 0)
throw new IllegalArgumentException ("Tabela não encontrada AD_Table_ID=" + A_Table_ID);
String tableName = table.getTableName();
if (!tableName.equals("C_BPartner"))
throw new IllegalArgumentException ("Processo deve ser executado à partir da tabela C_BPartner e a tabela atual é " + tableName);
/* Conta o numero de pedidos de compra/venda do PN */
String sql = "SELECT COUNT(*) FROM C_Order WHERE C_BPartner_ID = " + A_Record_ID;
int no = DB.getSQLValue(sql, A_TrxName);
MBPartner bp = new MBPartner (A_Ctx, A_Record_ID, A_TrxName);
bp.setDescription(bp.getDescription() + " - " + "Pedidos: " + no);
bp.saveEx();
A_ProcessInfo.addLog (0, null, null, "PN atualizado com "+no+" pedidos contados");
result = "OK";