DavidSB commited on
Commit
836b964
·
verified ·
1 Parent(s): b389901

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +132 -190
app.py CHANGED
@@ -15,7 +15,7 @@ from num2words import num2words
15
  warnings.filterwarnings("ignore")
16
 
17
  # Calcular a data mais recente do CUB fora da função
18
- df_cub = pd.read_excel('TABELAS.xlsx', sheet_name='CUB')
19
  ultimo_cub = df_cub.columns[-1]
20
 
21
  #função para escrever por extenso o valor atribuído
@@ -32,10 +32,7 @@ def numero_por_extenso(numero):
32
  return extenso_reais
33
 
34
  # Função para calcular o valor do imóvel
35
- def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", uf = 'RS', reg="-", data=None,
36
- lograd="-", munic="-", tipo_imo="-", solic="-", finalidade="-", objetivo="-", press="-",
37
- infra="Água Potável", serv="Coleta de Lixo", uso="Residencial", pad_reg="-", tipo_via="-", obs_gerais="-",
38
- per="Sem destaque", ofe="Sem destaque", liq="Sem destaque",
39
  area=100, data_refer_str=None, data_const_str=None, tipo_cub="R 1-N (Res. Unifamiliar)",
40
  data_cub_str=None, percentual_cub=1, est_custo_dir="-", BDI=22.5, BDI_tipo ="Arbitrado", fator_local = 1,
41
  just_fator_local = "-", tipologia="APARTAMENTOS",
@@ -45,10 +42,10 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", uf = 'R
45
  fc=1, fc_just="Arbitrado"):
46
 
47
  # Carregar dados dos arquivos Excel
48
- df_cub = pd.read_excel('TABELAS.xlsx', sheet_name='CUB')
49
- df_vida = pd.read_excel('TABELAS.xlsx', sheet_name='VUTIL')
50
- df_dep = pd.read_excel('TABELAS.xlsx', sheet_name='DEP')
51
- df_estado_cons = pd.read_excel('TABELAS.xlsx', sheet_name='estado_cons')
52
 
53
  # Converter datas de entrada
54
  if data_refer_str is None or data_refer_str == "":
@@ -92,10 +89,10 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", uf = 'R
92
  # Filtrar conforme o % de vida útil
93
  df_conserv = df_dep.loc[df_dep['%deVida'] == percentual_vdu]
94
 
95
- # Converter o valor residual de string para número (float)
96
- if VR and VR.strip() != "":
97
- VR = float(VR)
98
- else:
99
  VR = 0.0
100
  # Obter da depreciação
101
  coef_HH = float(df_conserv[estado]/100)
@@ -104,7 +101,13 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", uf = 'R
104
  # Valor do "Kd"
105
  kd = VR + (1 - coef_HH) * (1 - VR)
106
  kd = round(kd, 3)
107
-
 
 
 
 
 
 
108
  # Cálculos
109
  Valor_sem_deprec = round(area * valor_cub * percentual_cub * (1 + BDI / 100) * fator_local, 2)
110
  Valor_com_deprec = Valor_sem_deprec * kd
@@ -199,37 +202,6 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", uf = 'R
199
 
200
  # criação de strings para os relatórios da interface e do word
201
 
202
- dados_resp = f"""
203
- Responsável Técnico: {nome}
204
- Profissão: {prof}
205
- Entidade de Classe: {ent} {uf}
206
- Número do registro: {reg}
207
- """
208
- #####
209
- introd = f"""
210
- Logradouro e número: {lograd}
211
- Município: {munic}
212
- Tipo de imóvel: {tipo_imo}
213
- Solicitante: {solic}
214
- Finalidade: {finalidade}
215
- Objetivo: {objetivo}
216
- Pressupostos, Ressalvas e Fatores Limitantes: {press}
217
- """
218
- #####
219
- regiao = f"""
220
- Infraestrutura: {str(infra).replace("[", "").replace("]", "").replace("'", "")}
221
- Serviços públicos: {str(serv).replace("[", "").replace("]", "").replace("'", "")}
222
- Uso: {uso}
223
- Padrão predominante na região: {pad_reg}
224
- Tipo de via de acesso: {tipo_via}
225
- Outras observações: {obs_gerais}
226
- """
227
- #####
228
- diag = f"""
229
- Performance: {per}
230
- Nível de Ofertas do Segmento: {ofe}
231
- Liquidez: {liq}
232
- """
233
  #####
