DavidSB commited on
Commit
ab9c2d7
·
1 Parent(s): c87bb30

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +99 -50
app.py CHANGED
@@ -13,7 +13,9 @@ warnings.filterwarnings("ignore")
13
  df_cub = pd.read_excel('TABELAS.xlsx', sheet_name='CUB')
14
  ultimo_cub = df_cub.columns[-1]
15
 
16
- def calcular_valor_imovel(area=100, data_refer_str=None, data_const_str=None, tipo_cub="R 1-N (Res. Unifamiliar)", data_cub_str=None, percentual_cub=1, BDI=22.5, tipologia="APARTAMENTOS", estado="B - entre novo e regular", VR=0.2, valor_terreno=0, fc="0.1"):
 
 
17
  # Carregar dados dos arquivos Excel
18
  df_cub = pd.read_excel('TABELAS.xlsx', sheet_name='CUB')
19
  df_vida = pd.read_excel('TABELAS.xlsx', sheet_name='VUTIL')
@@ -75,11 +77,10 @@ def calcular_valor_imovel(area=100, data_refer_str=None, data_const_str=None, ti
75
  kd = round(kd, 3)
76
 
77
  # Cálculos
78
- Valor_sem_deprec = area * valor_cub * percentual_cub * (1 + BDI / 100)
79
- Valor_sem_deprec = round(Valor_sem_deprec, 3)
80
  Valor_com_deprec = Valor_sem_deprec * kd
81
- Valor_com_deprec = round(Valor_com_deprec, 3)
82
- valor_imovel = (valor_terreno + Valor_com_deprec) * float(fc)
83
 
84
 
85
  # Atributo da coluna "cons" pelo qual você deseja fazer a correspondência
@@ -87,54 +88,105 @@ def calcular_valor_imovel(area=100, data_refer_str=None, data_const_str=None, ti
87
  # Encontrar o valor da coluna "obs" com base no atributo da coluna "cons"
88
  valor_obs = df_estado_cons.loc[df_estado_cons['cons'] == atributo_desejado, 'obs'].iloc[0]
89
 
90
-
91
- resumo = {
92
- "01":"---VALOR INICIAL CONST---",
93
- "Área construída (m²)": area,
94
- "Data de referência": data_refer.strftime("%m/%Y"),
95
- "Data da construção": data_const_str,
96
- "Data do CUB": data_cub.strftime("%m/%Y"),
97
- "Tipo de CUB": tipo_cub,
98
- "Percentual para adequação do CUB (%)": percentual_cub,
99
- "BDI (%)": BDI,
100
- "Valor CUB": round(valor_cub, 2),
101
- "Valor_sem_deprec": Valor_sem_deprec,
102
- "02":"--VALOR DEPRECIADO CONST--",
103
- "Tipologia": tipologia,
104
- "Vida útil da tipologia": int(vdu['VIDAUTIL']),
105
- "Estado de conservação": estado,
106
- "Estado de conservação - descrição": valor_obs,
107
- "% de Vida Útil": percentual_vdu,
108
- "Coeficiente de Depreciação": coef_HH,
109
- "Valor residual (0, 0.1 ou 0.2)": VR,
110
- "Kd": kd,
111
- "Valor final const": Valor_com_deprec,
112
- "03": "--VALOR DO IMÓVEL (TERRENO + CONSTRUÇÃO)--",
113
- "Valor do Terreno": valor_terreno,
114
- "FC (Fator de Comercialização)": fc,
115
- "Valor do Imóvel": valor_imovel
116
- }
117
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
 
119
- return resumo
 
 
 
 
 
 
 
 
 
 
 
 
120
 
121
 
122
  entradas = [
123
- gr.inputs.Number(label="Área construída (m²)", default=100),
124
- gr.inputs.Textbox(label="Data de referência (mm/aaaa)", default=ultimo_cub),
125
- gr.inputs.Textbox(label="Data da construção (mm/aaaa)", default=ultimo_cub),
126
- gr.inputs.Dropdown(label="Tipo de CUB", choices=["R 1-B (Res. Unifamiliar)", "R 1-N (Res. Unifamiliar)", "R 1-A (Res. Unifamiliar)", "PP 4-B (Prédio Popular)", "PP 4-N (Prédio Popular)", "R 8-B (Res. Multifamiliar)", "R 8-N (Res. Multifamiliar)", "R 8-A (Res. Multifamiliar)", "R 16-N (Res. Multifamiliar)", "R 16-A (Res. Multifamiliar)", "PIS (Projeto Inter. Social)", "RP1Q (Residência Popular)", "CAL 8-N (Com. Andar Livres)", "CAL 8-A (Com. Andar Livres)", "CSL 8-N (Com.Salas e Lojas)", "CSL 8-A (Com.Salas e Lojas)", "CSL 16-N (Com.Salas e Lojas)", "CSL 16-A (Com.Salas e Lojas)", "GI (Galpão Industrial)"],default="R 1-N (Res. Unifamiliar)"),
127
- gr.inputs.Textbox(label="Data do CUB (mm/aaaa)", default=ultimo_cub),
128
- gr.inputs.Number(label="Percentual para adequação do CUB (%) - (Adapatação do CUB para uma situação atípica)", default=1),
129
- gr.inputs.Number(label="BDI (%)", default=22.5),
130
- gr.inputs.Dropdown(label="Tipologia", choices=["APARTAMENTOS", "BANCOS", "CASAS DE ALVENARIA", "CASAS DE MADEIRA", "HOTÉIS", "LOJAS", "TEATROS", "ARMAZÉNS", "FÁBRICAS", "CONST. RURAIS", "GARAGENS", "EDIFÍCIOS DE ESCRITÓRIOS", "GALPÕES (DEPÓSITOS)", "SILOS"], default="CASAS DE ALVENARIA"),
131
- gr.inputs.Dropdown(label="Estado de conservação", choices=["A - novo", "B - entre novo e regular", "C - regular", "D - entre regular e reparos simples", "E - reparos simples", "F - entre reparos simples e importantes", "G - reparos importantes", "H - entre reparos importantes e sem valor"], default="A - novo"),
132
- gr.inputs.Dropdown(label="Valor residual (0, 0.1 ou 0.2)", choices=["0", "0.1", "0.2"], default="0"),
133
- gr.inputs.Number(label="Valor do Terreno", default=0),
134
- gr.inputs.Dropdown(label="FC (Fator de Comercialização)", choices=["0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1.0","1.1","1.2","1.3","1.4","1.5","1.6","1.7","1.8","1.9","2.0"], default="1")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  ]
136
 
137
- saida = gr.outputs.JSON()
 
 
 
 
 
138
 
139
  interface = gr.Interface(fn=calcular_valor_imovel, inputs=entradas, outputs=saida, title="<span style='color: gray; font-size: 52px;'>aval</span><span style='color: black; font-size: 52px;'>ia</span><span style='color: gray; font-size: 56px;'>.EVO</span>",
140
  description=f"""
@@ -142,7 +194,4 @@ interface = gr.Interface(fn=calcular_valor_imovel, inputs=entradas, outputs=said
142
  """,
143
  theme=gr.themes.Monochrome()
144
  )
145
- interface.launch()
146
-
147
-
148
-
 
13
  df_cub = pd.read_excel('TABELAS.xlsx', sheet_name='CUB')
14
  ultimo_cub = df_cub.columns[-1]
15
 
16
+ def calcular_valor_imovel(area=100, data_refer_str=None, data_const_str=None, tipo_cub="R 1-N (Res. Unifamiliar)",
17
+ data_cub_str=None, percentual_cub=1, BDI=22.5, BDI_tipo ="Arbitrado", fator_local = 1, just_fator_local = "-", tipologia="APARTAMENTOS",
18
+ estado="B - entre novo e regular", VR=0.2, valor_terreno=0, est_ter="Grau III de fundamentação no métodocomparativo ou no involutivo", fc=1, fc_just="Arbitrado"):
19
  # Carregar dados dos arquivos Excel
20
  df_cub = pd.read_excel('TABELAS.xlsx', sheet_name='CUB')
21
  df_vida = pd.read_excel('TABELAS.xlsx', sheet_name='VUTIL')
 
77
  kd = round(kd, 3)
78
 
79
  # Cálculos
80
+ Valor_sem_deprec = round(area * valor_cub * percentual_cub * (1 + BDI / 100) * fator_local, 2)
 
81
  Valor_com_deprec = Valor_sem_deprec * kd
82
+ Valor_com_deprec = round(Valor_com_deprec, 2)
83
+ valor_imovel = round((valor_terreno + Valor_com_deprec) * float(fc), 2)
84
 
85
 
86
  # Atributo da coluna "cons" pelo qual você deseja fazer a correspondência
 
88
  # Encontrar o valor da coluna "obs" com base no atributo da coluna "cons"
89
  valor_obs = df_estado_cons.loc[df_estado_cons['cons'] == atributo_desejado, 'obs'].iloc[0]
90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
 
92
+ valor_inicial = f"""
93
+ Área construída (m²): {area}
94
+ Data de referência: {data_refer.strftime("%m/%Y")}
95
+ Data da construção: {data_const_str}
96
+ Data do CUB: {data_cub.strftime("%m/%Y")}
97
+ Tipo de CUB: {tipo_cub}
98
+ Percentual para adequação do CUB (%): {percentual_cub}
99
+ BDI (%): {BDI}
100
+ BDI_tipo: {BDI_tipo}
101
+ Valor CUB: {round(valor_cub, 2)}
102
+ Fator local: {fator_local}
103
+ Fator local (justificativa): {just_fator_local}
104
+ Valor_sem_deprec: {Valor_sem_deprec}
105
+ """
106
+
107
+ deprec = f"""
108
+ Tipologia: {tipologia}
109
+ Vida útil da tipologia: {int(vdu['VIDAUTIL'])}
110
+ Estado de conservação: {estado}
111
+ Estado de conservação - descrição: {valor_obs}
112
+ % de Vida Útil: {percentual_vdu}
113
+ Coeficiente de Depreciação: {coef_HH}
114
+ Valor residual (0, 0.1 ou 0.2): {VR}
115
+ Kd: {kd}
116
+ Valor final const: {Valor_com_deprec}
117
+ """
118
 
119
+ valor_ter = f"""
120
+ Valor do Terreno: {valor_terreno}
121
+ Estimativa do terreno (forma de cálculo): {est_ter}
122
+ """
123
+
124
+ valor_final = f"""
125
+ Valor do Terreno: {valor_terreno}
126
+ FC (Fator de Comercialização): {fc}
127
+ FC (forma de cálculo): {fc_just}
128
+ Valor do Imóvel: {valor_imovel}
129
+ """
130
+
131
+ return valor_inicial, deprec, valor_ter, valor_final
132
 
133
 
134
  entradas = [
135
+ gr.Number(label="Área construída (m²)", value=100),
136
+ gr.Textbox(label="Data de referência (mm/aaaa)", value=ultimo_cub, info="Data do fato gerador da demanda"),
137
+ gr.Textbox(label="Data da construção (mm/aaaa)", value=ultimo_cub, info="Data de construção do imóvel"),
138
+ gr.Dropdown(label="Tipo de CUB", choices=["R 1-B (Res. Unifamiliar)",
139
+ "R 1-N (Res. Unifamiliar)",
140
+ "R 1-A (Res. Unifamiliar)",
141
+ "PP 4-B (Prédio Popular)",
142
+ "PP 4-N (Prédio Popular)",
143
+ "R 8-B (Res. Multifamiliar)",
144
+ "R 8-N (Res. Multifamiliar)",
145
+ "R 8-A (Res. Multifamiliar)",
146
+ "R 16-N (Res. Multifamiliar)",
147
+ "R 16-A (Res. Multifamiliar)",
148
+ "PIS (Projeto Inter. Social)",
149
+ "RP1Q (Residência Popular)",
150
+ "CAL 8-N (Com. Andar Livres)",
151
+ "CAL 8-A (Com. Andar Livres)",
152
+ "CSL 8-N (Com.Salas e Lojas)",
153
+ "CSL 8-A (Com.Salas e Lojas)",
154
+ "CSL 16-N (Com.Salas e Lojas)",
155
+ "CSL 16-A (Com.Salas e Lojas)",
156
+ "GI (Galpão Industrial)"],
157
+ value="R 1-N (Res. Unifamiliar)"),
158
+ gr.Textbox(label="Data do CUB (mm/aaaa)", value=ultimo_cub, info="Data do CUB deverá coincidir com a data de referência do laudo"),
159
+ gr.Number(label="Percentual para adequação do CUB (%)", value=1, info="Adapatação do CUB para uma situação atípica ou para contemplar insumos/serviços que não constam na composição do CUB"),
160
+ gr.Number(label="BDI (%)", value=22.5),
161
+ gr.Radio(["Justificado", "Arbitrado"], label="Tipo de BDI", info="Estipule como foi elaborado o % de BDI"),
162
+ gr.Slider(0.5, 1.5, value=1, label="Fator local", info="Escolha um coeficiente de valorização local baseado no seu conhecimento de mercado", step = 0.1),
163
+ gr.Textbox(label="Justificativa para o Fator Local", value="-", info="Justifique tecnicamente a utilização deste fator"),
164
+ gr.Dropdown(label="Tipologia", choices=["APARTAMENTOS", "BANCOS", "CASAS DE ALVENARIA",
165
+ "CASAS DE MADEIRA", "HOTÉIS", "LOJAS", "TEATROS",
166
+ "ARMAZÉNS", "FÁBRICAS", "CONST. RURAIS", "GARAGENS",
167
+ "EDIFÍCIOS DE ESCRITÓRIOS", "GALPÕES (DEPÓSITOS)", "SILOS"],
168
+ value="CASAS DE ALVENARIA"),
169
+ gr.Dropdown(label="Estado de conservação", choices=["A - novo", "B - entre novo e regular",
170
+ "C - regular", "D - entre regular e reparos simples",
171
+ "E - reparos simples", "F - entre reparos simples e importantes",
172
+ "G - reparos importantes", "H - entre reparos importantes e sem valor"],
173
+ value="A - novo"),
174
+ gr.Dropdown(label="Valor residual (0, 0.1 ou 0.2)", choices=["0", "0.1", "0.2"], value=0),
175
+ gr.Number(label="Valor do Terreno", value=0),
176
+ gr.Radio(["Grau III de fundamentação no método comparativo ou no involutivo",
177
+ "Grau II de fundamentação no método comparativo ou no involutivo",
178
+ "Grau I de fundamentação no método comparativo ou no involutivo"],
179
+ info="Escolha o Grau de Fundamentação alcançado pelo avaliação do terreno", label=""),
180
+ gr.Slider(0.1, 2.0, value=1.0, label="FC (Fator de Comercialização)", info="O Fator de Comercialização, também chamado de Terceiro Componente ou Vantagem da Coisa Feita, é definido no item 3.20 da NBR 14653-1:2001: “Fator de comercialização: Razão entre o valor de mercado de um bem e o seu custo de reedição ou de substituição, que pode ser maior ou menor que 1", step = 0.1),
181
+ gr.Radio(["Inferido em mercado semelhante", "Justificado", "Arbitrado"], label="Tipo de BDI", info="Estipule como foi elaborado o % de BDI"),
182
  ]
183
 
184
+ saida = [
185
+ gr.Textbox(label = "Valor Inicial da Contrução"),
186
+ gr.Textbox(label = "Cálculo da Depreciação"),
187
+ gr.Textbox(label = "Valor estimado para o terreno"),
188
+ gr.Textbox(label = "Valor final do imóvel")
189
+ ]
190
 
191
  interface = gr.Interface(fn=calcular_valor_imovel, inputs=entradas, outputs=saida, title="<span style='color: gray; font-size: 52px;'>aval</span><span style='color: black; font-size: 52px;'>ia</span><span style='color: gray; font-size: 56px;'>.EVO</span>",
192
  description=f"""
 
194
  """,
195
  theme=gr.themes.Monochrome()
196
  )
197
+ interface.launch()