♥ 0 | Boas, Estou com um problema ao fazer uma reserva de lote pelos motores para a matéria prima de uma Ordem Fabrico. O código que estou a fazer é o seguinte: InvBEReserva reserva = new InvBEReserva(); InvBELinhasReserva objLinhasReserva = new InvBELinhasReserva(); InvBELinhaReserva objLinhaReserva = new InvBELinhaReserva(); BasBEArtigo artigoMatPrima = bso.Base.Artigos.Edita(matPrima); objLinhaReserva.Lote = GetLote(chapa, matPrima); objLinhaReserva.IdChaveDestino = GetIdChaveDestino(matPrima, idOrdemFabrico); objLinhaReserva.ReservadoPor = InvBETipos.EnumReservadoPor.Destino; objLinhaReserva.TipoDocDestino = "OF"; objLinhaReserva.Quantidade = quantidade; objLinhaReserva.Artigo = matPrima; objLinhaReserva.EstadoOrigem = "DISP"; objLinhaReserva.EstadoDestino = "RES"; objLinhaReserva.Armazem = artigoMatPrima.ArmazemSugestao; objLinhaReserva.Localizacao = artigoMatPrima.LocalizacaoSugestao; objLinhaReserva.IdTipoOrigemDestino = GetIdTipoOrigemDestino(); objLinhasReserva.Insere(objLinhaReserva); reserva.Linhas = objLinhasReserva; //reserva.Insere(objLinhaReserva); bso.Inventario.Reservas.Actualiza(reserva); Ele cria a reserva com sucesso (aparece no gestor de reservas) mas não assume no inventário do artigo a quantidade do lote como estado RESERVADO. Eu faço uma consulta de inventário do artigo e a quantidade continua toda disponivel. Estou a fazer algo de erro ou falta alguma coisa? Marcado como spam |
Comentários Experimente criar uma reserva idêntica, manualmente, através do ERP. Verifique se esta tem o mesmo problema.
Se não tiver o mesmo problema, use o método dos motores para editar a reserva criada manualmente e a reserva criada pelos motores. Compare as duas e verifique se falta alguma coisa à reserva criada pelos motores. @antniofreitas Manualmente funciona. Comparei pelos motores como sugeriu e aparenta estar tudo igual exceto o campo DescricaoDestino, mas não parece que seja disso (pelo menos não faz sentido ser).
Editado: Entretanto testei com a descrição a preencher e continua a não funcionar. Infelizmente, não estou familiarizado com este "módulo", por isso não consigo ajudar melhor... Talvez valha a pena conferir as tabelas na BD que registam reservas e comparar a reserva feita manualmente com a da API. Pode ir mais longe e fazer um SQL Server Profiler para comparar a criação das reservas usando os dois métodos... Boa tarde @brunooliveira, chegaste a alguma resolução deste problema? Como ultrapassaste? |
Resposta privada Aqui vai um exemplo public void InsereVEndas_reservas() var doc = new VndBE100.VndBEDocumentoVenda() BSO.Vendas.Documentos.PreencheDadosRelacionados(doc); BSO.Vendas.Documentos.AdicionaLinha(doc, "A0001"); var linha = doc.Linhas.GetEdita(1); /* Preenchimento manual linha.ReservaStock = new InvBEReserva BSO.Vendas.Documentos.Actualiza(doc, ref avisos); }
//Anular uma reserva BSO.Inventario.Reservas.AnularReserva("ID"); Marcado como spam |