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)
            }));
        }
示例#2
0
        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);
        }
示例#3
0
        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));
        }