Outro dia meu amigo Abraão estava com dúvidas para criar uma nova sequência numérica, por isso estou postando um passo a passo para a criação.
1- Primeiro criei um ExtendedDataType MyNumberSequence.
2- Depois criei uma tabela chamada MyTable, para servir de exemplo e adicionei o ExtendedDataType que será nosso campo sequencial.
3- No nosso caso vamos criar uma sequência numérica para o módulo de Contas à Receber, então na classe NumberSeqReference_Customer vamos alterar o método loadModule() e adicionar o seguinte trecho de código:
- if (isConfigurationkeyEnabled(configurationkeynum(MyConfigKey))
- {
- numRef.DataTypeId = typeId2ExtendedTypeId(typeid(MyNumberSequence)); //Nome do EDT
- numRef.ConfigurationKeyId = configurationkeynum(MyConfigKey); //Nome da ConfigKey
- numRef.ReferenceLabel = literalstr("Nome q aparece na tela de parâmetros para atribuir a sequencia");
- numRef.ReferenceHelp = literalstr("Nova Sequência");
- numRef.WizardContinuous = true;
- numRef.WizardManual = NoYes::No;
- numRef.WizardAllowChangeDown = NoYes::No;
- numRef.WizardAllowChangeUp = NoYes::No;
- numRef.SortField = 20; //Muito importante, respeitar a sequencia do método
- numRef.WizardHighest = 999999;
- this.create(numRef);
- }
Obs.: Como já adicionei em comentário no método é muito importante respeitar a senquencia do método, e para esse caso criei também uma ConfigurantionKey para controle de segurança.
4- Agora vamos criar um método na SalesParameters (pois estamos criando a sequência no módulo de Contas à Receber)
- static client server NumberSequenceReference numRefMyNumberSequence()
- {
- ;
- return NumberSeqReference::findReference(typeId2ExtendedTypeId(typeid(MyNumberSequence))); //Nome do seu EDT
- }
Básico - Configurações - Sequências Numéricas - Sequências Numéricas
6- Agora vamos atribuir a sequência numérica criada ao nosso formulário no caminho:
Contas à Receber - Configurações - Parâmetros, na aba Sequências Numéricas
7- Agora vamos criar um formulário customizado utilizando nossa tabela, declarar uma variável global:
- public class FormRun extends ObjectRun
- {
- NumberSeqFormHandler numberSeqFormHandler;
- }
- NumberSeqFormHandler numberSeqFormHandler()
- {
- if (!numberSeqFormHandler)
- {
- numberSeqFormHandler = numberSeqFormHandler::newForm(SalesParameters::numRefMyNumberSequence().NumberSequence, element, MyTable_DS, fieldNum(MyTable, MyNumberSequence));
- }
- return numberSeqFormHandler;
- }
- public void create(boolean _append = false, boolean extern = false)
- {
- ;
- element.numberSeqFormHandler().formMethodDataSourceCreatePre();
- super(_append);
- if(!extern)
- {
- element.numberSeqFormHandler().formMethodDataSourceCreate();
- }
- }
- public void write()
- {
- ttsbegin;
- element.numberSeqFormHandler().formMethodDataSourceWrite();
- super();
- ttscommit;
- }
- public void delete()
- {
- element.numberSeqFormHandler().formMethodDataSourceDelete();
- super();
- }
[]'s
Alexssander
perfeito!
ResponderExcluirCara quebrei a cabeça aqui um tempão
peguei este tutorial/explicação
acho que para fazer dinovo nem preciso dele...
Muito Obrigado , foi de muita ajuda!
Muitíssimo obrigado! Salvou minha vida e me poupou várias horas de pesquisa, este seu tutorial!
ResponderExcluir