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 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 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)); }