| ♥ 0 | Bom dia, Dentro do meu projecto de extensibilidade, ao gravar um artigo, preciso de realizar uma operação sobre CDUs específicos para evitar que sejam copiados quando o artigo está a ser copiado. Até aqui o meu código tem sido semelhante ao que mostro, detectando que estou em presença de um artigo novo se o código de artigo for vazio (clsArtigo.Artigo == “”): public class ApiBasBSArtigos : BasBSArtigos
{
public override void AntesDeGravar(BasBEArtigo clsArtigo, ref string strAvisos, ExtensibilityEventArgs e)
{
base.AntesDeGravar(clsArtigo, ref strAvisos, e);
if (clsArtigo.Artigo == "") //novo
{
if (clsArtigo.CamposUtil["CDU_EXEMPLO"].Valor.ToString() != "")
{
//estamos na presença de cdu copiado
clsArtigo.CamposUtil["CDU_EXEMPLO"].Valor = "";
}
}
}
}No entanto, detectei que o cliente faz o seguinte para copiar um artigo:
Neste caso, no evento “AntesDeGravar” a propriedade do código de artigo (“Artigo”) não é vazia e o meu código não detecta que se trata de um artigo novo copiado. Alguém me pode indicar qual a forma mais inequívoca e simples de detectar neste evento que o artigo é novo? Obrigado. Marked as spam |
| Private answer Olá o mais certo é usares uma propriedade que existe em todos os BE's que é "EmModeEdicao" se for novo artivo vai estar sempre a false. Marked as spam Comments Obrigado Sérgio. | |
| Private answer Para futura referência apresento exemplo com código alterado tal como referiu o @sergiosereno: public class ApiBasBSArtigos : BasBSArtigos
{
public override void AntesDeGravar(BasBEArtigo clsArtigo, ref string strAvisos, ExtensibilityEventArgs e)
{
base.AntesDeGravar(clsArtigo, ref strAvisos, e);
if (clsArtigo.EmModoEdicao==false) //novo
{
if (clsArtigo.CamposUtil["CDU_EXEMPLO"].Valor.ToString() != "")
{
//estamos na presença de cdu copiado
clsArtigo.CamposUtil["CDU_EXEMPLO"].Valor = "";
}
}
}
}
Marked as spam |