234
  tipo_cub = tipo_cub.replace('.', '@').replace(',', '.').replace('@', ',')
235
  est_custo_dir = est_custo_dir.replace('.', '@').replace(',', '.').replace('@', ',')
@@ -247,7 +219,6 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", uf = 'R
247
  Valor CUB: R$ {valor_cub:,.2f}
248
  Fator local: {fator_local}
249
  Fator local(justificativa): {just_fator_local}
250
-
251
  Valor antes da depreciação = área construída * CUB * fator adequação CUB * (1 + BDI / 100) * fator local
252
  Valor sem depreciação: R$ {Valor_sem_deprec:,.2f}
253
  """
@@ -271,7 +242,6 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", uf = 'R
271
  Forma de cálculo da depreciação física: {deprec}
272
  Kd: {kd}
273
  onde: Kd = (Valor residual + (1 - percentual de depreciação)*(1 - Valor residual))
274
-
275
  Valor depois da depreciação = (Valor antes da depreciação) x Kd (com coeficiente de valor residual)
276
  Valor final construção: R$ {Valor_com_deprec:,.2f}
277
  Especificação da Avaliação (benfeitorias) - Método da Quantificação do Custo: {est_cr}
@@ -315,20 +285,6 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", uf = 'R
315
  ---------------------
316
  Especificação da Avaliação - Método Evolutivo: {fundamentacao_evolutivo}
317
  """
318
- #####
319
- # Substituindo ponto por vírgula
320
- #valor_final = valor_final.replace('.', '@')
321
- #valor_final = valor_final.replace(',', '.')
322
- #valor_final = valor_final.replace('@', ',')
323
-
324
- #####
325
- assinatura = f"""
326
- Data: {data}
327
-
328
-
329
- {nome} | {prof}
330
- {ent}-{uf} {reg}
331
- """
332
 
333
  # -------------------------------------- #
334
 
@@ -341,15 +297,10 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", uf = 'R
341
 
342
  # Definir as seções do relatório
343
  sections = [
344
- (dados_resp, "Informações do Responsável Técnico"),
345
- (introd, "Introdução"),
346
- (regiao, "Características da Região"),
347
- (diag, "Diagmóstico de Mercado"),
348
  (valor_inicial, "Valor Inicial da Construção"),
349
  (deprec, "Cálculo da Depreciação"),
350
  (valor_ter, "Valor Estimado para o Terreno"),
351
  (valor_final, "Valor Final do Imóvel"),
352
- (assinatura,""),
353
  ]
354
 
355
  for content, title in sections:
@@ -369,133 +320,124 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", uf = 'R
369
  # -------------------------------------- #
370
 
371
  # Outputs
372
- return dados_resp, introd, regiao, diag, valor_inicial, deprec, valor_ter, valor_final, 'relatorio_avaliacao.doc'
373
 
374
  # -------------------------------------- #
375
 
376
  # Interface Gradio
