DavidSB commited on
Commit
9035890
1 Parent(s): 4d9c3d8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +55 -9
app.py CHANGED
@@ -16,9 +16,10 @@ from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
16
  from docx.shared import Inches
17
  import plotly.io as pio
18
  from pandas.plotting import table
 
19
  #from docx.shared import RGBColor
20
 
21
- #-----------------#
22
 
23
  #função para criar um mapa no plotly
24
  def plotar_mapa_com_dois_dataframes(df1, df2):
@@ -55,9 +56,9 @@ def plotar_mapa_com_dois_dataframes(df1, df2):
55
 
56
  return fig1 #, fig2
57
 
58
- #-----------------#
59
 
60
- #função para criação de um gráfio
61
  def grafico_barras(data):
62
  # Calcular a média da coluna 'Vunit_hom'
63
  media = data['Vunit_hom'].mean()
@@ -84,14 +85,30 @@ def grafico_barras(data):
84
  # Mostrar o gráfico
85
  plt.show()
86
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  #-----------------#
88
 
 
89
  def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo de imovel',
90
- nome="-", prof="Engenheiro Civil", ent="CREA", reg="-",
91
  lograd="-", munic="-", tipo_imo="-", solic="-", final_espec="-", objetivo="-", press="-",
92
  infra="Água Potável", serv="Coleta de Lixo", uso="Residencial", pad_reg="-", tipo_via="-", obs_gerais="-",
93
  per="Sem destaque", ofe="Sem destaque", liq="Sem destaque",
94
- caract_avaliando='Defina o item 1 de Fundamentação', ident_dados='Defina o item 3 de Fundamentação'):
95
 
96
 
97
  #-------------------------------------------------INPUT AVALIANDO-------------------------------------------------------#
@@ -725,6 +742,15 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo
725
  valores_finais = valores_finais.replace('.', '@')
726
  valores_finais = valores_finais.replace(',', '.')
727
  valores_finais = valores_finais.replace('@', ',')
 
 
 
 
 
 
 
 
 
728
 
729
  #-----------------#
730
 
@@ -774,7 +800,15 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo
774
  Nível de Ofertas do Segmento: {ofe}
775
  Liquidez: {liq}
776
  """
 
 
 
 
 
777
  assinatura = f"""
 
 
 
778
  {nome} | {prof}
779
  {ent}{reg}
