Fórum
Ver pergunta

Motores de Integração – Erro C# – Composições/Decomposições   

33 visualizações
0
0

Bom dia, após atualização do primavera para a ultima versão, os motores de integração no que diz respeito as composições deixou de funcionar, aparentemente nao está a ler as casas decimais de uma listview o que provoca falta de stock:

 

InvBEDocumentoComposicao objComposition = new InvBEDocumentoComposicao()
                          {
                              Tipodoc = "COM",
                              Serie = datamomento.Year.ToString(),
                              Data = datamomento.AddMinutes(1),
                              Utilizador = "",                              
                          };

                          PriEngine.Engine.Inventario.Composicoes.PreencheDadosRelacionados(objComposition);

                          if (componentsLines == null)
                              componentsLines = new List<ComponentsLines>();
                          double.TryParse(item.SubItems[7].Text, NumberStyles.Any, new CultureInfo("pt-PT"), out double quantidadeComposto);
                          double.TryParse(item.SubItems[10].Text, NumberStyles.Any, new CultureInfo("pt-PT"), out double precoUnitarioComposto);

                          var newComponentLine = new ComponentsLines()
                          {
                              Index = 0,
                              LinhaComposto = new InvBELinhaComposto()
                              {
                                  Artigo = item.SubItems[5].Text,
                                  Armazem = "PROD",
                                  Descricao = item.SubItems[6].Text,
                                  Quantidade = quantidadeComposto,
                                  PrecUnit = precoUnitarioComposto,
                                  INV_EstadoDestino = "DISP",
                                  Lote = "",
                              }
                          };
          
                          componentsLines.Add(newComponentLine);

                          foreach (ListViewItem componente in lstcomponentes.Items)
                          {
                              double.TryParse(componente.SubItems[2].Text, NumberStyles.Any, new CultureInfo("pt-PT"), out double qtdartigo);
                              double.TryParse(componente.SubItems[4].Text, NumberStyles.Any, new CultureInfo("pt-PT"), out double precounitariolinha);

                              newComponentLine.LinhaComposto.LinhasComponentes.Add(new InvBELinhaComponente()
                              {
                                  Artigo = componente.SubItems[0].Text,
                                  Descricao = componente.SubItems[1].Text,
                                  Armazem = "PROD",
                                  Localizacao = "PROD",
                                  Unidade = componente.SubItems[3].Text,
                                  Quantidade = qtdartigo,
                                  PrecUnit = precounitariolinha,
                                  INV_EstadoOrigem = "DISP",
                                  Lote = "",
                                
                              });                         
                          }

                          foreach (var lines in componentsLines)
                          {
                          
                              objComposition.LinhasCompostos.Insere(lines.LinhaComposto);
                          }
                          // Creates the Compositions/Breakdowns document.
                          PriEngine.Engine.Inventario.Composicoes.Actualiza(objComposition, ref errors);

O Debug diz que não tem stock nos componentes do composto, mas na realidade não está a ler as casas decimais apesar da variavel ser do tipo double conforme requisitado.

Alguem sabe como ultrapassar esta situação?

Obrigado.

 

Faça login para poder traduzir
Integração
V10
Geral
Marcado como spam
Criado há 1 mês e 4 dias pedrobaptista
p
pedrobaptista Iniciante
2 respostas
0
Resposta privada

Bom dia Pedro,

Tente:

double.Parse(valorstring, System.Globalization.CultureInfo.InvariantCulture);

O seu problema é no tratamento do separador das casas decimais

Faça login para poder traduzir
Marcado como spam
Criado há 3 semanas e 4 dias nunovidalsoares
n
nunovidalsoares Responsiveness Member
    0
    Resposta privada

    Ninguém consegue ajudar?

    Obrigado

    Faça login para poder traduzir
    Marcado como spam
    Criado há 4 semanas e 14 horas pedrobaptista
    p
    pedrobaptista Iniciante