Exemplo n.º 1
0
 public static PrePurchOrderLineViewModel ParseToViewModel(this LinhasPreEncomenda item)
 {
     if (item != null)
     {
         return(new PrePurchOrderLineViewModel()
         {
             PrePurchOrderNo = item.NºPreEncomenda,
             PrePurchOrderLineNo = item.NºLinhaPreEncomenda,
             RequisitionNo = item.NºRequisição,
             RequisitionLineNo = item.NºLinhaRequisição,
             ProductCode = item.CódigoProduto,
             ProductDescription = item.DescriçãoProduto,
             UnitOfMeasureCode = item.CódigoUnidadeMedida,
             LocationCode = item.CódigoLocalização,
             QuantityAvailable = item.QuantidadeDisponibilizada,
             UnitCost = item.CustoUnitário,
             ProjectNo = item.NºProjeto,
             RegionCode = item.CódigoRegião,
             FunctionalAreaCode = item.CódigoÁreaFuncional,
             CenterResponsibilityCode = item.CódigoCentroResponsabilidade,
             CreateDateTime = item.DataHoraCriação,
             CreateUser = item.UtilizadorCriação,
             UpdateDateTime = item.DataHoraModificação,
             UpdateUser = item.UtilizadorModificação,
             SupplierNo = item.NºFornecedor,
         });
     }
     return(null);
 }
Exemplo n.º 2
0
        public JsonResult GetLinhasPreEncomendaDetails([FromBody] LinhasPreEncomendaView data)
        {
            try
            {
                if (data != null)
                {
                    LinhasPreEncomenda Linhas = DBEncomendas.GetLinhasPreEncomenda(data.NumLinhaPreEncomenda);

                    if (Linhas != null)
                    {
                        LinhasPreEncomendaView linhasView = DBEncomendas.CastLinhasPreEncomendaToView(Linhas);
                        linhasView.NomeFornecedor_Show = DBNAV2017Supplier.GetAll(_config.NAVDatabaseName, _config.NAVCompanyName, linhasView.NumFornecedor).Count > 0 ? DBNAV2017Supplier.GetAll(_config.NAVDatabaseName, _config.NAVCompanyName, linhasView.NumFornecedor).FirstOrDefault().Name : string.Empty;
                        return(Json(linhasView));
                    }

                    return(Json(new LinhasPreEncomendaView()));
                }
            }
            catch (Exception e)
            {
                return(null);
            }

            return(Json(false));
        }
Exemplo n.º 3
0
        public static LinhasPreEncomenda CastLinhasPreEncomendaToDB(LinhasPreEncomendaView ObjectToTransform)
        {
            string _fornecedor = string.Empty;

            LinhasPreEncomenda linha = new LinhasPreEncomenda()
            {
                CódigoÁreaFuncional          = ObjectToTransform.CodigoAreaFuncional,
                CódigoCentroResponsabilidade = ObjectToTransform.CodigoCentroResponsabilidade,
                CódigoLocalização            = ObjectToTransform.CodigoLocalizacao,
                CódigoProduto             = ObjectToTransform.CodigoProduto,
                CódigoRegião              = ObjectToTransform.CodigoRegiao,
                CódigoUnidadeMedida       = ObjectToTransform.CodigoUnidadeMedida,
                CustoUnitário             = ObjectToTransform.CustoUnitario,
                DataHoraCriação           = ObjectToTransform.DataHoraCriacao,
                DataHoraModificação       = ObjectToTransform.DataHoraModificacao,
                DescriçãoProduto          = ObjectToTransform.DescricaoProduto,
                NºFornecedor              = ObjectToTransform.NumFornecedor,
                NºLinhaPreEncomenda       = ObjectToTransform.NumLinhaPreEncomenda,
                NºLinhaRequisição         = ObjectToTransform.NumLinhaRequisicao,
                NºPreEncomenda            = ObjectToTransform.NumPreEncomenda,
                NºProjeto                 = ObjectToTransform.NumProjeto,
                NºRequisição              = ObjectToTransform.NumRequisicao,
                QuantidadeDisponibilizada = ObjectToTransform.QuantidadeDisponibilizada,
                UtilizadorCriação         = ObjectToTransform.UtilizadorCriacao,
                UtilizadorModificação     = ObjectToTransform.UtilizadorModificacao,
                DocumentoACriar           = ObjectToTransform.DocumentoACriar,
                CriarDocumento            = ObjectToTransform.CriarDocumento,
                NºEncomendaAberto         = ObjectToTransform.NumEncomendaAberto,
                NºLinhaEncomendaAberto    = ObjectToTransform.NumLinhaEncomendaAberto,
                Tratada = ObjectToTransform.Tratada
            };

            return(linha);
        }