780
  """
@@ -940,6 +974,7 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo
940
  (resultados_formatados, "Resultados estatísticos"),
941
  (intervalo_confiança, "Intervalo de confiança de 80%"),
942
  (valores_finais, "Valores Calculados"),
 
943
  ('fig2.png', "Geolocalização da amostra"),
944
  ('scatter_plot.png', "Gráfico"),
945
  (assinatura,""),
@@ -953,9 +988,13 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo
953
  elif title == "Gráfico": # Adiciona gráfico como imagem
954
  doc.add_picture('scatter_plot.png', width=Inches(4)) # Substitua 'scatter_plot.png' pelo seu caminho e nome do arquivo
955
  else: # Adiciona outros tipos de conteúdo
956
- run = p.add_run(content)
957
  run.font.size = Pt(12)
958
  p.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT # Define o alinhamento para à esquerda
 
 
 
 
959
 
960
  # Salvar o documento em um arquivo .doc
961
  doc.save('relatorio_avaliacao.doc')
@@ -975,13 +1014,15 @@ interface = gr.Interface(
975
  # Imput da planilha
976
  gr.components.File(label="Upload planilha", type="file", info="Importação de planilha padrão com o avaliando e os dados"),
977
  gr.Slider(3, 26, value=26, label="Número de dados", info="Escolha o número de dados", step=1),
978
- gr.Radio(["Terrenos e glebas", "Tipologias com área construída"], label="Tipo de Imóvel", info="Escolha o tipo de imóvel"),
 
979
 
980
  # Informações do Responsável Técnico
981
  gr.Textbox(label="Responsável Técnico", value="-"),
982
  gr.Dropdown(["Engenheiro Civil", "Arquiteto e Urbanista", "Corretor de Imóveis"],label="Profissão", value="-"),
983
  gr.Dropdown(["CREA", "CAU", "CRECI"],label="Entidade de Classe", value="-"),
984
  gr.Number(label="Nº do registro", value="0"),
 
985
 
986
  # Introdução
987
  gr.Textbox(label="Endereço (Logradouro, nº e bairro)", value="-"),
@@ -1009,12 +1050,17 @@ interface = gr.Interface(
1009
 
1010
  # Para enquadramento
1011
  gr.Radio(["Completa p/ todos fatores analisados", "Completa p/ os fatores utilizados", "Situação paradigma"],
1012
- label="Caracterização do avaliando", info="Para enquadramento quanto a fundamentação - ítem 1 da tabela 6 do anexo 2 - NBR 14.653-2"),
 
1013
  gr.Radio(["Apresentação de informações relativas a todas as características dos dados analisados, com foto e características observadas pelo autor do laudo",
1014
  "Apresentação de informações relativas a todas as características dos dados analisados",
1015
  "Apresentação de informações relativas a todas as características dos dados correspondentes aos fatores analisados"],
1016
  label="Identificação dos dados",info="Para enquadramento quanto a fundamentação - ítem 3 da tabela 6 do anexo 2 - NBR 14.653-2",
1017
- )
 
 
 
 
1018
  ],
1019
  outputs=[
1020
  gr.Textbox(label ="Informações do Responsável Técnico"),
 
16
  from docx.shared import Inches
17
  import plotly.io as pio
18
  from pandas.plotting import table
19
+ from num2words import num2words
20
  #from docx.shared import RGBColor
21
 
22
+ #-----------------#
23
 
24
  #função para criar um mapa no plotly
25
  def plotar_mapa_com_dois_dataframes(df1, df2):
 
56
 
57
  return fig1 #, fig2
58
 
59
+ #-----------------#
60
 
61
+ #função para criação de um gráfico
62
  def grafico_barras(data):
63
  # Calcular a média da coluna 'Vunit_hom'
64
  media = data['Vunit_hom'].mean()
 
85
  # Mostrar o gráfico
86
  plt.show()
87
 
88
+ #-----------------#
89
+
90
+ #função para escrever por extenso o valor atribuído
91
+ def numero_por_extenso(numero):
92
+ reais = int(numero)
93
+
94
+ extenso_reais = num2words(reais, lang='pt_BR')
95
+
96
+ if reais == 1:
97
+ extenso_reais += ' real'
98
+ else:
99
+ extenso_reais += ' reais'
100
+
101
+ return extenso_reais
102
+
103
  #-----------------#
104
 
105
+ #função para avaliação do imóvel
106
  def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo de imovel',
107
+ nome="-", prof="Engenheiro Civil", ent="CREA", reg="-", data= None,
108
  lograd="-", munic="-", tipo_imo="-", solic="-", final_espec="-", objetivo="-", press="-",
109
  infra="Água Potável", serv="Coleta de Lixo", uso="Residencial", pad_reg="-", tipo_via="-", obs_gerais="-",
110
  per="Sem destaque", ofe="Sem destaque", liq="Sem destaque",
111
+ caract_avaliando='Defina o item 1 de Fundamentação', ident_dados='Defina o item 3 de Fundamentação', v_atrib=0):
112
 
113
 
114
  #-------------------------------------------------INPUT AVALIANDO-------------------------------------------------------#
 
742
  valores_finais = valores_finais.replace('.', '@')
743
  valores_finais = valores_finais.replace(',', '.')
744
  valores_finais = valores_finais.replace('@', ',')
745
+
746
+ # Crie uma string formatada com VALOR FINAL ATRIBUÍDO
747
+ v_atrib = int(v_atrib)
748
+ valor_ext = numero_por_extenso(v_atrib)
749
+
750
+ v_relat = f"{v_atrib:,.2f}"
751
+ v_relat = v_relat.replace('.', '@')
752
+ v_relat = v_relat.replace(',', '.')
753
+ v_relat = v_relat.replace('@', ',')
754
 
755
  #-----------------#
756
 
 
800
  Nível de Ofertas do Segmento: {ofe}
801
  Liquidez: {liq}
802
  """
