O http://www.doens.be publicou este artigo e vou traduzi-lo aqui, é bastante útil!
Quando você quiser implementar sequências numéricas nos seus formulários no AX para por exemplo criar um ID sequencial, você só precisar implementar ‘numberSeqFormHandler‘.
Passo a passo:
Defina um objeto do tipo ‘NumberSeqFormHandler’ no ClassDeclaration do formulário:
1 2 3 4 | public class FormRun extends ObjectRun { NumberSeqFormHandler numberSeqFormHandler; } |
Crie um novo método no seu formulário que que instâncie seu objeto ou apenas retorne-o.
1 2 3 4 5 6 7 8 9 10 11 | NumberSeqFormHandler numberSeqFormHandler() { ; if (!numberSeqFormHandler) numberSeqFormHandler = NumberSeqFormHandler::newForm(TestParameters::numRefTEST().NumberSequence, element, TestTable_DS, fieldnum(TestTable,TEST) ); return numberSeqFormHandler; } |
Siga os passos abaixo adicionando as duas linhas no método create do datasource:
1 2 3 4 5 6 7 | public void create(boolean _append = false) { ; element.numberSeqFormHandler().formMethodDataSourceCreatePre(); super(_append); element.numberSeqFormHandler().formMethodDataSourceCreate(); } |
Agora no método delete do datasource:
1 2 3 4 5 6 | public void delete() { ; element.numberSeqFormHandler().formMethodDataSourceDelete(); super(); } |
Agora no método write, que é quando o usuário insere um novo registro ou atualiza:
1 2 3 4 5 6 7 8 | public void write() { ; ttsbegin; super(); element.numberSeqFormHandler().formMethodDataSourceWrite(); ttscommit; } |
Agora no validatewrite, que é quando um registro está para ser inserido ou atualizado:
1 2 3 4 5 6 7 8 | public boolean validateWrite() { boolean ret; ; ret = super(); ret = element.numberSeqFormHandler().formMethodDataSourceValidateWrite(ret) && ret; return ret; } |
Agora no linkactive que é quando o usuário seleciona um registro do datasource que está relacionado a outro registro de outro datasource.
1 2 3 4 5 6 | public void linkActive() { ; element.numberSeqFormHandler().formMethodDataSourceLinkActive(); super(); } |
E por último, no close, quando o formulário é fechado:
1 2 3 4 5 6 7 | public void close() { ; if (numberSeqFormHandler) numberSeqFormHandler.formMethodClose(); super(); } |
[]s
Pichler
Leave a reply