377
- interface = gr.Interface(
378
- calcular_valor_imovel,
379
-
380
- inputs = [
381
- # Informações do Responsável Técnico
382
- gr.Textbox(label="Responsável Técnico", value="-"),
383
- gr.Dropdown(["Engenheiro Civil", "Arquiteto e Urbanista", "Corretor de Imóveis"],label="Profissão", value="-"),
384
- gr.Dropdown(["CREA", "CAU", "CRECI"],label="Entidade de Classe", value="-"),
385
- gr.Dropdown(["AC", "AL", "AP", "AM", "BA", "CE", "DF", "ES", "GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI", "RJ", "RN", "RS", "RO", "RR", "SC", "SP", "SE", "TO"],label="Unidade Federativa", value="RS"),
386
- gr.Number(label="Nº do registro", value="0"),
387
- gr.Textbox(label="Data", value=""),
388
-
389
- # Introdução
390
- gr.Textbox(label="Endereço (Logradouro, e bairro)", value="-"),
391
- gr.Textbox(label="Município", value="-"),
392
- gr.Textbox(label="Tipo de Imóvel", value="-"),
393
- gr.Textbox(label="Solicitante", value="-"),
394
- gr.Textbox(label="Finalidade", value="-"),
395
- gr.Textbox(label="Objetivo", value="-"),
396
-
397
- # Características da Região
398
- gr.Textbox(label="Pressupostos, Ressalvas e Fatores Limitantes", value="-"),
399
- gr.Dropdown(["Água Potável", "Energia Elétrica", "Telefone", "Pavimentação", "Esgoto Pluvial", "Esgoto Cloacal",
400
- "Iluminação Pública"], value=["Água Potável"], multiselect=True, label="Infraestrutura Urbana"),
401
- gr.Dropdown(["Coleta de Lixo", "Transporte Coletivo", "Comércio", "Educação", "Saúde"],
402
- value=["Coleta de Lixo"], multiselect=True, label="Serviços Públicos"),
403
- gr.Radio(["Residencial", "Comercial", "Misto"], label="Uso",value="Residencial"),
404
- gr.Radio(["Baixo", "Normal", "Alto"], label="Padrão predominante na região",value="Normal"),
405
- gr.Radio(["Local", "Coletora", "Arterial"], label="Tipo de via de acesso ao imóvel",value="Local"),
406
- gr.Textbox(label="Outras informação", value="-"),
407
-
408
- # Diagnóstico de Mercado
409
- gr.Radio(["Aparentemente aquecido", "Sem destaque", "Aparentemente recessivo"], label="Performance",value="Sem destaque"),
410
- gr.Radio(["Aparentemente alto", "Sem destaque", "Aparentemente baixo"], label="Nível de Ofertas do Segmento",value="Sem destaque"),
411
- gr.Radio(["Provavelmente alto", "Sem destaque", "Provavelmente baixo"], label="Liquidez",value="Sem destaque"),
412
-
413
- # Valor Inicial da Construção
414
- gr.Number(label="Área construída (m²)", value=100),
415
- gr.Textbox(label="Data de referência (mm/aaaa)", value=ultimo_cub, info="Data do fato gerador da demanda"),
416
- gr.Textbox(label="Data da construção (mm/aaaa)", value=ultimo_cub, info="Data de construção do imóvel"),
417
- gr.Dropdown(label="Tipo de CUB", choices=["R 1-B (Res. Unifamiliar)",
418
- "R 1-N (Res. Unifamiliar)",
419
- "R 1-A (Res. Unifamiliar)",
420
- "PP 4-B (Prédio Popular)",
421
- "PP 4-N (Prédio Popular)",
422
- "R 8-B (Res. Multifamiliar)",
423
- "R 8-N (Res. Multifamiliar)",
424
- "R 8-A (Res. Multifamiliar)",
425
- "R 16-N (Res. Multifamiliar)",
426
- "R 16-A (Res. Multifamiliar)",
427
- "PIS (Projeto Inter. Social)",
428
- "RP1Q (Residência Popular)",
429
- "CAL 8-N (Com. Andar Livres)",
430
- "CAL 8-A (Com. Andar Livres)",
431
- "CSL 8-N (Com.Salas e Lojas)",
432
- "CSL 8-A (Com.Salas e Lojas)",
433
- "CSL 16-N (Com.Salas e Lojas)",
434
- "CSL 16-A (Com.Salas e Lojas)",
435
- "GI (Galpão Industrial)"],
436
- value="R 1-N (Res. Unifamiliar)"),
437
- 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"),
438
- #gr.Number(label="Percentual para adequação do CUB (%)", value=1, info="Adaptação do CUB para uma situação atípica ou para contemplar insumos/serviços que não constam na composição do CUB"),
439
- gr.Slider(0.5, 2.0, value=1, label="Fator para adequação do CUB", info="Adaptação do CUB para uma situação atípica ou para contemplar insumos/serviços que não constam na sua composição (insumos/serviços)", step = 0.1),
440
-
441
-
442
- gr.Radio(["Utilização CUB para projeto semelhante ao projeto padrão",
443
- "Utilização CUB para projeto diferente do projeto padrão, com os devidos ajustes"],
444
- label="Estimativa do custo direto",value="Utilização CUB para projeto semelhante ao projeto padrão"),
445
-
446
- gr.Number(label="BDI (%)", value=22.5),
447
- gr.Radio(["Calculado","Justificado", "Arbitrado"], label="Tipo de BDI", info="Estipule como foi elaborado o % de BDI", value="Justificado"),
448
- 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),
449
- gr.Textbox(label="Justificativa para o Fator Local", value="-", info="Justifique tecnicamente a utilização deste fator"),
450
-
451
- # Cálculo da Depreciação
452
- gr.Dropdown(label="Tipologia", choices=["APARTAMENTOS", "BANCOS", "CASAS DE ALVENARIA",
453
- "CASAS DE MADEIRA", "HOTÉIS", "LOJAS", "TEATROS",
454
- "ARMAZÉNS", "FÁBRICAS", "CONST. RURAIS", "GARAGENS",
455
- "EDIFÍCIOS DE ESCRITÓRIOS", "GALPÕES (DEPÓSITOS)", "SILOS"],
456
- value="CASAS DE ALVENARIA"),
457
- gr.Dropdown(label="Estado de conservação", choices=["A - novo", "B - entre novo e regular",
458
- "C - regular", "D - entre regular e reparos simples",
459
- "E - reparos simples", "F - entre reparos simples e importantes",
460
- "G - reparos importantes", "H - entre reparos importantes e sem valor"],
461
- value="A - novo"),
462
- gr.Dropdown(label="Valor residual (0, 0.1 ou 0.2)", choices=["0", "0.1", "0.2"], value="0"),
463
- gr.Radio(["Por levantamento do custo de recuperação do bem, para deixá-lo no estado de novo ou caso de bens novos ou projetos hipotéticos",
464
- "Por métodos técnicos consagrados, considerando-se idade, vida útil e estado de conservação",
465
- "Arbitrado"], label="Depreciação Física", info="Forma pela qual a depreciação física foi calculada",
466
- value="Por métodos técnicos consagrados, considerando-se idade, vida útil e estado de conservação"),
467
-
468
- # Valor do Terreno
469
- gr.Number(label="Valor do Terreno", value=0),
470
- gr.Radio(["Grau III", "Grau II", "Grau I"],
471
- info="Escolha o Grau de Fundamentação alcançado pela avaliação do terreno", label="", value="Grau III"),
472
-
473
- # Valor final do imóvel
474
- 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),
475
- gr.Radio(["Inferido em mercado semelhante", "Justificado", "Arbitrado"], label="", info="Estipule como foi elaborado o FC",value="Justificado"),
476
- ],
477
-
478
- outputs = [
479
- gr.Textbox(label = "Informações do Responsável Técnico"),
480
- gr.Textbox(label = "Introdução"),
481
- gr.Textbox(label = "Características da Região"),
482
- gr.Textbox(label = "Diagnóstico de Mercado"),
483
- gr.Textbox(label = "Valor Inicial da Contrução"),
484
- gr.Textbox(label = "Cálculo da Depreciação"),
485
- gr.Textbox(label = "Valor estimado para o terreno"),
486
- gr.Textbox(label = "Valor final do imóvel"),
487
- gr.File(label="Laudo de Avaliação"),
488
- ],
489
-
490
- live=False,
491
- #capture_session=True,
492
- theme=gr.themes.Monochrome(primary_hue="yellow", secondary_hue="yellow"),
493
- #title="<span style='color: gray; font-size: 50px;'>aval</span><span style='color: gray; font-size: 50px;'>ia</span><span style='color: gray; font-size: 50px;'>.EVO</span>",
494
- description=f"""
495
- <p style="text-align: left;"><b><span style='color: gray; font-size: 40px;'>aval</span><span style='color: orange; font-size: 40px;'>ia</span><span style='color: gray; font-size: 40px;'>.se</b></p>
496
- <p style="text-align: left;"></span>Aplicativo Método Evolutivo (benfeitorias + terrenos) / Para ver a documentação <a href='https://huggingface.co/spaces/DavidSB/avalia.EVO/resolve/main/avaliaEVO.pdf' download='avaliaEVO.pdf'>aqui</a><br><br></p>
497
- """
498
- )
499
 
