Forum
See question

Extensibilidade de Motor de Compras – não edita CDU   

110 views
1
0

Estou a extender o evento “AntesDeGravar” do motor de Compras e embora consiga preencher um campo de utilizador sem erro, a edição não fica gravada. Qualquer outra propriedade editada ao mesmo tempo (ex: observacoes) fica gravada sem problemas:

namespace FZPRIMExtensibilityProject.Purchases
{
    public class ApiCmpBSCompras : CmpBSCompras
    {
        public override void AntesDeGravar(CmpBEDocumentoCompra clsDocCompra, ref string strAvisos, ref string IdDocLiqRet, ref string IdDocLiqRetGar, ExtensibilityEventArgs e)
        {
            base.AntesDeGravar(clsDocCompra, ref strAvisos, ref IdDocLiqRet, ref IdDocLiqRetGar, e);
	    clsDocCompra.CamposUtil["CDU_FZ_MOV"].Valor = ""; //esta alteração não fica gravada
	    clsDocCompra.Observacoes = "Passei aqui"; //esta alteração fica gravada 
        }
    }
}

Uma implementação idêntica nos Artigos funciona correctamente:

namespace FZPRIMExtensibilityProject.Base
{
    public class ApiBasBSArtigos : BasBSArtigos
    {
        public override void AntesDeGravar(BasBEArtigo clsArtigo, ref string strAvisos, ExtensibilityEventArgs e)
        {
            base.AntesDeGravar(clsArtigo, ref strAvisos, e);
			clsArtigo.CamposUtil["CDU_FZ_MOV"].Valor = "";
			clsArtigo.Observacoes = "Passei aqui";
        }

    }
}

 

Faça login para poder traduzir
Integration
V10
Marked as spam
Created 4 years and 4 months ago miguelganilhosantos
2 answers
0
Private answer

Olá estive a testar o cenário e funcionou correctamente.

namespace ExtensibilityProject29
{
    public class PriClass1 : CmpBSCompras
    {
        public override void AntesDeGravar(CmpBEDocumentoCompra clsDocCompra, ref string strAvisos, ref string IdDocLiqRet, ref string IdDocLiqRetGar, ExtensibilityEventArgs e)
        {
            clsDocCompra.CamposUtil["CDU_CabVar1"].Valor = "Novo valor";
            clsDocCompra.Observacoes = "Passei aqui";
        }
    }
}
Faça login para poder traduzir
Marked as spam
Created 4 years and 4 months ago sergiosereno
sergiosereno Most Valuable Professional
    Comments
    Olá Sérgio, Ao fazer a mesma implementação que tu (com o campo CDU_CabVar1) funcionou corrrectamente, mas o meu CDU teimava em não funcionar. Ao verificar a edição normal pelo editor vi que também não funcionava. Fiz várias verificações e só ao criar um novo CDU pelo administrador tudo passou a funcionar. Utilizando o SQL Profiler vi a recriação do sp ”GCP_CMP_ActualizaDocumentoCompra_Cabec” quando adicionei o novo CDU. Ficou claro que o erro era meu e residia na desactualização desse sp! Eu estava a criar todos os os CDU’s por instrucção T-SQL, criando na tabela respectiva e registando-os na tabela StdCamposVar. Pelos vistos isso não é suficiente. Qual a forma correcta na v10? Obrigado. PS: a única coisa que não consigo explicar é como funcionou nos artigos, se teoricamente procedi da mesma forma?
    4 years and 4 months ago
    miguelganilhosantos

      @miguelganilhosantos A PRIMAVERA não recomenda a criação de CDU’s desta forma. Devem utilziar sempre a criação via adminstrador. Obrigado pelo feedback.

      3 years and 3 months ago
      sergiosereno
        0
        Private answer

        @miguelganilhosantos sei que isto é um tópico bastante antigo mas passei pelo mesmo. há sítios (compras por exemplo) em que a gravação é feita via SP pelo que a tal GCP_CMP_ActualizaDocumentoCompra_Cabec. Outros sítios (artigos, movimentos cbl etc) fazem "como deve ser" ...enfim uma grande confusão e infelizmente continua a não haver um método oficial para criar CPU's, não entendo porque!

        Faça login para poder traduzir
        Marked as spam
        Created 3 years and 3 months ago jonatas
        j
        jonatas Iniciante
          Comments
          Boa tarde @jonatas, É verdade o método para criar CDU's faz alguma falta para um processo de actualização automática, no entanto, podes minimizar os problemas atendendo ao seguinte (embora sempre com intervenção humana). Sempre que tiveres criado os CDUs por SCRIPT SQL é necessário posteriormente reconstruir as dependências a estes dentro do PRIMAVERA. Para tal é necessário: » ir à zona habitual de gestão de CDUs dentro do Administrador da Plataforma PRIMAVERA. » dentro do ecrã deverás clicar com o botão do lado direito do rato sobre a treeview (para aceder ao menu de contexto) » Selecionar “Reconstruir Todas as Dependências” (que incuem osSP's do SQL Server) Se fizeres isto sempre isto nunca terás problemas. Cpts
          3 years and 3 months ago
          miguelganilhosantos
            Obrigado @miguelganilhosantos é isso memso que estou a fazer. No entanto tenho dificuldade em perceber como é que é possível criar um produto "comercial" se é sempre necessário a intervenção humana para criar um simples campo correctamente.
            3 years and 3 months ago
            jonatas
              @sergiosereno sério que não há um método para pelo menos correr a reconstrução de dependências? Como é que é suposto uma parceiro desenvolver produtos "certificados" se para criar um campo tem de ser "à martelada" na BD e depois ainda é necessário correr manualmente uma reconstrução de dependências empresa a empresa? Certamente algo básico me está aqui a falhar...
              3 years and 3 months ago
              jonatas