What is intended is to create a stock composition document via engines, but specifying which are the components and not using the ones in the product datasheet. I am using the code below but the document is created, the composite article goes into stock but the document runs out of components. What's wrong ? Is there any other way to do this without having to specify all the fields of the component lines?
GcpBELinhasDocumentoStock novasLinhasComponentes = new GcpBELinhasDocumentoStock();
GcpBELinhaDocumentoStock linhaComponentes ;
int x = 10001;
foreach (Componente item in composicaoMadeira.Componentes)
{
armazem = MotorPrimavera.Motor.Comercial.Artigos.DaValorAtributo(item.CodArtigo, "ArmazemSugestao").ToString();
linhaComponentes = new GcpBELinhaDocumentoStock();
linhaComponentes.set_IdLinha(MotorPrimavera.Plataforma.FuncoesGlobais.CriaGuid(false));
linhaComponentes.set_Artigo(item.CodArtigo);
linhaComponentes.set_Quantidade(item.Quantidade);
linhaComponentes.set_FactorConv(1);
linhaComponentes.set_Lote(item.Lote);
linhaComponentes.set_Armazem(armazem);
linhaComponentes.set_Localizacao(armazem);
linhaComponentes.set_DataStock(doc.get_DataDoc());
linhaComponentes.set_TipoLinha("13");
linhaComponentes.set_EntradaSaida("S");
linhaComponentes.set_NumLinha(x);
x++;
linhaComponentes.set_NumLinComposto(1);
linhaComponentes.set_Unidade(MotorPrimavera.Motor.Comercial.Artigos.DaValorAtributo(item.CodArtigo, "UnidadeBase").ToString());
novasLinhasComponentes.Insere(linhaComponentes);
}
doc.get_Linhas().OfType<GcpBELinhaDocumentoStock>().First().set_Linhas(novasLinhasComponentes);
MotorPrimavera.Motor.Comercial.Stocks.Actualiza(doc);