500
  if __name__ == "__main__":
501
- interface.launch(debug=True)
 
15
  warnings.filterwarnings("ignore")
16
 
17
  # Calcular a data mais recente do CUB fora da função
18
+ df_cub = pd.read_excel('TABELAS_evo.xlsx', sheet_name='CUB')
19
  ultimo_cub = df_cub.columns[-1]
20
 
21
  #função para escrever por extenso o valor atribuído
 
32
  return extenso_reais
33
 
34
  # Função para calcular o valor do imóvel
35
+ def calcular_valor_imovel(
 
 
 
36
  area=100, data_refer_str=None, data_const_str=None, tipo_cub="R 1-N (Res. Unifamiliar)",
37
  data_cub_str=None, percentual_cub=1, est_custo_dir="-", BDI=22.5, BDI_tipo ="Arbitrado", fator_local = 1,
38
  just_fator_local = "-", tipologia="APARTAMENTOS",
 
42
  fc=1, fc_just="Arbitrado"):
43
 
44
  # Carregar dados dos arquivos Excel
45
+ df_cub = pd.read_excel('TABELAS_evo.xlsx', sheet_name='CUB')
46
+ df_vida = pd.read_excel('TABELAS_evo.xlsx', sheet_name='VUTIL')
47
+ df_dep = pd.read_excel('TABELAS_evo.xlsx', sheet_name='DEP')
48
+ df_estado_cons = pd.read_excel('TABELAS_evo.xlsx', sheet_name='CONS')
49
 
