Exemplo n.º 1
0
        public ProjetoPed GerarXml(int ProjetoId, string Versao, string UserId)
        {
            ProjetoPed ProjetoPed = new ProjetoPed();
            Projeto    projeto    = obterProjeto(ProjetoId);

            var PedEmpresaList        = new List <PedEmpresa>();
            var PedExecutoraList      = new List <PedExecutora>();
            var recursosHumanos       = projeto.RecursosHumanos.ToList();
            var EmpresasFinanciadoras = projeto.Empresas.Where(p => p.ClassificacaoValor == "Energia" || p.ClassificacaoValor == "Proponente").ToList();
            var EmpresasExecutoras    = projeto.Empresas.Where(p => p.ClassificacaoValor == "Executora").ToList();
            var EmpresasParceiras     = projeto.Empresas.Where(p => p.ClassificacaoValor == "Parceira").ToList();

            ProjetoPed.PD_Recursos = new PD_Recursos {
                RecursoEmpresa  = new List <RecursoEmpresa>(),
                RecursoParceira = new List <RecursoParceira>()
            };


            #region PD_ProjetoBase

            var SubtemasList = new List <PedSubTema>();

            foreach (TemaSubTema subTema in projeto.Tema.SubTemas)
            {
                SubtemasList.Add(new PedSubTema {
                    CodSubtema   = subTema.CatalogSubTema.Valor,
                    OutroSubtema = subTema.OutroDesc
                });
            }

            ProjetoPed.PD_ProjetoBase = new PD_ProjetoBase {
                AvIniANEEL = projeto.AvaliacaoInicial.ToString(),
                Titulo     = projeto.TituloDesc,
                Duracao    = projeto.Etapas.Sum(p => p.Duracao),
                Segmento   = projeto.CatalogSegmento.Valor,
                CodTema    = projeto.Tema.CatalogTema.Valor,
                OutroTema  = projeto.Tema.OutroDesc,
                Subtemas   = new PedSubTemas {
                    Subtema = SubtemasList
                },
                Motivacao      = projeto.Motivacao,
                Originalidade  = projeto.Originalidade,
                Aplicabilidade = projeto.Aplicabilidade,
                Relevancia     = projeto.Relevancia,
                RazoabCustos   = projeto.Razoabilidade,
                PesqCorrelata  = projeto.Pesquisas
            };

            Produto Produto = projeto.Produtos.Where(p => p.Classificacao == (ProdutoClassificacao)(1)).FirstOrDefault();

            if (Produto != null)
            {
                ProjetoPed.PD_ProjetoBase.FaseInovacao     = Produto.CatalogProdutoFaseCadeia.Valor;
                ProjetoPed.PD_ProjetoBase.TipoProduto      = Produto.TipoValor;
                ProjetoPed.PD_ProjetoBase.DescricaoProduto = Produto.Desc;
            }
            #endregion

            foreach (Empresa empresa in EmpresasFinanciadoras)
            {
                var DestRecursosExec = new List <DestRecursosExec>(); //Da empresa financiadora para empresa executora
                var DestRecursosEmp  = new DestRecursosEmp();         // Da empresa pra ela própria

                #region Equipe Empresa
                var equipeList =
                    from rh in recursosHumanos
                    where rh.CPF != null && rh.EmpresaId == empresa.Id
                    select new EquipeEmpresa {
                    NomeMbEqEmp      = rh.NomeCompleto,
                    CpfMbEqEmp       = rh.CPF,
                    TitulacaoMbEqEmp = rh.TitulacaoValor,
                    FuncaoMbEqEmp    = rh.FuncaoValor
                };
                PedEmpresaList.Add(new PedEmpresa {
                    CodEmpresa  = empresa.CatalogEmpresa.Valor,
                    TipoEmpresa = empresa.ClassificacaoValor,
                    Equipe      = new Equipe {
                        EquipeEmpresa = equipeList.ToList()
                    }
                });

                #endregion

                this.getCustoEmpresa(projeto, empresa, EmpresasExecutoras, out DestRecursosExec, out DestRecursosEmp);

                ProjetoPed.PD_Recursos.RecursoEmpresa.Add(new RecursoEmpresa {
                    CodEmpresa       = empresa.CatalogEmpresa.Valor,
                    DestRecursosExec = DestRecursosExec,
                    DestRecursosEmp  = DestRecursosEmp,
                });
            }
            foreach (Empresa empresa in EmpresasParceiras)
            {
                var DestRecursosExec = new List <DestRecursosExec>(); //Da empresa financiadora para empresa executora
                var DestRecursosEmp  = new DestRecursosEmp();         // Da empresa pra ela própria

                this.getCustoEmpresa(projeto, empresa, EmpresasExecutoras, out DestRecursosExec, out DestRecursosEmp);

                ProjetoPed.PD_Recursos.RecursoParceira.Add(new RecursoParceira {
                    CNPJParc         = empresa.Cnpj,
                    DestRecursosExec = DestRecursosExec
                });
            }

            foreach (Empresa empresa in EmpresasExecutoras)
            {
                #region Equipe Empresa
                var equipeList =
                    from rh in recursosHumanos
                    where rh.EmpresaId == empresa.Id
                    select new EquipeExec {
                    NomeMbEqExec      = rh.NomeCompleto,
                    BRMbEqExec        = rh.NacionalidadeValor,
                    DocMbEqExec       = rh.Passaporte ?? rh.CPF,
                    TitulacaoMbEqExec = rh.TitulacaoValor,
                    FuncaoMbEqExec    = rh.FuncaoValor
                };
                #endregion

                PedExecutoraList.Add(new PedExecutora {
                    CNPJExec        = empresa.Cnpj,
                    RazaoSocialExec = empresa.RazaoSocial,
                    UfExec          = empresa.Estado.Valor,
                    Equipe          = new ExecEquipe {
                        EquipeExec = equipeList.ToList()
                    }
                });
            }

            ProjetoPed.PD_Equipe = new PD_Equipe {
                Empresas = new PedEmpresas {
                    Empresa = PedEmpresaList
                },
                Executoras = new PedExecutoras {
                    Executora = PedExecutoraList
                }
            };


            return(ProjetoPed);
        }
