DavidSB commited on
Commit
7c4d2fa
·
1 Parent(s): 9c4c98a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +69 -47
app.py CHANGED
@@ -8,6 +8,7 @@ from gradio import Interface
8
  from docx import Document
9
  from docx.shared import Pt
10
  from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
 
11
 
12
 
13
  # Suprimir todos os avisos durante a execução do script
@@ -17,20 +18,32 @@ warnings.filterwarnings("ignore")
17
  df_cub = pd.read_excel('TABELAS.xlsx', sheet_name='CUB')
18
  ultimo_cub = df_cub.columns[-1]
19
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
  # Função para calcular o valor do imóvel
22
- def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", reg="-", data=None,
23
  lograd="-", munic="-", tipo_imo="-", solic="-", finalidade="-", objetivo="-", press="-",
24
  infra="Água Potável", serv="Coleta de Lixo", uso="Residencial", pad_reg="-", tipo_via="-", obs_gerais="-",
25
  per="Sem destaque", ofe="Sem destaque", liq="Sem destaque",
26
- area=100, data_refer_str=None, data_const_str=None, tipo_cub="R 1-N (Res. Unifamiliar)",
27
- data_cub_str=None, percentual_cub=1, est_custo_dir="-", BDI=22.5, BDI_tipo ="Arbitrado", fator_local = 1,
28
- just_fator_local = "-", tipologia="APARTAMENTOS",
29
  estado="B - entre novo e regular", VR=0.0, deprec="Arbitrada",
30
  valor_terreno=0,
31
  est_ter="Grau III",
32
  fc=1, fc_just="Arbitrado"):
33
-
34
  # Carregar dados dos arquivos Excel
35
  df_cub = pd.read_excel('TABELAS.xlsx', sheet_name='CUB')
36
  df_vida = pd.read_excel('TABELAS.xlsx', sheet_name='VUTIL')
@@ -96,17 +109,17 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", reg="-"
96
  Valor_com_deprec = Valor_sem_deprec * kd
97
  Valor_com_deprec = round(Valor_com_deprec, 2)
98
  valor_imovel = round((valor_terreno + Valor_com_deprec) * float(fc), 2)
99
-
100
-
101
  # Atributo da coluna "cons" pelo qual você deseja fazer a correspondência
102
  atributo_desejado = estado
103
  # Encontrar o valor da coluna "obs" com base no atributo da coluna "cons"
104
  valor_obs = df_estado_cons.loc[df_estado_cons['cons'] == atributo_desejado, 'obs'].iloc[0]
105
-
106
  # -------------------------------------- #
107
-
108
  # GRAU DE FUNDAMENTAÇÃO CUSTOS
109
-
110
  # item_1 - Graus de Fundamentação (Estimativa do custo direto)
111
  if est_custo_dir == "Elaboração de orçamento, no mínimo sintético":
112
  cust_1 = 3
@@ -143,9 +156,9 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", reg="-"
143
  est_cr = "Fora dos critérios"
144
 
145
  # -------------------------------------- #
146
-
147
  # GRAU DE FUNDAMENTAÇÃO EVOLUTIVO
148
-
149
  # item_1 - Graus de Fundamentação (Estimativa do valor do terreno)
150
  if est_ter == "Grau III":
151
  evo_1 = 3
@@ -182,12 +195,12 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", reg="-"
182
  fundamentacao_evolutivo = "Fora dos critérios"
183
 
184
  # -------------------------------------- #
185
-
186
  # criação de strings para os relatórios da interface e do word
187
-
188
  dados_resp = f"""
189
  Responsável Técnico: {nome}
190
- Profissão: {prof}
191
  Entidade de Classe: {ent}
192
  Número do registro: {reg}
193
  """
@@ -233,7 +246,7 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", reg="-"
233
  Valor CUB: R$ {valor_cub:,.2f}
234
  Fator local: {fator_local}
235
  Fator local(justificativa): {just_fator_local}