50
  # Converter datas de entrada
51
  if data_refer_str is None or data_refer_str == "":
 
89
  # Filtrar conforme o % de vida útil
90
  df_conserv = df_dep.loc[df_dep['%deVida'] == percentual_vdu]
91
 
92
+ # Converter o valor residual de string para número (float)
93
+ try:
94
+ VR = float(VR.strip()) if isinstance(VR, str) and VR.strip() != "" else 0.0
95
+ except ValueError:
96
  VR = 0.0
97
  # Obter da depreciação
98
  coef_HH = float(df_conserv[estado]/100)
 
101
  # Valor do "Kd"
102
  kd = VR + (1 - coef_HH) * (1 - VR)
103
  kd = round(kd, 3)
104
+
105
+ # Converter o valor do terreno de string para número (float)
106
+ #try:
107
+ #valor_terreno = float(valor_terreno.strip()) if isinstance(valor_terreno, str) and valor_terreno.strip() != "" else 0.0
108
+ #except ValueError:
109
+ #valor_terreno = 0.0
110
+
111
  # Cálculos
112
  Valor_sem_deprec = round(area * valor_cub * percentual_cub * (1 + BDI / 100) * fator_local, 2)
113
  Valor_com_deprec = Valor_sem_deprec * kd
 
202
 
203
  # criação de strings para os relatórios da interface e do word
204
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  #####
206
  tipo_cub = tipo_cub.replace('.', '@').replace(',', '.').replace('@', ',')
207
  est_custo_dir = est_custo_dir.replace('.', '@').replace(',', '.').replace('@', ',')
 
219
  Valor CUB: R$ {valor_cub:,.2f}
220
  Fator local: {fator_local}
221
  Fator local(justificativa): {just_fator_local}
 
222
  Valor antes da depreciação = área construída * CUB * fator adequação CUB * (1 + BDI / 100) * fator local
223
  Valor sem depreciação: R$ {Valor_sem_deprec:,.2f}
224
  """
 
242
  Forma de cálculo da depreciação física: {deprec}
243
  Kd: {kd}
244
  onde: Kd = (Valor residual + (1 - percentual de depreciação)*(1 - Valor residual))
 
245
  Valor depois da depreciação = (Valor antes da depreciação) x Kd (com coeficiente de valor residual)
246
  Valor final construção: R$ {Valor_com_deprec:,.2f}
247
  Especificação da Avaliação (benfeitorias) - Método da Quantificação do Custo: {est_cr}
 
285
  ---------------------
286
  Especificação da Avaliação - Método Evolutivo: {fundamentacao_evolutivo}
287
  """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
288
 
289
  # -------------------------------------- #
290
 
 
297
 
298
  # Definir as seções do relatório
299
  sections = [
 
 
 
 
300
  (valor_inicial, "Valor Inicial da Construção"),
301
  (deprec, "Cálculo da Depreciação"),
302
  (valor_ter, "Valor Estimado para o Terreno"),
303
  (valor_final, "Valor Final do Imóvel"),
 
304
  ]
305
 
306
  for content, title in sections:
 
320
  # -------------------------------------- #
321
 
322
  # Outputs
