E agora ? Customizacao..


#1

Bom, eu criei um callout, q necessito, coloquei na pasta extend no package extend.model.
E porque mesmo executando pelo fonte, ele nao encontra a nova classe? (Será pq tenho adempiere instalado e ele pega as config de la…? )
So que gostaria saber como que eu faço pra construir um customization (eu criei um utilizando o FATJAR) mas nao sei se criei corretamente. E após substituir na pasta adempiere_home/lib. O q eu tenho que executar? O Run_UPdate? Estou usando conjunto com adempierelbr.

[]'s

Fernando


#2

algumas dicas…

crie um projeto novo no eclipse, para suas próprias customizações…

a estrutura ficaria assim:
ADempiere Trunk -> ADempiereLBR -> Customização

O path da Customização iria “herdar” os projetos ADempiere Trunk e o ADempiereLBR, assim vc fica bem livre, dos outros projetos,e fica fácil fazer a migração para atualizações.

Agora, se vc estiver criando os arquivos direto no fonte do adempiere ou do adempierelbr, não tem problema.

Sobre a Callout, como vc está colocando a informação na coluna do bd? um exemplo é a callout de impostos do adempierelbr

na coluna M_Product_ID (C_OrderLine), está assim “org.adempierelbr.callout.CalloutTax.getTaxes”, observer que vc precisa colocar o caminho completo da classe, e qual o método a ser executado.

Para a geração do customization.jar, se vc estiver gerando o do AdempiereLBR, vc precisa exportar o projeto + as libs, dê uma olhada no manual de instalação, lá tem um printscreen com as libs (acho q vc deve marcar até o bshxxx)

depois de gerado o customization.jar, só colocar na pasta adempiere/lib, e executar o RUN_setup para fazer a assinatura do novo jar, e pronto, vc está com o client atualizado com as suas customizações

sds, Mario


#3

Vlws, bom, a título, criei um projeto separado , realmente é bem melhor.
Gerar o customization, estava faltando acrescentar os Projetos (apesar q no manual não fala deles). No caso tiver que adicionar apenas o do adempierelbr.

Algumas dúvida em relação as validações. Aonde que eu cito em qual tabela eu desejo adicionar uma validacao, no meu caso na ProjectLine. O nome da classe tem que ser correspondente a tabela que se deseja adicionar a validacao ? Tipo C_ProjectTask… ValidatorProjectTask ?

Ou não importa o nome da classe desde que estenda ModelValidator e no método initialize eu adicione a linha:

engine.addModelChange(MProjectTask.Table_Name, this);

E no adempiere onde eu adiciono essa validacao? Pq nao achei campos ModelValidator, apenas na configuracao da Empresa xT
E tem outro ModelValidator no dicionario de aplicacoes do System. (Alguem já utilizou aquele RULE OU Regras de Validacao utilizando linguagem java… alguem tem uma idéia de qual padronizacao eh exigida ali?)

Obrigado

[]'s

Fernando.


#4

Vi q eu adiciono o caminho + classe, no cliente onde eu desejo que as validações acontecam.

mas ainda não intendi direito os métodos modelChange e docValidate. Pelo que vi ModelChange é acionado depois de PO.beforeSave/Po.beforeDelete eu faço um add na tabela. Tanto que verifico qual tabela que está sendo modificada.
Eu quero validacao ocorra na Projecttask , aqui ta uma coisa simples q to apenas tentando, ver que o método realmente é chamdo (mas o que nao anda acontecendo).

Eu vi que a classe é realmente instanciada tbm.

public String modelChange(PO po, int type) throws Exception {
// TODO Auto-generated method stub
if (po.get_TableName().equals(“C_Projecttask”)
&& (type == TYPE_BEFORE_CHANGE || type == TYPE_BEFORE_NEW)) {
System.out.println(“SALVANDOOO”);

	}  
        log.info(po.toString());
       return null;

}

Algo de errado ? Olhei tanto algumas classes do adempierelbr, quando o MyValidator quanto a interface ModelValidator…

Tenho que ter métodos beforeSave (algo do tipo) na tabela MProjetcTask ? apesar que acho q não tem nda a ve, mas não custa perguntar.

Não encontrei nenhum erro mas não sei porque “nda” acontece.


#5

o beforeSave, afterSave, beforeComplete, beforePrepare e outros são extendidos da classe PO, ou seja, todos os objetos do Adempiere possuem estes métodos.

o que pode ser, é o nome da tabela, tente o equalsIgnoreCase, pois acho que o nome correto da tabela é C_ProjectTask

de uma olhada na interface ModelValidator, lá existem todos os “tempos” que o validator pode ser executado, dai vc deve definir qual a melhor hora para realizar a validação

ModelChange - executada quando vc salva, altera, exclui registro
DocValidate - quando vc processa algum documento, complete, prepare, void, revert

sds, Mario


#6

É eu cheguei a colocar o metodo equalsIgnoreCase, tinha verificado jah nome da tabela. Vo da uma estudada melhor na classe ModelValidator.
Apesar que a idéia era validar quando inseri-se um novo registro.
Testar em outras tabelas…

Obrigado

[]'s


#7

Bom depois de comparar linha por linha as classes de validacao. Achei o “porque nda acontecia”.
Estava no método initialize. Que eu nao sei porque tinha apagado a linha
Alguem um dia tiver mesmo problema (que acho bem dificil).

m_AD_Client_ID = client.getAD_Client_ID();

e o meu public int getAD_Client_ID() tava retornando 0

Isso pq implementar as classes que faltavam, e as nao olhei.

Realmente não intendo a importancia dela, ja que nao a utilizo em nenhum lugar. Nao sei se nos "logs"da vida… é usado (dps olho com calma). Mas o erro estava na falta desta.

[]'s

Vlws mgrigioni


#8

Aproveitando o tópico…

Fiz as minhas customizações, gerei meu customization.jar só que vi que já existe um pro AdempiereLBR, então preciso gerar outro incluindo as customizações do LBR. Na hora que vou gerar o customization.jar dentro do Eclipse, o que eu preciso incluir do AdempiereLBR?

[attachment=0]Picture 1.png[/attachment]


#9

Gustavo, é outro projeto no eclipse?

eu recomendo utilizar o build fat jar para fazer o export (não sei c dá para fazer isso com export padrão do eclipse), pois vc pode selecionar as suas customizações e os projetos pais… ou seja, no export do seu projeto vc seleciona o adempierelbr, o seu projeto e as libs do adempierelbr e as suas c vc estiver utlizando alguma