public JsonResult GetProjectBillingInfo([FromBody] string ProjectNo) { Projetos CProject = DBProjects.GetById(ProjectNo); List <DiárioDeProjeto> CPRojectLines = DBProjectDiary.GetByProjectNo(ProjectNo).Where(x => x.Faturada.HasValue && x.Faturada.Value && x.PreçoTotal.HasValue).ToList(); return(Json(new DBProjectBillingViewModel() { ClientNo = CProject.NºCliente, ClientName = DBNAV2017Clients.GetClientNameByNo(CProject.NºCliente, _config.NAVDatabaseName, _config.NAVCompanyName), Active = true, ProjectNo = ProjectNo, TotalSales = CPRojectLines.Sum(x => x.PreçoTotal.Value) })); }
public static CoffeeShopViewModel ParseToViewModel(CafetariasRefeitórios x, string navDatabaseName, string navCompanyName) { if (x == null) { return(new CoffeeShopViewModel()); } CoffeeShopViewModel result = new CoffeeShopViewModel() { ProductivityUnitNo = x.NºUnidadeProdutiva, Type = x.Tipo, TypeText = x.Tipo == 1 ? "Cafetaria" : x.Tipo == 2 ? "Refeitório" : "", Code = x.Código, StartDateExploration = x.DataInícioExploração.ToString("yyyy-MM-dd"), EndDateExploration = x.DataFimExploração.HasValue ? x.DataFimExploração.Value.ToString("yyyy-MM-dd") : "", Description = x.Descrição, CodeResponsible = x.CódResponsável, CodeRegion = x.CódigoRegião, CodeFunctionalArea = x.CódigoÁreaFuncional, CodeResponsabilityCenter = x.CódigoCentroResponsabilidade, Warehouse = x.Armazém, WarehouseSupplier = x.ArmazémLocal, ProjectNo = x.NºProjeto, Active = x.Ativa, CreateDate = x.DataHoraCriação, CreateUser = x.UtilizadorCriação, UpdateDate = x.DataHoraModificação, UpdateUser = x.UtilizadorModificação }; //Get totals result.TotalRevenues = DBCoffeeShopMovements.GetTotalRevenuesFor(result.ProductivityUnitNo, result.Code, result.Type); result.TotalConsumption = DBProjectDiary.GetProjectTotaConsumption(result.ProjectNo); decimal totalMeals = DBCoffeeShopMovements.GetTotalMealsFor(result.ProductivityUnitNo, result.Code, result.Type); result.NumberOfMeals = totalMeals; return(result); }
public JsonResult RegisterRequisition([FromBody] List <SimplifiedRequisitionLineViewModel> items) { string dataRegisto; bool historyRequisition = true; SimplifiedRequisitionViewModel requisitionSimpli = DBSimplifiedRequisitions.ParseToViewModel(DBSimplifiedRequisitions.GetById(items[0].RequisitionNo)); List <ProjectDiaryViewModel> ListDp = new List <ProjectDiaryViewModel>(); //Receipt Lines Date if (requisitionSimpli.ReceiptLinesDate == true && requisitionSimpli.RegistrationDate != null) { dataRegisto = requisitionSimpli.RegistrationDate; } else { dataRegisto = DateTime.Now.ToString(); } foreach (var item in items) { if (item.QuantityReceipt == 0 || item.QuantityReceipt == null) { Task <WSGenericCodeUnit.FxGetStock_ItemLocation_Result> TGetNavLocationProduct = WSGeneric.GetNAVProductQuantityInStockFor(item.Code, item.LocationCode, configws); TGetNavLocationProduct.Wait(); if (TGetNavLocationProduct.IsCompletedSuccessfully) { if (TGetNavLocationProduct.Result.return_value > 0 && TGetNavLocationProduct.Result.return_value >= item.QuantityApproved) { //Update Simplified Requisition lines item.QuantityReceipt = item.QuantityApproved; DBSimplifiedRequisitionLines.Update(DBSimplifiedRequisitionLines.ParseToDatabase(item)); //Create Diary Project DiárioDeProjeto newdp = new DiárioDeProjeto() { NºProjeto = requisitionSimpli.ProjectNo, Data = requisitionSimpli.RegistrationDate == "" || requisitionSimpli.RegistrationDate == null ? (DateTime?)null : DateTime.Parse(requisitionSimpli.RegistrationDate), TipoMovimento = 1, //Consumo Tipo = item.Type, Código = item.Code, Descrição = item.Description, Quantidade = item.QuantityApproved, CódUnidadeMedida = item.MeasureUnitNo, CódLocalização = item.LocationCode, //GrupoContabProjeto = x.ProjectContabGroup, CódigoRegião = item.RegionCode, CódigoÁreaFuncional = item.FunctionAreaCode, CódigoCentroResponsabilidade = item.ResponsabilityCenterCode, Utilizador = User.Identity.Name, CustoUnitário = item.UnitCost, CustoTotal = item.TotalCost, //PreçoUnitário = x.UnitPrice, //PreçoTotal = x.TotalPrice, //Faturável = x.Billable, Registado = true, //FaturaANºCliente = x.InvoiceToClientNo, //Moeda = x.Currency, //ValorUnitárioAFaturar = x.UnitValueToInvoice, TipoRefeição = item.MealType, //CódGrupoServiço = x.ServiceGroupCode, //NºGuiaResíduos = x.ResidueGuideNo, //NºGuiaExterna = x.ExternalGuideNo, //DataConsumo = x.ConsumptionDate == "" || x.ConsumptionDate == null ? (DateTime?)null : DateTime.Parse(x.ConsumptionDate), //CódServiçoCliente = x.ServiceClientCode }; newdp.Faturada = false; newdp.DataHoraCriação = DateTime.Now; newdp.UtilizadorCriação = User.Identity.Name; //Insert List Regist Project ListDp.Add(DBProjectDiary.ParseToViewModel(newdp)); } else { historyRequisition = false; requisitionSimpli.eReasonCode = 101; requisitionSimpli.eMessage = requisitionSimpli.eMessage + " Quantidade existente em stock: " + TGetNavLocationProduct.Result.return_value + ", no Produto " + item.Description + " \r\n"; } } } } //Register diary project if (ListDp.Count() != 0) { register.UpdateProjectDiaryRequisition(ListDp, requisitionSimpli.RequisitionNo, User.Identity.Name); } if (historyRequisition == true) { //Register lines of diary project ListDp.Clear(); items.ForEach(x => { x.Status = 3; DBSimplifiedRequisitionLines.Update(DBSimplifiedRequisitionLines.ParseToDatabase(x)); DiárioDeProjeto newdp = new DiárioDeProjeto() { NºProjeto = requisitionSimpli.ProjectNo, Data = requisitionSimpli.RegistrationDate == "" || requisitionSimpli.RegistrationDate == null ? (DateTime?)null : DateTime.Parse(requisitionSimpli.RegistrationDate), TipoMovimento = 1, //Consumo Tipo = x.Type, Código = x.Code, Descrição = x.Description, Quantidade = x.QuantityApproved, CódUnidadeMedida = x.MeasureUnitNo, CódLocalização = x.LocationCode, //GrupoContabProjeto = x.ProjectContabGroup, CódigoRegião = x.RegionCode, CódigoÁreaFuncional = x.FunctionAreaCode, CódigoCentroResponsabilidade = x.ResponsabilityCenterCode, Utilizador = User.Identity.Name, CustoUnitário = x.UnitCost, CustoTotal = x.TotalCost, //PreçoUnitário = x.UnitPrice, //PreçoTotal = x.TotalPrice, //Faturável = x.Billable, Registado = true, //FaturaANºCliente = x.InvoiceToClientNo, //Moeda = x.Currency, //ValorUnitárioAFaturar = x.UnitValueToInvoice, TipoRefeição = x.MealType, //CódGrupoServiço = x.ServiceGroupCode, //NºGuiaResíduos = x.ResidueGuideNo, //NºGuiaExterna = x.ExternalGuideNo, //DataConsumo = x.ConsumptionDate == "" || x.ConsumptionDate == null ? (DateTime?)null : DateTime.Parse(x.ConsumptionDate), //CódServiçoCliente = x.ServiceClientCode }; newdp.Faturada = false; newdp.DataHoraCriação = DateTime.Now; newdp.UtilizadorCriação = User.Identity.Name; //Insert List Regist Project ListDp.Add(DBProjectDiary.ParseToViewModel(newdp)); }); register.RegisterDiaryLinesRequisition(ListDp, User.Identity.Name); //Update Simplified Requisition Header requisitionSimpli.Status = 3; requisitionSimpli.RegistrationDate = DateTime.Now.ToString(); requisitionSimpli.ReceiptResponsible = User.Identity.Name; DBSimplifiedRequisitions.Update(DBSimplifiedRequisitions.ParseToDatabase(requisitionSimpli)); requisitionSimpli.eReasonCode = 100; requisitionSimpli.eMessage = "Registo em Diário de Projeto com sucesso"; } return(Json(requisitionSimpli)); }