public JsonResult GetProductivityUnits()
        {
            List <ProductivityUnitViewModel> result = DBProductivityUnits.ParseListToViewModel(DBProductivityUnits.GetAll());

            if (result != null)
            {
                result.ForEach(x =>
                {
                    x.ClientName = DBNAV2017Clients.GetClientNameByNo(x.ClientNo, _config.NAVDatabaseName, _config.NAVCompanyName);
                });

                //Apply User Dimensions Validations
                List <AcessosDimensões> CUserDimensions = DBUserDimensions.GetByUserId(User.Identity.Name);
                //Regions
                if (CUserDimensions.Where(y => y.Dimensão == (int)Dimensions.Region).Count() > 0)
                {
                    result.RemoveAll(x => !CUserDimensions.Any(y => y.Dimensão == (int)Dimensions.Region && y.ValorDimensão == x.CodeRegion));
                }
                //FunctionalAreas
                if (CUserDimensions.Where(y => y.Dimensão == (int)Dimensions.FunctionalArea).Count() > 0)
                {
                    result.RemoveAll(x => !CUserDimensions.Any(y => y.Dimensão == (int)Dimensions.FunctionalArea && y.ValorDimensão == x.CodeFunctionalArea));
                }
                //ResponsabilityCenter
                if (CUserDimensions.Where(y => y.Dimensão == (int)Dimensions.ResponsabilityCenter).Count() > 0)
                {
                    result.RemoveAll(x => !CUserDimensions.Any(y => y.Dimensão == (int)Dimensions.ResponsabilityCenter && y.ValorDimensão == x.CodeResponsabilityCenter));
                }
            }
            return(Json(result));
        }
        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 ContractViewModel ParseToViewModel(Contratos x, string NAVDatabaseName, string NAVCompanyName)
        {
            if (x == null)
            {
                return(null);
            }
            ContractViewModel result = new ContractViewModel()
            {
                ContractType             = x.TipoContrato,
                ContractNo               = x.NºDeContrato,
                VersionNo                = x.NºVersão,
                Area                     = x.Área,
                Description              = x.Descrição,
                Status                   = x.Estado,
                OldStatus                = x.EstadoAnterior,
                ChangeStatus             = x.EstadoAlteração,
                ClientNo                 = x.NºCliente,
                CodeRegion               = x.CódigoRegião,
                CodeFunctionalArea       = x.CódigoÁreaFuncional,
                CodeResponsabilityCenter = x.CódigoCentroResponsabilidade,
                CodeShippingAddress      = x.CódEndereçoEnvio,
                ShippingName             = x.EnvioANome,
                ShippingName2            = x.EnvioANome2,
                ShippingAddress          = x.EnvioAEndereço,
                ShippingAddress2         = x.EnvioAEndereço2,
                ShippingZipCode          = x.EnvioACódPostal,
                ShippingLocality         = x.EnvioALocalidade,
                InvocePeriod             = x.PeríodoFatura,
                LastInvoiceDate          = x.ÚltimaDataFatura.HasValue ? x.ÚltimaDataFatura.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.ÚltimaDataFatura.Value.ToString("yyyy-MM-dd") : "" : "",
                NextInvoiceDate          = x.PróximaDataFatura.HasValue ? x.PróximaDataFatura.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.PróximaDataFatura.Value.ToString("yyyy-MM-dd") : "" : "",
                StartData                = x.DataInicial.HasValue ? x.DataInicial.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataInicial.Value.ToString("yyyy-MM-dd") : "" : "",
                DueDate                  = x.DataExpiração.HasValue ? x.DataExpiração.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataExpiração.Value.ToString("yyyy-MM-dd") : "" : "",
                BatchInvoices            = x.JuntarFaturas,
                NextBillingPeriod        = x.PróximoPeríodoFact,
                ContractLinesInBilling   = x.LinhasContratoEmFact,
                CodePaymentTerms         = x.CódTermosPagamento,
                ProposalType             = x.TipoProposta,
                BillingType              = x.TipoFaturação,
                MaintenanceContractType  = x.TipoContratoManut,
                ClientRequisitionNo      = x.NºRequisiçãoDoCliente,
                ReceiptDateRequisition   = x.DataReceçãoRequisição.HasValue ? x.DataReceçãoRequisição.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataReceçãoRequisição.Value.ToString("yyyy-MM-dd") : "" : "",
                PromiseNo                = x.NºCompromisso,
                ProvisioningFee          = x.TaxaAprovisionamento,
                Mc = x.Mc,
                DisplacementFee        = x.TaxaDeslocação,
                FixedVowsAgreement     = x.ContratoAvençaFixa,
                ServiceObject          = x.ObjetoServiço,
                VariableAvengeAgrement = x.ContratoAvençaVariável,
                Notes                         = x.Notas,
                ContractStartDate             = x.DataInícioContrato.HasValue ? x.DataInícioContrato.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataInícioContrato.Value.ToString("yyyy-MM-dd") : "" : "",
                ContractEndDate               = x.DataFimContrato.HasValue ? x.DataFimContrato.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataFimContrato.Value.ToString("yyyy-MM-dd") : "" : "",
                ContractDurationDescription   = x.DescriçãoDuraçãoContrato,
                StartDateFirstContract        = x.DataInício1ºContrato.HasValue ? x.DataInício1ºContrato.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataInício1ºContrato.Value.ToString("yyyy-MM-dd") : "" : "",
                FirstContractReference        = x.Referência1ºContrato,
                ContractMaxDuration           = x.DuraçãoMáxContrato.HasValue ? x.DuraçãoMáxContrato.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DuraçãoMáxContrato.Value.ToString("yyyy-MM-dd") : "" : "",
                TerminationTermNotice         = x.RescisãoPrazoAviso,
                RenovationConditions          = x.CondiçõesParaRenovação,
                RenovationConditionsAnother   = x.CondiçõesRenovaçãoOutra,
                PaymentTerms                  = x.CondiçõesPagamento,
                PaymentTermsAnother           = x.CondiçõesPagamentoOutra,
                CustomerSigned                = x.AssinadoPeloCliente,
                Interests                     = x.Juros,
                SignatureDate                 = x.DataDaAssinatura.HasValue ? x.DataDaAssinatura.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataDaAssinatura.Value.ToString("yyyy-MM-dd") : "" : "",
                CustomerShipmentDate          = x.DataEnvioCliente.HasValue ? x.DataEnvioCliente.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataEnvioCliente.Value.ToString("yyyy-MM-dd") : "" : "",
                ProvisionUnit                 = x.UnidadePrestação,
                ContractReference             = x.ReferênciaContrato,
                TotalProposalValue            = x.ValorTotalProposta,
                PhysicalFileLocation          = x.LocalArquivoFísico,
                OportunityNo                  = x.NºOportunidade,
                ProposalNo                    = x.NºProposta,
                ContactNo                     = x.NºContato,
                DateProposedState             = x.DataEstadoProposta.HasValue ? x.DataEstadoProposta.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataEstadoProposta.Value.ToString("yyyy-MM-dd") : "" : "",
                OrderOrigin                   = x.OrigemDoPedido,
                OrdOrderSource                = x.DescOrigemDoPedido,
                InternalNumeration            = x.NumeraçãoInterna,
                ProposalChangeDate            = x.DataHoraModificação.HasValue ? x.DataHoraModificação.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataHoraModificação.Value.ToString("yyyy-MM-dd") : "" : "",
                ProposalChangeTime            = x.DataHoraModificação.HasValue ? x.DataHoraModificação.Value.ToString("HH:mm") : "",
                LimitClarificationDate        = x.DataHoraLimiteEsclarecimentos.HasValue ? x.DataHoraLimiteEsclarecimentos.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataHoraLimiteEsclarecimentos.Value.ToString("yyyy-MM-dd") : "" : "",
                LimitClarificationTime        = x.DataHoraLimiteEsclarecimentos.HasValue ? x.DataHoraLimiteEsclarecimentos.Value.ToString("HH:mm") : "",
                ErrorsOmissionsDate           = x.DataHoraErrosEOmissões.HasValue ? x.DataHoraErrosEOmissões.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataHoraErrosEOmissões.Value.ToString("yyyy-MM-dd") : "" : "",
                ErrorsOmissionsTime           = x.DataHoraErrosEOmissões.HasValue ? x.DataHoraErrosEOmissões.Value.ToString("HH:mm") : "",
                FinalReportDate               = x.DataHoraRelatórioFinal.HasValue ? x.DataHoraRelatórioFinal.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataHoraRelatórioFinal.Value.ToString("yyyy-MM-dd") : "" : "",
                FinalReportTime               = x.DataHoraRelatórioFinal.HasValue ? x.DataHoraRelatórioFinal.Value.ToString("HH:mm") : "",
                DocumentationHabilitationDate = x.DataHoraHabilitaçãoDocumental.HasValue ? x.DataHoraHabilitaçãoDocumental.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataHoraHabilitaçãoDocumental.Value.ToString("yyyy-MM-dd") : "" : "",
                DocumentationHabilitationTime = x.DataHoraHabilitaçãoDocumental.HasValue ? x.DataHoraHabilitaçãoDocumental.Value.ToString("HH:mm") : "",
                CompulsoryCompulsoryNo        = x.NºComprimissoObrigatório,
                CreateDate                    = x.DataHoraCriação.HasValue ? x.DataHoraCriação.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataHoraCriação.Value.ToString("yyyy-MM-dd") : "" : "",
                UpdateDate                    = x.DataHoraModificação.HasValue ? x.DataHoraModificação.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataHoraModificação.Value.ToString("yyyy-MM-dd") : "" : "",
                CreateUser                    = x.UtilizadorCriação,
                UpdateUser                    = x.UtilizadorModificação,
                Filed                         = x.Arquivado,
                ArchiveReason                 = x.RazãoArquivo,
                RelatedContract               = x.NºContrato,
                //RequestOrigin = x.OrigemDoPedido,
                //RequestOriginDescription = x.DescOrigemDoPedido,
                //EndData = x.DataExpiração.HasValue ? x.DataExpiração.Value.ToString("yyyy-MM-dd") : "",
                //SentData = x.DataEnvioCliente.HasValue ? x.DataEnvioCliente.Value.ToString("yyyy-MM-dd") : "",
                //UpdateData = x.DataAlteraçãoProposta.HasValue ? x.DataAlteraçãoProposta.Value.ToString("yyyy-MM-dd") : "",
                //TotalValue = x.ValorTotalProposta,
                //ClarificationLimite = x.DataHoraLimiteEsclarecimentos.HasValue ? x.DataHoraLimiteEsclarecimentos.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
                //NextInvoicePeriod = x.PróximoPeríodoFact
                BaseValueProcedure   = x.ValorBaseProcedimento,
                PreviousHearing      = x.AudiênciaPrévia.HasValue ? x.AudiênciaPrévia.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.AudiênciaPrévia.Value.ToString("yyyy-MM-dd") : "" : "",
                PreviousHearingTime  = x.AudiênciaPrévia.HasValue ? x.AudiênciaPrévia.Value.ToString("HH:mm") : "",
                ProposalDelivery     = x.DataHoraEntregaProposta.HasValue ? x.DataHoraEntregaProposta.Value.ToString("yyyy-MM-dd") != "1900-01-01" ? x.DataHoraEntregaProposta.Value.ToString("yyyy-MM-dd") : "" : "",
                ProposalDeliveryTime = x.DataHoraEntregaProposta.HasValue ? x.DataHoraEntregaProposta.Value.ToString("HH:mm") : "",
                History                 = x.Historico,
                Type                    = x.Tipo ?? 0,
                NoVEP                   = x.NºVep,
                TextoFatura             = x.TextoFatura,
                FaturaPrecosIvaIncluido = x.FaturaPrecosIvaIncluido
            };

            if (x.NºCliente != null && x.NºCliente != "")
            {
                result.ClientName = DBNAV2017Clients.GetClientNameByNo(x.NºCliente, NAVDatabaseName, NAVCompanyName);
            }
            return(result);
        }
        public static ProjectMovementViewModel ParseToViewModel(this MovimentosDeProjeto item, string navDatabaseName, string navCompanyName)
        {
            if (item != null)
            {
                ProjectMovementViewModel projMovement = new ProjectMovementViewModel();

                projMovement.LineNo       = item.NºLinha;
                projMovement.ProjectNo    = item.NºProjeto;
                projMovement.Date         = item.Data == null ? String.Empty : item.Data.Value.ToString("yyyy-MM-dd");
                projMovement.MovementType = item.TipoMovimento;
                projMovement.DocumentNo   = item.NºDocumento;
                projMovement.Type         = item.Tipo;
                //TypeDescription
                projMovement.Code                     = item.Código;
                projMovement.Description              = item.Descrição;
                projMovement.Quantity                 = item.Quantidade;
                projMovement.MeasurementUnitCode      = item.CódUnidadeMedida;
                projMovement.LocationCode             = item.CódLocalização;
                projMovement.ProjectContabGroup       = item.GrupoContabProjeto;
                projMovement.RegionCode               = item.CódigoRegião;
                projMovement.FunctionalAreaCode       = item.CódigoÁreaFuncional;
                projMovement.ResponsabilityCenterCode = item.CódigoCentroResponsabilidade;
                projMovement.User                     = item.Utilizador;
                projMovement.UnitCost                 = item.CustoUnitário;
                projMovement.TotalCost                = item.CustoTotal;
                projMovement.UnitPrice                = item.PreçoUnitário;
                projMovement.TotalPrice               = item.PreçoTotal;
                projMovement.UnitValueToInvoice       = item.ValorUnitárioAFaturar;
                projMovement.Currency                 = item.Moeda;
                projMovement.Billable                 = item.Faturável.HasValue ? item.Faturável.Value : false;
                projMovement.Billed                   = item.Faturada.HasValue ? item.Faturada.Value : false;
                projMovement.Registered               = item.Registado.HasValue ? item.Registado.Value : false;
                projMovement.ResourceType             = item.TipoRecurso;
                projMovement.ServiceClientCode        = item.CódServiçoCliente;
                //ServiceClientDescription
                projMovement.ServiceGroupCode        = item.CódGrupoServiço;
                projMovement.ExternalGuideNo         = item.NºGuiaExterna;
                projMovement.ConsumptionDate         = item.DataConsumo?.ToString("yyyy-MM-dd");
                projMovement.ResidueGuideNo          = item.NºGuiaResíduos;
                projMovement.AdjustedDocument        = item.DocumentoCorrigido;
                projMovement.AdjustedDocumentDate    = item.DataDocumentoCorrigido?.ToString("yyyy-MM-dd");
                projMovement.ResidueFinalDestinyCode = item.CódDestinoFinalResíduos;
                projMovement.MealType = item.TipoRefeição;
                //MealTypeDescription
                projMovement.InvoiceToClientNo = item.FaturaANºCliente;
                projMovement.CreateUser        = item.UtilizadorCriação;
                projMovement.CreateDate        = item.DataHoraCriação;
                projMovement.UpdateUser        = item.UtilizadorModificação;
                projMovement.UpdateDate        = item.DataHoraModificação;
                //ServiceData = item;
                //ClientRequest = item;
                projMovement.RequestNo              = item.NºRequisição;
                projMovement.RequestLineNo          = item.NºLinhaRequisição;
                projMovement.Driver                 = item.Motorista;
                projMovement.OriginalDocument       = item.DocumentoOriginal;
                projMovement.AdjustedPrice          = item.AcertoDePreços;
                projMovement.AutorizatedInvoice     = item.FaturaçãoAutorizada;
                projMovement.AutorizatedInvoice2    = item.FaturaçãoAutorizada2;
                projMovement.AutorizatedInvoiceDate = item.DataAutorizaçãoFaturação?.ToString("yyyy-MM-dd");
                projMovement.AuthorizedBy           = item.AutorizadoPor;
                projMovement.TimesheetNo            = item.NºFolhaHoras;
                projMovement.InternalRequest        = item.RequisiçãoInterna;
                projMovement.EmployeeNo             = item.NºFuncionário;
                projMovement.QuantityReturned       = item.QuantidadeDevolvida;
                projMovement.CustomerNo             = item.CodCliente;
                projMovement.LicensePlate           = item.Matricula;
                projMovement.ReadingCode            = item.CodigoLer;
                projMovement.Group                   = item.Grupo;
                projMovement.Operation               = item.Operacao;
                projMovement.InvoiceGroup            = item.GrupoFatura;
                projMovement.InvoiceGroupDescription = item.GrupoFaturaDescricao;
                //CommitmentNumber = Project.DBProjects.GetAllByProjectNumber(item.NºProjeto).NºCompromisso,
                projMovement.ClientName      = DBNAV2017Clients.GetClientNameByNo(item.FaturaANºCliente, navDatabaseName, navCompanyName);
                projMovement.ClientVATReg    = DBNAV2017Clients.GetClientVATByNo(item.FaturaANºCliente, navDatabaseName, navCompanyName);
                projMovement.CriarMovNav2017 = item.CriarMovNav2017;
                projMovement.Selecionada     = item.Selecionada;
                projMovement.Fatura          = item.Fatura;

                return(projMovement);
            }
            return(null);
        }