public JsonResult ValidateNumeration([FromBody] ContactViewModel item) { //Get Project Numeration Configuração conf = DBConfigurations.GetById(1); if (conf != null) { int contactsNumerationConfId = conf.NumeraçãoContactos.Value; ConfiguraçãoNumerações numConf = DBNumerationConfigurations.GetById(contactsNumerationConfId); //Validate if id is valid if (!(item.No == "" || item.No == null) && !numConf.Manual.Value) { return(Json("A numeração configurada para contactos não permite inserção manual.")); } else if (item.No == "" && !numConf.Automático.Value) { return(Json("É obrigatório inserir o Nº de Contacto.")); } } else { return(Json("Não foi possivel obter as configurações base de numeração.")); } return(Json("")); }
public JsonResult ValidateNumeration([FromBody] SimplifiedReqTemplateViewModel item) { //Get Project Numeration Configuração conf = DBConfigurations.GetById(1); if (conf != null) { int numModReqSimplificadas = conf.NumeraçãoModReqSimplificadas.Value; ConfiguraçãoNumerações numConf = DBNumerationConfigurations.GetById(numModReqSimplificadas); //Validate if id is valid if (!(item.RequisitionTemplateId == "" || item.RequisitionTemplateId == null) && !numConf.Manual.Value) { return(Json("A numeração configurada para os modelos de requisição simplificada não permite inserção manual.")); } else if (item.RequisitionTemplateId == "" && !numConf.Automático.Value) { return(Json("É obrigatório inserir o Nº Modelo.")); } } else { return(Json("Não foi possivel obter as configurações base de numeração.")); } return(Json("")); }
public JsonResult CreateRecordTechnicalOfPlates([FromBody] RecordTechnicalOfPlatesModelView data) { if (data != null) { //Get Numeration bool autoGenId = false; Configuração conf = DBConfigurations.GetById(1); int entityNumerationConfId = conf.NumeraçãoFichasTécnicasDePratos.Value; if (data.PlateNo == "" || data.PlateNo == null) { autoGenId = true; data.PlateNo = DBNumerationConfigurations.GetNextNumeration(entityNumerationConfId, autoGenId, false); } if (data.PlateNo != null) { data.CreateUser = User.Identity.Name; var createdItem = DBRecordTechnicalOfPlates.Create(data.ParseToDB()); if (createdItem != null) { data = createdItem.ParseToViewModel(); //Update Last Numeration Used if (autoGenId) { ConfiguraçãoNumerações ConfigNumerations = DBNumerationConfigurations.GetById(entityNumerationConfId); ConfigNumerations.ÚltimoNºUsado = data.PlateNo; ConfigNumerations.UtilizadorModificação = User.Identity.Name; DBNumerationConfigurations.Update(ConfigNumerations); } data.eReasonCode = 1; data.eMessage = "Registo criado com sucesso."; } else { data = new RecordTechnicalOfPlatesModelView(); data.eReasonCode = 2; data.eMessage = "Ocorreu um erro ao editar o registo."; } } else { data.eReasonCode = 2; data.eMessage = "A numeração configurada não é compativel com a inserida."; } } else { data = new RecordTechnicalOfPlatesModelView(); data.eReasonCode = 2; data.eMessage = "Ocorreu um erro: a linha não pode ser nula."; } return(Json(data)); }
public JsonResult CreateReqTemplate([FromBody] SimplifiedReqTemplateViewModel item) { try { if (item != null) { //Get Numeration bool autoGenId = false; Configuração conf = DBConfigurations.GetById(1); int entityNumerationConfId = conf.NumeraçãoModReqSimplificadas.Value; if (item.RequisitionTemplateId == "" || item.RequisitionTemplateId == null) { autoGenId = true; item.RequisitionTemplateId = DBNumerationConfigurations.GetNextNumeration(entityNumerationConfId, autoGenId, false); } if (item.RequisitionTemplateId != null) { item.CreateUser = User.Identity.Name; var createdItem = DBSimplifiedReqTemplates.Create(item.ParseToDB()); if (createdItem != null) { item = createdItem.ParseToViewModel(); if (autoGenId) { ConfiguraçãoNumerações configNum = DBNumerationConfigurations.GetById(entityNumerationConfId); configNum.ÚltimoNºUsado = item.RequisitionTemplateId; configNum.UtilizadorModificação = User.Identity.Name; DBNumerationConfigurations.Update(configNum); } item.eReasonCode = 1; item.eMessage = "Registo criado com sucesso."; } else { item.eReasonCode = 3; item.eMessage = "Ocorreu um erro ao inserir os dados na base de dados."; } } else { item.eReasonCode = 5; item.eMessage = "A numeração configurada não é compativel com a inserida."; } } } catch (Exception) { item.eReasonCode = 2; item.eMessage = "Ocorreu um erro ao criar o modelo de requisição simplificado."; } return(Json(item)); }
public JsonResult CreateRequisition([FromBody] RequisitionTemplateViewModel item) { if (item != null) { //Get Numeration bool autoGenId = false; Configuração conf = DBConfigurations.GetById(1); int entityNumerationConfId = conf.NumeracaoModelosRequisicao.Value; if (item.RequisitionNo == "" || item.RequisitionNo == null) { autoGenId = true; item.RequisitionNo = DBNumerationConfigurations.GetNextNumeration(entityNumerationConfId, autoGenId, false); } if (item.RequisitionNo != null) { item.CreateUser = User.Identity.Name; var createdItem = DBRequestTemplates.Create(item.ParseToDB()); if (createdItem != null) { item = createdItem.ParseToTemplateViewModel(); if (autoGenId) { ConfiguraçãoNumerações configNum = DBNumerationConfigurations.GetById(entityNumerationConfId); configNum.ÚltimoNºUsado = item.RequisitionNo; configNum.UtilizadorModificação = User.Identity.Name; DBNumerationConfigurations.Update(configNum); } item.eReasonCode = 1; item.eMessage = "Registo criado com sucesso."; } else { item = new RequisitionTemplateViewModel(); item.eReasonCode = 2; item.eMessage = "Ocorreu um erro ao criar o registo."; } } else { item.eReasonCode = 5; item.eMessage = "A numeração configurada não é compativel com a inserida."; } } else { item = new RequisitionTemplateViewModel(); item.eReasonCode = 2; item.eMessage = "Ocorreu um erro: o modelo de requisição não pode ser nulo."; } return(Json(item)); }
public JsonResult ValidateNumeration([FromBody] SimplifiedRequisitionViewModel data) { //Get Project Numeration Configuração Cfg = DBConfigurations.GetById(1); int ProjectNumerationConfigurationId = 0; ProjectNumerationConfigurationId = Cfg.NumeraçãoRequisiçõesSimplificada.Value; ConfiguraçãoNumerações CfgNumeration = DBNumerationConfigurations.GetById(ProjectNumerationConfigurationId); //Validate if ProjectNo is valid if (!CfgNumeration.Automático.Value) { return(Json("É obrigatório inserir o Nº Requisição.")); } return(Json("")); }
public JsonResult CreateSimplifiedRequisition([FromBody] SimplifiedRequisitionViewModel item) { if (item != null) { item.CreateUser = User.Identity.Name; item.CreateResponsible = User.Identity.Name; item.RequisitionDate = DateTime.Now.ToString(); item.RegistrationDate = DateTime.Now.ToString("dd/MM/yyyy"); item.RequisitionTime = DateTime.Now.ToString("HH:mm:ss"); if (DBSimplifiedRequisitions.GetById(item.RequisitionNo) != null) { item.eReasonCode = 101; item.eMessage = "O Nº " + item.RequisitionNo + " já existe!"; } else { if (DBSimplifiedRequisitions.Create(DBSimplifiedRequisitions.ParseToDatabase(item)) != null) { //Update Last Numeration Used Configuração conf = DBConfigurations.GetById(1); int entityNumerationConfId = conf.NumeraçãoRequisiçõesSimplificada.Value; ConfiguraçãoNumerações ConfigNumerations = DBNumerationConfigurations.GetById(entityNumerationConfId); ConfigNumerations.ÚltimoNºUsado = item.RequisitionNo; ConfigNumerations.UtilizadorModificação = User.Identity.Name; DBNumerationConfigurations.Update(ConfigNumerations); item.eReasonCode = 100; item.eMessage = "Requisição Simplificada criada com sucesso."; } else { item.eReasonCode = 101; item.eMessage = "Ocorreu um erro ao criar a Requisição Simplificada."; } } } return(Json(item)); }
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)); }
public RequisitionViewModel CreatePurchaseOrderFor(RequisitionViewModel requisition) { if (requisition != null && requisition.Lines != null && requisition.Lines.Count > 0) { if (string.IsNullOrEmpty(requisition.ReceivedDate)) { requisition.eReasonCode = 4; requisition.eMessage = "É obrigatório o preenchimento do campo Data Receção no Geral."; return(requisition); } //use for database update later var requisitionLines = requisition.Lines; requisitionLines.RemoveAll(x => x.CriarNotaEncomenda == null || x.CriarNotaEncomenda == false); requisitionLines.RemoveAll(x => x.CreatedOrderNo != "" && x.CreatedOrderNo != null); //FIM if (requisitionLines.Any(x => string.IsNullOrEmpty(x.SupplierNo) || !x.UnitCost.HasValue || x.UnitCost.Value == 0)) { throw new Exception("É obrigatório o preenchimento do fornecedor e do custo unitário nas linhas"); } List <PurchOrderDTO> purchOrders = new List <PurchOrderDTO>(); List <DBNAV2017SupplierProductRef.SuppliersProductsRefs> supplierProductRef = new List <DBNAV2017SupplierProductRef.SuppliersProductsRefs>(); 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, LocationCode = requisition.LocalCode, Purchaser_Code = requisition.NumeroMecanografico, Lines = items.Select(line => new PurchOrderLineDTO() { LineId = line.LineNo, Type = line.Type, Code = line.Code, Description = line.Description, Description2 = line.Description2, 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(); supplierProductRef = DBNAV2017SupplierProductRef.GetSuplierProductRefsForRequisition(_config.NAVDatabaseName, _config.NAVCompanyName, requisition.RequisitionNo); } catch { throw new Exception("Ocorreu um erro ao agrupar as linhas."); } if (purchOrders.Count() > 0) { purchOrders.ForEach(purchOrder => { try { purchOrder.Lines.ForEach(line => line.SupplierProductCode = supplierProductRef .Where(x => x.ProductId == line.Code && x.SupplierNo == purchOrder.SupplierId && x.UnitOfMeasureCode == line.UnitMeasureCode) .FirstOrDefault() ?.SupplierProductId ); //Novo código que adiciona + linhas mas só para requisições do tipo nutrição if (requisition.RequestNutrition == true) { string codFornecedor = purchOrder.SupplierId; List <ConfigLinhasEncFornecedor> LinhasEncFornecedor = DBConfigLinhasEncFornecedor.GetAll().Where(x => x.VendorNo == codFornecedor).ToList(); if (LinhasEncFornecedor != null && LinhasEncFornecedor.Count > 0) { foreach (ConfigLinhasEncFornecedor linha in LinhasEncFornecedor) { string ProjectNo = string.Empty; string RegionCode = string.Empty; string FunctionalAreaCode = string.Empty; string CenterResponsibilityCode = string.Empty; string ArmazemCompraDireta = string.Empty; Configuração Config = DBConfigurations.GetById(1); if (Config != null) { ArmazemCompraDireta = Config.ArmazemCompraDireta; } UnidadesProdutivas UnidProd = DBProductivityUnits.GetAll().Where(x => x.NºCliente == codFornecedor).FirstOrDefault(); if (UnidProd != null) { ProjectNo = UnidProd.ProjetoMatSubsidiárias; } if (!string.IsNullOrEmpty(ProjectNo)) { NAVProjectsViewModel Project = DBNAV2017Projects.GetAll(_config.NAVDatabaseName, _config.NAVCompanyName, ProjectNo).FirstOrDefault(); if (Project != null) { RegionCode = Project.RegionCode; FunctionalAreaCode = Project.AreaCode; CenterResponsibilityCode = Project.CenterResponsibilityCode; } } PurchOrderLineDTO purchOrderLine = new PurchOrderLineDTO() { LineId = null, Type = 2, //PRODUTO Code = linha.No, Description = linha.Description, Description2 = linha.Description2, ProjectNo = ProjectNo, QuantityRequired = linha.Quantity, UnitCost = linha.Valor, LocationCode = ArmazemCompraDireta, OpenOrderNo = "", //line.OpenOrderNo, OpenOrderLineNo = null, //line.OpenOrderLineNo, CenterResponsibilityCode = CenterResponsibilityCode, FunctionalAreaCode = FunctionalAreaCode, RegionCode = RegionCode, UnitMeasureCode = linha.UnitOfMeasure, VATBusinessPostingGroup = "", //line.VATBusinessPostingGroup, VATProductPostingGroup = "", //line.VATProductPostingGroup, DiscountPercentage = 0 //line.DiscountPercentage.HasValue ? line.DiscountPercentage.Value : 0, }; purchOrder.Lines.Add(purchOrderLine); } } } //var result = CreateNAVPurchaseOrderFor(purchOrder, Convert.ToDateTime(requisition.ReceivedDate), requisition.Comments); var result = CreateNAVPurchaseOrderFor(purchOrder, Convert.ToDateTime(requisition.ReceivedDate)); if (result.CompletedSuccessfully) { //Update req requisition.OrderNo = result.ResultValue; //Update Requisition Lines requisition.Lines.ForEach(line => { if (line.SupplierNo == purchOrder.SupplierId) { line.CreatedOrderNo = result.ResultValue; line.UpdateUser = this.changedByUserName; } }); //Commit to DB var updatedReq = DBRequest.Update(requisition.ParseToDB(), true); //bool linesUpdated = DBRequestLine.Update(requisition.Lines.ParseToDB()); //if (linesUpdated) if (updatedReq != null) { requisition.eMessages.Add(new TraceInformation(TraceType.Success, "Criada encomenda para o fornecedor núm. " + purchOrder.SupplierId + "; ")); } } } catch (Exception ex) { requisition.eMessages.Add(new TraceInformation(TraceType.Error, "Ocorreu um erro ao criar encomenda para o fornecedor núm. " + purchOrder.SupplierId + ": " + ex.Message)); //requisition.eMessages.Add(new TraceInformation(TraceType.Exception, purchOrder.SupplierId + " " + ex.Message)); } }); 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 criar encomenda de compra."; } else { requisition.eReasonCode = 1; requisition.eMessage = "Encomenda de compra criada com sucesso."; } } else { requisition.eReasonCode = 3; requisition.eMessage = "Não existem linhas que cumpram os requisitos de criação de encomenda."; } } return(requisition); }
public ErrorHandler CreateProposalFromContract(string contractId, int version, decimal percentageToApllyInLines = decimal.MinValue) { ErrorHandler result = new ErrorHandler() { eReasonCode = 2, eMessage = "Não foi possivel criar a proposta", }; //Get contract data var contractDb = DBContracts.GetByIdAndVersion(contractId, version); ContractViewModel contract = DBContracts.ParseToViewModel(contractDb, string.Empty, string.Empty); contract.LoadLines(); //Get Numeration Configuração conf = DBConfigurations.GetById(1); int entityNumerationConfId = conf.NumeraçãoPropostas.Value; string proposalId = DBNumerationConfigurations.GetNextNumeration(entityNumerationConfId, true, false); if (!string.IsNullOrEmpty(proposalId) && contract != null) { contract.ContractNo = proposalId; contract.ContractType = (int)ContractType.Proposal; contract.VersionNo = 1; contract.Status = 1; contract.RelatedContract = contractId; contract.CreateDate = DateTime.Now.ToString(); contract.CreateUser = changedByUserName; contract.UpdateDate = string.Empty; contract.UpdateUser = string.Empty; //Add Proposal Header var proposal = ctx.Contratos.Add(DBContracts.ParseToDB(contract)); //Add Proposal Lines contract.Lines.ForEach(x => { x.ContractType = (int)ContractType.Proposal; x.ContractNo = proposalId; x.VersionNo = 1; x.LineNo = 0; if (percentageToApllyInLines > (-100)) { x.UnitPrice = x.UnitPrice + ((percentageToApllyInLines * x.UnitPrice) / 100); proposal.Entity.LinhasContratos.Add(DBContractLines.ParseToDB(x)); } else { proposal.Entity.LinhasContratos.Add(DBContractLines.ParseToDB(x)); } }); ctx.SaveChanges(); result.eReasonCode = 1; result.eMessage = "Foi criada a proposta " + proposalId + "."; try { //Update Last Numeration Used ConfiguraçãoNumerações configNumerations = DBNumerationConfigurations.GetById(entityNumerationConfId); if (configNumerations != null) { configNumerations.ÚltimoNºUsado = proposalId; configNumerations.UtilizadorModificação = changedByUserName; DBNumerationConfigurations.Update(configNumerations); } } catch { result.eMessage += " Ocorreu um erro ao atualizar a numeração."; } } return(result); }
public JsonResult CreateContact([FromBody] ContactViewModel item) { if (item != null) { //Get Numeration bool autoGenId = false; Configuração conf = DBConfigurations.GetById(1); int entityNumerationConfId = conf.NumeraçãoContactos.Value; if (item.No == "" || item.No == null) { autoGenId = true; item.No = DBNumerationConfigurations.GetNextNumeration(entityNumerationConfId, autoGenId, false); } if (item.No != null) { //Ensure contact Id doesn't exist var existingContact = DBContacts.GetById(item.No); if (existingContact == null) { item.CriadoPor = User.Identity.Name; var newItem = DBContacts.Create(item.ParseToDB()).ParseToViewModel(); if (newItem != null) { //Inserted, update item to return item = newItem; //Task<WSContacts.Create_Result> createContactTask = NAVContactsService.CreateAsync(item, _configws); //try //{ // createContactTask.Wait(); //} //catch (Exception ex) //{ // item.eReasonCode = 3; // item.eMessage = "Ocorreu um erro ao criar o contacto no NAV."; // item.eMessages.Add(new TraceInformation(TraceType.Error, ex.Message)); //} //if (!createContactTask.IsCompletedSuccessfully) //{ // //Delete Created Project on Database // DBContacts.Delete(item.No); // item.eReasonCode = 3; // item.eMessage = "Ocorreu um erro ao criar o contacto no NAV."; //} //else //{ //Update Last Numeration Used ConfiguraçãoNumerações configNumerations = DBNumerationConfigurations.GetById(entityNumerationConfId); if (configNumerations != null && autoGenId) { configNumerations.ÚltimoNºUsado = item.No; configNumerations.UtilizadorModificação = User.Identity.Name; DBNumerationConfigurations.Update(configNumerations); } item.eReasonCode = 1; item.eMessage = "Contacto criado com sucesso."; //} } else { item.eReasonCode = 3; item.eMessage = "Ocorreu um erro ao criar o contacto no portal."; } } else { item.eReasonCode = 4; item.eMessage = "Já existe um contacto com o Nº " + item.No; } } else { item.eReasonCode = 5; item.eMessage = "A numeração configurada não é compativel com a inserida."; } } return(Json(item)); }