public List <BillingReceptionModel> GetPendingOnAreas(string userName)
        {
            UserConfigurationsViewModel userConfig = DBUserConfigurations.GetById(userName).ParseToViewModel();

            if (userConfig != null)
            {
                var billingReceptions = repo.GetPendingOnAreas(userConfig.RFPerfil, userConfig.RFFiltroArea, userConfig.RFPerfilVisualizacao);

                if (userConfig.RFPerfilVisualizacao.HasValue && userConfig.RFPerfilVisualizacao.Value == BillingReceptionUserProfiles.Tudo)
                {
                    //Apply User Dimensions Validations
                    List <AcessosDimensões> userDimensions = DBUserDimensions.GetByUserId(userName);
                    if (userDimensions.Where(x => x.Dimensão == (int)Dimensions.Region).Count() > 0)
                    {
                        billingReceptions.RemoveAll(x => !userDimensions.Any(y => y.Dimensão == (int)Dimensions.Region && y.ValorDimensão == x.CodRegiao));
                    }

                    if (userDimensions.Where(x => x.Dimensão == (int)Dimensions.ResponsabilityCenter).Count() > 0)
                    {
                        billingReceptions.RemoveAll(x => !userDimensions.Any(y => y.Dimensão == (int)Dimensions.ResponsabilityCenter && y.ValorDimensão == x.CodCentroResponsabilidade));
                    }
                }
                return(billingReceptions);
            }
            else
            {
                return(null);
            }
        }
Пример #2
0
 public static StateOfPlayViewModel ParseToViewModel(this PontosSituaçãoRq item)
 {
     if (item != null)
     {
         return(new StateOfPlayViewModel()
         {
             RequisitionNo = item.NºRequisição,
             StateOfPlayId = item.NºPedido,
             Question = item.PedidoDePontoSituação,
             QuestionDate = item.DataPedido,
             QuestionDateText = item.DataPedido == null ? "" : item.DataPedido.ToString("yyyy-MM-dd"),
             QuestionTimeText = item.DataPedido == null ? "" : item.DataPedido.ToString("HH:mm"),
             QuestionedBy = item.UtilizadorPedido,
             QuestionedByText = item.UtilizadorPedido == null ? "" : DBUserConfigurations.GetById(item.UtilizadorPedido).Nome,
             Answer = item.Resposta,
             AnswerDate = item.DataResposta,
             AnswerDateText = item.DataResposta == null ? "" : item.DataResposta.Value.ToString("yyyy-MM-dd"),
             AnswerTimeText = item.DataResposta == null ? "" : item.DataResposta.Value.ToString("HH:mm"),
             AnsweredBy = item.UtilizadorResposta,
             AnsweredByText = item.UtilizadorResposta == null ? "" : DBUserConfigurations.GetById(item.UtilizadorResposta).Nome,
             Read = item.ConfirmaçãoLeitura
                    //DimensionRegion = "",
                    //DimensionArea = "",
                    //DimensionCresp = ""
         });
     }
     return(null);
 }
        public BillingReceptionModel Create(BillingReceptionModel item)
        {
            bool autoGenId = false;
            bool isRec     = true;
            int  Cfg       = (int)DBUserConfigurations.GetById(item.CriadoPor).PerfilNumeraçãoRecDocCompras;

            item.DataCriacao       = DateTime.Now;
            item.IdAreaPendente    = (int)BillingReceptionAreas.Contabilidade;
            item.AreaPendente      = BillingReceptionAreas.Contabilidade.ToString();
            item.Estado            = BillingReceptionStates.Rececao;
            item.DataCriacao       = DateTime.Now;
            item.DescricaoProblema = "Entrada fatura em receção";

            if (item.Id == "" || item.Id == null)
            {
                ConfiguraçãoNumerações CfgNumeration = DBNumerationConfigurations.GetById(Cfg);

                autoGenId = true;

                item.Id = DBNumerationConfigurations.GetNextNumeration(Cfg, autoGenId, isRec);
            }
            if (item.Id != "" && item.Id != null)
            {
                item = repo.Create(item);

                RececaoFaturacaoWorkflow wfItem = new RececaoFaturacaoWorkflow();
                wfItem.IdRecFaturacao = item.Id;
                wfItem.AreaWorkflow   = Data.EnumHelper.GetDescriptionFor(typeof(BillingReceptionAreas), (int)BillingReceptionAreas.Contabilidade);
                wfItem.Descricao      = "Entrada fatura em receção";
                wfItem.CriadoPor      = item.CriadoPor;
                wfItem.Data           = DateTime.Now;
                wfItem.DataCriacao    = DateTime.Now;
                wfItem.Estado         = (int)BillingReceptionStates.Rececao;//TODO: Identificar estados possivels “Receção/Conferência”

                repo.Create(wfItem);

                try
                {
                    repo.SaveChanges();

                    //Update Last Numeration Used
                    ConfiguraçãoNumerações ConfigNumerations = DBNumerationConfigurations.GetById(Cfg);
                    ConfigNumerations.ÚltimoNºUsado         = wfItem.IdRecFaturacao;
                    ConfigNumerations.UtilizadorModificação = item.CriadoPor;
                    DBNumerationConfigurations.Update(ConfigNumerations);
                }
                catch (Exception ex)
                {
                    return(null);
                }
                return(item);
            }
            else
            {
                return(item);
            }
        }
        //[ResponseCache(Duration = 60000)]
        public IActionResult Index(string orderId)
        {
            UserAccessesViewModel       UPerm      = DBUserAccesses.GetByUserAreaFunctionality(User.Identity.Name, Enumerations.Features.MaintenanceOrders);
            UserConfigurationsViewModel userConfig = DBUserConfigurations.GetById(User.Identity.Name).ParseToViewModel();

            if (UPerm != null && UPerm.Read.Value)
            {
                return(View("Index"));
            }
            return(RedirectToAction("AccessDenied", "Error"));
        }
        public List <BillingReceptionModel> GetChangeableDestination(string userName)
        {
            UserConfigurationsViewModel userConfig = DBUserConfigurations.GetById(userName).ParseToViewModel();

            if (userConfig != null)
            {
                var billingReceptions = repo.GetChangeableDestination(userName, userConfig.RFPerfil, userConfig.RFPerfilVisualizacao);
                return(billingReceptions);
            }
            else
            {
                return(null);
            }
        }
