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); }
public RequisitionViewModel ValidateRequisition(RequisitionViewModel requisition) { requisition.eReasonCode = 99; requisition.eMessage = "Ocorreu um erro na Validação da Requisição."; try { if (requisition != null) { if (requisition.State == RequisitionStates.Approved) { if (requisition.Lines != null && requisition.Lines.Count > 0) { var linesToValidate = requisition.Lines .Where(x => x.QuantityRequired != null && x.QuantityRequired.HasValue && x.QuantityRequired.Value > 0) .ToList(); if (linesToValidate != null && linesToValidate.Count > 0) { linesToValidate.ForEach(item => { item.QuantityToProvide = item.QuantityRequired; // QuantidadeADisponibilizar = QuantidadeRequerida item.UpdateUser = this.changedByUserName; item.UpdateDateTime = DateTime.Now; if (DBRequestLine.Update(item.ParseToDB()) == null) { requisition.eReasonCode = 2; requisition.eMessage = "Ocorreu um erro ao atualizar as linhas na Validação da Requisição."; } }); if (requisition.eReasonCode == 99) { requisition.State = RequisitionStates.Validated; requisition.ResponsibleValidation = this.changedByUserName; requisition.ValidationDate = DateTime.Now; requisition.UpdateUser = this.changedByUserName; var updatedReq = DBRequest.UpdateHeaderAndLines(requisition.ParseToDB(), true); if (updatedReq != null) { requisition = updatedReq.ParseToViewModel(); requisition.eReasonCode = 1; requisition.eMessage = "Requisição validada com sucesso."; } else { requisition.eReasonCode = 3; requisition.eMessage = "Ocorreu um erro ao validar a requisição."; } } } else { requisition.eReasonCode = 4; requisition.eMessage = "Não existem linhas com Qt. Requerida superior a zero."; } } else { requisition.eReasonCode = 5; requisition.eMessage = "Não existem linhas para validar na Requisição."; } } else { requisition.eReasonCode = 6; requisition.eMessage = "A Requisição não está no estado Aprovado."; } } else { requisition = new RequisitionViewModel() { eReasonCode = 7, eMessage = "Erro na obtenção da Requisição.", }; } } catch { requisition.eReasonCode = 99; requisition.eMessage = "Ocorreu um erro na Validação da Requisição."; }; return(requisition); }
public RequisitionViewModel ValidateLocalMarketFor(RequisitionViewModel requisition) { if (requisition != null && requisition.Lines != null && requisition.Lines.Count > 0 && requisition.State == RequisitionStates.Approved) { //use for database update later var requisitionLines = requisition.Lines .Where(x => x.LocalMarket != null && x.PurchaseValidated != null && x.QuantityRequired != null && x.LocalMarket.Value && !x.PurchaseValidated.Value && x.QuantityRequired.Value > 0) .ToList(); List <PurchOrderDTO> purchOrders = new List <PurchOrderDTO>(); try { purchOrders = requisitionLines.GroupBy(x => x.SupplierNo, x => x, (key, items) => new PurchOrderDTO { SupplierId = key, RequisitionId = requisition.RequisitionNo, CenterResponsibilityCode = requisition.CenterResponsibilityCode, FunctionalAreaCode = requisition.FunctionalAreaCode, RegionCode = requisition.RegionCode, LocalMarketRegion = requisition.LocalMarketRegion, InAdvance = requisition.InAdvance.HasValue ? requisition.InAdvance.Value : false, PricesIncludingVAT = requisition.PricesIncludingVAT.HasValue ? requisition.PricesIncludingVAT.Value : false, Purchaser_Code = requisition.NumeroMecanografico, Lines = items.Select(line => new PurchOrderLineDTO() { LineId = line.LineNo.Value, Type = line.Type, Code = line.Code, Description = line.Description, ProjectNo = line.ProjectNo, QuantityRequired = line.QuantityRequired, UnitCost = line.UnitCost, LocationCode = line.LocalCode, OpenOrderNo = line.OpenOrderNo, OpenOrderLineNo = line.OpenOrderLineNo, CenterResponsibilityCode = line.CenterResponsibilityCode, FunctionalAreaCode = line.FunctionalAreaCode, RegionCode = line.RegionCode, UnitMeasureCode = line.UnitMeasureCode, VATBusinessPostingGroup = line.VATBusinessPostingGroup, VATProductPostingGroup = line.VATProductPostingGroup, DiscountPercentage = line.DiscountPercentage.HasValue ? line.DiscountPercentage.Value : 0, }) .ToList() }) .ToList(); } catch { throw new Exception("Ocorreu um erro ao agrupar as linhas."); } if (purchOrders.Count() > 0) { purchOrders.ForEach(purchOrder => { try { var result = CreateNAVPurchaseOrderFor(purchOrder, Convert.ToDateTime(requisition.ReceivedDate)); if (result.CompletedSuccessfully) { //Update Requisition Lines requisitionLines.ForEach(line => line.CreatedOrderNo = result.ResultValue); bool linesUpdated = DBRequestLine.Update(requisitionLines.ParseToDB()); if (linesUpdated) { requisition.eMessages.Add(new TraceInformation(TraceType.Success, "Criada encomenda para o fornecedor núm. " + purchOrder.SupplierId + "; ")); } } } catch { requisition.eMessages.Add(new TraceInformation(TraceType.Error, "Ocorreu um erro ao criar encomenda para o fornecedor núm. " + purchOrder.SupplierId + "; ")); } }); if (requisition.eMessages.Any(x => x.Type == TraceType.Success)) { //Refresh lines - Get from db var updatedLines = DBRequestLine.GetByRequisitionId(requisition.RequisitionNo); if (updatedLines != null) { requisition.Lines = updatedLines.ParseToViewModel(); } } if (requisition.eMessages.Any(x => x.Type == TraceType.Error)) { requisition.eReasonCode = 2; requisition.eMessage = "Ocorram erros ao validar o mercado local."; } else { requisition.eReasonCode = 1; requisition.eMessage = "Mercado local validado com sucesso."; } } else { requisition.eReasonCode = 3; requisition.eMessage = "Não existem linhas que cumpram os requisitos de validação."; } } else { requisition.eReasonCode = 3; requisition.eMessage = "O estado da requisição e / ou linhas não cumprem os requisitos de validação."; } return(requisition); }
public JsonResult AprovadoToRecusar([FromBody] JObject requestParams) { ErrorHandler result = new ErrorHandler { eReasonCode = 0, eMessage = "Os Registos foram atualizados com sucesso." }; try { string rejectionComments = requestParams["rejectReason"].ToString(); List <ComprasViewModel> Mercados = new List <ComprasViewModel>(); int count = 0; if (requestParams["mercados"].Count() > 0) { for (count = 0; count < requestParams["mercados"].Count(); count++) { ComprasViewModel Mercado = new ComprasViewModel { ID = (int)requestParams["mercados"][count]["id"], CodigoProduto = (string)requestParams["mercados"][count]["codigoProduto"], Descricao = (string)requestParams["mercados"][count]["descricao"], Descricao2 = (string)requestParams["mercados"][count]["descricao2"], CodigoUnidadeMedida = (string)requestParams["mercados"][count]["codigoUnidadeMedida"], Quantidade = (decimal)requestParams["mercados"][count]["quantidade"], NoRequisicao = (string)requestParams["mercados"][count]["noRequisicao"], NoLinhaRequisicao = (int)requestParams["mercados"][count]["noLinhaRequisicao"], Urgente = string.IsNullOrEmpty(Convert.ToString(requestParams["mercados"][count]["urgente"])) ? false : (bool)requestParams["mercados"][count]["urgente"], RegiaoMercadoLocal = (string)requestParams["mercados"][count]["regiaoMercadoLocal"], Estado = (int)requestParams["mercados"][count]["estado"], DataCriacao = string.IsNullOrEmpty(Convert.ToString(requestParams["mercados"][count]["dataCriacao"])) ? Convert.ToDateTime("1753/01/01") : (DateTime)requestParams["mercados"][count]["dataCriacao"], UtilizadorCriacao = (string)requestParams["mercados"][count]["utilizadorCriacao"], Responsaveis = (string)requestParams["mercados"][count]["responsaveis"], NoProjeto = (string)requestParams["mercados"][count]["noProjeto"], NoFornecedor = (string)requestParams["mercados"][count]["noFornecedor"], NoEncomenda = (string)requestParams["mercados"][count]["noEncomenda"], DataEncomenda = string.IsNullOrEmpty(Convert.ToString(requestParams["mercados"][count]["dataEncomenda"])) ? Convert.ToDateTime("1753/01/01") : (DateTime)requestParams["mercados"][count]["dataEncomenda"], NoConsultaMercado = (string)requestParams["mercados"][count]["noConsultaMercado"], DataConsultaMercado = string.IsNullOrEmpty(Convert.ToString(requestParams["mercados"][count]["dataConsultaMercado"])) ? Convert.ToDateTime("1753/01/01") : (DateTime)requestParams["mercados"][count]["dataConsultaMercado"], DataValidacao = string.IsNullOrEmpty(Convert.ToString(requestParams["mercados"][count]["dataValidacao"])) ? Convert.ToDateTime("1753/01/01") : (DateTime)requestParams["mercados"][count]["dataValidacao"], UtilizadorValidacao = (string)requestParams["mercados"][count]["utilizadorValidacao"], DataRecusa = string.IsNullOrEmpty(Convert.ToString(requestParams["mercados"][count]["dataRecusa"])) ? Convert.ToDateTime("1753/01/01") : (DateTime)requestParams["mercados"][count]["dataRecusa"], UtilizadorRecusa = (string)requestParams["mercados"][count]["utilizadorRecusa"], DataTratado = string.IsNullOrEmpty(Convert.ToString(requestParams["mercados"][count]["dataTratado"])) ? Convert.ToDateTime("1753/01/01") : (DateTime)requestParams["mercados"][count]["dataTratado"], UtilizadorTratado = (string)requestParams["mercados"][count]["utilizadorTratado"], Recusada = string.IsNullOrEmpty(Convert.ToString(requestParams["mercados"][count]["recusada"])) ? false : (bool)requestParams["mercados"][count]["recusada"] }; Mercados.Add(Mercado); } } if (Mercados != null && Mercados.Count() > 0) { UserAccessesViewModel UPerm = DBUserAccesses.GetByUserAreaFunctionality(User.Identity.Name, Enumerations.Features.MercadoLocal); if (UPerm.Update == true) { Mercados.ForEach(MercadoVM => { if (MercadoVM.Responsaveis.ToLower().Contains(User.Identity.Name.ToLower())) { Compras Mercado = DBCompras.ParseToCompras(MercadoVM); Mercado.Estado = 3; //RECUSADO Mercado.DataRecusa = DateTime.Now; Mercado.UtilizadorRecusa = User.Identity.Name; if (DBCompras.Update(Mercado) == null) { result.eReasonCode = 6; result.eMessage = "Ocorreu um erro ao atualizar o registo."; } string NoRequisicao = Mercado.NoRequisicao; int NoLinhaRequisicao = (int)Mercado.NoLinhaRequisicao; LinhasRequisição LinhaRequisicao = DBRequestLine.GetByRequisicaoNoAndLineNo(NoRequisicao, NoLinhaRequisicao); if (LinhaRequisicao != null) { LinhaRequisicao.RecusadoCompras = true; LinhaRequisicao.MotivoRecusaMercLocal = MercadoVM.RecusadaTexto; LinhaRequisicao.DataRecusaMercLocal = DateTime.Now; LinhaRequisicao.MercadoLocal = false; LinhaRequisicao.DataMercadoLocal = null; if (DBRequestLine.Update(LinhaRequisicao) == null) { result.eReasonCode = 5; result.eMessage = "Ocorreu um erro ao atualizar a Linha de Requisição."; } } else { result.eReasonCode = 4; result.eMessage = "Não foi possivel ler a Linha de Requisição."; } } else { result.eReasonCode = 3; result.eMessage = "O seu id não está no campo Responsáveis, logo não pode alterar o registo."; } }); } else { result.eReasonCode = 2; result.eMessage = "Não tem permissões para alterar o registo do mercado Local."; } } else { result.eReasonCode = 1; result.eMessage = "Não foi possivel ler o registo do Mercado Local."; } return(Json(result)); } catch (Exception ex) { result.eReasonCode = 99; result.eMessage = "Ocorreu um erro."; } return(Json(null)); }
public JsonResult AprovadoToValidar([FromBody] List <Compras> Mercados) { ErrorHandler result = new ErrorHandler { eReasonCode = 0, eMessage = "Os Registos foram atualizados com sucesso." }; try { if (Mercados != null && Mercados.Count() > 0) { UserAccessesViewModel UPerm = DBUserAccesses.GetByUserAreaFunctionality(User.Identity.Name, Enumerations.Features.MercadoLocal); if (UPerm.Update == true) { Mercados.ForEach(Mercado => { if (Mercado.Responsaveis.ToLower().Contains(User.Identity.Name.ToLower())) { Mercado.Estado = 2; //VALIDADO Mercado.DataValidacao = DateTime.Now; Mercado.UtilizadorValidacao = User.Identity.Name; if (DBCompras.Update(Mercado) == null) { result.eReasonCode = 6; result.eMessage = "Ocorreu um erro ao atualizar o registo."; } string NoRequisicao = Mercado.NoRequisicao; int NoLinhaRequisicao = (int)Mercado.NoLinhaRequisicao; LinhasRequisição LinhaRequisicao = DBRequestLine.GetByRequisicaoNoAndLineNo(NoRequisicao, NoLinhaRequisicao); if (LinhaRequisicao != null) { LinhaRequisicao.ValidadoCompras = true; if (DBRequestLine.Update(LinhaRequisicao) == null) { result.eReasonCode = 5; result.eMessage = "Ocorreu um erro ao atualizar a Linha de Requisição."; } } else { result.eReasonCode = 4; result.eMessage = "Não foi possivel ler a Linha de Requisição."; } } else { result.eReasonCode = 3; result.eMessage = "O seu id não está no campo Responsáveis, logo não pode alterar o registo."; } }); } else { result.eReasonCode = 2; result.eMessage = "Não tem permissões para alterar o registo do mercado Local."; } } else { result.eReasonCode = 1; result.eMessage = "Não foi possivel ler o registo do Mercado Local."; } return(Json(result)); } catch (Exception ex) { result.eReasonCode = 99; result.eMessage = "Ocorreu um erro."; } return(Json(null)); }
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)); }