public void fill(ProdutoViewModel pvm) { pvm.setId(id); pvm.setReferencia(referencia); pvm.setNome(nome); pvm.setCategoria(categoria); if (categoria != null) { pvm.setCategoriaId(categoria.getId()); } if (produtoComponentes != null) { List<ProdutoComponenteViewModel> listPcvm = new ArrayList<>(); for (ProdutoComponente pc : produtoComponentes) { if (pc != null) { ProdutoComponenteViewModel pcvm = new ProdutoComponenteViewModel(); pc.fill(pcvm); listPcvm.add(pcvm); } } pvm.setProdutoComponentes(listPcvm); } else { pvm.setProdutoComponentes(null); } if (produtoMaquinas != null) { List<ProdutoMaquinaViewModel> listVm = new ArrayList<>(); for (ProdutoMaquina pm : produtoMaquinas) { if (pm != null) { ProdutoMaquinaViewModel pmvm = new ProdutoMaquinaViewModel(); pm.fill(pmvm); listVm.add(pmvm); } } pvm.setProdutoMaquinas(listVm); } else { pvm.setProdutoMaquinas(null); } if (produtoSetores != null) { List<ProdutoSetorViewModel> listVm = new ArrayList<>(); for (ProdutoSetor ps : produtoSetores) { if (ps != null) { ProdutoSetorViewModel pmvm = new ProdutoSetorViewModel(); ps.fill(pmvm); listVm.add(pmvm); } } pvm.setProdutoSetores(listVm); } else { pvm.setProdutoSetores(null); } pvm.setCusto(getCustoTotal(pvm)); }
public void calculaRateioCustosSetores() { Empresa empresa = Util.getEmpresa(); if (empresa != null && empresa.getSetores() != null && this.getProdutoSetores() != null) { for (ProdutoSetor produtoSetor : this.getProdutoSetores()) { Setor setor = produtoSetor.getSetor(); if (setor == null) continue; float minutosTrabalhoMensal = (setor.getFuncionarios() * setor.getHorasSemana() // horas semanais * 4 // converte para valor mensal (4 semanas/mês) * 60 // converte para minutos * setor.getEficienciaProdutiva() // aplica o índice de produtividade/ociosidade ); // Custo médio do salário float rateioCustoMinutoSetor = (setor.getSalarioMedio() * setor.getFuncionarios() / minutosTrabalhoMensal); if (empresa.getCustos() != null) { // Faz o rateio dos custos e soma junto for (Custo custo : empresa.getCustos()) { float valorCusto = custo.getValor(); if (custo.isMultiplicaFuncionarios()) valorCusto *= setor.getFuncionarios(); // Calcula o custo/minuto do setor (com ociosidade) (na planilha se chama // valor/minuto/homem com ociosidade) rateioCustoMinutoSetor += (valorCusto / minutosTrabalhoMensal); } } produtoSetor.setCustoMinuto(rateioCustoMinutoSetor); } } else { this.setProdutoSetores( null); // Se não tiver custos gerais nem setores, pode ignorar os setores do produto, pois // não sabemos qual é o custo por homem } }