803
+ valor_atribuido = f"""
804
+ CONCLUSÃO DE VALOR
805
+ Valor atribuído: R$ {v_relat}
806
+ ({valor_ext})
807
+ """
808
  assinatura = f"""
809
+ Data: {data}
810
+
811
+
812
  {nome} | {prof}
813
  {ent}{reg}
814
  """
 
974
  (resultados_formatados, "Resultados estatísticos"),
975
  (intervalo_confiança, "Intervalo de confiança de 80%"),
976
  (valores_finais, "Valores Calculados"),
977
+ (valor_atribuido, "Valor final atribuído"),
978
  ('fig2.png', "Geolocalização da amostra"),
979
  ('scatter_plot.png', "Gráfico"),
980
  (assinatura,""),
 
988
  elif title == "Gráfico": # Adiciona gráfico como imagem
989
  doc.add_picture('scatter_plot.png', width=Inches(4)) # Substitua 'scatter_plot.png' pelo seu caminho e nome do arquivo
990
  else: # Adiciona outros tipos de conteúdo
991
+ run = p.add_run(str(content))
992
  run.font.size = Pt(12)
993
  p.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT # Define o alinhamento para à esquerda
994
+
995
+ # Adiciona alinhamento à direita para a assinatura
996
+ if title == "":
997
+ p.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
998
 
999
  # Salvar o documento em um arquivo .doc
1000
  doc.save('relatorio_avaliacao.doc')
 
1014
  # Imput da planilha
1015
  gr.components.File(label="Upload planilha", type="file", info="Importação de planilha padrão com o avaliando e os dados"),
1016
  gr.Slider(3, 26, value=26, label="Número de dados", info="Escolha o número de dados", step=1),
1017
+ gr.Radio(["Terrenos e glebas", "Tipologias com área construída"], label="Tipo de Imóvel", info="Escolha o tipo de imóvel",
1018
+ value="Terrenos e glebas"),
1019
 
1020
  # Informações do Responsável Técnico
1021
  gr.Textbox(label="Responsável Técnico", value="-"),
1022
  gr.Dropdown(["Engenheiro Civil", "Arquiteto e Urbanista", "Corretor de Imóveis"],label="Profissão", value="-"),
1023
  gr.Dropdown(["CREA", "CAU", "CRECI"],label="Entidade de Classe", value="-"),
1024
  gr.Number(label="Nº do registro", value="0"),
1025
+ gr.Textbox(label="Data", value=""),
1026
 
1027
  # Introdução
1028
  gr.Textbox(label="Endereço (Logradouro, nº e bairro)", value="-"),
 
1050
 
1051
  # Para enquadramento
1052
  gr.Radio(["Completa p/ todos fatores analisados", "Completa p/ os fatores utilizados", "Situação paradigma"],
1053
+ label="Caracterização do avaliando", info="Para enquadramento quanto a fundamentação - ítem 1 da tabela 6 do anexo 2 - NBR 14.653-2",
1054
+ value="Completa p/ os fatores utilizados"),
1055
  gr.Radio(["Apresentação de informações relativas a todas as características dos dados analisados, com foto e características observadas pelo autor do laudo",
1056
  "Apresentação de informações relativas a todas as características dos dados analisados",
1057
  "Apresentação de informações relativas a todas as características dos dados correspondentes aos fatores analisados"],
1058
  label="Identificação dos dados",info="Para enquadramento quanto a fundamentação - ítem 3 da tabela 6 do anexo 2 - NBR 14.653-2",
1059
+ value="Apresentação de informações relativas a todas as características dos dados analisados"),
1060
+
1061
+ # Valor atribuído
1062
+ gr.Number(label="Valor atribuído", info="Digite o valor atribuído (deve ser um númwero inteiro)", value=0),
1063
+
1064
  ],
1065
  outputs=[
1066
  gr.Textbox(label ="Informações do Responsável Técnico"),