Skip to main content

Criando um 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

file

Criando um Relatório & Processo

file

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.

file

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á:

file

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";