Exemplo n.º 4
0
        public JsonResult UpdateLinha([FromBody] LinhasPreEncomendaView Linha)
        {
            ErrorHandler result = new ErrorHandler
            {
                eReasonCode = 0,
                eMessage    = "Fornecedor actualizado com sucesso."
            };

            try
            {
                if (Linha != null && Linha.NumFornecedor != string.Empty)
                {
                    UserAccessesViewModel UPerm = DBUserAccesses.GetByUserAreaFunctionality(User.Identity.Name, Enumerations.Features.PréEncomendas);
                    if (UPerm.Update == true)
                    {
                        LinhasPreEncomenda LinhaPreEncomenda = DBEncomendas.GetLinhasPreEncomenda(Linha.NumLinhaPreEncomenda);

                        LinhaPreEncomenda.NºFornecedor          = Linha.NumFornecedor;
                        LinhaPreEncomenda.DataHoraModificação   = DateTime.Now;
                        LinhaPreEncomenda.UtilizadorModificação = User.Identity.Name;

                        if (DBEncomendas.Update(LinhaPreEncomenda) == null)
                        {
                            result.eReasonCode = 3;
                            result.eMessage    = "Ocorreu um erro ao atualizar o registo.";
                        }
                    }
                    else
                    {
                        result.eReasonCode = 2;
                        result.eMessage    = "Não tem permissões para alterar o registo.";
                    }
                }
                else
                {
                    result.eReasonCode = 1;
                    result.eMessage    = "Não foi possivel ler o registo.";
                }

                return(Json(result));
            }
            catch (Exception ex)
            {
                result.eReasonCode = 99;
                result.eMessage    = "Ocorreu um erro.";
            }
            return(Json(null));
        }
Exemplo n.º 5
0
 public static bool Delete(LinhasPreEncomenda item)
 {
     try
     {
         using (var ctx = new SuchDBContext())
         {
             ctx.LinhasPreEncomenda.Remove(item);
             ctx.SaveChanges();
         }
         return(true);
     }
     catch
     {
         return(false);
     }
 }
Exemplo n.º 6
0
 public static LinhasPreEncomenda Create(LinhasPreEncomenda item)
 {
     try
     {
         using (var ctx = new SuchDBContext())
         {
             item.DataHoraCriação = DateTime.Now;
             ctx.LinhasPreEncomenda.Add(item);
             ctx.SaveChanges();
         }
         return(item);
     }
     catch
     {
         return(null);
     }
 }
Exemplo n.º 7
0
        public static LinhasPreEncomenda Update(LinhasPreEncomenda ObjectToUpdate)
        {
            try
            {
                using (var ctx = new SuchDBContext())
                {
                    ctx.LinhasPreEncomenda.Update(ObjectToUpdate);
                    ctx.SaveChanges();
                }

                return(ObjectToUpdate);
            }
            catch (Exception e)
            {
                return(null);
            }
        }
