♥ 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 |