236
-
237
  Valor antes da depreciação = área construída * CUB * fator adequação CUB * (1 + BDI / 100) * fator local
238
  Valor sem depreciação: R$ {Valor_sem_deprec:,.2f}
239
  """
@@ -242,7 +255,7 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", reg="-"
242
  valor_inicial = valor_inicial.replace('.', '@')
243
  valor_inicial = valor_inicial.replace(',', '.')
244
  valor_inicial = valor_inicial.replace('@', ',')
245
-
246
  #####
247
  valor_obs = valor_obs.replace('.', '@').replace(',', '.').replace('@', ',')
248
  deprec = deprec.replace('.', '@').replace(',', '.').replace('@', ',')
@@ -257,7 +270,7 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", reg="-"
257
  Forma de cálculo da depreciação física: {deprec}
258
  Kd: {kd}
259
  onde: Kd = (Valor residual + (1 - percentual de depreciação)*(1 - Valor residual))
260
-
261
  Valor depois da depreciação = (Valor antes da depreciação) x Kd (com coeficiente de valor residual)
262
  Valor final construção: R$ {Valor_com_deprec:,.2f}
263
  Especificação da Avaliação (benfeitorias) - Método da Quantificação do Custo: {est_cr}
@@ -266,7 +279,7 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", reg="-"
266
  deprec = deprec.replace('.', '@')
267
  deprec = deprec.replace(',', '.')
268
  deprec = deprec.replace('@', ',')
269
-
270
  #####
271
  valor_ter = f"""
272
  Valor do Terreno: R$ {valor_terreno:,.2f}
@@ -276,34 +289,43 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", reg="-"
276
  valor_ter = valor_ter.replace('.', '@')
277
  valor_ter = valor_ter.replace(',', '.')
278
  valor_ter = valor_ter.replace('@', ',')
279
-
280
  #####
 
 
 
 
 
 
 
281
  valor_final = f"""
282
  FC (Fator de Comercialização): {fc}
283
  Observação sobre o FC: {fc_just}
284
-
285
  VI = (VT + CA) * FC
286
  Onde:
287
  VI: Valor estimado do imóvel;
288
  VT: Valor estimado do terreno;
289
  CA: Custo de reedição das benfeitorias;
290
  FC: Fator de comercialização.
291
-
292
- Valor do Imóvel: R$ {valor_imovel:,.2f}
 
 
293
  Especificação da Avaliação - Método Evolutivo: {fundamentacao_evolutivo}
294
  """
295
  #####
296
  # Substituindo ponto por vírgula
297
- valor_final = valor_final.replace('.', '@')
298
- valor_final = valor_final.replace(',', '.')
299
- valor_final = valor_final.replace('@', ',')
300
-
301
  #####
302
  assinatura = f"""
303
  Data: {data}
304
-
305
-
306
- {nome} | {prof}
307
  {ent}{reg}
308
  """
309
 
@@ -334,7 +356,7 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", reg="-"
334
  p = doc.add_paragraph()
335
  run = p.add_run(content)
336
  run.font.size = Pt(12)
337
-
338
  if title == "": # Se for a seção de assinatura
339
  p.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT # Define o alinhamento para à direita
340
  else:
