Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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)",
|
|
|
|
|
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,
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
|
121 |
|
122 |
entradas = [
|
123 |
-
gr.
|
124 |
-
gr.
|
125 |
-
gr.
|
126 |
-
gr.
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
]
|
136 |
|
137 |
-
saida =
|
|
|
|
|
|
|
|
|
|
|
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()
|
|
|
|
|
|