Exemplo n.º 8
0
        public static LinhasPreEncomendaView CastLinhasPreEncomendaToView(LinhasPreEncomenda ObjectToTransform)
        {
            string _fornecedor = string.Empty;

            LinhasPreEncomendaView view = new LinhasPreEncomendaView()
            {
                CodigoAreaFuncional          = ObjectToTransform.CódigoÁreaFuncional,
                CodigoCentroResponsabilidade = ObjectToTransform.CódigoCentroResponsabilidade,
                CodigoLocalizacao            = ObjectToTransform.CódigoLocalização,
                CodigoProduto             = ObjectToTransform.CódigoProduto,
                CodigoRegiao              = ObjectToTransform.CódigoRegião,
                CodigoUnidadeMedida       = ObjectToTransform.CódigoUnidadeMedida,
                CustoUnitario             = ObjectToTransform.CustoUnitário,
                DataHoraCriacao           = ObjectToTransform.DataHoraCriação,
                DataHoraModificacao       = ObjectToTransform.DataHoraModificação,
                DescricaoProduto          = ObjectToTransform.DescriçãoProduto,
                NumFornecedor             = ObjectToTransform.NºFornecedor,
                NumLinhaPreEncomenda      = ObjectToTransform.NºLinhaPreEncomenda,
                NumLinhaRequisicao        = ObjectToTransform.NºLinhaRequisição,
                NumPreEncomenda           = ObjectToTransform.NºPreEncomenda,
                NumProjeto                = ObjectToTransform.NºProjeto,
                NumRequisicao             = ObjectToTransform.NºRequisição,
                QuantidadeDisponibilizada = ObjectToTransform.QuantidadeDisponibilizada,
                UtilizadorCriacao         = ObjectToTransform.UtilizadorCriação,
                UtilizadorModificacao     = ObjectToTransform.UtilizadorModificação,
                DocumentoACriar           = ObjectToTransform.DocumentoACriar,
                CriarDocumento            = ObjectToTransform.CriarDocumento == null ? false : (bool)ObjectToTransform.CriarDocumento,
                NumEncomendaAberto        = ObjectToTransform.NºEncomendaAberto,
                NumLinhaEncomendaAberto   = ObjectToTransform.NºLinhaEncomendaAberto,
                Tratada = ObjectToTransform.Tratada == null ? false : (bool)ObjectToTransform.Tratada,
                DataHoraCriacao_Show     = ObjectToTransform.DataHoraCriação == null ? "" : ObjectToTransform.DataHoraCriação.Value.ToString("yyyy-MM-dd"),
                DataHoraModificacao_Show = ObjectToTransform.DataHoraModificação == null ? "" : ObjectToTransform.DataHoraModificação.Value.ToString("yyyy-MM-dd"),
                NomeFornecedor_Show      = _fornecedor,
                DocumentoACriar_Show     = ObjectToTransform.DocumentoACriar == null ? "" : ObjectToTransform.DocumentoACriar == 0 ? "Consulta Mercado" : "Encomenda"
            };

            return(view);
        }
