Workflow (botão complete)


#1

Estou tendo em dificuldades para entender o workflow. Criei uma tabela onde possuo os campos da m_invoice e m_invoiceLine, minha dúvida é a seguinte: preciso obrigatoriamente fazer tudo o que a classe MInvoice e MInvoiceLine faz? , se pretendo seguir as regras e organização de negócio que o Adempiere utiliza; Sei que o botão complete da janela Invoice dispara um Workflow e que este botão segue a mesma linha do botão complete da Sales Order, sei também que precisa instanciar a classe DocAction na minha classe “M” e implementar um monte de métodos da classe DocAction. Gostaria de saber se tem como eu fazer na minha classe tudo o que a c_invoice original faz, se tiver como fazer, me dêem uma idéia porque estou sem nenhuma. Como eu faço para criar o id na c_invoice logo quando eu entro na minha janela, porque eu vi que este é um dos problemas que estou enfrentando, pois ele cria apenas o id da minha tabela quando entro na janela, o da c_invoice sempre ficará vazio.


#2

Leandro,

Eu não recomendo você tentar fazer uma classe que faz tudo o que WorkFlow faz.

Talvez o que possa te ajudar é usar um ModelValidator. Dê uma olhada nos Validators que já estão prontos no projeto do AdempiereLBR. É possível você disparar uma rotina assim que for clicado no botão Completar da janela de fatura.

Um abraço.
Ricardo


#3

Valeu Ricardo pela dica, quando eu puder vou pesquisar melhor os models da lbr. Vou contar como está o meu caso, já estou gravando os dados da minha janela na janela da c_invoice e c_invoiceline, a única coisa que me ocorreu agora é de que preciso apenas disparar o botão de complete da c_invoice através da minha janela, tem alguma dica de como eu posso fazer isso?

Abraço.


#4

Acho que isso resolve:

MInvoice inv = new MInvoice(Env.getCtx(), <<<ID DA SUA FATURA>>>, trxName); String status = inv.completeIt(); inv.setDocStatus(status); inv.save(trxName);

Abraço,
Ricardo


#5

Tentei utilizar o seu código e não aconteceu nada Ricardo. Não sei se estou fazendo errado:

MInvoice inv = new MInvoice(getCtx(), getC_Invoice_ID(), get_TrxName());
String status = inv.completeIt();
inv.setDocStatus(status);
inv.save(get_TrxName());

Abraço.