Exemplo n.º 2
0
        protected void getCustoEmpresa(Projeto projeto, Empresa empresa, List <Empresa> EmpresasExecutoras, out List <DestRecursosExec> DestRecursosExec, out DestRecursosEmp DestRecursosEmp)
        {
            DestRecursosExec = new List <DestRecursosExec>(); //Da empresa financiadora para empresa executora
            DestRecursosEmp  = new DestRecursosEmp();         // Da empresa pra ela própria

            #region Custo Com Empresas Executora
            var custoRHEmpresaExec =
                from al in projeto.AlocacoesRh
                where al.RecursoHumano.Empresa.ClassificacaoValor == "Executora" && al.EmpresaId == empresa.Id
                group al by al.RecursoHumano.EmpresaId into _empresa
                select new {
                custo     = _empresa.Sum(_al => _al.HrsTotais * _al.RecursoHumano.ValorHora),
                empresa   = _empresa.First().RecursoHumano.Empresa,
                alocacoes = _empresa.ToList()
            };

            var custoRMEmpresaExec =
                from al in projeto.AlocacoesRm
                where al.EmpresaFinanciadoraId == empresa.Id
                group al by al.EmpresaRecebedoraId into _empresa
                select new {
                custo     = _empresa.Sum(_al => _al.Qtd * _al.RecursoMaterial.ValorUnitario),
                empresa   = _empresa.First().EmpresaRecebedora,
                alocacoes = _empresa.ToList()
            };

            foreach (Empresa executora in EmpresasExecutoras)
            {
                var CustoCatContabilExec = new List <CustoCatContabilExec>();

                var custosRH = custoRHEmpresaExec.FirstOrDefault(ex => ex.empresa.Id == executora.Id);
                var custosRM = custoRMEmpresaExec.FirstOrDefault(ex => ex.empresa.Id == executora.Id);

                if (custosRH != null)
                {
                    CustoCatContabilExec.Add(new CustoCatContabilExec {
                        CatContabil = "RH",
                        CustoExec   = custosRH.custo.ToString()
                    });
                }

                if (custosRM != null)
                {
                    var custoCatContabilExec =
                        from r in this.groupAlocacoesRmByCategory(custosRM.alocacoes)
                        select new CustoCatContabilExec {
                        CatContabil = r.Key,
                        CustoExec   = r.Value.Sum(a => a.Qtd * a.RecursoMaterial.ValorUnitario).ToString()
                    };

                    CustoCatContabilExec.AddRange(custoCatContabilExec);
                }

                if (CustoCatContabilExec.Count > 0)
                {
                    DestRecursosExec.Add(new DestRecursosExec {
                        CNPJExec             = executora.Cnpj,
                        CustoCatContabilExec = CustoCatContabilExec
                    });
                }
            }
            #endregion

            #region Custo com a própria empresa
            var custoRHEmpresa = projeto.AlocacoesRh.Where(al => al.EmpresaId == empresa.Id && al.RecursoHumano.EmpresaId == empresa.Id).Sum(al => al.HrsTotais * al.RecursoHumano.ValorHora);

            var custoRMEmpresa = projeto.AlocacoesRm.Where(al => al.EmpresaRecebedoraId == empresa.Id)
                                 .GroupBy(al => al.RecursoMaterial.CategoriaContabilValor)
                                 .Select(a => new CustoCatContabilEmp {
                CatContabil = a.Key,
                CustoEmp    = a.Sum(b => b.Qtd * b.RecursoMaterial.ValorUnitario).ToString()
            }).ToList();

            DestRecursosEmp.CustoCatContabilEmp = new List <CustoCatContabilEmp>();

            DestRecursosEmp.CustoCatContabilEmp.Add(new CustoCatContabilEmp {
                CatContabil = "RH", CustoEmp = custoRHEmpresa.ToString()
            });

            DestRecursosEmp.CustoCatContabilEmp.AddRange(custoRMEmpresa);
            #endregion
        }