Пример #6
0
        public JsonResult GetSimplifiedRequisitionLinesModels([FromBody] JObject requestParams)
        {
            string             requestNo    = requestParams["requestNo"].ToString();
            string             requestNoNew = requestParams["requestNoNew"].ToString();
            ConfigUtilizadores utilizador   = DBUserConfigurations.GetById(User.Identity.Name);
            List <SimplifiedRequisitionLineViewModel> result = new List <SimplifiedRequisitionLineViewModel>();

            if (requestNo != null)
            {
                result = DBSimplifiedRequisitionLines.ParseToViewModel(DBSimplifiedRequisitionLines.GetById(requestNo));
                result.ForEach(x => {
                    x.RequisitionNo    = requestNoNew;
                    x.Status           = 1;
                    x.LineNo           = 0;
                    x.QuantityApproved = 0;
                    x.RequisitionDate  = DateTime.Now.ToString();
                    x.EmployeeNo       = utilizador.EmployeeNo;
                });
            }
            HttpContext.Session.Remove("aprovadoSession");
            return(Json(result));
        }
Пример #7
0
        public JsonResult GetSimplifiedRequisitionModel([FromBody] SimplifiedRequisitionViewModel item)
        {
            ConfigUtilizadores             utilizador = DBUserConfigurations.GetById(User.Identity.Name);
            SimplifiedRequisitionViewModel result     = new SimplifiedRequisitionViewModel();

            if (item != null && !string.IsNullOrEmpty(item.RequisitionNo))
            {
                result                     = DBSimplifiedRequisitions.ParseToViewModel(DBSimplifiedReqTemplates.GetById(item.RequisitionNo));
                result.Status              = 1;
                result.Finished            = false;
                result.CreateResponsible   = null;
                result.CreateDate          = null;
                result.RequisitionDate     = null;
                result.RequisitionTime     = null;
                result.RegistrationDate    = null;
                result.ApprovalResponsible = null;
                result.ApprovalDate        = null;
                result.ApprovalTime        = null;
                result.EmployeeNo          = utilizador.EmployeeNo;
                result.ReceiptPreviewDate  = DateTime.Now.ToString();
            }
            return(Json(result));
        }
Пример #8
0
        public JsonResult GetSimplifiedRequisitionData([FromBody] SimplifiedRequisitionViewModel item)
        {
            ConfigUtilizadores             utilizador = DBUserConfigurations.GetById(User.Identity.Name);
            SimplifiedRequisitionViewModel result     = new SimplifiedRequisitionViewModel();

            result.Status     = 1;
            result.EmployeeNo = utilizador.EmployeeNo;
            if (item != null && !string.IsNullOrEmpty(item.RequisitionNo))
            {
                result = DBSimplifiedRequisitions.ParseToViewModel(DBSimplifiedRequisitions.GetById(item.RequisitionNo));
            }
            else
            {
                //Get Numeration
                string       entityId  = "";
                bool         autoGenId = false;
                Configuração conf      = DBConfigurations.GetById(1);
                int          entityNumerationConfId = conf.NumeraçãoRequisiçõesSimplificada.Value;
                autoGenId            = true;
                entityId             = DBNumerationConfigurations.GetNextNumeration(entityNumerationConfId, autoGenId, false);
                result.RequisitionNo = entityId;
            }
            return(Json(result));
        }
