Author: Pedro Lucas Porcellis <porcellis@eletrotupi.com>
main: list ITBIs and prices by each real-state unit
src/org/porcellis/Main.java | 8 ++ src/org/porcellis/controllers/ImobiliariaController.java | 13 +++ src/org/porcellis/models/Imobiliaria.java | 37 +++++++++ src/org/porcellis/models/UnidadePelotas.java | 7 + src/org/porcellis/models/UnidadePortoAlegre.java | 7 + src/org/porcellis/models/utils/Taxas.java | 3 src/org/porcellis/views/ImobiliariaView.java | 21 +++++ src/org/porcellis/views/ImovelView.java | 2
diff --git a/src/org/porcellis/Main.java b/src/org/porcellis/Main.java index ab6fb4facdd5ff6f94b23a3be47a33205b1743fd..1f7b3a0c1537972b81d15f8601739fdd74d2e6a5 100644 --- a/src/org/porcellis/Main.java +++ b/src/org/porcellis/Main.java @@ -125,6 +125,14 @@ System.out.println("\n\tListar ITBIs dos locais:\n"); imovelController.calcularITBI(); + System.out.println("\n\tListar previsao de faturamento das unidades:\n"); + + imobiliariaController.exibirPrevisaoFaturamento(); + + System.out.println("\n\tListar previsao de ITBI das unidades:\n"); + + imobiliariaController.exibirPrevisaoITBI(); + System.out.println("\nXau!"); } diff --git a/src/org/porcellis/controllers/ImobiliariaController.java b/src/org/porcellis/controllers/ImobiliariaController.java index eadb121dfa0d7fb518c4f9469f847831ad56d621..7bc66e3d7c0084adc9b6f4c843fc8720f754098f 100644 --- a/src/org/porcellis/controllers/ImobiliariaController.java +++ b/src/org/porcellis/controllers/ImobiliariaController.java @@ -1,6 +1,7 @@ package org.porcellis.controllers; import org.porcellis.models.Imobiliaria; +import org.porcellis.models.Imovel; import org.porcellis.views.ImobiliariaView; import java.util.ArrayList; @@ -17,6 +18,18 @@ } public void adicionarImobiliaria(Imobiliaria imobiliaria) { imobiliarias.add(imobiliaria); + } + + public void exibirPrevisaoFaturamento() { + for (Imobiliaria unidade : imobiliarias) { + imobiliariaView.mostrarPrevisaoFaturamento(unidade); + } + } + + public void exibirPrevisaoITBI() { + for (Imobiliaria unidade : imobiliarias) { + imobiliariaView.mostrarPrevisaoITBI(unidade); + } } public void listarImobiliarias() { diff --git a/src/org/porcellis/models/Imobiliaria.java b/src/org/porcellis/models/Imobiliaria.java index 306b8002815f312e12a4b303e4d6777ba999f7cc..8c290965ea393d55cef6274f64ac874d0e2418f6 100644 --- a/src/org/porcellis/models/Imobiliaria.java +++ b/src/org/porcellis/models/Imobiliaria.java @@ -1,19 +1,54 @@ package org.porcellis.models; +import java.util.List; +import java.util.ArrayList; + public class Imobiliaria implements Portfolio { private String razaoSocial; private String cnpj; private double previsaoDeFaturamento; + + private List<Imovel> imoveis; public Imobiliaria(String razaoSocial, String cnpj, double previsaoDeFaturamento) { this.razaoSocial = razaoSocial; this.cnpj = cnpj; this.previsaoDeFaturamento = previsaoDeFaturamento; + this.imoveis = new ArrayList<Imovel>(); + } + + public double previsaoITBI() { + double previsaoITBI = 0.0; + + return getPrevisaoDeFaturamento() * getITBI(); + } + + public void adicionaImovel(Imovel imovel) { + imoveis.add(imovel); + + recalcularPrevisaoDeFaturamento(); + } + + public void recalcularPrevisaoDeFaturamento() { + double previsaoDeFaturamentoNova = 0.0; + + for (Imovel imovel : imoveis) { + previsaoDeFaturamentoNova += imovel.precoFinal(); + } + + System.out.println("Previsao faturamento: " + previsaoDeFaturamentoNova); + + setPrevisaoDeFaturamento(previsaoDeFaturamentoNova); + } + + // XXX: Razão pela qual não gosto/faz sentido escrever código em português + public List<Imovel> getImoveis() { + return imoveis; } @Override public double getITBI() { - return previsaoDeFaturamento * 0.02; + return 0.0; // XXX: Implementado nas subclasses } public String getRazaoSocial() { diff --git a/src/org/porcellis/models/UnidadePelotas.java b/src/org/porcellis/models/UnidadePelotas.java index a860bf8375c0807aa1cde7ed085f966ed7667533..60bc53e8d4b0ee9fb67bac92e0234e5dfd7921d4 100644 --- a/src/org/porcellis/models/UnidadePelotas.java +++ b/src/org/porcellis/models/UnidadePelotas.java @@ -1,5 +1,7 @@ package org.porcellis.models; +import org.porcellis.models.utils.Taxas; + public class UnidadePelotas extends Imobiliaria { private double taxaDeComissao; @@ -8,6 +10,11 @@ previsaoDeFaturamento, double taxaDeComissao) { super(razaoSocial, cnpj, previsaoDeFaturamento); this.taxaDeComissao = taxaDeComissao; + } + + @Override + public double getITBI() { + return Taxas.ITBI_PELOTAS; } public double getTaxaDeComissao() { diff --git a/src/org/porcellis/models/UnidadePortoAlegre.java b/src/org/porcellis/models/UnidadePortoAlegre.java index 743994082d6a8d8b0d4712974f44ef24c0fbd12a..41f4cee4f32af18f7fedf5517a7162eba59a6531 100644 --- a/src/org/porcellis/models/UnidadePortoAlegre.java +++ b/src/org/porcellis/models/UnidadePortoAlegre.java @@ -1,6 +1,6 @@ package org.porcellis.models; -import org.porcellis.models.Imobiliaria; +import org.porcellis.models.utils.Taxas; public class UnidadePortoAlegre extends Imobiliaria { private double taxaDeComissao; @@ -11,6 +11,11 @@ super(razaoSocial, cnpj, previsaoDeFaturamento); this.taxaDeComissao = taxaDeComissao; } + + @Override + public double getITBI() { + return Taxas.ITBI_PORTO_ALEGRE; + } public double getTaxaDeComissao() { return taxaDeComissao; diff --git a/src/org/porcellis/models/utils/Taxas.java b/src/org/porcellis/models/utils/Taxas.java index 004a8d572d5e9ae2ddf096cb0b0aacf9453ced9e..fc5be895b2fa540aede1d09901133896b58be30b 100644 --- a/src/org/porcellis/models/utils/Taxas.java +++ b/src/org/porcellis/models/utils/Taxas.java @@ -3,4 +3,7 @@ public class Taxas { public static final double ITBI_CASA = 0.03; // 3% de ITBI public static final double ITBI_APARTAMENTO = 0.04; // 4% de ITBI + + public static final double ITBI_PELOTAS = 0.02; // 2% de ITBI + public static final double ITBI_PORTO_ALEGRE = 0.025; // 2,5% de ITBI } diff --git a/src/org/porcellis/views/ImobiliariaView.java b/src/org/porcellis/views/ImobiliariaView.java index 21f4aeb207e9b5a5401622a2f10c3f7f48eb0fea..7b08d7cd49d37859dea83602caf5ef7e3a38e8fe 100644 --- a/src/org/porcellis/views/ImobiliariaView.java +++ b/src/org/porcellis/views/ImobiliariaView.java @@ -1,10 +1,31 @@ package org.porcellis.views; import org.porcellis.models.Imobiliaria; +import org.porcellis.utils.Formatador; public class ImobiliariaView { public void mostrarDetalhesImobiliaria(Imobiliaria imobiliaria) { System.out.println(imobiliaria); + } + + public void mostrarPrevisaoFaturamento(Imobiliaria imobiliaria) { + System.out.println( + String.format( + "Previsão de faturamento para %s: %s", + imobiliaria.getRazaoSocial(), + Formatador.formatarMoeda(imobiliaria.getPrevisaoDeFaturamento()) + ) + ); + } + + public void mostrarPrevisaoITBI(Imobiliaria imobiliaria) { + System.out.println( + String.format( + "Previsão de ITBI para %s: %s", + imobiliaria.getRazaoSocial(), + Formatador.formatarMoeda(imobiliaria.previsaoITBI()) + ) + ); } } diff --git a/src/org/porcellis/views/ImovelView.java b/src/org/porcellis/views/ImovelView.java index e89caf111f854370c25aed6951ca44578a5074bd..8dc6e78f273618d3a0dc23e23c9ab43333e168c8 100644 --- a/src/org/porcellis/views/ImovelView.java +++ b/src/org/porcellis/views/ImovelView.java @@ -14,7 +14,7 @@ String.format( "O ITBI do imóvel %s é: %.2f%n", imovel.getEndereco().getLogradouro(), imovel.getITBI() - ) + ) ); } }