public static MovimentosDeProjeto ParseToDB(this ProjectMovementViewModel item)
        {
            if (item != null)
            {
                MovimentosDeProjeto projMovement = new MovimentosDeProjeto();

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

                return(projMovement);
            }
            return(null);
        }
        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);
        }