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.
Workflow (botão complete)
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
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.
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
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.