| ♥ 0 | Viva, Através de motores estou a adicionar Centros de Custo às linhas de um documento de compra. Este documento está já em rascunho na contabilidade. Após de fazer as alterações necessários, chamo o método IntegraDocumentoLogCBL, no entanto, o mesmo não actualiza os Centros de Custo adicionados por linhas na CBL.
Alguma sugestão?
Obrigado. Marcado como spam |
| Resposta privada Bom dia, Não sei se será grande ajuda mas cá vai. Ja viste se é algum parâmetro da forma como o documento é integrado? No Administrador tem um separador com parâmetros e um deles é o refresca automaticamente. Talvez possa ser isso. Já tentaste salvar o documento directo na contabilidade? Pode ser que não perca a ligação com o outro modulo. Já agora, tu consegues integrar bem os documentos de compra. Eu consigo mas o tempo que demora é excessivo. Eu segui uma outra abordagem para criar o documento exactamente porque queria ter os centros de custo e a conta da contabilidade defenida na linha do editor de compras. Cmpts
Marcado como spam Comentários Obrigado pelo teu comentário @nunodomingues! Efetivamente não há parâmetro algum para tal. Optei por remover o rascunho e lançar o documento por completo novamente.
Demora mais uns segundos após a gravação do documento na logística, mas nada de excecional.
Já agora, podes partilhar a tua abordagem para gravação direta? Utilizas as ligações à CBL definidas no Administrador? Obrigado. Bom dia
A abordagem que fiz é
var cabecDocCompra = new GcpBEDocumentoCompra();
var NewLinDocCompra = new GcpBELinhaDocumentoCompra();
var NewLinhasDocCompra = new GcpBELinhasDocumentoCompra();
Linhas de código omitidas que preenchiam os campos do objecto cabecDocCompra
PriEngine.Engine.Comercial.Compras.PreencheDadosRelacionados(cabecDocCompra) – se algum dado ficou por preencher;
Linhas de código omitidas que preenchiam os campos do objecto NewLinDocCompra (o código é um loop mas nos testes que fiz apenas testei para uma linha porque queria resolver a questão de performance primeiro)
NewLinhasDocCompra.Insere(NewLinDocCompra);
cabecDocCompra.set_Linhas(NewLinhasDocCompra);
PriEngine.Engine.Comercial.Compras.Actualiza(cabecDocCompra, ref strAvisos)
Esta abordagem é a que é mais semelhante ao VBA. No VBA temos uma função que vai adicionado linhas ao CabecDoc. Basicamente eu crio uma linha, adiciono essa linha a uma colecção de linhas e associo a colecção de linhas ao documento.
O parâmetro que te estava a dizer é utilizando o ERP ADM, ou seja, dentro do programa do Administrador tens na Logística a funcionalidade de ligação à contabilidade. Cada documento tem uma configuração para a integração e é nessa configuração que tem o refresca automaticamente.
Achei que podia ser isso.
Eu uso as ligações à CBL definidas no ADM mas não defino por artigo. Ou seja, eu não tenho um artigo para cada conta, tenho apenas alguns artigos de serviços e a conta e o centro é definido na linha do editor de compras.
O que me fez seguir esse caminho era ter de criar montes de artigos e sempre que criasse uma conta tinha de criar um novo artigo.
Assim prefiro na linha do editor de compras, colocar visível o campo da conta e dos centros de custo e classificar directamente na linha qual a conta e o centro de custo que pretendo. Depois na configuração da ligação, basta dizer que é para utilizar a conta e o centro que está definido na linha do editor de compras.
No entanto eu para gravar um documento da logística demoro quase 3 minutos. Não consigo perceber porque demora tanto tempo. Começo a achar que pode ser um problema de rede pois eu estou a lançar um documento a partir do meu computador e não a partir do servidor.
Para referencia eu tenho uma aplicação em .Net Core 3.1 e criei uma API que funciona isoladamente em .Net 4.7.1 que tem as referencias ao Iterop e que recebe comandos da minha aplicação, faz os movimentos no primavera e depois retorna uma mensagem para a aplicação. Não consegui ter tudo a funcionar no mesmo local.
Eu só uso os iterops para alterar o Primavera, para mostrar dados faço comandos de sql na base de dados.
Fica com o meu email se quiseres me enviar um mail [email protected].
Espero que ajude. Nuno, se quiseres, envias-me o projecto (ou módulo vba) para [email protected], e procedo aos testes de performance localmente. Por este lado também uso ligações à CBL, assim julgo que teremos um cenário de testes semelhante. |