Пример #9
0
        public RequisitionViewModel CreateMarketConsultFor(RequisitionViewModel requisition)
        {
            try
            {
                //Verificar se pode criar uma consulta de mercado
                if (requisition.Lines.Where(p => p.CreateMarketSearch == true).Where(p => string.IsNullOrEmpty(p.QueryCreatedMarketNo)).Count() <= 0)
                {
                    requisition.eReasonCode = -1;
                    requisition.eMessage    = "Consulta ao Mercado não pode ser criada! As linhas devem estar marcadas com 'Criar Consulta Mercado' e não ter 'Nº de Consulta Mercado Criada'";
                    return(requisition);
                }

                //Criar nova Consulta Mercado - Obtenção do novo NumConsultaMercado e incrementar Numerações
                ConsultaMercado consultaMercado = DBConsultaMercado.Create(changedByUserName);

                //Ir Buscar o Nº Mecanográfico do utilizado
                ConfigUtilizadores UC = DBUserConfigurations.GetById(changedByUserName);

                //Actualizar o registo com os dados possiveis
                consultaMercado.CodProjecto               = requisition.ProjectNo == "" ? null : requisition.ProjectNo;
                consultaMercado.Descricao                 = "Consulta Mercado - " + requisition.RequisitionNo;
                consultaMercado.CodRegiao                 = requisition.RegionCode;
                consultaMercado.CodAreaFuncional          = requisition.FunctionalAreaCode;
                consultaMercado.CodCentroResponsabilidade = requisition.CenterResponsibilityCode;
                consultaMercado.DataPedidoCotacao         = DateTime.Now;
                consultaMercado.CodLocalizacao            = requisition.LocalCode;
                consultaMercado.Destino = 0;
                consultaMercado.Estado  = 0;
                consultaMercado.UtilizadorRequisicao = requisition.CreateUser;
                consultaMercado.Fase                   = 0;
                consultaMercado.Modalidade             = 0;
                consultaMercado.PedidoCotacaoCriadoEm  = DateTime.Now;
                consultaMercado.PedidoCotacaoCriadoPor = changedByUserName;
                consultaMercado.NumRequisicao          = requisition.RequisitionNo;
                consultaMercado.Urgente                = requisition.Urgent;
                consultaMercado.CodComprador           = !string.IsNullOrEmpty(UC.EmployeeNo) ? UC.EmployeeNo : null;

                consultaMercado = DBConsultaMercado.Update(consultaMercado);

                //Para cada linha da requisição
                foreach (RequisitionLineViewModel requisitionLine in requisition.Lines.Where(p => p.CreateMarketSearch == true).Where(p => p.QueryCreatedMarketNo == null))
                {
                    decimal _qty            = requisitionLine.QuantityToRequire != null ? requisitionLine.QuantityToRequire.Value : 0;
                    decimal _custo          = requisitionLine.UnitCost != null ? requisitionLine.UnitCost.Value : 0;
                    decimal _custoTotalPrev = Math.Round(_qty * _custo * 100) / 100;

                    DateTime?_dataEntrega;

                    try
                    {
                        _dataEntrega = DateTime.Parse(requisitionLine.ExpectedReceivingDate);
                    }
                    catch
                    {
                        _dataEntrega = null;
                    }

                    //Inserir Linhas na tabela "Linhas_Consulta_Mercado"
                    LinhasConsultaMercado linhasConsultaMercado = new LinhasConsultaMercado()
                    {
                        NumConsultaMercado        = consultaMercado.NumConsultaMercado,
                        CodProduto                = requisitionLine.Code,
                        Descricao                 = requisitionLine.Description,
                        Descricao2                = requisitionLine.Description2,
                        NumProjecto               = requisitionLine.ProjectNo,
                        CodRegiao                 = requisitionLine.RegionCode,
                        CodAreaFuncional          = requisitionLine.FunctionalAreaCode,
                        CodCentroResponsabilidade = requisitionLine.CenterResponsibilityCode,
                        CodLocalizacao            = requisitionLine.LocalCode,
                        Quantidade                = requisitionLine.QuantityToRequire,
                        CustoUnitarioPrevisto     = requisitionLine.UnitCost,
                        CustoTotalPrevisto        = _custoTotalPrev,
                        CodUnidadeMedida          = requisitionLine.UnitMeasureCode,
                        DataEntregaPrevista       = _dataEntrega,
                        NumRequisicao             = requisition.RequisitionNo,
                        LinhaRequisicao           = requisitionLine.LineNo,
                        CriadoEm  = DateTime.Now,
                        CriadoPor = changedByUserName
                    };
                    linhasConsultaMercado = DBConsultaMercado.Create(linhasConsultaMercado);


                    //Verificar se tem Fornecedor identificado
                    if (requisitionLine.SupplierNo != null)
                    {
                        //Verificar se na tabela "Seleccao_Entidades" já temos este Fornecedor para esta Consulta Mercado
                        SeleccaoEntidades seleccaoEntidades = DBConsultaMercado.GetSeleccaoEntidadesPorNumConsultaFornecedor(consultaMercado.NumConsultaMercado, requisitionLine.SupplierNo);

                        if (seleccaoEntidades == null)
                        {
                            seleccaoEntidades = new SeleccaoEntidades()
                            {
                                NumConsultaMercado = consultaMercado.NumConsultaMercado,
                                CodFornecedor      = requisitionLine.SupplierNo,
                                NomeFornecedor     = !string.IsNullOrEmpty(requisitionLine.SupplierNo) ? DBNAV2017Supplier.GetAll(_config.NAVDatabaseName, _config.NAVCompanyName, requisitionLine.SupplierNo).FirstOrDefault().Name : "",
                                Selecionado        = true,
                                Preferencial       = true
                            };

                            seleccaoEntidades = DBConsultaMercado.Create(seleccaoEntidades);
                        }
                    }

                    requisitionLine.QueryCreatedMarketNo = consultaMercado.NumConsultaMercado;

                    DBRequestLine.Update(DBRequestLine.ParseToDB(requisitionLine));
                }

                requisition.MarketInquiryNo = consultaMercado.NumConsultaMercado;

                Requisição requisição = DBRequest.ParseToDB(requisition);
                DBRequest.Update(requisição);
                requisition = DBRequest.ParseToViewModel(requisição);

                requisition.eReasonCode = 1;
                requisition.eMessage    = "Consulta ao Mercado " + consultaMercado.NumConsultaMercado + " criada com sucesso";
            }
            catch (Exception ex)
            {
                requisition.eReasonCode = -1;
                requisition.eMessage    = ex.Message;
            }

            return(requisition);
        }
