Bjerring98 commited on
Commit
d1bfd17
·
verified ·
1 Parent(s): c1e2fc2

Upload 2 files

Browse files
Files changed (2) hide show
  1. .streamlit/config.toml +5 -0
  2. hk.py +1125 -0
.streamlit/config.toml ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ [theme]
2
+ base="light"
3
+ primaryColor="#200303"
4
+ backgroundColor="#eceef3"
5
+ secondaryBackgroundColor="#ffffff"
hk.py ADDED
@@ -0,0 +1,1125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Importer biblioteker
2
+ import pandas as pd
3
+ import numpy as np
4
+ import streamlit as st
5
+ from duckduckgo_search import DDGS
6
+ import locale
7
+ from datetime import date
8
+
9
+ # sidekonfiguration
10
+ st.set_page_config(
11
+ page_icon="🤖",
12
+ layout="wide"
13
+ )
14
+
15
+ # Sidebar menu navigation
16
+ st.sidebar.image("logo.png", width=300) # Logo i sidebaren med bredde 300
17
+ menu = st.sidebar.radio("Vælg en side", ["Forside", "Kundeindsigt", "Regnskabsanalyse", "Lønkommentering", 'Skat & Rådighed', 'Indstillingspåtegning'])
18
+
19
+ # Forsiden
20
+ if menu == "Forside":
21
+ st.title("AI-Assistent")
22
+
23
+ st.write("""
24
+ Formålet med appen er at understøtte rådgivere og studentermedhjælpere, der arbejder med kunder i "hvide kitler"-segmentet, ved at levere både hurtige og præcise analyser.
25
+ Appen er designet til at reducere behovet for manuel opsætning af regnskabskommenteringer og privatøkonomiske vurderinger, idet appen tilpasses Nykredits skabeloner, så analyser og vurderinger følger gældende standarder jf. forretningsgang, hvilket sparer tid og sikrer høj kvalitet.
26
+ Appen bruger Azure OpenAI til at levere intelligente og automatiserede analyser og kommenteringer baseret på AI-teknologi og kundedata, hvilket effektiviserer rådgivningsprocessen
27
+ """)
28
+
29
+ st.write("**Indtast oplysninger om kunden, som gemmes automatisk og bruges på tværs af appens funktioner:**")
30
+
31
+ # Indtast kundens navn som herefter gemmes i variablen kunde_navn
32
+ kunde_navn = st.text_input("Kundens navn", "John Doe")
33
+
34
+ # Indtast Segment for kunden som herefter gemmes i variablen guideline
35
+ guideline = st.selectbox(
36
+ 'Vælg Segment',
37
+ ['Speciallæge','Læge', 'Speciallæge', 'Fysioterapeut', 'Tandlæge', 'Kiropraktor']
38
+ )
39
+
40
+ # Har kunden en VSO eller ApS? Eller Begge to. Herefter indtast navn for VSO, ApS eller begge to
41
+ valg = st.selectbox("Virksomhedstype", ["VSO", "ApS", "Begge to"])
42
+
43
+ # Hvis brugeren vælger "VSO"
44
+ if valg == "VSO":
45
+ virksomhed_navn = st.text_input("Indtast navn på VSO", "Lægepraksis v. John Doe")
46
+
47
+ # Hvis brugeren vælger "ApS"
48
+ elif valg == "ApS":
49
+ virksomhed_navn = st.text_input("Indtast navn på ApS", "")
50
+
51
+ # Hvis brugeren vælger "Begge to"
52
+ elif valg == "Begge to":
53
+ virksomhed_navn_vso = st.text_input("Indtast navn på VSO", "")
54
+ virksomhed_navn_aps = st.text_input("Indtast navn på ApS", "")
55
+
56
+
57
+ if menu == "Lønkommentering":
58
+
59
+ st.title("Lønkommentering")
60
+
61
+ st.write("For at der kan udarbejdes beregninger på nuværende og fremtidigt budget i Skat og Rådighed, skal du give information om:")
62
+ st.write("- Indkomst fra erhverv til nuværende budget")
63
+ st.write("- Indkomst fra erhverv til fremtidigt budget")
64
+ st.write("Hvis der allerede er en lønkommentering på kunden, skal du vurdere, om du fortsat kan anvende den, eller om du skal udarbejde en ny")
65
+ st.write("Der henvises til Privatøkonomi - Erhverv - Arbejdsbeskrivelse for yderligere information om lønkommentering")
66
+
67
+ # Indkomst sektion
68
+ st.subheader("Indkomst")
69
+
70
+ løn_virksomhed = st.number_input("Lønudtræk fra egen virksomhed", min_value=0, value=1161, step=1)
71
+
72
+ udbytte = st.number_input("Udbytte - ikke aktuelt med VSO", min_value=0, value=0, step=1)
73
+
74
+ samlet_indkomst = løn_virksomhed + udbytte
75
+ st.write(f"**Samlet årlig lønudtræk: {samlet_indkomst}**")
76
+
77
+ # Dropdown-menu for hvordan indkomsten er fastlagt
78
+ indkomst_fastlagt = st.selectbox("Hvordan er lønudtræk fastlagt?", ["Kundens regnskab", "Dialog med kunden" "eSKAT"])
79
+
80
+ øvrig_indkomst = st.text_area("Øvrig information om indkomstforhold", "John Doe er speciallæge og ejer VSO'en Lægepraksis v. John Doe")
81
+
82
+ # Virksomhedens performance sektion
83
+ st.subheader("Virksomhedens performance")
84
+
85
+ overskud_2023 = st.number_input("Nuværende Regnskabs resultat efter skat", min_value=0, value=3000, step=1)
86
+
87
+ likviditet = st.number_input("Likvid beholding indestående i seneste regnskab", min_value=0, value=1500, step=1)
88
+
89
+ gæld_i_virksomhed = st.selectbox("Er der gæld i virksomheden?", ["Ja", "Nej"])
90
+
91
+ gældens_størrelse = st.number_input("Gældens størrelse", min_value=0, value=1000, step=1, key="gældens_størrelse")
92
+
93
+ Øvrig_performance = st.text_area("Øvrig information om virksomhedens performance", "Klinikken har kontinuerligt opnået et højere resultat efter skat siden stiftelsen, og har senest haft rekordresultat. Der er restgæld på erhvervslån optaget i forbindelse med opkøb af klinikken og som serviceres anmærkningsfrit.")
94
+
95
+ # Fremtidig indkomst fra Erhverv sektion
96
+ st.subheader("Fremtidig Indkomst fra Erhverv:")
97
+
98
+ indkomst_fastlagt_fremtidig = st.selectbox("Hvordan er fremtidig lønudtræk fastlagt?", ["Dialog med kunden", "Kundens budget"])
99
+
100
+ fremtidig_løn = st.number_input("Fremtidig forventet lønudtræk", min_value=0, value=1750, step=1)
101
+
102
+ fremtidig_udbytte = st.number_input("Fremtidig forventet udbytte - ikke aktuelt med VSO", min_value=0, value=0, step=1)
103
+
104
+ # Menu hvor man vurderer om at virksomhedens indtjening og cash-flow kan indeholde kundens forventede indkomst
105
+ vurdering_fremtidigt_udtræk = st.selectbox("Vurderer du at virksomhedens indtjening og cash-flow kan indeholde kundens forventede fremtidige lønudtræk", ["Ja", "Nej"])
106
+
107
+
108
+ Øvrig_fremtidig_indkomst = st.text_area("Øvrig information om fremtidig lønudtræk", "John udtryk, at han kommer til at øge sit fremtidige lønudtræk grundet et ønske om et højere rådighedsbeløb idet han snarligt påtænker at renovereee sit rsommerhu samt bilkø")
109
+
110
+ # Formue fra Erhverv sektion
111
+ st.subheader("Formue fra Erhverv, inkl. Udskudt Skat:")
112
+
113
+ # Her kan bruger vælge at indtaste formue i VSO eller ApS eller for begge
114
+ # Dropdown-menu for at vælge type af egenkapital
115
+ # Hvis brugeren vælger "Egenkapital i VSO"
116
+
117
+ # Brugervalg
118
+ valg = st.selectbox("Vælg type af egenkapital", ["Egenkapital i VSO", "Egenkapital i ApS", "Begge to"])
119
+
120
+ # Variabler for skat og formue
121
+ formue_vso, formue_aps = 0, 0 # Standardværdier
122
+ skatte_procent_vso, skatte_procent_aps = 50, 42 # Skatteprocenter
123
+
124
+ # Hvis brugeren vælger "Egenkapital i VSO"
125
+ if valg == "Egenkapital i VSO":
126
+ formue_vso = st.number_input("Indtast egenkapital i VSO", min_value=0, value=4000, step=1, key="formue_vso")
127
+ samlet_formue_før_skat = formue_vso
128
+ samlet_formue_efter_skat = formue_vso * (1 - skatte_procent_vso / 100)
129
+
130
+ # Hvis brugeren vælger "Egenkapital i ApS"
131
+ elif valg == "Egenkapital i ApS":
132
+ formue_aps = st.number_input("Indtast egenkapital i ApS", min_value=0, step=1, key="formue_aps")
133
+ samlet_formue_før_skat = formue_aps
134
+ samlet_formue_efter_skat = formue_aps * (1 - skatte_procent_aps / 100)
135
+
136
+ # Hvis brugeren vælger "Begge to"
137
+ elif valg == "Begge to":
138
+ formue_vso = st.number_input("Indtast egenkapital i VSO", min_value=0, step=1, key="formue_vso")
139
+ formue_aps = st.number_input("Indtast egenkapital i ApS", min_value=0, step=1, key="formue_aps")
140
+ samlet_formue_før_skat = formue_vso + formue_aps
141
+ samlet_formue_efter_skat = (formue_vso * (1 - skatte_procent_vso / 100)) + (formue_aps * (1 - skatte_procent_aps / 100))
142
+
143
+ # Resultater
144
+ st.write(f"**Samlet formue før skat: {samlet_formue_før_skat} tkr.**")
145
+ st.write(f"**Samlet formue efter skat: {samlet_formue_efter_skat:.2f} tkr.**")
146
+
147
+ # Tilføj tekstboks til kvalitative informationer
148
+ Øvrige_formue = st.text_area("Hvad består erhvervsformuen af", "Formuen består af opsparet overskud fra klinikkens drift samt inventar og udstyr, der er finansieret uden gæld.")
149
+
150
+ # Skriv der viser Tilføjet den dd.mm.åååå af Navn Efternavn. Vigtigt den viser dagsdato
151
+ Tilføjet_af = st.text_input("Tilføjet af", "Navn Efternavn")
152
+
153
+ # Dags dato
154
+ today = date.today()
155
+ korrekt_today = today.strftime("%d-%m-%Y")
156
+
157
+ # Tilføj en knap til at generere AI lønkommentering
158
+ if st.button('Generér lønkommentering'):
159
+ with st.expander("AI's lønkommentering"):
160
+ # Lav en brugerdefineret prompt til AI baseret på den nye skabelon
161
+ user_input = (
162
+ f"Du er en erhvervsbankrådgiver som skal lave en lønkommentering, som er en kommentering af forholdet mellem kundens private og erhvervsmæssige indkomst og formue."
163
+ f"Du skal ikke kommentere på feks. om du mener at indkomst er en vigtig faktor i vurderingen af kundens økonmiske situation. Hold dig til information du modtager omkring lønudtræk"
164
+ f"Primære formål er at belyse muligt udtræk til privat regi.\n\n"
165
+
166
+ f"INDKOMST FRA ERHVERV TIL NUVÆRENDE BUDGET:\n"
167
+ f"Kunden har lønindkomst fra sit VSO.\n"
168
+ f"De seneste 12 måneder er der blevet hævet {løn_virksomhed} tkr. i løn.\n"
169
+ f"Lønudtræk er fastlagt ud fra {indkomst_fastlagt}. Ikke skriv mere herefter.\n\n"
170
+
171
+ # f"Kunden har udbytte fra sine selskaber.\n"
172
+ # f"De seneste 12 måneder er der blevet hævet {udbytte} tkr. i udbytte.\n"
173
+ # f"Udbytte er fastlagt ud fra kundens regnskaber.\n\n"
174
+ f"Start med at beskrive i indkomstforholdene den øvrig information om indkomstforhold: {øvrig_indkomst}\n\n"
175
+
176
+ f"INDKOMST FRA ERHVERV TIL FREMTIDIGT BUDGET:\n"
177
+ f"Kommenterer meget præcist og kort på senste årsrestultat efter skat i {overskud_2023} den likvide beholdning i VSO'et{likviditet} at der er gæld i virksomheden{gæld_i_virksomhed} gældens størrelse {gældens_størrelse} og eventuelt øvrig information{Øvrig_performance}. Denne information skal flettes sammen med øvrige info "
178
+ f"Fremtidig lønudtræk er fastlagt ud fra {indkomst_fastlagt_fremtidig}"
179
+ f"Kunden vil i fremtiden udtrække løn for {fremtidig_løn} tkr.\n\n"
180
+
181
+ f"Tilføj information fra {Øvrig_fremtidig_indkomst} så det passer ind i resten af teksten"
182
+
183
+
184
+ # f"Kunden vil i fremtiden tage udbytte for {fremtidig_udbytte} tkr.\n\n"
185
+
186
+ f"FORMUE FRA ERHVERV, HERUNDER UDSKUDT SKAT:\n"
187
+ f"Formuen fra erhverv er taget fra kundens seneste regnskab.\n\n"
188
+
189
+ f"Formuen i selskabsregi er {formue_vso} tkr. i VSO \n"
190
+ f"Egenkapital medregnes i privat til {samlet_formue_efter_skat} da den beskattes med 50%."
191
+
192
+
193
+ f"Formuen fra erhverv er taget fra kundens seneste indleveret regnskab.\n\n"
194
+ f"tilføj information fra formue {Øvrige_formue} så det passer ind i resten af teksten\n\n"
195
+
196
+ f"VURDERING:\n"
197
+
198
+ f"{Tilføjet_af}\n"
199
+
200
+ f"Forhold dig til nuværende indkomst versus fremtidig indkomst.\n"
201
+ f"På baggrund af følgende svar (det kan være ja eller nej) {vurdering_fremtidigt_udtræk} vurderes det at kundens fremtidige lønudtræk kan indeholdes i virksomhedens indtjening og cash-flow.\n\n"
202
+
203
+ f"INDKOMST FRA ERHVERV TIL NUVÆRENDE BUDGET, INDKOMST FRA ERHVERV TIL FREMTIDIGT BUDGET, FORMUE FRA ERHVERV, HERUNDER UDSKUDT SKAT, samt VURDERING er overskifterne. De skal være fede men samme størrelse som øvrig skrift"
204
+ f"efter en overskrift skal teksten stå lige under overskriften og ikke i samme linje som overskriften. I bunden af dokumentet skal der stå Tilføjet den {korrekt_today} af {Tilføjet_af}"
205
+
206
+ )
207
+
208
+ # Indsætter information til AI assistenten for at kommentere på regnskab og udvikling
209
+ try:
210
+ ai_response = DDGS().chat(user_input, model='gpt-4o-mini')
211
+ st.markdown(ai_response)
212
+ except Exception as e:
213
+ st.error(f"AI forespørgslen mislykkedes: {e}. Prøv venligst igen senere.")
214
+
215
+
216
+ elif menu == "Regnskabsanalyse":
217
+
218
+ # Tilføj dropdown-menu til valg af Guidelines
219
+ st.title("Regnskabsanalyse")
220
+
221
+ # Dropdown-menu med Guidelines for specifikke erhverv
222
+ guideline = st.selectbox(
223
+ 'Vælg Segment:',
224
+ ['Speciallæge', 'Læge', 'Fysioterapeut', 'Tandlæge', 'Kiropraktor']
225
+ )
226
+
227
+ # Vis det valgte guideline med de tilhørende krav
228
+ if guideline in ['Læge', 'Fysioterapeut', 'Tandlæge', 'Kiropraktor', 'Speciallæge']:
229
+ st.write(f"Du har valgt: **{guideline}**")
230
+ st.write("**Gearing**: < 4")
231
+ st.write("**Soliditet**: > 20 %")
232
+ st.write("**Likviditetsgrad**: > 100 %")
233
+
234
+ # Indtast regnskabstal for 2022
235
+ st.subheader("Resultatsopgørelse 2022")
236
+ col1, col2, col3 = st.columns(3)
237
+
238
+ with col1:
239
+ nettoomsætning_2022 = st.number_input('Nettoomsætning 2022', min_value=0, value=3500, step=100)
240
+ with col2:
241
+ variable_omkostninger_2022 = -abs(st.number_input('Variable omkostninger 2022', min_value=-1000000, value=300, step=100))
242
+ with col3:
243
+ kapacitetsomkostninger_2022 = -abs(st.number_input('Kapacitetsomkostninger 2022', min_value=-1000000, value=500, step=100))
244
+
245
+ col4, col5, col6 = st.columns(3)
246
+ with col4:
247
+ afskrivninger_2022 = -abs(st.number_input('Afskrivninger 2022', min_value=-1000000, value=100, step=100))
248
+ with col5:
249
+ sekundære_poster_2022 = -abs(st.number_input('Sekundære poster 2022', min_value=-1000000, value=0, step=100))
250
+ with col6:
251
+ finansieringsudgifter_2022 = -abs(st.number_input('Finansieringsudgifter 2022', min_value=-1000000, value=50, step=100))
252
+
253
+ col7, col8, col9 = st.columns(3)
254
+ with col7:
255
+ finansieringsindtægter_2022 = st.number_input('Finansieringsindtægter 2022', min_value=0, value=10, step=100)
256
+ with col8:
257
+ kapitalandele_2022 = st.number_input('Indtægter fra kapitalandele 2022', min_value=-100000, value=0, step=100)
258
+ with col9:
259
+ skat_2022 = (st.number_input('Skat 2022', min_value=-10000, value=-145, step=100))
260
+
261
+ # Beregninger for regnskab 2022
262
+ EBITDA_2022 = nettoomsætning_2022 + variable_omkostninger_2022 + kapacitetsomkostninger_2022
263
+ EBIT_2022 = EBITDA_2022 + afskrivninger_2022
264
+ resultat_før_renter_2022 = EBIT_2022 + sekundære_poster_2022
265
+ ordinært_resultat_2022 = resultat_før_renter_2022 + finansieringsindtægter_2022 + kapitalandele_2022 + finansieringsudgifter_2022
266
+ resultat_før_skat_2022 = ordinært_resultat_2022
267
+ resultat_efter_skat_2022 = resultat_før_skat_2022 + skat_2022
268
+ udbytte_2022 = -abs(st.number_input('Udbytte 2022', min_value=0, value=0, step=100))
269
+ konsolidering_2022 = resultat_efter_skat_2022 + udbytte_2022
270
+
271
+ # Indtast regnskabstal for 2023
272
+ st.subheader("Resultatsopgørelse 2023")
273
+ col10, col11, col12 = st.columns(3)
274
+
275
+ with col10:
276
+ nettoomsætning_2023 = st.number_input('Nettoomsætning 2023', min_value=0, value=4200, step=100)
277
+ with col11:
278
+ variable_omkostninger_2023 = -abs(st.number_input('Variable omkostninger 2023', min_value=-1000000, value=300, step=100))
279
+ with col12:
280
+ kapacitetsomkostninger_2023 = -abs(st.number_input('Kapacitetsomkostninger 2023', min_value=-1000000, value=500, step=100))
281
+
282
+ col13, col14, col15 = st.columns(3)
283
+ with col13:
284
+ afskrivninger_2023 = -abs(st.number_input('Afskrivninger 2023', min_value=-1000000, value=150, step=100))
285
+ with col14:
286
+ sekundære_poster_2023 = -abs(st.number_input('Sekundære poster 2023', min_value=-1000000, value=0, step=100))
287
+ with col15:
288
+ finansieringsudgifter_2023 = -abs(st.number_input('Finansieringsudgifter 2023', min_value=-1000000, value=75, step=100))
289
+
290
+ col16, col17, col18 = st.columns(3)
291
+ with col16:
292
+ finansieringsindtægter_2023 = st.number_input('Finansieringsindtægter 2023', min_value=0, value=25, step=100)
293
+ with col17:
294
+ kapitalandele_2023 = st.number_input('Indtægter fra kapitalandele 2023', min_value=-10000, value=0, step=100)
295
+ with col18:
296
+ skat_2023 = (st.number_input('Skat 2023', min_value=-10000, value=-200, step=100))
297
+
298
+ # Beregninger for regnskab 2023
299
+ EBITDA_2023 = nettoomsætning_2023 + variable_omkostninger_2023 + kapacitetsomkostninger_2023
300
+ EBIT_2023 = EBITDA_2023 + afskrivninger_2023
301
+ resultat_før_renter_2023 = EBIT_2023 + sekundære_poster_2023
302
+ ordinært_resultat_2023 = resultat_før_renter_2023 + finansieringsindtægter_2023 + kapitalandele_2023 + finansieringsudgifter_2023
303
+ resultat_før_skat_2023 = ordinært_resultat_2023
304
+ resultat_efter_skat_2023 = resultat_før_skat_2023 + skat_2023
305
+ udbytte_2023 = -abs(st.number_input('Udbytte 2023', min_value=0, value=0, step=100))
306
+ konsolidering_2023 = resultat_efter_skat_2023 + udbytte_2023
307
+
308
+ # Opret dataframe for resultatopgørelsen med Nettoomsætning tilføjet
309
+ data_resultat = {
310
+ 'Resultatopgørelse 2022': [
311
+ nettoomsætning_2022 * 1000,
312
+ EBITDA_2022 * 1000,
313
+ EBIT_2022 * 1000,
314
+ resultat_før_renter_2022 * 1000,
315
+ ordinært_resultat_2022 * 1000,
316
+ resultat_før_skat_2022 * 1000,
317
+ resultat_efter_skat_2022 * 1000,
318
+ konsolidering_2022 * 1000
319
+ ],
320
+ 'Resultatopgørelse 2023': [
321
+ nettoomsætning_2023 * 1000,
322
+ EBITDA_2023 * 1000,
323
+ EBIT_2023 * 1000,
324
+ resultat_før_renter_2023 * 1000,
325
+ ordinært_resultat_2023 * 1000,
326
+ resultat_før_skat_2023 * 1000,
327
+ resultat_efter_skat_2023 * 1000,
328
+ konsolidering_2023 * 1000
329
+ ]
330
+ }
331
+
332
+ df_resultat = pd.DataFrame(data_resultat, index=['Nettoomsætning', 'EBITDA', 'EBIT', 'Resultat før renter', 'Ordinært resultat', 'Resultat før skat', 'Resultat efter skat', 'Konsolidering'])
333
+
334
+ # Formater tal i resultatopgørelsen
335
+ df_resultat = df_resultat.applymap(lambda x: f"{x:,.0f}".replace(",", "."))
336
+
337
+ # Vis resultatopgørelse, og gør tabellen bred
338
+ st.write(df_resultat.style.set_properties(**{'width': '200%'}).applymap(lambda x: 'font-weight: bold'))
339
+
340
+ # Aktiver og Passiver for 2022
341
+ st.subheader("Aktiver og Passiver 2022")
342
+ col1, col2, col3 = st.columns(3)
343
+
344
+ # Aktiver 2022
345
+ with col1:
346
+ immaterielle_aktiver_2022 = st.number_input('Immatrielle aktiver 2022', min_value=0, value=0, step=100)
347
+ with col2:
348
+ materielle_anlægsaktiver_2022 = st.number_input('Materielle anlægsaktiver 2022', min_value=0, value=2200, step=100)
349
+ with col3:
350
+ finansielle_anlægsaktiver_2022 = st.number_input('Finansielle anlægsaktiver 2022', min_value=0, value=0, step=100)
351
+
352
+ col4, col5, col6 = st.columns(3)
353
+ with col4:
354
+ varelager_2022 = st.number_input('Varelager 2022', min_value=0, value=200, step=100)
355
+ with col5:
356
+ varedebitorer_2022 = st.number_input('Varedebitorer 2022', min_value=0, value=400, step=100)
357
+ with col6:
358
+ værdipapirer_2022 = st.number_input('Værdipapirer 2022', min_value=0, value=0, step=100)
359
+
360
+ col7, col8, col9 = st.columns(3)
361
+ with col7:
362
+ øvrige_omsætningsaktiver_2022 = st.number_input('Øvrige omsætningsaktiver 2022', min_value=0, value=100, step=100)
363
+ with col8:
364
+ likvide_midler_2022 = st.number_input('Likvide midler 2022', min_value=0, value=800, step=100)
365
+
366
+ # Saml aktiverne for 2022
367
+ anlægsaktiver_2022 = immaterielle_aktiver_2022 + materielle_anlægsaktiver_2022 + finansielle_anlægsaktiver_2022
368
+ omsætningsaktiver_2022 = varelager_2022 + varedebitorer_2022 + værdipapirer_2022 + øvrige_omsætningsaktiver_2022 + likvide_midler_2022
369
+ aktiver_i_alt_2022 = anlægsaktiver_2022 + omsætningsaktiver_2022
370
+
371
+ # Passiver 2022
372
+ col1, col2, col3 = st.columns(3)
373
+ with col1:
374
+ udskudt_skat_2022 = st.number_input('Udskudt skat 2022', min_value=0, value=0, step=100)
375
+ with col2:
376
+ øvrig_langfristet_gæld_2022 = st.number_input('Øvrig langfristet gæld 2022', min_value=0, value=0, step=100)
377
+ with col3:
378
+ langfristet_rentebærende_gæld_2022 = st.number_input('Langfristet rentebærende gæld 2022', min_value=0, value=1200, step=100)
379
+
380
+ col4, col5, col6 = st.columns(3)
381
+ with col4:
382
+ øvrig_kortfristet_gæld_2022 = st.number_input('Øvrig kortfristet gæld 2022', min_value=0, value=200, step=100)
383
+ with col5:
384
+ kortfristet_rentebærende_gæld_2022 = st.number_input('Kortfristet rentebærende gæld 2022', min_value=0, value=100, step=100)
385
+
386
+ # Saml passiverne for 2022
387
+ langfristet_gæld_i_alt_2022 = øvrig_langfristet_gæld_2022 + langfristet_rentebærende_gæld_2022
388
+ kortfristet_gæld_i_alt_2022 = øvrig_kortfristet_gæld_2022 + kortfristet_rentebærende_gæld_2022
389
+ passiver_i_alt_2022 = udskudt_skat_2022 + langfristet_gæld_i_alt_2022 + kortfristet_gæld_i_alt_2022
390
+
391
+ # Beregn automatisk egenkapital 2022
392
+ egenkapital_2022 = aktiver_i_alt_2022 - passiver_i_alt_2022
393
+
394
+ # Genberegn passiver i alt for 2022
395
+ passiver_i_alt_2022 = udskudt_skat_2022 + langfristet_gæld_i_alt_2022 + kortfristet_gæld_i_alt_2022 + egenkapital_2022
396
+
397
+ # Aktiver og Passiver for 2023
398
+ st.subheader("Aktiver og Passiver 2023")
399
+ col10, col11, col12 = st.columns(3)
400
+
401
+ # Aktiver 2023
402
+ with col10:
403
+ immaterielle_aktiver_2023 = st.number_input('Immatrielle aktiver 2023', min_value=0, value=0, step=100)
404
+ with col11:
405
+ materielle_anlægsaktiver_2023 = st.number_input('Materielle anlægsaktiver 2023', min_value=0, value=2500, step=100)
406
+ with col12:
407
+ finansielle_anlægsaktiver_2023 = st.number_input('Finansielle anlægsaktiver 2023', min_value=0, value=400, step=100)
408
+
409
+ col13, col14, col15 = st.columns(3)
410
+ with col13:
411
+ varelager_2023 = st.number_input('Varelager 2023', min_value=0, value=400, step=100)
412
+ with col14:
413
+ varedebitorer_2023 = st.number_input('Varedebitorer 2023', min_value=0, value=600, step=100)
414
+ with col15:
415
+ værdipapirer_2023 = st.number_input('Værdipapirer 2023', min_value=0, value=0, step=100)
416
+
417
+ col16, col17, col18 = st.columns(3)
418
+ with col16:
419
+ øvrige_omsætningsaktiver_2023 = st.number_input('Øvrige omsætningsaktiver 2023', min_value=0, value=120, step=100)
420
+ with col17:
421
+ likvide_midler_2023 = st.number_input('Likvide midler 2023', min_value=0, value=1500, step=100)
422
+
423
+ # Saml aktiverne for 2023
424
+ anlægsaktiver_2023 = immaterielle_aktiver_2023 + materielle_anlægsaktiver_2023 + finansielle_anlægsaktiver_2023
425
+ omsætningsaktiver_2023 = varelager_2023 + varedebitorer_2023 + værdipapirer_2023 + øvrige_omsætningsaktiver_2023 + likvide_midler_2023
426
+ aktiver_i_alt_2023 = anlægsaktiver_2023 + omsætningsaktiver_2023
427
+
428
+ # Passiver 2023
429
+ col7, col8, col9 = st.columns(3)
430
+ with col7:
431
+ udskudt_skat_2023 = st.number_input('Udskudt skat 2023', min_value=0, value=0, step=100)
432
+ with col8:
433
+ øvrig_langfristet_gæld_2023 = st.number_input('Øvrig langfristet gæld 2023', min_value=0, value=360, step=100)
434
+ with col9:
435
+ langfristet_rentebærende_gæld_2023 = st.number_input('Langfristet rentebærende gæld 2023', min_value=0, value=1000, step=100)
436
+
437
+ col10, col11, col12 = st.columns(3)
438
+ with col10:
439
+ øvrig_kortfristet_gæld_2023 = st.number_input('Øvrig kortfristet gæld 2023', min_value=0, value=80, step=100)
440
+ with col11:
441
+ kortfristet_rentebærende_gæld_2023 = st.number_input('Kortfristet rentebærende gæld 2023', min_value=0, value=80, step=100)
442
+
443
+ # Saml passiverne for 2023
444
+ langfristet_gæld_i_alt_2023 = øvrig_langfristet_gæld_2023 + langfristet_rentebærende_gæld_2023
445
+ kortfristet_gæld_i_alt_2023 = øvrig_kortfristet_gæld_2023 + kortfristet_rentebærende_gæld_2023
446
+ passiver_i_alt_2023 = udskudt_skat_2023 + langfristet_gæld_i_alt_2023 + kortfristet_gæld_i_alt_2023
447
+
448
+ # Beregn automatisk egenkapital 2023
449
+ egenkapital_2023 = aktiver_i_alt_2023 - passiver_i_alt_2023
450
+
451
+ # Genberegn passiver i alt for 2023
452
+ passiver_i_alt_2023 = udskudt_skat_2023 + langfristet_gæld_i_alt_2023 + kortfristet_gæld_i_alt_2023 + egenkapital_2023
453
+
454
+ # Opret en samlet tabel for både aktiver og passiver under Balance 2022 og Balance 2023
455
+ data_balance = {
456
+ 'Balance 2022': [
457
+ anlægsaktiver_2022 * 1000,
458
+ omsætningsaktiver_2022 * 1000,
459
+ aktiver_i_alt_2022 * 1000,
460
+ egenkapital_2022 * 1000,
461
+ udskudt_skat_2022 * 1000,
462
+ langfristet_gæld_i_alt_2022 * 1000,
463
+ kortfristet_gæld_i_alt_2022 * 1000,
464
+ passiver_i_alt_2022 * 1000
465
+ ],
466
+ 'Balance 2023': [
467
+ anlægsaktiver_2023 * 1000,
468
+ omsætningsaktiver_2023 * 1000,
469
+ aktiver_i_alt_2023 * 1000,
470
+ egenkapital_2023 * 1000,
471
+ udskudt_skat_2023 * 1000,
472
+ langfristet_gæld_i_alt_2023 * 1000,
473
+ kortfristet_gæld_i_alt_2023 * 1000,
474
+ passiver_i_alt_2023 * 1000
475
+ ]
476
+ }
477
+
478
+ # Opret en samlet dataframe
479
+ df_balance = pd.DataFrame(
480
+ data_balance,
481
+ index=[
482
+ 'Anlægsaktiver',
483
+ 'Omsætningsaktiver',
484
+ 'Aktiver i alt',
485
+ 'Egenkapital',
486
+ 'Udskudt skat',
487
+ 'Langfristet gæld',
488
+ 'Kortfristet gæld',
489
+ 'Passiver i alt'
490
+ ]
491
+ )
492
+
493
+ # Formater tallene til 'xxx.xxx'
494
+ df_balance = df_balance.applymap(lambda x: f"{x:,.0f}".replace(",", ".") if pd.notnull(x) else '')
495
+
496
+ # Vis den samlede Balance tabel
497
+ st.write(df_balance.style.applymap(lambda x: 'font-weight: bold'))
498
+
499
+ # Beregn og vis nøgletal
500
+ # Definer nøgletalsvariabler som None, så vi kan tjekke, om de er beregnet senere
501
+ gearing, soliditet, likviditetsgrad, nulpunktsrente, gældsserviceringsgrad = None, None, None, None, None
502
+
503
+ if guideline in ['Læge', 'Fysioterapeut', 'Tandlæge', 'Speciallæge', 'Kiropraktor']:
504
+ if EBITDA_2023 != 0:
505
+ gearing = (langfristet_gæld_i_alt_2023 + kortfristet_gæld_i_alt_2023 - likvide_midler_2023 - værdipapirer_2023) / EBITDA_2023
506
+ if passiver_i_alt_2023 != 0:
507
+ soliditet = (egenkapital_2023 / passiver_i_alt_2023) * 100
508
+ if kortfristet_gæld_i_alt_2023 != 0:
509
+ likviditetsgrad = (omsætningsaktiver_2023 / kortfristet_gæld_i_alt_2023) * 100
510
+
511
+ # Nøgletal er nu gemt, men ikke vist.
512
+
513
+ # Beregn simple cashflow elementer baseret på input fra balancer og resultatopgørelser
514
+ def simple_cashflow_analysis_2023(EBITDA_2023,
515
+ omsætningsaktiver_2023,
516
+ kortfristet_gæld_i_alt_2023,
517
+ anlægsaktiver_2023,
518
+ egenkapital_2023,
519
+ langfristet_rentebærende_gæld_2023):
520
+
521
+
522
+ # Beregn cashflow fra drift som EBITDA
523
+ cashflow_drift_2023 = EBITDA_2023
524
+
525
+ # Beregn cashflow fra investeringer som ændring i anlægsaktiver (negativ, da investeringer reducerer likviditeten)
526
+ cashflow_investeringer_2023 = -anlægsaktiver_2023
527
+
528
+ # Beregn cashflow fra finansiering som ændring i gæld (langfristet og kortfristet)
529
+ cashflow_finansiering_2023 = (kortfristet_gæld_i_alt_2023 + langfristet_rentebærende_gæld_2023)
530
+
531
+ # Beregn samlet ændring i likvide midler
532
+ ændring_likvide_midler_2023 = cashflow_drift_2023 + cashflow_investeringer_2023 + cashflow_finansiering_2023
533
+
534
+ # Opstil cashflow-analyse i tekstformat for 2023
535
+ cashflow = f"""
536
+ **Cashflow 2023:**
537
+ - Cashflow fra drift: {cashflow_drift_2023:,.2f} DKK
538
+ - Cashflow fra investeringer: {cashflow_investeringer_2023:,.2f} DKK
539
+ - Cashflow fra finansiering: {cashflow_finansiering_2023:,.2f} DKK
540
+ - Ændring i likvide midler: {ændring_likvide_midler_2023:,.2f} DKK
541
+ """
542
+
543
+ return cashflow
544
+
545
+ #Sammenlign om beregnet gearing overholder guideline og vis dem
546
+ st.write(f"**{guideline}**")
547
+ st.write(f"**Gearing**: {gearing:.1f}" + " < 4")
548
+ st.write(f"**Soliditet**: {soliditet:.1f}% > 20%")
549
+ st.write(f"**Likviditetsgrad**: {likviditetsgrad:.1f}% > 100%")
550
+
551
+ # Tilføj tekstfelt til supplerende information og AI-analyse
552
+ supplerende_info = st.text_area(
553
+ 'Tilføj supplerende information, som AI skal tage højde for:',
554
+ 'Information om kunden: Lægepraksis v. John Doe \n\n\nIndkomstforhold: Praksissen har oplevet en betydelig stigning i omsætningen, primært som resultat af tilgangen af et ydernummer. Denne udvikling afspejler en positiv vækst i indtjeningsevnen og den stigende omsætning skaber et solidt fundament for fremtidige investeringer og yderligere vækst. \n\n\nKapitalforhold: Kapitalforholdene viser en markant forbedring, hvor soliditeten er steget støt som følge af opsparet overskud over tid. Denne udvikling har resulteret i en sund gældsfaktor og øget finansiel robusthed, hvilket styrker praksissens evne til at håndtere økonomiske udsving og skabe et stabilt fundament for fremtidige muligheder. Den forbedrede kapitalstruktur giver også plads til strategiske investeringer og udvikling.\n\n\nLikviditetsforhold: Praksissen har stærke likviditets- og cashflow-forhold, hvilket sikrer en stabil og sund drift. Den solide likviditet giver fleksibilitet til at håndtere både kortsigtede forpligtelser og potentielle investeringer. Med et stabilt cashflow har praksissen mulighed for at udvide sine aktiviteter og reagere hurtigt på ��ndringer i markedet ',
555
+ height=250 # Juster højden som ønsket
556
+ )
557
+
558
+ # Initial default values
559
+ indkomst_vurdering = ""
560
+ kapital_vurdering = ""
561
+ likviditet_vurdering = ""
562
+
563
+ # Tilføj en knap til at generere AI analyse
564
+ if st.button('Generér AI analyse'):
565
+ with st.expander("AI's analyse af regnskab og udvikling"):
566
+
567
+ # Evaluering af tilfredsstillende/ utilfredsstillende for nøgletal baseret på den valgte guideline
568
+
569
+ if guideline == ['Læge', 'Fysioterapeut', 'Tandlæge', 'Speciallæge', 'Kiropraktor']:
570
+ indkomst_vurdering = "Tilfredsstillende" if gearing is not None and gearing < 4 else "Utilfredsstillende"
571
+ kapital_vurdering = "Tilfredsstillende" if soliditet is not None and soliditet > 20 else "Utilfredsstillende"
572
+ likviditet_vurdering = "Tilfredsstillende" if likviditetsgrad is not None and likviditetsgrad > 100 else "Utilfredsstillende"
573
+
574
+
575
+ # Lav en brugerdefineret prompt baseret på skabelonen og de beregnede nøgletal
576
+ user_input = (
577
+ f"Aktivitet:\n"
578
+ f"Her skal aktivitet stå med fed skrift og der beskrives hvilken aktivitet virksomheden beskæftiger sig med\n"
579
+ f"Informationen herfra skal bruges til at supplere indkomstforhold, kapitalforhold og likviditetesforhold{supplerende_info}\n\n" # Her tilføjes information fra supplerende_info
580
+ )
581
+
582
+ # Tilføj nøgletal til prompten, når de er blevet beregnet baseret på valgte guideline
583
+ if guideline in ['Læge', 'Fysioterapeut', 'Tandlæge', 'Speciallæge', 'Kiropraktor']:
584
+ if gearing is not None:
585
+ user_input += f"Gearing: {gearing:.2f}% (krav: <5)\n"
586
+ if soliditet is not None:
587
+ user_input += f"Soliditet: {soliditet:.2f}% (krav: >20%)\n"
588
+ if likviditetsgrad is not None:
589
+ user_input += f"Likviditetsgrad: {likviditetsgrad:.2f}% (krav: >125%)\n"
590
+
591
+ # Indkomstforhold
592
+ user_input += f"\nIndkomstforhold: {indkomst_vurdering}\n"
593
+ user_input += "Det er vigtigt at formatet er Indkomstforhold: Tilfredsstillende eller utilfredsstillende med fed skrift\n"
594
+ user_input += "Heri skal der kommenteres på udviklingen i omsætning, EBITDA og indtjening mm. "
595
+
596
+ # Kapitalforhold
597
+ user_input += f"Kapitalforhold: {kapital_vurdering}\n"
598
+ user_input += f"Det er vigtigt at formatet er Kapitalforhold: Tilfredsstillende eller utilfredsstillende med fed skrift\n"
599
+ user_input += f"Her skal der kommenteres på soliditetsgraden i virksomheden.\n\n"
600
+
601
+ # Eksempel på hvordan du tilføjer cashflow-analysen for 2023 til likviditetsvurderingen:
602
+ user_input += f"Likviditetsforhold: **{likviditet_vurdering}**\n"
603
+ user_input += f"Det er vigtigt at formatet er Likviditetsforhold: **Tilfredsstillende** eller **Utilfredsstillende** med fed skrift.\n"
604
+
605
+ # Cashflow-analyse opstillet i punktform
606
+ user_input += "Cashflow 2023:\n"
607
+ user_input += " - Cashflow fra drift: {:.2f} DKK\n".format(EBITDA_2023)
608
+ user_input += " - Cashflow fra investeringer: {:.2f} DKK\n".format(-anlægsaktiver_2023) # Negativ fordi investeringer trækker på likviditeten
609
+ user_input += " - Cashflow fra finansiering: {:.2f} DKK\n".format(kortfristet_gæld_i_alt_2023 + langfristet_rentebærende_gæld_2023)
610
+
611
+ # Beregn den samlede ændring i likvide midler
612
+ ændring_likvide_midler_2023 = EBITDA_2023 + (-anlægsaktiver_2023) + (kortfristet_gæld_i_alt_2023 + langfristet_rentebærende_gæld_2023)
613
+ user_input += " - Ændring i likvide midler: {:.2f} DKK\n".format(ændring_likvide_midler_2023)
614
+
615
+ # Kommentar på likviditeten
616
+ user_input += "Kommenter på om likviditeten er stærk i virksomheden. Ikke nævn cashflow-analysen"
617
+
618
+ # Tilføj nøgletal til prompten baseret på valgt guideline
619
+ user_input += f"Nøgletal: ({guideline})\n"
620
+
621
+ # Indsæt eksempel på god kommentering med neutrale tal og guideline i user_input
622
+ user_input += '''
623
+ eksempel på god kommenterings skabelon:
624
+
625
+ Aktivitet:
626
+
627
+ Indkomstforhold: Tilfredsstillende eller ikke tilfredsstillende
628
+
629
+ Kapitalforhold: Tilfredsstillende eller ikke tilfredsstillende
630
+
631
+ Likviditetsforhold: Tilfredsstillende eller ikke tilfredsstillende
632
+
633
+ Cashflow:
634
+
635
+ Nøgletal: ({guideline})
636
+ Gearing/Nulpunksrente: (krav: <)
637
+ Soliditet: % (krav: >%)
638
+ Likviditetsgrad: % (krav: >%)
639
+
640
+ Sammenfattende viser nøgletallene...
641
+ '''
642
+
643
+ # Generer AI's kommentar ved hjælp af duckduckgo_search's chat API
644
+ try:
645
+ ai_response = DDGS().chat(user_input, model='gpt-4o-mini')
646
+ st.markdown(ai_response)
647
+ except Exception as e:
648
+ st.error(f"AI forespørgslen mislykkedes: {e}. Prøv venligst igen senere.")
649
+
650
+ ### SKAT OG RÅDIGHED
651
+ elif menu == "Skat & Rådighed":
652
+ st.title("Skat & Rådighed")
653
+
654
+ st.subheader("KUNDE- OG FAMILIEFORHOLD")
655
+
656
+ # Indtast kundens adresse
657
+ kunde_adresse = st.text_input("Kundens adresse:", "Samsøgade 12")
658
+
659
+ # Vælg boligtype
660
+ boligtype = st.selectbox("Boligtype", ["Ejerbolig", "Andelsbolig", "Lejebolig"])
661
+
662
+ # Variabler for boligrelaterede oplysninger
663
+ seneste_vurdering, vurderingsdato, vurderingstype, gæld_i_ejendom, ltv = None, None, None, None, None
664
+
665
+ if boligtype != "Lejebolig":
666
+ # Indtast vurdering med format i punktum og komma (2.000.000,00)
667
+ seneste_vurdering = st.number_input("Seneste vurdering (DKK):", min_value=0.0, step=1000.0, value=1000000.0, format="%.0f")
668
+ vurderingsdato = st.date_input("Vurderingsdato")
669
+
670
+ # Vælg vurderingstype
671
+ vurderingstype = st.selectbox("Vurderingstype", ["Skrivebordsvurdering", "Statistisk Vurdering", "Vurdering Med Besigtigelse", "Offentlig vurdering", "Handelsværdi"])
672
+
673
+ # Indtast gæld i ejendom med format 2.000.000,00
674
+ gæld_i_ejendom = st.number_input("Gæld i ejendom (DKK):", min_value=0.0, step=1000.0, value=500000.0, format="%.0f")
675
+
676
+ # Beregn LTV ud fra seneste vurdering og gæld i ejendom, men kun hvis seneste vurdering ikke er nul
677
+ if seneste_vurdering > 0:
678
+ ltv = (gæld_i_ejendom / seneste_vurdering) * 100
679
+ st.markdown(f"**LTV: {ltv:.2f}%**") # LTV i fed skrift
680
+ else:
681
+ st.write("LTV kan ikke beregnes, da vurderingen er 0 eller mangler.")
682
+ else:
683
+ st.write("Vurdering og gæld i ejendom er ikke relevant for lejeboliger.")
684
+
685
+ # Civilstatus og kundens navn og alder
686
+ civilstatus = st.selectbox("Civilstatus", ["Single", "Gift", "Samlever"])
687
+
688
+ # Indtast kundens navn og alder
689
+ kunde_navn = st.text_input("Kundens navn:", "John Doe")
690
+ kunde_alder = st.number_input("Kundens alder:", min_value=0, max_value=120, value=35, step=1)
691
+
692
+ # A-kasse for kunden (flyttet under kundens alder)
693
+ a_kasse = st.selectbox("Er kunden medlem af A-kasse?", ["Ja", "Nej"])
694
+
695
+ # Ægtefælle/samlever afhængig af civilstatus
696
+ if civilstatus == "Gift":
697
+ ægtefælle_navn = st.text_input("Ægtefælles navn:")
698
+ ægtefælle_alder = st.number_input("Ægtefælles alder:", min_value=0, max_value=120, step=1)
699
+ ægtefælle_a_kasse = st.selectbox("Er ægtefællen medlem af A-kasse?", ["Ja", "Nej"])
700
+ elif civilstatus == "Samlever":
701
+ samlever_navn = st.text_input("Samlevers navn:")
702
+ samlever_alder = st.number_input("Samlevers alder:", min_value=0, max_value=120, step=1)
703
+ samlever_a_kasse = st.selectbox("Er samleveren medlem af A-kasse?", ["Ja", "Nej"])
704
+
705
+ # Indtast profession og arbejdsplads (flyttet arbejdsplads under profession)
706
+ kunde_profession = st.text_input("Kundens profession:")
707
+ kunde_arbejdsplads = st.text_input("Kundens arbejdsplads:")
708
+
709
+ if civilstatus == "Gift":
710
+ ægtefælle_profession = st.text_input("Ægtefælles profession:")
711
+ ægtefælle_arbejdsplads = st.text_input("Ægtefælles arbejdsplads:")
712
+ elif civilstatus == "Samlever":
713
+ samlever_profession = st.text_input("Samlevers profession:")
714
+ samlever_arbejdsplads = st.text_input("Samlevers arbejdsplads:")
715
+
716
+ # Børn: Flyt muligheden for at vælge antal børn nederst
717
+ har_børn = st.selectbox("Har kunden børn?", ["Nej", "Ja"])
718
+
719
+ børn = []
720
+
721
+ if har_børn == "Ja":
722
+ antal_børn = st.slider("Antal børn:", min_value=0, max_value=5)
723
+
724
+ # Dynamisk tilføjelse af felter til hvert barn baseret på antal børn
725
+ if antal_børn > 0:
726
+ for i in range(antal_børn):
727
+ Barn_navn = st.text_input(f"Barn {i+1} navn:")
728
+ Barn_alder = st.number_input(f"Barn {i+1} alder:", min_value=0, max_value=120, step=1)
729
+ # Tilføj hvert barns data som en ordbog til listen
730
+ børn.append({"navn": Barn_navn, "alder": Barn_alder})
731
+
732
+ Kunde_og_familie = st.text_area("Indtast yderligere information til Kunde- og familieforhold:")
733
+
734
+ st.subheader("INDKOMSTFORHOLD")
735
+
736
+ # Brug det tidligere indtastede navn fra kunde- og familieoplysninger
737
+ st.text(f"Kundens navn: {kunde_navn}")
738
+
739
+ # Dropdown for valg af oplysninger fra e-skat, Lønseddel, Regnskab
740
+ oplysninger_fra_kunde = st.selectbox("Oplysninger fra (kunde):", ["e-skat", "Lønseddel", "Regnskab"])
741
+
742
+ # Nuværende årsindkomst for kunden (i format 950.000,00 kr.)
743
+ nuværende_årsindkomst_kunde = st.number_input("Nuværende årsindkomst (DKK):", min_value=0.0, step=1000.0, format="%.0f")
744
+
745
+ # Fremtidig årsindkomst for kunden (i format 1.100.000,00 kr.)
746
+ fremtidig_årsindkomst_kunde = st.number_input("Fremtidig årsindkomst (DKK):", min_value=0.0, step=1000.0, format="%.0f")
747
+
748
+ # Hvis der er en ægtefælle eller samlever, brug det tidligere indtastede navn
749
+ if civilstatus == "Gift":
750
+ st.text(f"Ægtefælles navn: {ægtefælle_navn}")
751
+ elif civilstatus == "Samlever":
752
+ st.text(f"Samlevers navn: {samlever_navn}")
753
+
754
+ # Dropdown for valg af oplysninger fra e-skat, Lønseddel, Regnskab for ægtefælle/samlever
755
+ oplysninger_fra_ægtefælle = st.selectbox("Oplysninger fra (ægtefælle/samlever):", ["e-skat", "Lønseddel", "Regnskab"])
756
+
757
+ # Nuværende årsindkomst for ægtefælle/samlever
758
+ nuværende_årsindkomst_ægtefælle = st.number_input("Nuværende årsindkomst (DKK) (ægtefælle/samlever):", min_value=0.0, step=1000.0, format="%.0f")
759
+
760
+ # Fremtidig årsindkomst for ægtefælle/samlever
761
+ fremtidig_årsindkomst_ægtefælle = st.number_input("Fremtidig årsindkomst (DKK) (ægtefælle/samlever):", min_value=0.0, step=1000.0, format="%.0f")
762
+
763
+ # Tilføj en tekstboks til supplerende information
764
+ supplerende_info_indkomst = st.text_area("Indtastet yderligere information til indkomstforhold:")
765
+
766
+ st.subheader("LÅN OG ANDEN GÆLD/HÆFTELSE UDENFOR NYKREDIT")
767
+
768
+ # Vælg om der er gæld udenfor Nykredit
769
+ gæld_udenfor_nykredit = st.radio("Er der gæld udenfor Nykredit?", ["Ja", "Nej"])
770
+
771
+ # Initialiser en liste til at gemme gældsposterne
772
+ gældsposter = []
773
+
774
+ if gæld_udenfor_nykredit == "Ja":
775
+ # Vælg antal gældsposter
776
+ antal_gæld = st.slider("Hvor mange gældsposter er der?", 1, 3)
777
+
778
+ # Indsaml information om hver gældspost
779
+ for i in range(1, antal_gæld + 1):
780
+ st.text(f"Gældsinformation {i}")
781
+ gældsinstitut = st.text_input(f"Gældsinstitut {i}", key=f"gældsinstitut_{i}")
782
+ gældstype = st.text_input(f"Gældstype {i}", key=f"gældstype_{i}")
783
+ gældsbeløb = st.number_input(f"Gældsbeløb {i} (DKK):", min_value=0.0, step=1000.0, format="%.2f", key=f"gældsbeløb_{i}")
784
+
785
+ # Tilføj hver gældspost som en ordbog til listen
786
+ gældsposter.append({
787
+ "institut": gældsinstitut,
788
+ "type": gældstype,
789
+ "beløb": gældsbeløb
790
+ })
791
+
792
+ # Valg om der er lønindhold
793
+ lønindhold = st.radio("Er der lønindhold?", ["Ja", "Nej"])
794
+ if lønindhold == "Ja":
795
+ st.write("Kunden har lønindhold. Rådgiver skal indhente dokumentation på dette")
796
+
797
+ # Valg om der er restskat
798
+ restskat = st.radio("Er der restskat?", ["Ja", "Nej"])
799
+ if restskat == "Ja":
800
+ st.write("Kunden har restskat til betaling. Rådgiver skal indhente dokumentation på dette.")
801
+
802
+
803
+ lån_anden_gæld = st.text_area("Indtast information om lån og anden gæld/hæftelse udenfor Nykredit:")
804
+
805
+ st.subheader("FORBRUGSUDGIFTER")
806
+
807
+ # Forbrugsudgangspunkt
808
+ forbrugsudgangspunkt = st.selectbox("Forbrugsudgangspunkt:", ["Energiberegner", "Kundens eget budget"])
809
+
810
+ if forbrugsudgangspunkt == "Energiberegner":
811
+ st.write("Forbrugsudgifterne er indhentet fra SparEnergi beregnerne, da disse udgifter er højere end de udgifter kunderne selv har oplyst i budgettet. Derfor medtages disse af forsigtighedsprincip. Screenshots fra beregnerne er arkiveret på kunderne.")
812
+ else:
813
+ st.write("Forbrugsudgifterne er medtaget fra kundens eget budget. Det skyldes at disse udgifter er højere end Energiberegnernes udgifter, og derfor anvendes disse af forsigtighedsprincip.")
814
+
815
+ forbrugsudgifter = st.text_area("Indtast yderligere information om forbrugsudgifter:")
816
+
817
+ st.subheader("BIL/BILER")
818
+
819
+ # Initialiser en liste til at gemme gældsposterne
820
+
821
+ # Valg om kunden har en bil eller flere biler
822
+ har_bil = st.radio("Har kunden en bil/biler?", ["Ja", "Nej"])
823
+
824
+ # Initialiser listen udenfor if-blokken, så den ikke bliver overskrevet
825
+ Biler = []
826
+
827
+ if har_bil == "Ja":
828
+ # Vælg antal biler
829
+ antal_biler = st.slider("Hvor mange biler", 1, 3)
830
+
831
+ # Indsaml information om hver bil
832
+ for i in range(1, antal_biler + 1):
833
+ st.text(f"Information om bil {i}")
834
+
835
+ # Tilføj unikke nøgler til hver input for at sikre, at Streamlit genkender hver bil korrekt
836
+ bil_model = st.text_input(f"Bilmodel {i}", key=f"Bilmodel_{i}")
837
+ bil_årgang = st.text_input(f"Bilårgang {i}", key=f"Bilårgang_{i}")
838
+ bil_værdi = st.number_input(f"Værdi {i} (DKK):", min_value=0.0, step=1000.0, format="%.2f", key=f"Værdi_{i}")
839
+
840
+ # Tilføj bilens data til listen, selvom input er tomme (så de bliver husket af Streamlit)
841
+ Biler.append({
842
+ "model": bil_model,
843
+ "årgang": bil_årgang,
844
+ "værdi": bil_værdi
845
+ })
846
+
847
+ biler = st.text_area("Indtast yderligere information om kundens bil eller biler:")
848
+
849
+ st.subheader("FORMUE")
850
+ formue_tal = st.number_input('Indtast størrelse på formue (DKK):', min_value=0, value=0, step=1000)
851
+
852
+ formue = st.text_area("Indtast information om formue:")
853
+
854
+ st.subheader("GÆLDSFAKTOR")
855
+
856
+ gældsfaktor_tal = st.number_input('Indtast GF', min_value=-10.1, value=0.0, step=0.1)
857
+
858
+ gældsfaktor = st.text_area("Indtast yderligere information til GF:")
859
+
860
+ st.subheader("RÅDIGHEDSBELØB")
861
+ nuværende_rb = st.number_input('Nuværende rådighedsbeløb (DKK):', min_value=0, value=0, step=1000)
862
+ fremtidigt_rb = st.number_input('Fremtidigt rådighedsbeløb (DKK):', min_value=0, value=0, step=1000)
863
+ stresset_rb = st.number_input('Fremtidigt stresset rådighedsbeløb (DKK):', min_value=0, value=0, step=1000)
864
+ # Ændring i % mellem nuværende og stresset rådighedsbeløb i fed skrift. Hvis nuværende er 0, vises 0%
865
+ ændring_rådighedsbeløb = st.write(f"**Ændring i rådighedsbeløb:** **{((stresset_rb - nuværende_rb) / nuværende_rb * 100):.2f}%**" if nuværende_rb != 0 else "Ændring i rådighedsbeløb: **0%**")
866
+
867
+ rådighedsbeløb = st.text_area("Indtast yderligere information om rådighedsbeløb:")
868
+
869
+ st.subheader("PENSIONS- OG FORSIKRINGSFORHOLD")
870
+ pension = st.text_area("Indtast information om pensions- og forsikringsforhold:")
871
+
872
+ st.subheader("FREMTID/DRØMME")
873
+ fremtid_drømme = st.text_area("Indtast information om fremtid/drømme:")
874
+
875
+ # Display the entered information as a document
876
+ if st.button("Udarbejd Skat og Rådighed"):
877
+ document = f"""
878
+ """
879
+
880
+ if boligtype != "Lejebolig":
881
+ document += f"""
882
+ Seneste vurdering: {seneste_vurdering:,.2f} DKK
883
+ Vurderingsdato: {vurderingsdato}
884
+ Vurderingstype: {vurderingstype}
885
+ Gæld i ejendom: {gæld_i_ejendom:,.2f} DKK
886
+ LTV: {ltv:.2f}%
887
+ """
888
+
889
+ document = f"""
890
+ KUNDE- OG FAMILIEFORHOLD:
891
+ Kunde: {kunde_navn} på {kunde_alder}
892
+ Kundens profession: {kunde_profession}
893
+ Kundens arbejdsplads: {kunde_arbejdsplads}
894
+ A-kasse: {a_kasse}
895
+ Civilstatus: {civilstatus}
896
+ """
897
+
898
+ if civilstatus == "Gift":
899
+ document += f"Ægtefælle: {ægtefælle_navn} på {ægtefælle_alder}\n"
900
+ document += f"Ægtefælle profession: {ægtefælle_profession}\n"
901
+ document += f"Ægtefælle arbejdsplads: {ægtefælle_arbejdsplads}\n"
902
+ document += f"Ægtefælle A-kasse: {ægtefælle_a_kasse}\n"
903
+ elif civilstatus == "Samlever":
904
+ document += f"Samlever: {samlever_navn} på {samlever_alder}\n"
905
+ document += f"Samlever profession: {samlever_profession}\n"
906
+ document += f"Samlever arbejdsplads: {samlever_arbejdsplads}\n"
907
+ document += f"Samlever A-kasse: {samlever_a_kasse}\n\n\n"
908
+
909
+
910
+ # Tilføj information om antal børn
911
+ document += f"Antal børn: {antal_børn if har_børn == 'Ja' else 'Ingen'}\n"
912
+
913
+
914
+ # Tilføj børnenes information, hvis der er nogen
915
+ if antal_børn > 0:
916
+ for index, barn in enumerate(børn, start=1):
917
+ document += f"{barn['navn']} på {barn['alder']} år\n"
918
+
919
+ document += f"""
920
+ Adresse: {kunde_adresse}
921
+ Boligtype: {boligtype}
922
+ LTV: {ltv:.2f}%
923
+ """
924
+
925
+ document += Kunde_og_familie
926
+ document += f"""
927
+ INDKOMSTFORHOLD (E-SKAT OG ELLER REGNSKAB GENERELT):
928
+ {kunde_navn}
929
+ Oplysninger fra {oplysninger_fra_kunde}:
930
+ Nuværende årsindkomst (DKK): {nuværende_årsindkomst_kunde:,.2f}
931
+ Fremtidig årsindkomst (DKK): {fremtidig_årsindkomst_kunde:,.2f}
932
+
933
+ """
934
+
935
+ if civilstatus in ["Gift", "Samlever"]:
936
+ document += f"""
937
+ {ægtefælle_navn if civilstatus == 'Gift' else samlever_navn}
938
+ Oplysninger fra {oplysninger_fra_ægtefælle}
939
+ Nuværende årsindkomst (DKK): {nuværende_årsindkomst_ægtefælle:,.2f}
940
+ Fremtidig årsindkomst (DKK): {fremtidig_årsindkomst_ægtefælle:,.2f}
941
+ """
942
+
943
+ document += f"""
944
+ Supplerende information til indkomstforhold:
945
+ {supplerende_info_indkomst}
946
+ """
947
+
948
+ # Tilføj information om gæld udenfor Nykredit
949
+ document += f"LÅN OG ANDEN GÆLD/HÆFTELSE UDENFOR NYKREDIT:\n"
950
+ document += f"Gæld udenfor Nykredit: {'Ja' if gæld_udenfor_nykredit == 'Ja' else 'Nej'}\n"
951
+
952
+ # Tilføj gældsposterne til dokumentet
953
+ if gæld_udenfor_nykredit == "Ja" and gældsposter:
954
+ for index, gæld in enumerate(gældsposter, start=1):
955
+ document += f"Gældsinstitut {index}: {gæld['institut']}, Gældstype: {gæld['type']}, G��ldsbeløb: {gæld['beløb']:,.2f} DKK\n"
956
+ else:
957
+ document += "Ingen gæld udenfor Nykredit.\n"
958
+
959
+ # Tilføj information om lønindhold og restskat
960
+ if lønindhold == "Ja":
961
+ document += "Bemærk: Kunden har lønindhold. Rådgiver skal indhente dokumentation på dette.\n"
962
+ if restskat == "Ja":
963
+ document += "Bemærk: Kunden har restskat til betaling. Rådgiver skal indhente dokumentation på dette.\n"
964
+
965
+ # Tilføj ekstra kommentarer
966
+ document += f"{lån_anden_gæld}\n\n"
967
+
968
+ # Tilføj forbrugsudgifter til dokumentet baseret på valg
969
+ document += "FORBRUGSUDGIFTER:\n"
970
+
971
+ # Tilføj specifik tekst baseret på valget
972
+ if forbrugsudgangspunkt == "Energiberegner":
973
+ document += (
974
+ "Forbrugsudgifterne er indhentet fra SparEnergi beregnerne, da disse udgifter er højere "
975
+ "end de udgifter kunderne selv har oplyst i budgettet. Derfor medtages disse af forsigtighedsprincip. "
976
+ "Screenshots fra beregnerne er arkiveret på kunderne.\n"
977
+ )
978
+ elif forbrugsudgangspunkt == "Kundens eget budget":
979
+ document += (
980
+ "Forbrugsudgifterne er medtaget fra kundens eget budget. Det skyldes, at disse udgifter er højere end "
981
+ "Energiberegnernes udgifter, og derfor anvendes disse af forsigtighedsprincip.\n"
982
+ )
983
+
984
+ document += f"{forbrugsudgifter}\n\n"
985
+
986
+ document += "BIL/BILER:\n"
987
+ document += f"Har kunden en bil?: {'Ja' if har_bil == 'Ja' else 'Nej'}\n"
988
+
989
+ # Hvis kunden har biler, tilføjes de til dokumentet. Alle biler fremvises
990
+ if har_bil == "Ja" and Biler:
991
+ for index, bil in enumerate(Biler, start=1):
992
+ document += f"Bil {index}: {bil['model']} ({bil['årgang']}), Ca. Værdi: {bil['værdi']:,.2f} DKK\n"
993
+ else:
994
+ document += "Ingen bil/biler.\n"
995
+
996
+ document += f"""
997
+
998
+ FORMUE:
999
+ Formue: {formue_tal:,.2f} DKK
1000
+ {formue}
1001
+
1002
+ GÆLDSFAKTOR:
1003
+ GF: {gældsfaktor_tal:.1f}
1004
+ {gældsfaktor}
1005
+
1006
+ RÅDIGHEDSBELØB:
1007
+ Nuværende rådighedsbeløb: {nuværende_rb:,.2f} DKK
1008
+ Fremtidigt rådighedsbeløb: {fremtidigt_rb:,.2f} DKK
1009
+ Fremtidigt stresset rådighedsbeløb: {stresset_rb:,.2f} DKK
1010
+ Ændring i rådighedsbeløb: {((stresset_rb - nuværende_rb) / nuværende_rb * 100):.2f}%
1011
+ {rådighedsbeløb}
1012
+
1013
+ PENSIONS- OG FORSIKRINGSFORHOLD:
1014
+ {pension}
1015
+
1016
+ FREMTID/DRØMME:
1017
+ {fremtid_drømme}
1018
+ """
1019
+
1020
+ # vis dokument
1021
+ # st.text_area("Dokument", document, height=600)
1022
+
1023
+ user_input = """Nedstående er en inspiration. Ret tilpasset til kundens situation baseret på document variablen. Overskrift skal alle være i store bogstaver og tekst skal stå under den korrekte overskrift.:
1024
+
1025
+ KUNDE- OG FAMILIEFORHOLD
1026
+ Familiesituation, boligsituation, særlige forhold.
1027
+
1028
+ INDKOMSTFORHOLD (E-SKAT DATA/REGNSKAB GENERELT)
1029
+ Beskriv her indkomstforhold og fremtidig indkomst samt hvordan denne indkomst er dokumenteret og vurderet.
1030
+
1031
+
1032
+ LÅN OG ANDEN GÆLD/HÆFTELSE UDENFOR NYKREDIT
1033
+ Gældstyper, beløb, renter, og afdragsforpligtelser.
1034
+
1035
+ FORBRUGSUDGIFTER
1036
+ Månedlige faste og variable udgifter.
1037
+
1038
+ BIL/BILER
1039
+ Antal, type, udgifter, og nødvendighed.
1040
+
1041
+ FORMUE
1042
+ Opsparing, ejendomme, og øvrige værdier.
1043
+
1044
+ GÆLDSFAKTOR
1045
+ Forhold mellem gæld og indkomst.
1046
+
1047
+ RÅDIGHEDSBELØB
1048
+ Beløb efter faste udgifter og afdrag.
1049
+
1050
+ PENSIONS- OG FORSIKRINGSFORHOLD
1051
+ Pension, forsikringer, og dækning.
1052
+
1053
+ FREMTID/DRØMME
1054
+ Økonomiske mål og planer.
1055
+ """
1056
+
1057
+ prompt = f"""
1058
+ Her er dokumentet:
1059
+ {document}
1060
+
1061
+ Brugerinput:
1062
+ {user_input}
1063
+
1064
+ Svar på følgende baseret på ovenstående information:
1065
+ """
1066
+
1067
+ # Optionally: Call duckduckgo_search API (if configured in a real environment)
1068
+ try:
1069
+ ai_response = DDGS().chat(prompt, model='gpt-4o-mini')
1070
+ st.write("**Teksten kan kopieres og indsættes**")
1071
+ st.markdown(ai_response)
1072
+ except Exception as e:
1073
+ st.error(f"AI forespørgslen mislykkedes: {e}. Prøv venligst igen senere.")
1074
+
1075
+ # Indstillingspåtegning menur
1076
+ elif menu == "Indstillingspåtegning":
1077
+ st.title("Indstillingspåtegning")
1078
+
1079
+ st.subheader("Vælg den skabelon, der passer til din kundes lånesag")
1080
+
1081
+ st.write("Du skal altid anvende skabelonen ”Nybevilling”, når der er krav om, at debitor overholder guidelies. Debitor skal overholde guidelines, når du ansøger om ændringer i engagement eller sikkerheder, der forøger kreditrisikoen væsentligt.")
1082
+
1083
+
1084
+ # Genforhandling eller Nybevilling
1085
+ st.selectbox("Genforhandling eller Nybevilling:", ["Genforhandling", "Nybevilling"])
1086
+
1087
+ # Liste med kundetyper
1088
+ kundetyper = [
1089
+ "(Vælg kundetype)",
1090
+ "Handel",
1091
+ "Industri",
1092
+ "Entreprenører",
1093
+ "Service og liberale erhverv",
1094
+ "Ejendomsudlejning",
1095
+ "Ejendomsudvikling, investeringsprojekt",
1096
+ "Landbrug",
1097
+ "Landbrug, forpagtning",
1098
+ "Andelsboligforeninger",
1099
+ "Almene boligorganisationer",
1100
+ "Ejerforeninger",
1101
+ "Hoteller (ej bortforpagtet)",
1102
+ "Statseje. skoler og gymnasier",
1103
+ "Privatskoler og private gymnasier",
1104
+ "Uregulerede skoler",
1105
+ "Flerstrenget idrætsanlæg",
1106
+ "Enkeltstrenget idrætsanlæg",
1107
+ "Golfklubber",
1108
+ "Kulturelle institutioner",
1109
+ "Sociale institutioner"
1110
+ ]
1111
+
1112
+ # Selectbox til valg af kundetype
1113
+ valgt_kundetype = st.selectbox("Kundetype:", kundetyper)
1114
+
1115
+ # Knap til indtastning af Kundenavn/Debitor
1116
+ Navn = st.text_input("Kundenavn/Debitor:")
1117
+
1118
+ # Checkbox eller selectbox til valg af metode
1119
+ guideline_valg = st.selectbox("Vælg hvordan guidelines er beregnet:", ["Regnskab", "Budget"])
1120
+
1121
+ # Tekst til radio-knap
1122
+ st.write('Vurderer du, at lånesagen fraviger krav i forretningsange?')
1123
+
1124
+ # Opret en radio-knap til valg mellem "Ja" og "Nej"
1125
+ valg = st.radio("Fravigelse af guidelines:", ['Nej', 'Ja'])