Exemplo n.º 9
0
        public JsonResult CriarEncomendaCabimento([FromBody] List <LinhasPreEncomendaView> item)
        {
            //if (item != null)
            //{
            //    try
            //    {
            //        RequisitionService serv = new RequisitionService(configws, HttpContext.User.Identity.Name);
            //        item = serv.CreatePurchaseOrderFor(item);


            //    }
            //    catch (Exception ex)
            //    {
            //        item.eReasonCode = 2;
            //        item.eMessage = "Ocorreu um erro ao criar encomenda de compra (" + ex.Message + ")";
            //    }
            //}
            //else
            //{
            //    item = new LinhasPreEncomendaView()
            //    {
            //        eReasonCode = 3,
            //        eMessage = "Não é possivel criar encomenda de compra. A requisição não pode ser nula."
            //    };
            //}
            //return Json(item);



            /*
             * 1º - filtrar os itens que chegam aqui, ficando apenas com os que são:
             *  --> Documento a Criar = Encomenda (1)
             *  --> Criar Documento = true
             *  --> Nº Encomenda Aberto = ''
             *  --> Nº Linha Encomenda Aberto = ''
             * 2º - Criar Encomenda
             * 3º - As linhas da Requisição devem ficar marcadas  com o Nº da Encomenda criada (cada item tem um Nº Linha Requisição)
             * 4º - Colocar as linhas com Tratadas = 1
             */

            ErrorHandler resultado = new ErrorHandler
            {
                eReasonCode = 1,
                eMessage    = "Criada Encomenda com sucesso."
            };

            if (item != null)
            {
                try
                {
                    List <LinhasPreEncomendaView> list = item.Where(it => it.DocumentoACriar == 1).Where(it => it.CriarDocumento == true).Where(it => it.NumEncomendaAberto == string.Empty).Where(it => !it.NumLinhaEncomendaAberto.HasValue).ToList();

                    List <PurchOrderDTO> purchOrders = new List <PurchOrderDTO>();

                    try
                    {
                        if (list != null && list.Count() > 0)
                        {
                            purchOrders = list.GroupBy(x =>
                                                       x.NumFornecedor,
                                                       x => x,
                                                       (key, items) => new PurchOrderDTO
                            {
                                SupplierId               = key,
                                RequisitionId            = list.Where(f => f.NumFornecedor == key).FirstOrDefault().NumRequisicao,
                                CenterResponsibilityCode = list.Where(f => f.NumFornecedor == key).FirstOrDefault().CodigoCentroResponsabilidade,
                                FunctionalAreaCode       = list.Where(f => f.NumFornecedor == key).FirstOrDefault().CodigoAreaFuncional,
                                RegionCode               = list.Where(f => f.NumFornecedor == key).FirstOrDefault().CodigoRegiao,
                                LocalMarketRegion        = list.Where(f => f.NumFornecedor == key).FirstOrDefault().CodigoLocalizacao,
                                Lines = items.Select(line => new PurchOrderLineDTO()
                                {
                                    LineId                   = line.NumLinhaPreEncomenda,
                                    Type                     = null,
                                    Code                     = line.CodigoProduto,
                                    Description              = line.DescricaoProduto,
                                    ProjectNo                = line.NumProjeto,
                                    QuantityRequired         = line.QuantidadeDisponibilizada,
                                    UnitCost                 = line.CustoUnitario,
                                    LocationCode             = line.CodigoLocalizacao,
                                    OpenOrderNo              = line.NumEncomendaAberto,
                                    OpenOrderLineNo          = line.NumLinhaEncomendaAberto,
                                    CenterResponsibilityCode = line.CodigoCentroResponsabilidade,
                                    FunctionalAreaCode       = line.CodigoAreaFuncional,
                                    RegionCode               = line.CodigoRegiao,
                                    UnitMeasureCode          = line.CodigoUnidadeMedida,
                                    VATBusinessPostingGroup  = string.Empty,
                                    VATProductPostingGroup   = string.Empty,
                                }).ToList()
                            }).ToList();
                        }
                    }
                    catch
                    {
                        throw new Exception("Ocorreu um erro ao agrupar as linhas.");
                    }

                    if (purchOrders != null && purchOrders.Count() > 0)
                    {
                        purchOrders.ForEach(purchOrder =>
                        {
                            RequisitionViewModel requisition = DBRequest.GetById(purchOrder.RequisitionId).ParseToViewModel();

                            try
                            {
                                //purchOrder.Purchaser_Code = User.Identity.Name;
                                purchOrder.Purchaser_Code = string.IsNullOrEmpty(DBUserConfigurations.GetById(User.Identity.Name).EmployeeNo) ? "" : DBUserConfigurations.GetById(User.Identity.Name).EmployeeNo;

                                var result = CreateNAVPurchaseOrderFor(purchOrder, Convert.ToDateTime(requisition.ReceivedDate));
                                if (result.CompletedSuccessfully)
                                {
                                    foreach (PurchOrderLineDTO Linha in purchOrder.Lines)
                                    {
                                        LinhasPreEncomenda LinhaPre = DBEncomendas.GetLinhasPreEncomenda((int)Linha.LineId);

                                        if (LinhaPre != null)
                                        {
                                            string ReqNo   = LinhaPre.NºRequisição;
                                            int ReqNoLinha = (int)LinhaPre.NºLinhaRequisição;

                                            Requisição Req = DBRequest.GetById(ReqNo);
                                            if (Req != null)
                                            {
                                                Req.NºEncomenda           = result.ResultValue;
                                                Req.UtilizadorModificação = User.Identity.Name;
                                                Req.DataHoraModificação   = DateTime.Now;
                                                if (DBRequest.Update(Req) != null)
                                                {
                                                    LinhasRequisição ReqLinha = DBRequestLine.GetByRequisicaoNoAndLineNo(ReqNo, ReqNoLinha);
                                                    if (ReqLinha != null)
                                                    {
                                                        ReqLinha.NºEncomendaCriada     = result.ResultValue;
                                                        ReqLinha.UtilizadorModificação = User.Identity.Name;
                                                        ReqLinha.DataHoraModificação   = DateTime.Now;
                                                        DBRequestLine.Update(ReqLinha);
                                                    }
                                                }
                                            }
                                        }
                                    }

                                    foreach (LinhasPreEncomendaView Linha in list)
                                    {
                                        if (Linha.NumFornecedor == purchOrder.SupplierId)
                                        {
                                            Linha.NumPreEncomenda       = result.ResultValue;
                                            Linha.DocumentoACriar       = null;
                                            Linha.CriarDocumento        = false;
                                            Linha.Tratada               = true;
                                            Linha.UtilizadorModificacao = User.Identity.Name;
                                            Linha.DataHoraModificacao   = DateTime.Now;
                                            DBEncomendas.Update(DBEncomendas.CastLinhasPreEncomendaToDB(Linha));
                                        }
                                    }

                                    resultado.eMessages.Add(new TraceInformation(TraceType.Success, "Criada encomenda para o fornecedor núm. " + purchOrder.SupplierId + "; "));

                                    //Update req
                                    //requisition.OrderNo = result.ResultValue;

                                    //Update Requisition Lines
                                    //requisition.Lines.Where(x => x.LineNo == purchOrder.OpenOrderLineNo).ToList().ForEach(line =>
                                    //{
                                    //    line.CreatedOrderNo = result.ResultValue;
                                    //    line.UpdateUser = User.Identity.Name;
                                    //    line.UpdateDateTime = DateTime.Now;
                                    //});
                                    //Commit to DB
                                    //var updatedReq = DBRequest.Update(requisition.ParseToDB(), true);



                                    //bool linesUpdated = DBRequestLine.Update(requisition.Lines.ParseToDB());
                                    //if (linesUpdated)
                                    //if (updatedReq != null)
                                    //{
                                    //    resultado.eMessages.Add(new TraceInformation(TraceType.Success, "Criada encomenda para o fornecedor núm. " + purchOrder.SupplierId + "; "));
                                    //}
                                }
                            }
                            catch (Exception ex)
                            {
                                resultado.eMessages.Add(new TraceInformation(TraceType.Error, "Ocorreu um erro ao criar encomenda para o fornecedor núm. " + purchOrder.SupplierId + "; "));
                                resultado.eMessages.Add(new TraceInformation(TraceType.Exception, purchOrder.SupplierId + " " + ex.Message));
                            }

                            if (resultado.eMessages.Any(x => x.Type == TraceType.Error))
                            {
                                resultado.eReasonCode = 2;
                                //resultado.eMessage = "Ocorreram erros ao criar encomenda de compra.";

                                resultado.eMessage = "Ocorreram erros ao criar encomenda de compra." + Environment.NewLine + resultado.eMessages[resultado.eMessages.Count() - 1].Message;
                            }
                            else
                            {
                                resultado.eReasonCode = 1;
                                resultado.eMessage    = "Encomenda de compra criada com sucesso.";
                            }
                        });
                    }
                    else
                    {
                        resultado.eReasonCode = 3;
                        resultado.eMessage    = "Não existem linhas que cumpram os requisitos de validação do mercado local.";
                    }
                }
                catch (Exception ex)
                {
                    resultado.eReasonCode = -1;
                    resultado.eMessage    = "Erro desconhecido.";
                }
            }

            return(Json(resultado));
        }