Пример #10
0
        public static async Task <WSCreatePreInvoice.Create_Result> CreatePreInvoice(SPInvoiceListViewModel preInvoiceToCreate, NAVWSConfigurations WSConfigurations)
        {
            WSCreatePreInvoice.Document_Type tipo;
            bool   notaDebito      = false;
            string PostingNoSeries = "";

            ConfigUtilizadores CUsers = DBUserConfigurations.GetById(preInvoiceToCreate.CreateUser);

            if (preInvoiceToCreate.MovementType == 2)//Nota de débito
            {
                tipo            = WSCreatePreInvoice.Document_Type.Invoice;
                notaDebito      = true;
                PostingNoSeries = CUsers.NumSerieNotasDebito;
            }
            else if (preInvoiceToCreate.MovementType == 4)//Nota de crédito
            {
                tipo            = WSCreatePreInvoice.Document_Type.Credit_Memo;
                notaDebito      = false;
                PostingNoSeries = CUsers.NumSerieNotasCredito;
            }
            else// Fatura
            {
                tipo            = WSCreatePreInvoice.Document_Type.Invoice;
                notaDebito      = false;
                PostingNoSeries = CUsers.NumSerieFaturas;
            }

            WSCreatePreInvoice.Create NAVCreate = new WSCreatePreInvoice.Create()
            {
                WSPreInvoice = new WSCreatePreInvoice.WSPreInvoice()
                {
                    Document_Type           = tipo,
                    Document_TypeSpecified  = true,
                    Sell_to_Customer_No     = preInvoiceToCreate.InvoiceToClientNo,
                    VAT_Registration_No     = preInvoiceToCreate.ClientVATReg,
                    Contract_No             = preInvoiceToCreate.ContractNo,
                    Debit_Memo              = notaDebito,
                    Debit_MemoSpecified     = true,
                    Posting_No_Series       = PostingNoSeries,
                    Codigo_Pedido           = preInvoiceToCreate.ClientRequest,
                    Currency_Code           = preInvoiceToCreate.Currency,
                    Data_Serv_Prestado      = preInvoiceToCreate.ServiceDate,
                    Data_Encomenda          = !string.IsNullOrEmpty(preInvoiceToCreate.DataPedido) ? DateTime.Parse(preInvoiceToCreate.DataPedido) : DateTime.MinValue,
                    Data_EncomendaSpecified = !string.IsNullOrEmpty(preInvoiceToCreate.DataPedido),
                    //Document_Date = preInvoiceToCreate.dat
                    //Due_Date
                    //Document_Date
                    //External_Document_No
                    RegionCode20               = preInvoiceToCreate.RegionCode,
                    FunctionAreaCode20         = preInvoiceToCreate.FunctionalAreaCode,
                    ResponsabilityCenterCode20 = preInvoiceToCreate.ResponsabilityCenterCode,
                    Location_Code              = preInvoiceToCreate.LocationCode,
                    No_Compromisso             = preInvoiceToCreate.CommitmentNumber,
                    Observacoes           = preInvoiceToCreate.Comments,
                    Responsibility_Center = CUsers.CentroDeResponsabilidade,
                    //Order_Date
                    Payment_Method_Code = preInvoiceToCreate.CodMetodoPagamento,
                    Payment_Terms_Code  = preInvoiceToCreate.CodTermosPagamento,
                    //Posting_Date
                    Posting_Date           = !string.IsNullOrEmpty(preInvoiceToCreate.Posting_Date.ToString()) ? DateTime.Parse(preInvoiceToCreate.Posting_Date.ToString()) : DateTime.MinValue,
                    Posting_DateSpecified  = !string.IsNullOrEmpty(preInvoiceToCreate.Posting_Date.ToString()),
                    Document_Date          = !string.IsNullOrEmpty(preInvoiceToCreate.Posting_Date.ToString()) ? DateTime.Parse(preInvoiceToCreate.Posting_Date.ToString()) : DateTime.MinValue,
                    Document_DateSpecified = !string.IsNullOrEmpty(preInvoiceToCreate.Posting_Date.ToString()),
                    External_Document_No   = preInvoiceToCreate.ProjectNo,

                    Ship_to_Address             = preInvoiceToCreate.Ship_to_Address,
                    Ship_to_Address_2           = preInvoiceToCreate.Ship_to_Address_2,
                    Ship_to_City                = preInvoiceToCreate.Ship_to_City,
                    Ship_to_Code                = preInvoiceToCreate.Ship_to_Code,
                    Ship_to_Contact             = preInvoiceToCreate.Ship_to_Contact,
                    Ship_to_Country_Region_Code = preInvoiceToCreate.Ship_to_Country_Region_Code,
                    Ship_to_County              = preInvoiceToCreate.Ship_to_County,
                    Ship_to_Name                = preInvoiceToCreate.Ship_to_Name,
                    Ship_to_Name_2              = preInvoiceToCreate.Ship_to_Name_2,
                    Ship_to_Post_Code           = preInvoiceToCreate.Ship_to_Post_Code,

                    Prices_Including_VAT          = preInvoiceToCreate.FaturaPrecosIvaIncluido.HasValue ? (bool)preInvoiceToCreate.FaturaPrecosIvaIncluido : false,
                    Prices_Including_VATSpecified = true
                }
            };

            //Configure NAV Client
            EndpointAddress WS_URL = new EndpointAddress(WSConfigurations.WS_PreInvoice_URL.Replace("Company", WSConfigurations.WS_User_Company));

            WSCreatePreInvoice.WSPreInvoice_PortClient WS_Client = new WSCreatePreInvoice.WSPreInvoice_PortClient(navWSBinding, WS_URL);
            WS_Client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Delegation;
            WS_Client.ClientCredentials.Windows.ClientCredential          = new NetworkCredential(WSConfigurations.WS_User_Login, WSConfigurations.WS_User_Password, WSConfigurations.WS_User_Domain);


            return(await WS_Client.CreateAsync(NAVCreate));
        }