323
+ return valor_inicial, deprec, valor_ter, valor_final, 'relatorio_avaliacao.doc'
324
 
325
  # -------------------------------------- #
326
 
327
  # Interface Gradio
328
+ with gr.Blocks(theme=gr.themes.Monochrome(primary_hue="yellow", secondary_hue="yellow",)) as interface:
329
+ gr.Markdown(f"""
330
+ <p style="text-align: center;">
331
+ <b><span style='color: grey; font-size: 25px;'>aval</span></b>
332
+ <b><span style='color: orange; font-size: 25px;'>ia</span></b>
333
+ <b><span style='color: grey; font-size: 25px;'>.se</span></b>
334
+ """)
335
+
336
+ with gr.Row():
337
+ with gr.Column():
338
+ # Valor Inicial da Construção
339
+ with gr.Row():
340
+ area = gr.Number(label="Área (m²)", value=100, info="Área construída", scale=0.5) # Remova a vírgula aqui
341
+ data_r = gr.Textbox(label="Data referência (mm/aaaa)", value=ultimo_cub, info="Data do fato gerador da demanda", scale=1) # Remova a vírgula aqui
342
+ data_c = gr.Textbox(label="Data construção (mm/aaaa)", value=ultimo_cub, info="Data de construção do imóvel", scale=1)
343
+ with gr.Group():
344
+ with gr.Row():
345
+ cub = gr.Dropdown(label="Tipo de CUB",
346
+ choices=["R 1-B (Res. Unifamiliar)", "R 1-N (Res. Unifamiliar)", "R 1-A (Res. Unifamiliar)",
347
+ "PP 4-B (Prédio Popular)", "PP 4-N (Prédio Popular)", "R 8-B (Res. Multifamiliar)",
348
+ "R 8-N (Res. Multifamiliar)", "R 8-A (Res. Multifamiliar)", "R 16-N (Res. Multifamiliar)",
349
+ "R 16-A (Res. Multifamiliar)", "PIS (Projeto Inter. Social)", "RP1Q (Residência Popular)",
350
+ "CAL 8-N (Com. Andar Livres)", "CAL 8-A (Com. Andar Livres)",
351
+ "CSL 8-N (Com.Salas e Lojas)", "CSL 8-A (Com.Salas e Lojas)",
352
+ "CSL 16-N (Com.Salas e Lojas)", "CSL 16-A (Com.Salas e Lojas)", "GI (Galpão Industrial)"],
353
+ value="R 1-N (Res. Unifamiliar)", scale=1)
354
+ data_cub = gr.Textbox(label="Data do CUB (mm/aaaa)", value=ultimo_cub, scale=1)
355
+ fator_cub = gr.Slider(0.5, 2.0, value=1, label="Fator para adequação do CUB",
356
+ info="Para contemplar insumos/serviços que não constam na composição", step=0.1)
357
+ forma_cub = gr.Dropdown(["Utilização CUB para projeto semelhante ao projeto padrão",
358
+ "Utilização CUB para projeto diferente do projeto padrão, com os devidos ajustes"],
359
+ label="Estimativa do custo direto", value="Utilização CUB para projeto semelhante ao projeto padrão")
360
+ with gr.Row():
361
+ bdi = gr.Number(label="BDI (%)", value=22.5, scale=0.5)
362
+ tipo_bdi = gr.Dropdown(["Calculado", "Justificado", "Arbitrado"], label="Tipo de BDI", value="Justificado", scale=1)
363
+ with gr.Row():
364
+ fator_local = gr.Slider(0.5, 1.5, value=1, label="Fator local", info="Atribua um coeficiente de valorização se necessário", step=0.1)
365
+ just_local = gr.Textbox(label="Justificativa para o Fator Local", value="-", info="Justifique tecnicamente o fator")
366
+
367
+ # Cálculo da Depreciação
368
+ with gr.Group():
369
+ with gr.Row():
370
+ tipo = gr.Dropdown(label="Tipologia", choices=["APARTAMENTOS", "BANCOS", "CASAS DE ALVENARIA",
371
+ "CASAS DE MADEIRA", "HOTÉIS", "LOJAS", "TEATROS",
372
+ "ARMAZÉNS", "FÁBRICAS", "CONST. RURAIS", "GARAGENS",
373
+ "EDIFÍCIOS DE ESCRITÓRIOS", "GALPÕES (DEPÓSITOS)", "SILOS"], value="CASAS DE ALVENARIA", scale=1)
374
+ rst_con = gr.Dropdown(label="Estado de conservação", choices=["A - novo", "B - entre novo e regular",
375
+ "C - regular", "D - entre regular e reparos simples",
376
+ "E - reparos simples", "F - entre reparos simples e importantes",
377
+ "G - reparos importantes", "H - entre reparos importantes e sem valor"], value="A - novo", scale=1)
378
+ vr = gr.Dropdown(label="Valor residual", choices=["0", "0.1", "0.2"], value="0", scale=0.5)
379
+ deprec = gr.Dropdown(["Por levantamento do custo de recuperação do bem, para deixá-lo no estado de novo ou caso de bens novos ou projetos hipotéticos",
380
+ "Por métodos técnicos consagrados, considerando-se idade, vida útil e estado de conservação",
381
+ "Arbitrado"],
382
+ label="Depreciação Física",
383
+ info="Forma pela qual a depreciação física foi calculada",
384
+ value="Por métodos técnicos consagrados, considerando-se idade, vida útil e estado de conservação")
385
+ #-------------------------------------------------------#
386
+ button_1 = gr.Button("Calcular Construção")
387
+ #-------------------------------------------------------#
388
+
389
+ # Valor do Terreno
390
+ with gr.Row():
391
+ vt_inp = gr.Number(label="Valor do Terreno", info="Campo não precisade de preenchimento p/ o cálculo do Custo de Reprodução", value=0)
392
+ grau_t = gr.Radio(["Grau III", "Grau II", "Grau I"], info="Escolha o Grau de Fundamentação alcançado pela avaliação do terreno", label="", value="Grau III")
393
+
394
+ # Valor final do imóvel
395
+ fc = 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)
396
+ forma_fc = gr.Radio(["Inferido em mercado semelhante", "Justificado", "Arbitrado"], label="", info="Estipule como foi elaborado o FC", value="Justificado")
397
+
398
+ #-------------------------------------------------------#
399
+ button_2 = gr.Button("Calcular Terreno + Construção")
400
+ #-------------------------------------------------------#
401
+
402
+ with gr.Column():
403
+ vi = gr.Textbox(label="Valor Inicial da Contrução")
404
+ cd = gr.Textbox(label="Cálculo da Depreciação")
405
+ vt_out = gr.Textbox(label="Valor estimado para o terreno")
406
+ vf = gr.Textbox(label="Valor final do imóvel")
407
+ la = gr.File(label="Laudo de Avaliação")
408
+
409
+ inputs = [
410
+ area, # Área construída (m²)
411
+ data_r, # Data de referência (mm/aaaa)
412
+ data_c, # Data da construção (mm/aaaa)
413
+ cub, # Tipo de CUB
414
+ data_cub, # Data do CUB (mm/aaaa)
415
+ fator_cub, # Fator para adequação do CUB
416
+ forma_cub, # Estimativa do custo direto
417
+ bdi, # BDI (%)
418
+ tipo_bdi, # Tipo de BDI
419
+ fator_local, # Fator local
420
+ just_local, # Justificativa para o Fator Local
421
+ tipo, # Tipologia
422
+ rst_con, # Estado de conservação
423
+ vr, # Valor residual (0, 0.1 ou 0.2)
424
+ deprec, # Depreciação Física
425
+ vt_inp, # Valor do Terreno
426
+ grau_t, # Grau de Fundamentação alcançado pela avaliação do terreno
427
+ fc, # FC (Fator de Comercialização)
428
+ forma_fc # Forma como foi elaborado o FC
429
+ ]
430
+
431
+ outputs = [
432
+ vi, # Valor Inicial da Construção
433
+ cd, # Cálculo da Depreciação
434
+ vt_out, # Valor estimado para o terreno
435
+ vf, # Valor final do imóvel
436
+ la # Laudo de Avaliação (arquivo)
437
+ ]
438
+
439
+ button_1.click(calcular_valor_imovel, inputs=inputs, outputs=outputs)
440
+ button_2.click(calcular_valor_imovel, inputs=inputs, outputs=outputs)
 
 
 
 
 
 
 
 
 
441
 
442
  if __name__ == "__main__":
443
+ interface.launch(debug=True)