@@ -342,7 +364,7 @@ def calcular_valor_imovel(nome="-", prof="Engenheiro Civil", ent="CREA", reg="-"
342
 
343
  # Salvar o documento em um arquivo .doc
344
  doc.save('relatorio_avaliacao.doc')
345
-
346
  # -------------------------------------- #
347
 
348
  # Outputs
@@ -369,18 +391,18 @@ inputs = [
369
  gr.Textbox(label="Solicitante", value="-"),
370
  gr.Textbox(label="Finalidade", value="-"),
371
  gr.Textbox(label="Objetivo", value="-"),
372
-
373
  # Características da Região
374
  gr.Textbox(label="Pressupostos, Ressalvas e Fatores Limitantes", value="-"),
375
  gr.Dropdown(["Água Potável", "Energia Elétrica", "Telefone", "Pavimentação", "Esgoto Pluvial", "Esgoto Cloacal",
376
  "Iluminação Pública"], value=["Água Potável"], multiselect=True, label="Infraestrutura Urbana"),
377
- gr.Dropdown(["Coleta de Lixo", "Transporte Coletivo", "Comércio", "Educação", "Saúde"],
378
  value=["Coleta de Lixo"], multiselect=True, label="Serviços Públicos"),
379
  gr.Radio(["Residencial", "Comercial", "Misto"], label="Uso",value="Residencial"),
380
  gr.Radio(["Baixo", "Normal", "Alto"], label="Padrão predominante na região",value="Normal"),
381
  gr.Radio(["Local", "Coletora", "Arterial"], label="Tipo de via de acesso ao imóvel",value="Local"),
382
  gr.Textbox(label="Outras informação", value="-"),
383
-
384
  # Diagnóstico de Mercado
385
  gr.Radio(["Aparentemente aquecido", "Sem destaque", "Aparentemente recessivo"], label="Performance",value="Sem destaque"),
386
  gr.Radio(["Aparentemente alto", "Sem destaque", "Aparentemente baixo"], label="Nível de Ofertas do Segmento",value="Sem destaque"),
@@ -390,10 +412,10 @@ inputs = [
390
  gr.Number(label="Área construída (m²)", value=100),
391
  gr.Textbox(label="Data de referência (mm/aaaa)", value=ultimo_cub, info="Data do fato gerador da demanda"),
392
  gr.Textbox(label="Data da construção (mm/aaaa)", value=ultimo_cub, info="Data de construção do imóvel"),
393
- gr.Dropdown(label="Tipo de CUB", choices=["R 1-B (Res. Unifamiliar)",
394
- "R 1-N (Res. Unifamiliar)",
395
- "R 1-A (Res. Unifamiliar)",
396
- "PP 4-B (Prédio Popular)",
397
  "PP 4-N (Prédio Popular)",
398
  "R 8-B (Res. Multifamiliar)",
399
  "R 8-N (Res. Multifamiliar)",
@@ -406,15 +428,15 @@ inputs = [
406
  "CAL 8-A (Com. Andar Livres)",
407
  "CSL 8-N (Com.Salas e Lojas)",
408
  "CSL 8-A (Com.Salas e Lojas)",
409
- "CSL 16-N (Com.Salas e Lojas)",
410
  "CSL 16-A (Com.Salas e Lojas)",
411
  "GI (Galpão Industrial)"],
412
  value="R 1-N (Res. Unifamiliar)"),
413
  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"),
414
  #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"),
415
  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),
416
-
417
-
418
  gr.Radio(["Utilização CUB para projeto semelhante ao projeto padrão",
419
  "Utilização CUB para projeto diferente do projeto padrão, com os devidos ajustes"],
420
  label="Estimativa do custo direto",value="Utilização CUB para projeto semelhante ao projeto padrão"),
@@ -423,7 +445,7 @@ inputs = [
423
  gr.Radio(["Calculado","Justificado", "Arbitrado"], label="Tipo de BDI", info="Estipule como foi elaborado o % de BDI", value="Justificado"),
424
  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),
425
  gr.Textbox(label="Justificativa para o Fator Local", value="-", info="Justifique tecnicamente a utilização deste fator"),
426
-
427
  # Cálculo da Depreciação
428
  gr.Dropdown(label="Tipologia", choices=["APARTAMENTOS", "BANCOS", "CASAS DE ALVENARIA",
429
  "CASAS DE MADEIRA", "HOTÉIS", "LOJAS", "TEATROS",
@@ -440,12 +462,12 @@ inputs = [
440
  "Por métodos técnicos consagrados, considerando-se idade, vida útil e estado de conservação",
441
  "Arbitrado"], label="Depreciação Física", info="Forma pela qual a depreciação física foi calculada",
442
  value="Por métodos técnicos consagrados, considerando-se idade, vida útil e estado de conservação"),
443
-
444
  # Valor do Terreno
445
  gr.Number(label="Valor do Terreno", value=0),
446
- gr.Radio(["Grau III", "Grau II", "Grau I"],
447
  info="Escolha o Grau de Fundamentação alcançado pela avaliação do terreno", label="", value="Grau III"),
448
-
449
  # Valor final do imóvel
450
  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),
451
  gr.Radio(["Inferido em mercado semelhante", "Justificado", "Arbitrado"], label="", info="Estipule como foi elaborado o FC",value="Justificado"),
@@ -464,7 +486,7 @@ outputs = [
464
  ],
465
 
466
  live=False,
467
- capture_session=True,
468
  theme=gr.themes.Monochrome(),
469
  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>",
470
  description=f"""
 
8
  from docx import Document
9
  from docx.shared import Pt
10
  from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
11
+ from num2words import num2words
12
 
13
 
14
  # Suprimir todos os avisos durante a execução do script
 
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
22
+ def numero_por_extenso(numero):
23
+ reais = int(numero)
24
+
25
+ extenso_reais = num2words(reais, lang='pt_BR')
26
+
27
+ if reais == 1:
28
+ extenso_reais += ' real'
29
+ else:
30
+ extenso_reais += ' reais'
31
+
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", 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",
42
  estado="B - entre novo e regular", VR=0.0, deprec="Arbitrada",
43
  valor_terreno=0,
44
  est_ter="Grau III",
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')
 
109
  Valor_com_deprec = Valor_sem_deprec * kd
110
  Valor_com_deprec = round(Valor_com_deprec, 2)
111
  valor_imovel = round((valor_terreno + Valor_com_deprec) * float(fc), 2)
112
+
113
+
114
  # Atributo da coluna "cons" pelo qual você deseja fazer a correspondência
115
  atributo_desejado = estado
116
  # Encontrar o valor da coluna "obs" com base no atributo da coluna "cons"
117
  valor_obs = df_estado_cons.loc[df_estado_cons['cons'] == atributo_desejado, 'obs'].iloc[0]
118
+
119
  # -------------------------------------- #
120
+
121
  # GRAU DE FUNDAMENTAÇÃO CUSTOS
122
+
123
  # item_1 - Graus de Fundamentação (Estimativa do custo direto)
124
  if est_custo_dir == "Elaboração de orçamento, no mínimo sintético":
125
  cust_1 = 3
 
156
  est_cr = "Fora dos critérios"
157
 
158
  # -------------------------------------- #
159
+
160
  # GRAU DE FUNDAMENTAÇÃO EVOLUTIVO
161
+
162
  # item_1 - Graus de Fundamentação (Estimativa do valor do terreno)
163
  if est_ter == "Grau III":
164
  evo_1 = 3
 
195
  fundamentacao_evolutivo = "Fora dos critérios"
196
 
197
  # -------------------------------------- #
198
+
199
  # criação de strings para os relatórios da interface e do word
200
+
201
  dados_resp = f"""
202
  Responsável Técnico: {nome}
203
+ Profissão: {prof}
204
  Entidade de Classe: {ent}
205
  Número do registro: {reg}
206
  """
 
246
  Valor CUB: R$ {valor_cub:,.2f}
247
  Fator local: {fator_local}
248
  Fator local(justificativa): {just_fator_local}
249
+
250
  Valor antes da depreciação = área construída * CUB * fator adequação CUB * (1 + BDI / 100) * fator local
251
  Valor sem depreciação: R$ {Valor_sem_deprec:,.2f}
252
  """
 
255
  valor_inicial = valor_inicial.replace('.', '@')
256
  valor_inicial = valor_inicial.replace(',', '.')
257
  valor_inicial = valor_inicial.replace('@', ',')
258
+
259
  #####
260
  valor_obs = valor_obs.replace('.', '@').replace(',', '.').replace('@', ',')
261
  deprec = deprec.replace('.', '@').replace(',', '.').replace('@', ',')
 
270
  Forma de cálculo da depreciação física: {deprec}
271
  Kd: {kd}
272
  onde: Kd = (Valor residual + (1 - percentual de depreciação)*(1 - Valor residual))
273
+
274
  Valor depois da depreciação = (Valor antes da depreciação) x Kd (com coeficiente de valor residual)
275
  Valor final construção: R$ {Valor_com_deprec:,.2f}
276
  Especificação da Avaliação (benfeitorias) - Método da Quantificação do Custo: {est_cr}
 
279
  deprec = deprec.replace('.', '@')
280
  deprec = deprec.replace(',', '.')
281
  deprec = deprec.replace('@', ',')
282
+
283
  #####
284
  valor_ter = f"""
285
  Valor do Terreno: R$ {valor_terreno:,.2f}
 
289
  valor_ter = valor_ter.replace('.', '@')
290
  valor_ter = valor_ter.replace(',', '.')
291
  valor_ter = valor_ter.replace('@', ',')
292
+
293
  #####
294
+ valor_ext = {numero_por_extenso(valor_imovel)}
295
+
296
+ v_relat = f"{valor_imovel:,.2f}"
297
+ v_relat = v_relat.replace('.', '@')
298
+ v_relat = v_relat.replace(',', '.')
299
+ v_relat = v_relat.replace('@', ',')
300
+
301
  valor_final = f"""
302
  FC (Fator de Comercialização): {fc}
303
  Observação sobre o FC: {fc_just}
304
+ ---------------------
305
  VI = (VT + CA) * FC
306
  Onde:
307
  VI: Valor estimado do imóvel;
308
  VT: Valor estimado do terreno;
309
  CA: Custo de reedição das benfeitorias;
310
  FC: Fator de comercialização.
311
+ ---------------------
312
+ Valor do Imóvel: R$ {v_relat}
313
+ ({valor_ext})
314
+ ---------------------
315
  Especificação da Avaliação - Método Evolutivo: {fundamentacao_evolutivo}
316
  """
317
  #####
318
  # Substituindo ponto por vírgula
319
+ #valor_final = valor_final.replace('.', '@')
320
+ #valor_final = valor_final.replace(',', '.')
321
+ #valor_final = valor_final.replace('@', ',')
322
+
323
  #####
324
  assinatura = f"""
325
  Data: {data}
326
+
327
+
328
+ {nome} | {prof}
329
  {ent}{reg}
330
  """
331
 
 
356
  p = doc.add_paragraph()
357
  run = p.add_run(content)
358
  run.font.size = Pt(12)
359
+
360
  if title == "": # Se for a seção de assinatura
361
  p.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT # Define o alinhamento para à direita
362
  else:
 
364
 
365
  # Salvar o documento em um arquivo .doc
366
  doc.save('relatorio_avaliacao.doc')
367
+
368
  # -------------------------------------- #
369
 
370
  # Outputs
 
391
  gr.Textbox(label="Solicitante", value="-"),
392
  gr.Textbox(label="Finalidade", value="-"),
393
  gr.Textbox(label="Objetivo", value="-"),
394
+
395
  # Características da Região
396
  gr.Textbox(label="Pressupostos, Ressalvas e Fatores Limitantes", value="-"),
397
  gr.Dropdown(["Água Potável", "Energia Elétrica", "Telefone", "Pavimentação", "Esgoto Pluvial", "Esgoto Cloacal",
398
  "Iluminação Pública"], value=["Água Potável"], multiselect=True, label="Infraestrutura Urbana"),
399
+ gr.Dropdown(["Coleta de Lixo", "Transporte Coletivo", "Comércio", "Educação", "Saúde"],
400
  value=["Coleta de Lixo"], multiselect=True, label="Serviços Públicos"),
401
  gr.Radio(["Residencial", "Comercial", "Misto"], label="Uso",value="Residencial"),
402
  gr.Radio(["Baixo", "Normal", "Alto"], label="Padrão predominante na região",value="Normal"),
403
  gr.Radio(["Local", "Coletora", "Arterial"], label="Tipo de via de acesso ao imóvel",value="Local"),
404
  gr.Textbox(label="Outras informação", value="-"),
405
+
406
  # Diagnóstico de Mercado
407
  gr.Radio(["Aparentemente aquecido", "Sem destaque", "Aparentemente recessivo"], label="Performance",value="Sem destaque"),
408
  gr.Radio(["Aparentemente alto", "Sem destaque", "Aparentemente baixo"], label="Nível de Ofertas do Segmento",value="Sem destaque"),
 
412
  gr.Number(label="Área construída (m²)", value=100),
413
  gr.Textbox(label="Data de referência (mm/aaaa)", value=ultimo_cub, info="Data do fato gerador da demanda"),
414
  gr.Textbox(label="Data da construção (mm/aaaa)", value=ultimo_cub, info="Data de construção do imóvel"),
415
+ gr.Dropdown(label="Tipo de CUB", choices=["R 1-B (Res. Unifamiliar)",
416
+ "R 1-N (Res. Unifamiliar)",
417
+ "R 1-A (Res. Unifamiliar)",
418
+ "PP 4-B (Prédio Popular)",
419
  "PP 4-N (Prédio Popular)",
420
  "R 8-B (Res. Multifamiliar)",
421
  "R 8-N (Res. Multifamiliar)",
 
428
  "CAL 8-A (Com. Andar Livres)",
429
  "CSL 8-N (Com.Salas e Lojas)",
430
  "CSL 8-A (Com.Salas e Lojas)",
431
+ "CSL 16-N (Com.Salas e Lojas)",
432
  "CSL 16-A (Com.Salas e Lojas)",
433
  "GI (Galpão Industrial)"],
434
  value="R 1-N (Res. Unifamiliar)"),
435
  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"),
436
  #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"),
437
  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),
438
+
439
+
440
  gr.Radio(["Utilização CUB para projeto semelhante ao projeto padrão",
441
  "Utilização CUB para projeto diferente do projeto padrão, com os devidos ajustes"],
442
  label="Estimativa do custo direto",value="Utilização CUB para projeto semelhante ao projeto padrão"),
 
445
  gr.Radio(["Calculado","Justificado", "Arbitrado"], label="Tipo de BDI", info="Estipule como foi elaborado o % de BDI", value="Justificado"),
446
  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),
447
  gr.Textbox(label="Justificativa para o Fator Local", value="-", info="Justifique tecnicamente a utilização deste fator"),
448
+
449
  # Cálculo da Depreciação
450
  gr.Dropdown(label="Tipologia", choices=["APARTAMENTOS", "BANCOS", "CASAS DE ALVENARIA",
451
  "CASAS DE MADEIRA", "HOTÉIS", "LOJAS", "TEATROS",
 
462
  "Por métodos técnicos consagrados, considerando-se idade, vida útil e estado de conservação",
463
  "Arbitrado"], label="Depreciação Física", info="Forma pela qual a depreciação física foi calculada",
464
  value="Por métodos técnicos consagrados, considerando-se idade, vida útil e estado de conservação"),
465
+
466
  # Valor do Terreno
467
  gr.Number(label="Valor do Terreno", value=0),
468
+ gr.Radio(["Grau III", "Grau II", "Grau I"],
469
  info="Escolha o Grau de Fundamentação alcançado pela avaliação do terreno", label="", value="Grau III"),
470
+
471
  # Valor final do imóvel
472
  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),
473
  gr.Radio(["Inferido em mercado semelhante", "Justificado", "Arbitrado"], label="", info="Estipule como foi elaborado o FC",value="Justificado"),
 
486
  ],
487
 
488
  live=False,
489
+ #capture_session=True,
490
  theme=gr.themes.Monochrome(),
491
  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>",
492
  description=f"""