Пример #11
0
        public static async Task <WSCreatePreInvoice.Create_Result> CreateContractInvoice(AutorizarFaturaçãoContratos CreateInvoice, NAVWSConfigurations WSConfigurations, string ContractInvoicePeriod, string InvoiceBorrowed, string CodTermosPagamento, bool PricesIncludingVAT, string Ship_to_Code)
        {
            DateTime           now             = DateTime.Now;
            string             PostingNoSeries = "";
            string             Observacoes     = "";
            string             Mes             = InvoiceBorrowed.Substring(0, InvoiceBorrowed.IndexOf("/"));
            string             Ano             = InvoiceBorrowed.Substring(InvoiceBorrowed.IndexOf("/") + 1, 4);
            ConfigUtilizadores CUsers          = DBUserConfigurations.GetById(CreateInvoice.UtilizadorCriação);
            Contratos          Contrato        = DBContracts.GetByIdLastVersion(CreateInvoice.NºContrato);

            WSCreatePreInvoice.Create_Result result = new WSCreatePreInvoice.Create_Result();


            if (Contrato != null && Contrato.TipoContrato == 3 && Contrato.Tipo == 3) //Contrato Quotas
            {
                ConfiguracaoParametros Parametro = DBConfiguracaoParametros.GetByParametro("QuotasNoSeries");

                if (Parametro != null && !string.IsNullOrEmpty(Parametro.Valor))
                {
                    PostingNoSeries = Parametro.Valor;
                }

                if (Contrato != null && !string.IsNullOrEmpty(Contrato.TextoFatura))
                {
                    Observacoes = Contrato.TextoFatura;
                    Observacoes = Observacoes.Replace("<MES>", Mes);
                    Observacoes = Observacoes.Replace("<ANO>", Ano);
                }
            }
            else
            {
                PostingNoSeries = !string.IsNullOrEmpty(CUsers.NumSerieFaturas) ? CUsers.NumSerieFaturas : "";
                Observacoes     = !string.IsNullOrEmpty(CreateInvoice.Descrição) ? CreateInvoice.Descrição : "";
            }

            WSCreatePreInvoice.Create NAVCreate = new WSCreatePreInvoice.Create()
            {
                WSPreInvoice = new WSCreatePreInvoice.WSPreInvoice()
                {
                    Sell_to_Customer_No          = !string.IsNullOrEmpty(CreateInvoice.NºCliente) ? CreateInvoice.NºCliente : "",
                    Document_Date                = DateTime.Today,
                    Document_DateSpecified       = true,
                    Shipment_Date                = now,
                    Shipment_DateSpecified       = true,
                    Shipment_Start_Time          = now.AddHours(1),
                    Shipment_Start_TimeSpecified = true,
                    Document_Type                = WSCreatePreInvoice.Document_Type.Invoice,
                    Document_TypeSpecified       = true,
                    Posting_Date             = CreateInvoice.DataDeRegisto ?? DateTime.Now,
                    Posting_DateSpecified    = true,
                    Periodo_de_Fact_Contrato = !string.IsNullOrEmpty(ContractInvoicePeriod) ? ContractInvoicePeriod : "",
                    Data_Serv_Prestado       = !string.IsNullOrEmpty(InvoiceBorrowed) ? InvoiceBorrowed : "",
                    Responsibility_Center    = !string.IsNullOrEmpty(CUsers.CentroDeResponsabilidade) ? CUsers.CentroDeResponsabilidade : "",

                    Posting_No_Series  = PostingNoSeries,
                    Due_Date           = (DateTime)CreateInvoice.DataDeExpiração,
                    Due_DateSpecified  = true,
                    Payment_Terms_Code = CodTermosPagamento,

                    //Amaro
                    Observacoes             = Observacoes,
                    Contract_No             = !string.IsNullOrEmpty(CreateInvoice.NºContrato) ? CreateInvoice.NºContrato : "",
                    Factura_CAF             = true,
                    Factura_CAFSpecified    = true,
                    Codigo_Pedido           = !string.IsNullOrEmpty(CreateInvoice.NoRequisicaoDoCliente) ? CreateInvoice.NoRequisicaoDoCliente : "",
                    No_Compromisso          = !string.IsNullOrEmpty(CreateInvoice.NoCompromisso) ? CreateInvoice.NoCompromisso : "",
                    Data_Encomenda          = CreateInvoice.DataRececaoRequisicao ?? DateTime.MinValue,
                    Data_EncomendaSpecified = true,

                    RegionCode20               = !string.IsNullOrEmpty(CreateInvoice.CódigoRegião) ? CreateInvoice.CódigoRegião : "",
                    FunctionAreaCode20         = !string.IsNullOrEmpty(CreateInvoice.CódigoÁreaFuncional) ? CreateInvoice.CódigoÁreaFuncional : "",
                    ResponsabilityCenterCode20 = !string.IsNullOrEmpty(CreateInvoice.CódigoCentroResponsabilidade) ? CreateInvoice.CódigoCentroResponsabilidade : "",

                    Prices_Including_VAT          = PricesIncludingVAT,
                    Prices_Including_VATSpecified = true,

                    Ship_to_Code = !string.IsNullOrEmpty(Ship_to_Code) ? Ship_to_Code : "",
                }
            };

            // Configure NAV Client
            EndpointAddress WS_URL = new EndpointAddress(WSConfigurations.WS_PreInvoice_URL.Replace("Company", WSConfigurations.WS_User_Company));

            WSCreatePreInvoice.WSPreInvoice_PortClient WS_Client = new WSCreatePreInvoice.WSPreInvoice_PortClient(navWSBinding, WS_URL);
            WS_Client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Delegation;
            WS_Client.ClientCredentials.Windows.ClientCredential          = new NetworkCredential(WSConfigurations.WS_User_Login, WSConfigurations.WS_User_Password, WSConfigurations.WS_User_Domain);

            try
            {
                result = await WS_Client.CreateAsync(NAVCreate);

                return(result);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Пример #12
0
 public static ComprasViewModel GetByID(int ID)
 {
     try
     {
         using (var ctx = new SuchDBContext())
         {
             return(ctx.Compras.Where(x =>
                                      (x.Id == ID)
                                      ).Select(Compras => new ComprasViewModel()
             {
                 ID = Compras.Id,
                 CodigoProduto = Compras.CodigoProduto,
                 Descricao = Compras.Descricao,
                 Descricao2 = Compras.Descricao2,
                 CodigoUnidadeMedida = Compras.CodigoUnidadeMedida,
                 Quantidade = Compras.Quantidade,
                 NoRequisicao = Compras.NoRequisicao,
                 NoLinhaRequisicao = Compras.NoLinhaRequisicao,
                 Urgente = Compras.Urgente,
                 UrgenteTexto = Compras.Urgente == null ? "" : Compras.Urgente == false ? "Não" : "Sim",
                 RegiaoMercadoLocal = Compras.RegiaoMercadoLocal,
                 Estado = Compras.Estado,
                 //EstadoTexto = Compras.Estado == null ? "" : EnumerablesFixed.ComprasEstado.Where(y => y.Id == Compras.Estado).FirstOrDefault().Value,
                 DataCriacao = Compras.DataCriacao,
                 DataCriacaoTexto = Compras.DataCriacao == null ? "" : Compras.DataCriacao.Value.ToString("yyyy-MM-dd"),
                 HoraCriacaoTexto = Compras.DataCriacao == null ? "" : Compras.DataCriacao.Value.ToString("HH:mm:ss"),
                 UtilizadorCriacao = Compras.UtilizadorCriacao,
                 UtilizadorCriacaoTexto = Compras.UtilizadorCriacao == null ? "" : DBUserConfigurations.GetById(Compras.UtilizadorCriacao).Nome,
                 Responsaveis = Compras.Responsaveis,
                 NoProjeto = Compras.NoProjeto,
                 NoProjetoTexto = Compras.NoProjeto == null ? "" : DBProjects.GetById(Compras.NoProjeto).Descrição,
                 NoFornecedor = Compras.NoFornecedor,
                 //NoFornecedorTexto = Compras.NoFornecedor == null ? "" DBNAV2017Supplier.GetAll(_config.NAVDatabaseName, _config.NAVCompanyName, Compras.NoFornecedor).FirstOrDefault().Name,
                 NoEncomenda = Compras.NoEncomenda,
                 //NoEncomendaTexto =
                 DataEncomenda = Compras.DataEncomenda,
                 DataEncomendaTexto = Compras.DataEncomenda == null ? "" : Compras.DataEncomenda.Value.ToString("yyyy-MM-dd"),
                 HoraEncomendaTexto = Compras.DataEncomenda == null ? "" : Compras.DataEncomenda.Value.ToString("HH:mm:ss"),
                 NoConsultaMercado = Compras.NoConsultaMercado,
                 //NoConsultaMercadoTexto =
                 DataConsultaMercado = Compras.DataConsultaMercado,
                 DataConsultaMercadoTexto = Compras.DataConsultaMercado == null ? "" : Compras.DataConsultaMercado.Value.ToString("yyyy-MM-dd"),
                 HoraConsultaMercadoTexto = Compras.DataConsultaMercado == null ? "" : Compras.DataConsultaMercado.Value.ToString("HH:mm:ss"),
                 DataValidacao = Compras.DataValidacao,
                 DataValidacaoTexto = Compras.DataValidacao == null ? "" : Compras.DataValidacao.Value.ToString("yyyy-MM-dd"),
                 HoraValidacaoTexto = Compras.DataValidacao == null ? "" : Compras.DataValidacao.Value.ToString("HH:mm:ss"),
                 UtilizadorValidacao = Compras.UtilizadorValidacao,
                 UtilizadorValidacaoTexto = Compras.UtilizadorValidacao == null ? "" : DBUserConfigurations.GetById(Compras.UtilizadorValidacao).Nome,
                 DataRecusa = Compras.DataRecusa,
                 DataRecusaTexto = Compras.DataRecusa == null ? "" : Compras.DataRecusa.Value.ToString("yyyy-MM-dd"),
                 HoraRecusaTexto = Compras.DataRecusa == null ? "" : Compras.DataRecusa.Value.ToString("HH:mm:ss"),
                 UtilizadorRecusa = Compras.UtilizadorRecusa,
                 UtilizadorRecusaTexto = Compras.UtilizadorRecusa == null ? "" : DBUserConfigurations.GetById(Compras.UtilizadorRecusa).Nome,
                 DataTratado = Compras.DataTratado,
                 DataTratadoTexto = Compras.DataTratado == null ? "" : Compras.DataTratado.Value.ToString("yyyy-MM-dd"),
                 HoraTratadoTexto = Compras.DataTratado == null ? "" : Compras.DataTratado.Value.ToString("HH:mm:ss"),
                 UtilizadorTratado = Compras.UtilizadorTratado,
                 UtilizadorTratadoTexto = Compras.UtilizadorTratado == null ? "" : DBUserConfigurations.GetById(Compras.UtilizadorTratado).Nome,
                 Recusada = Compras.Recusada,
                 RecusadaTexto = Compras.Recusada == null ? "" : Compras.Recusada == false ? "Não" : "Sim",
                 DataMercadoLocal = Compras.DataMercadoLocal,
                 DataMercadoLocalTexto = Compras.DataMercadoLocal == null ? "" : Compras.DataMercadoLocal.Value.ToString("yyyy-MM-dd"),
                 HoraMercadoLocalTexto = Compras.DataMercadoLocal == null ? "" : Compras.DataMercadoLocal.Value.ToString("HH:mm:ss")
             }).FirstOrDefault());
         }
     }
     catch (Exception ex)
     {
         return(null);
     }
 }
Пример #13
0
        public static List <ComprasViewModel> GetAllByEstado(int Estado)
        {
            try
            {
                using (var ctx = new SuchDBContext())
                {
                    return(ctx.Compras.Where(x =>
                                             (x.Estado == Estado)
                                             ).Select(Compras => new ComprasViewModel()
                    {
                        ID = Compras.Id,
                        CodigoProduto = Compras.CodigoProduto,
                        Descricao = Compras.Descricao,
                        Descricao2 = Compras.Descricao2,
                        CodigoUnidadeMedida = Compras.CodigoUnidadeMedida,
                        Quantidade = Compras.Quantidade,
                        NoRequisicao = Compras.NoRequisicao,
                        NoLinhaRequisicao = Compras.NoLinhaRequisicao,
                        Urgente = Compras.Urgente,
                        UrgenteTexto = Compras.Urgente == null ? "" : Compras.Urgente == false ? "Não" : "Sim",
                        RegiaoMercadoLocal = Compras.RegiaoMercadoLocal,
                        Estado = Compras.Estado,
                        DataCriacao = Compras.DataCriacao,
                        DataCriacaoTexto = Compras.DataCriacao == null ? "" : Compras.DataCriacao.Value.ToString("yyyy-MM-dd"),
                        HoraCriacaoTexto = Compras.DataCriacao == null ? "" : Compras.DataCriacao.Value.ToString("HH:mm:ss"),
                        UtilizadorCriacao = Compras.UtilizadorCriacao,
                        UtilizadorCriacaoTexto = Compras.UtilizadorCriacao == null ? "" : DBUserConfigurations.GetById(Compras.UtilizadorCriacao).Nome,
                        Responsaveis = Compras.Responsaveis,
                        NoProjeto = Compras.NoProjeto,

                        //NoProjetoTexto = Compras.NoProjeto == null ? "" : DBProjects.GetById(Compras.NoProjeto) != null ? DBProjects.GetById(Compras.NoProjeto).Descrição : "",

                        NoFornecedor = Compras.NoFornecedor,
                        NoEncomenda = Compras.NoEncomenda,
                        DataEncomenda = Compras.DataEncomenda,
                        DataEncomendaTexto = Compras.DataEncomenda == null ? "" : Compras.DataEncomenda.Value.ToString("yyyy-MM-dd"),
                        HoraEncomendaTexto = Compras.DataEncomenda == null ? "" : Compras.DataEncomenda.Value.ToString("HH:mm:ss"),
                        NoConsultaMercado = Compras.NoConsultaMercado,
                        DataConsultaMercado = Compras.DataConsultaMercado,
                        DataConsultaMercadoTexto = Compras.DataConsultaMercado == null ? "" : Compras.DataConsultaMercado.Value.ToString("yyyy-MM-dd"),
                        HoraConsultaMercadoTexto = Compras.DataConsultaMercado == null ? "" : Compras.DataConsultaMercado.Value.ToString("HH:mm:ss"),
                        DataValidacao = Compras.DataValidacao,
                        DataValidacaoTexto = Compras.DataValidacao == null ? "" : Compras.DataValidacao.Value.ToString("yyyy-MM-dd"),
                        HoraValidacaoTexto = Compras.DataValidacao == null ? "" : Compras.DataValidacao.Value.ToString("HH:mm:ss"),
                        UtilizadorValidacao = Compras.UtilizadorValidacao,
                        UtilizadorValidacaoTexto = Compras.UtilizadorValidacao == null ? "" : DBUserConfigurations.GetById(Compras.UtilizadorValidacao).Nome,
                        DataRecusa = Compras.DataRecusa,
                        DataRecusaTexto = Compras.DataRecusa == null ? "" : Compras.DataRecusa.Value.ToString("yyyy-MM-dd"),
                        HoraRecusaTexto = Compras.DataRecusa == null ? "" : Compras.DataRecusa.Value.ToString("HH:mm:ss"),
                        UtilizadorRecusa = Compras.UtilizadorRecusa,
                        UtilizadorRecusaTexto = Compras.UtilizadorRecusa == null ? "" : DBUserConfigurations.GetById(Compras.UtilizadorRecusa).Nome,
                        DataTratado = Compras.DataTratado,
                        DataTratadoTexto = Compras.DataTratado == null ? "" : Compras.DataTratado.Value.ToString("yyyy-MM-dd"),
                        HoraTratadoTexto = Compras.DataTratado == null ? "" : Compras.DataTratado.Value.ToString("HH:mm:ss"),
                        UtilizadorTratado = Compras.UtilizadorTratado,
                        UtilizadorTratadoTexto = Compras.UtilizadorTratado == null ? "" : DBUserConfigurations.GetById(Compras.UtilizadorTratado).Nome,
                        Recusada = Compras.Recusada,
                        RecusadaTexto = Compras.Recusada == null ? "" : Compras.Recusada == false ? "Não" : "Sim",
                        DataMercadoLocal = Compras.DataMercadoLocal,
                        DataMercadoLocalTexto = Compras.DataMercadoLocal == null ? "" : Compras.DataMercadoLocal.Value.ToString("yyyy-MM-dd"),
                        HoraMercadoLocalTexto = Compras.DataMercadoLocal == null ? "" : Compras.DataMercadoLocal.Value.ToString("HH:mm:ss")
                    }).ToList());
                }
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Пример #14
0
        public JsonResult Create([FromBody] FornecedorDetailsViewModel data)
        {
            if (data != null)
            {
                if (string.IsNullOrEmpty(data.No))
                {
                    data.No = "";
                }
                if (string.IsNullOrEmpty(data.Name))
                {
                    data.Name = "";
                }
                if (string.IsNullOrEmpty(data.PostCode))
                {
                    data.PostCode = "";
                }
                if (string.IsNullOrEmpty(data.City))
                {
                    data.City = "";
                }
                if (string.IsNullOrEmpty(data.Country))
                {
                    data.Country = "";
                }
                if (string.IsNullOrEmpty(data.Phone))
                {
                    data.Phone = "";
                }
                if (string.IsNullOrEmpty(data.Email))
                {
                    data.Email = "";
                }
                if (string.IsNullOrEmpty(data.Fax))
                {
                    data.Fax = "";
                }
                if (string.IsNullOrEmpty(data.HomePage))
                {
                    data.HomePage = "";
                }
                if (string.IsNullOrEmpty(data.VATRegistrationNo))
                {
                    data.VATRegistrationNo = "";
                }
                if (string.IsNullOrEmpty(data.PaymentTermsCode))
                {
                    data.PaymentTermsCode = "";
                }
                if (string.IsNullOrEmpty(data.PaymentMethodCode))
                {
                    data.PaymentMethodCode = "";
                }
                if (string.IsNullOrEmpty(data.NoClienteAssociado))
                {
                    data.NoClienteAssociado = "";
                }
                if (data.Blocked == null)
                {
                    data.Blocked = 0;
                }
                if (string.IsNullOrEmpty(data.Address))
                {
                    data.Address = "";
                }
                if (string.IsNullOrEmpty(data.Address_2))
                {
                    data.Address_2 = "";
                }
                if (string.IsNullOrEmpty(data.Distrito))
                {
                    data.Distrito = "";
                }
                if (data.Criticidade == null)
                {
                    data.Criticidade = 0;
                }
                if (string.IsNullOrEmpty(data.Observacoes))
                {
                    data.Observacoes = "";
                }

                data.Utilizador_Alteracao_eSUCH = User.Identity.Name;
                var createVendorTask = WSVendorService.CreateAsync(data, _configws);
                try
                {
                    createVendorTask.Wait();
                }
                catch (Exception ex)
                {
                    data.eReasonCode = 3;
                    data.eMessage    = "Ocorreu um erro ao criar o fornecedor no NAV.";
                    data.eMessages.Add(new TraceInformation(TraceType.Error, ex.Message));
                    return(Json(data));
                }

                var result = createVendorTask.Result;
                if (result == null)
                {
                    data.eReasonCode = 3;
                    data.eMessage    = "Ocorreu um erro ao criar o fornecedor no NAV.";
                    return(Json(data));
                }

                data.eReasonCode = 1;

                var vendor = WSVendorService.MapVendorNAVToVendorModel(result.WSVendor);

                if (vendor != null)
                {
                    //SUCESSO
                    vendor.eReasonCode = 1;

                    //Envio de email
                    ConfiguracaoParametros Parametro = DBConfiguracaoParametros.GetByParametro("AddFornecedorEmail");
                    ConfigUtilizadores     UserEmail = DBUserConfigurations.GetById(User.Identity.Name);

                    if (Parametro != null && !string.IsNullOrEmpty(Parametro.Valor))
                    {
                        SendEmailApprovals Email = new SendEmailApprovals();

                        var    path_tmp       = Path.Combine(_generalConfig.FileUploadFolder + "Fornecedores\\tmp\\", data.NomeAnexo);
                        string FileName_Final = data.NomeAnexo.Replace("FORNECEDOR", vendor.No);
                        var    path_final     = Path.Combine(_generalConfig.FileUploadFolder + "Fornecedores\\", FileName_Final);

                        FileStream file_tmp   = new FileStream(path_tmp, FileMode.Open);
                        FileStream file_final = new FileStream(path_final, FileMode.CreateNew);

                        file_tmp.CopyTo(file_final);

                        file_tmp.Dispose();
                        file_final.Dispose();

                        System.IO.File.Delete(path_tmp);

                        Anexos newfile = new Anexos();
                        newfile.NºOrigem          = vendor.No;
                        newfile.UrlAnexo          = FileName_Final;
                        newfile.TipoOrigem        = TipoOrigemAnexos.Fornecedores;
                        newfile.DataHoraCriação   = DateTime.Now;
                        newfile.UtilizadorCriação = User.Identity.Name;

                        Email.DisplayName = "e-SUCH - Fornecedor";
                        Email.From        = "*****@*****.**";
                        Email.To.Add(Parametro.Valor);
                        Email.BCC.Add("*****@*****.**");
                        Email.BCC.Add("*****@*****.**");
                        Email.Subject    = "e-SUCH - Novo Fornecedor";
                        Email.Body       = MakeEmailBodyContent("Criado o Fornecedor:  " + vendor.No + " - " + vendor.Name, UserEmail.Nome);
                        Email.Anexo      = path_final;
                        Email.IsBodyHtml = true;

                        Email.SendEmail_Simple();
                    }

                    return(Json(vendor));
                }
            }
            return(Json(data));
        }
Пример #15
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));
        }