Forum
See question

Como tratar dos números de serie em documento de stock?   

126 views
0
0

Olá Bom dia,

Estou a fazer um webapi do documento de stock em que transfiro stock de um armazem para outro, no entanto os números de série não aparecem no V10 ou provávelmente nem existe transferência dos números de série.

Quando vou ver a nova transferência no V10, não mostra nenhum número de série na transferência.

//inputStock é os params todos que é enviado.

InvBEDocumentoTransf docStock = new InvBEDocumentoTransf();

docStock.Tipodoc = inputStock.TipoDoc;
docStock.Serie = inputStock.Serie;
docStock.Entidade = inputStock.Entidade;
docStock.TipoEntidade = inputStock.TipoEntidade;
docStock.Data = DateTime.Now;

if(eStock.Linhas != null && eStock.Linhas.Count > 0)
{
    InvBELinhasOrigemTransf ListOrigem = new InvBELinhasOrigemTransf();

    foreach (BaseStockLinha Linha in eStock.Linhas)
    {
        BasBEArtigo artigo = _motor.PriEngine.Engine.Base.Artigos.Edita(Linha.Artigo);

        InvBELinhaOrigemTransf Origem = new InvBELinhaOrigemTransf();
        Origem.Descricao = artigo.Descricao;
        Origem.Artigo = Linha.Artigo;
        Origem.Armazem = Linha.Armazem;
        Origem.Localizacao = Linha.Localizacao;
        Origem.Quantidade = Linha.Quantidade;
        Origem.INV_EstadoOrigem = "DISP";

        if (artigo.TrataNumerosSerie)
        {
            //numero serie
            if (Linha.NumerosSerie != null && Linha.NumerosSerie.Count > 0)
            {
                BasBENumerosSerie ListNumbSerie = new BasBENumerosSerie();

                foreach (BaseSerie NumbSerie in Linha.NumerosSerie)
                {
                    ListNumbSerie.Insere(new BasBENumeroSerie
                    {
                        Manual = 1,
                        Modulo = "S",
                        NumeroSerie = NumbSerie.NumeroSerie
                    });
                }

                Origem.NumerosSerie = ListNumbSerie;
            }

            //linhas
            if (Linha.LinhaDestino != null && Linha.LinhaDestino.Count > 0)
            {
                InvBELinhasDestinoTransf ListDestino = new InvBELinhasDestinoTransf();

                foreach (BaseDestino Destino in Linha.LinhaDestino)
                {
                    InvBELinhaDestinoTransf LinhaTransferencia = new InvBELinhaDestinoTransf();
                    LinhaTransferencia.Armazem = Destino.Armazem;
                    LinhaTransferencia.Localizacao = Destino.Localizacao;
                    LinhaTransferencia.Quantidade = Destino.Quantidade;
                    LinhaTransferencia.INV_EstadoDestino = "DISP";

                    if (Destino.NumerosSerie != null && Destino.NumerosSerie.Count > 0)
                    {
                        BasBENumerosSerie ListNumbSerie = new BasBENumerosSerie();

                        foreach (BaseSerie NumbSerie in Destino.NumerosSerie)
                        {
                            StdBELista SerieId = _motor.PriEngine.Engine.Consulta($"SELECT Id FROM INV_NumerosSerie WITH (NOLOCK) WHERE Artigo LIKE '{Linha.Artigo}' AND Armazem LIKE '{Linha.Armazem}' AND Localizacao LIKE '{Linha.Localizacao}' AND NumeroSerie LIKE '{NumbSerie.NumeroSerie}'");
                            if (SerieId != null && SerieId.NumLinhas() > 0)
                            {
                                SerieId.Inicio();

                                ListNumbSerie.Insere(new BasBENumeroSerie
                                {
                                    IdNumeroSerie = SerieId.Valor("Id").ToString(),
                                    Manual = 1,
                                    Modulo = "S",
                                    NumeroSerie = NumbSerie.NumeroSerie
                                });
                            }
                        }
                        LinhaTransferencia.NumerosSerie = ListNumbSerie;
                    }
                    ListDestino.Insere(LinhaTransferencia);
                }
                Origem.LinhasDestino = ListDestino;
            }
        }
        ListOrigem.Insere(Origem);
    }
    gcpBEStock.LinhasOrigem = ListOrigem;
}

_motor.PriEngine.Engine.Inventario.Transferencias.PreencheDadosRelacionados(docStock);

string errors = string.Empty;
_motor.PriEngine.Engine.Inventario.Transferencias.Actualiza(docStock,ref errors);

 

Faça login para poder traduzir
API Endpoints
V10
Marked as spam
Created 4 years and 1 month ago jooarajo-2
j
jooarajo-2 Iniciante