/** * Método do 2º step-method * * @param valorFaturamento * @param motivo * @param usuario * @return o faturamento do prestador a ser salvo * @throws ValidateException */ public AbstractFaturamento criarFaturamentoComAlteracao( AbstractFaturamento faturamento, BigDecimal valorFaturamentoAcres, BigDecimal valorFaturamentoDecres, String motivo, UsuarioInterface usuario) throws ValidateException { AlteracaoFaturamento alteracao = new AlteracaoFaturamento(); if (valorFaturamentoAcres == null) { valorFaturamentoAcres = BigDecimal.ZERO; } if (valorFaturamentoDecres == null) { valorFaturamentoDecres = BigDecimal.ZERO; } if (valorFaturamentoAcres.compareTo(BigDecimal.ZERO) == 0 && valorFaturamentoDecres.compareTo(BigDecimal.ZERO) == 0) { throw new RuntimeException("Caro usuário informe um valor."); } alteracao.setValorIncremento(valorFaturamentoAcres); alteracao.setValorDecremento(valorFaturamentoDecres); alteracao.setStatus(AlteracaoFaturamento.STATUS_ATIVO); alteracao.setData(new Date()); alteracao.setMotivo(motivo); alteracao.setUsuario(usuario); if (faturamento == null) { if (tipo == FATURAMENTO_NORMAL) faturamento = new Faturamento(); else faturamento = new FaturamentoPassivo(); faturamento.setValorBruto(BigDecimal.ZERO); faturamento.setValorLiquido(BigDecimal.ZERO); faturamento.setPrestador(prestador); faturamento.setNome(prestador.getPessoaJuridica().getFantasia()); faturamento.setInformacaoFinanceira(prestador.getInformacaoFinanceira()); faturamento.setCategoria(prestador.getTipoPrestador()); faturamento.setGeradoPosteriormente(true); faturamento.setMotivoGeracaoPosterior(motivo); faturamento.setDataGeracao(new Date()); faturamento.setCompetencia(Utils.gerarCompetencia(competencia)); alteracao.setFaturamento(faturamento); faturamento.getAlteracoesFaturamento().add(alteracao); } else { alteracao.setFaturamento(faturamento); faturamento.getAlteracoesFaturamento().add(alteracao); } faturamento.setValorBruto(faturamento.getValorBruto().add(alteracao.getSaldo())); if (faturamento.getValorBruto().compareTo(BigDecimal.ZERO) < 0) { throw new RuntimeException( "Caro usuario, o saldo das alterações não pode deixar o valor do faturamento zerado."); } faturamento.getGuiasFaturaveis().size(); return faturamento; }