public static PrePurchOrderLineViewModel ParseToViewModel(this LinhasPreEncomenda item) { if (item != null) { return(new PrePurchOrderLineViewModel() { PrePurchOrderNo = item.NºPreEncomenda, PrePurchOrderLineNo = item.NºLinhaPreEncomenda, RequisitionNo = item.NºRequisição, RequisitionLineNo = item.NºLinhaRequisição, ProductCode = item.CódigoProduto, ProductDescription = item.DescriçãoProduto, UnitOfMeasureCode = item.CódigoUnidadeMedida, LocationCode = item.CódigoLocalização, QuantityAvailable = item.QuantidadeDisponibilizada, UnitCost = item.CustoUnitário, ProjectNo = item.NºProjeto, RegionCode = item.CódigoRegião, FunctionalAreaCode = item.CódigoÁreaFuncional, CenterResponsibilityCode = item.CódigoCentroResponsabilidade, CreateDateTime = item.DataHoraCriação, CreateUser = item.UtilizadorCriação, UpdateDateTime = item.DataHoraModificação, UpdateUser = item.UtilizadorModificação, SupplierNo = item.NºFornecedor, }); } return(null); }
public JsonResult GetLinhasPreEncomendaDetails([FromBody] LinhasPreEncomendaView data) { try { if (data != null) { LinhasPreEncomenda Linhas = DBEncomendas.GetLinhasPreEncomenda(data.NumLinhaPreEncomenda); if (Linhas != null) { LinhasPreEncomendaView linhasView = DBEncomendas.CastLinhasPreEncomendaToView(Linhas); linhasView.NomeFornecedor_Show = DBNAV2017Supplier.GetAll(_config.NAVDatabaseName, _config.NAVCompanyName, linhasView.NumFornecedor).Count > 0 ? DBNAV2017Supplier.GetAll(_config.NAVDatabaseName, _config.NAVCompanyName, linhasView.NumFornecedor).FirstOrDefault().Name : string.Empty; return(Json(linhasView)); } return(Json(new LinhasPreEncomendaView())); } } catch (Exception e) { return(null); } return(Json(false)); }
public static LinhasPreEncomenda CastLinhasPreEncomendaToDB(LinhasPreEncomendaView ObjectToTransform) { string _fornecedor = string.Empty; LinhasPreEncomenda linha = new LinhasPreEncomenda() { CódigoÁreaFuncional = ObjectToTransform.CodigoAreaFuncional, CódigoCentroResponsabilidade = ObjectToTransform.CodigoCentroResponsabilidade, CódigoLocalização = ObjectToTransform.CodigoLocalizacao, CódigoProduto = ObjectToTransform.CodigoProduto, CódigoRegião = ObjectToTransform.CodigoRegiao, CódigoUnidadeMedida = ObjectToTransform.CodigoUnidadeMedida, CustoUnitário = ObjectToTransform.CustoUnitario, DataHoraCriação = ObjectToTransform.DataHoraCriacao, DataHoraModificação = ObjectToTransform.DataHoraModificacao, DescriçãoProduto = ObjectToTransform.DescricaoProduto, NºFornecedor = ObjectToTransform.NumFornecedor, NºLinhaPreEncomenda = ObjectToTransform.NumLinhaPreEncomenda, NºLinhaRequisição = ObjectToTransform.NumLinhaRequisicao, NºPreEncomenda = ObjectToTransform.NumPreEncomenda, NºProjeto = ObjectToTransform.NumProjeto, NºRequisição = ObjectToTransform.NumRequisicao, QuantidadeDisponibilizada = ObjectToTransform.QuantidadeDisponibilizada, UtilizadorCriação = ObjectToTransform.UtilizadorCriacao, UtilizadorModificação = ObjectToTransform.UtilizadorModificacao, DocumentoACriar = ObjectToTransform.DocumentoACriar, CriarDocumento = ObjectToTransform.CriarDocumento, NºEncomendaAberto = ObjectToTransform.NumEncomendaAberto, NºLinhaEncomendaAberto = ObjectToTransform.NumLinhaEncomendaAberto, Tratada = ObjectToTransform.Tratada }; return(linha); }
public JsonResult UpdateLinha([FromBody] LinhasPreEncomendaView Linha) { ErrorHandler result = new ErrorHandler { eReasonCode = 0, eMessage = "Fornecedor actualizado com sucesso." }; try { if (Linha != null && Linha.NumFornecedor != string.Empty) { UserAccessesViewModel UPerm = DBUserAccesses.GetByUserAreaFunctionality(User.Identity.Name, Enumerations.Features.PréEncomendas); if (UPerm.Update == true) { LinhasPreEncomenda LinhaPreEncomenda = DBEncomendas.GetLinhasPreEncomenda(Linha.NumLinhaPreEncomenda); LinhaPreEncomenda.NºFornecedor = Linha.NumFornecedor; LinhaPreEncomenda.DataHoraModificação = DateTime.Now; LinhaPreEncomenda.UtilizadorModificação = User.Identity.Name; if (DBEncomendas.Update(LinhaPreEncomenda) == null) { result.eReasonCode = 3; result.eMessage = "Ocorreu um erro ao atualizar o registo."; } } else { result.eReasonCode = 2; result.eMessage = "Não tem permissões para alterar o registo."; } } else { result.eReasonCode = 1; result.eMessage = "Não foi possivel ler o registo."; } return(Json(result)); } catch (Exception ex) { result.eReasonCode = 99; result.eMessage = "Ocorreu um erro."; } return(Json(null)); }
public static bool Delete(LinhasPreEncomenda item) { try { using (var ctx = new SuchDBContext()) { ctx.LinhasPreEncomenda.Remove(item); ctx.SaveChanges(); } return(true); } catch { return(false); } }
public static LinhasPreEncomenda Create(LinhasPreEncomenda item) { try { using (var ctx = new SuchDBContext()) { item.DataHoraCriação = DateTime.Now; ctx.LinhasPreEncomenda.Add(item); ctx.SaveChanges(); } return(item); } catch { return(null); } }
public static LinhasPreEncomenda Update(LinhasPreEncomenda ObjectToUpdate) { try { using (var ctx = new SuchDBContext()) { ctx.LinhasPreEncomenda.Update(ObjectToUpdate); ctx.SaveChanges(); } return(ObjectToUpdate); } catch (Exception e) { return(null); } }
public static LinhasPreEncomendaView CastLinhasPreEncomendaToView(LinhasPreEncomenda ObjectToTransform) { string _fornecedor = string.Empty; LinhasPreEncomendaView view = new LinhasPreEncomendaView() { CodigoAreaFuncional = ObjectToTransform.CódigoÁreaFuncional, CodigoCentroResponsabilidade = ObjectToTransform.CódigoCentroResponsabilidade, CodigoLocalizacao = ObjectToTransform.CódigoLocalização, CodigoProduto = ObjectToTransform.CódigoProduto, CodigoRegiao = ObjectToTransform.CódigoRegião, CodigoUnidadeMedida = ObjectToTransform.CódigoUnidadeMedida, CustoUnitario = ObjectToTransform.CustoUnitário, DataHoraCriacao = ObjectToTransform.DataHoraCriação, DataHoraModificacao = ObjectToTransform.DataHoraModificação, DescricaoProduto = ObjectToTransform.DescriçãoProduto, NumFornecedor = ObjectToTransform.NºFornecedor, NumLinhaPreEncomenda = ObjectToTransform.NºLinhaPreEncomenda, NumLinhaRequisicao = ObjectToTransform.NºLinhaRequisição, NumPreEncomenda = ObjectToTransform.NºPreEncomenda, NumProjeto = ObjectToTransform.NºProjeto, NumRequisicao = ObjectToTransform.NºRequisição, QuantidadeDisponibilizada = ObjectToTransform.QuantidadeDisponibilizada, UtilizadorCriacao = ObjectToTransform.UtilizadorCriação, UtilizadorModificacao = ObjectToTransform.UtilizadorModificação, DocumentoACriar = ObjectToTransform.DocumentoACriar, CriarDocumento = ObjectToTransform.CriarDocumento == null ? false : (bool)ObjectToTransform.CriarDocumento, NumEncomendaAberto = ObjectToTransform.NºEncomendaAberto, NumLinhaEncomendaAberto = ObjectToTransform.NºLinhaEncomendaAberto, Tratada = ObjectToTransform.Tratada == null ? false : (bool)ObjectToTransform.Tratada, DataHoraCriacao_Show = ObjectToTransform.DataHoraCriação == null ? "" : ObjectToTransform.DataHoraCriação.Value.ToString("yyyy-MM-dd"), DataHoraModificacao_Show = ObjectToTransform.DataHoraModificação == null ? "" : ObjectToTransform.DataHoraModificação.Value.ToString("yyyy-MM-dd"), NomeFornecedor_Show = _fornecedor, DocumentoACriar_Show = ObjectToTransform.DocumentoACriar == null ? "" : ObjectToTransform.DocumentoACriar == 0 ? "Consulta Mercado" : "Encomenda" }; return(view); }
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)); }