Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling
Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling
- Publicatiedatum:
- 11-07-2025
- Inwerkingtreding:
- 11-07-2025
18.2 Winst- en verliesrekening o.b.v. grootboek (Prismant)
Concepten
Relaties
Eigenschappen
SPARQL query
Code gekopieerd
...Kopieer naar klembord
1# Indicator: Zorgkantoren 18.2.0 - Complete versie met R en S totalen 2# Parameters: ?startperiode, ?eindperiode 3# Ontologie: versie 3.0.0 of nieuwer 4# 5# Deze query berekent de winst- en verliesrekening obv Prismant grootboekrubrieken. 6# Structuur: 3 delen via UNION die alle jaarrekeningposten + totalen genereren 7# Performance: Eén database scan voor alle berekeningen 8 9PREFIX onz-fin: <http://purl.org/ozo/onz-fin#> 10PREFIX onz-g: <http://purl.org/ozo/onz-g#> 11PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 12 13SELECT 14 ?jaarrekeningpost 15 (SUM(?bedrag_rubriek) AS ?bedrag) 16WHERE 17{ 18 { 19 # ================================================================ 20 # DEEL 1: Berekening eindtotalen P, Q, R, S uit ruwe grootboekdata 21 # ================================================================ 22 { 23 # Bereken alle componentbedragen in één database scan voor performance 24 SELECT 25 (SUM(?p_bedrag) AS ?p_totaal) # P Som der bedrijfsopbrengsten 26 (SUM(?q_bedrag) AS ?q_totaal) # Q Som der bedrijfslasten 27 (SUM(?r_i_bedrag) AS ?r_i_totaal) # R.I Opbrengst van vorderingen die tot de vaste activa behoren en van effecten 28 (SUM(?r_ii_bedrag) AS ?r_ii_totaal) # R.II Andere rentebaten en soortgelijke opbrengsten 29 (SUM(?r_iii_bedrag) AS ?r_iii_totaal) # R.III Waardeverandering van vorderingen die tot de vaste activa behoren en van effecten 30 (SUM(?r_iv_bedrag) AS ?r_iv_totaal) # R.IV Rentelasten en soortgelijke kosten 31 (SUM(?s_i_bedrag) AS ?s_i_totaal) # S.I Belastingen (altijd 0, bestaat niet in Prismant) 32 (SUM(?s_ii_bedrag) AS ?s_ii_totaal) # S.II Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen 33 WHERE { 34 # BIND("2024-01-01"^^xsd:date AS ?startperiode) 35 # BIND("2024-12-31"^^xsd:date AS ?eindperiode) 36 37 # Haal alle 6-cijferige grootboekrubrieken op 38 { 39 SELECT DISTINCT ?rubriek WHERE { 40 ?rubriek a onz-fin:Grootboekrubriek . 41 FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:))) 42 FILTER(REGEX(STRAFTER(STR(?rubriek), STR(onz-fin:)), "^[0-9]{6}$")) 43 } 44 } 45 BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode) 46 47 # Koppel grootboekposten aan rubrieken binnen meetperiode 48 ?grootboek_post a onz-fin:Grootboekpost ; 49 onz-g:partOf ?rubriek ; 50 onz-g:hasDate ?datum ; 51 onz-fin:heeftGeldBedrag ?geld_bedrag . 52 53 FILTER (?datum >= ?startperiode && ?datum <= ?eindperiode) 54 55 # Split bedragen op in componenten voor eindtotaal berekeningen 56 57 # --- P: Bedragen voor eindtotaalberekening --- 58 # P.I: 81xxxx (Netto omzet) 59 # P.IV: 82/83/89/919/920/930 (Overige bedrijfsopbrengsten) 60 BIND( 61 IF( 62 STRSTARTS(?rubriekCode, "81") || 63 STRSTARTS(?rubriekCode, "82") || 64 STRSTARTS(?rubriekCode, "83") || 65 STRSTARTS(?rubriekCode, "89") || 66 STRSTARTS(?rubriekCode, "919") || 67 STRSTARTS(?rubriekCode, "920") || 68 STRSTARTS(?rubriekCode, "930"), 69 ?geld_bedrag, 0) AS ?p_bedrag 70 ) 71 72 # --- Q: Diverse kostenrubrieken --- 73 # Q.II: 417/418 (Kosten uitbesteed werk en andere externe kosten) 74 # Q.III: 411-419 (Lonen en salarissen) 75 # Q.IV: 420/4221/4223-4225/4229 (Sociale lasten) 76 # Q.V: 4226 (Afschrijvingen) 77 # Q.VI: 480-484 (Afschrijvingen op immateriële vaste activa en materiële vaste activa) 78 # Q.IX: 423/43-47/486/489/905/911-915/921/931 (Overige bedrijfskosten) 79 BIND( 80 IF( 81 STRSTARTS(?rubriekCode, "417") || 82 STRSTARTS(?rubriekCode, "418") || 83 STRSTARTS(?rubriekCode, "411") || 84 STRSTARTS(?rubriekCode, "412") || 85 STRSTARTS(?rubriekCode, "413") || 86 STRSTARTS(?rubriekCode, "414") || 87 STRSTARTS(?rubriekCode, "415") || 88 STRSTARTS(?rubriekCode, "416") || 89 STRSTARTS(?rubriekCode, "419") || 90 STRSTARTS(?rubriekCode, "420") || 91 STRSTARTS(?rubriekCode, "4221") || 92 STRSTARTS(?rubriekCode, "4223") || 93 STRSTARTS(?rubriekCode, "4224") || 94 STRSTARTS(?rubriekCode, "4225") || 95 STRSTARTS(?rubriekCode, "4229") || 96 STRSTARTS(?rubriekCode, "4226") || 97 STRSTARTS(?rubriekCode, "480") || 98 STRSTARTS(?rubriekCode, "481") || 99 STRSTARTS(?rubriekCode, "482") || 100 STRSTARTS(?rubriekCode, "483") || 101 STRSTARTS(?rubriekCode, "484") || 102 STRSTARTS(?rubriekCode, "423") || 103 STRSTARTS(?rubriekCode, "43") || 104 STRSTARTS(?rubriekCode, "44") || 105 STRSTARTS(?rubriekCode, "45") || 106 STRSTARTS(?rubriekCode, "46") || 107 STRSTARTS(?rubriekCode, "47") || 108 STRSTARTS(?rubriekCode, "486") || 109 STRSTARTS(?rubriekCode, "489") || 110 STRSTARTS(?rubriekCode, "905") || 111 STRSTARTS(?rubriekCode, "911") || 112 STRSTARTS(?rubriekCode, "912") || 113 STRSTARTS(?rubriekCode, "913") || 114 STRSTARTS(?rubriekCode, "914") || 115 STRSTARTS(?rubriekCode, "915") || 116 STRSTARTS(?rubriekCode, "921") || 117 STRSTARTS(?rubriekCode, "931"), 118 ?geld_bedrag, 0) AS ?q_bedrag 119 ) 120 # R.I: 904xxx (Opbrengst van vorderingen die tot de vaste activa behoren en van effecten) 121 BIND(IF(STRSTARTS(?rubriekCode, "904"), ?geld_bedrag, 0) AS ?r_i_bedrag) 122 # R.II: 900xxx (Andere rentebaten en soortgelijke opbrengsten) 123 BIND(IF(STRSTARTS(?rubriekCode, "900"), ?geld_bedrag, 0) AS ?r_ii_bedrag) 124 # R.III: 903xxx (Waardeverandering van vorderingen die tot de vaste activa behoren en van effecten) 125 BIND(IF(STRSTARTS(?rubriekCode, "903"), ?geld_bedrag, 0) AS ?r_iii_bedrag) 126 # R.IV: 485/901 (Rentelasten en soortgelijke kosten) 127 BIND(IF(STRSTARTS(?rubriekCode, "485") || STRSTARTS(?rubriekCode, "901"), ?geld_bedrag, 0) AS ?r_iv_bedrag) 128 # S.I: Belastingen (bestaat niet in Prismant, altijd 0) 129 BIND(0 AS ?s_i_bedrag) 130 # S.II: 902xxx (Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen) 131 BIND(IF(STRSTARTS(?rubriekCode, "902"), ?geld_bedrag, 0) AS ?s_ii_bedrag) 132 } 133 } 134 135 # Genereer eindtotalen met berekende formules 136 VALUES (?eindtotaal_type ?jaarrekeningpost) { 137 (1 "P Som der bedrijfsopbrengsten") # P totaal 138 (2 "Q Som der bedrijfslasten") # Q totaal 139 (3 "R Resultaat voor belastingen") # P - Q + R.I + R.II - R.III - R.IV 140 (4 "S Resultaat na belastingen") # R - S.I + S.II 141 } 142 143 # Bereken eindtotalen obv formules uit jaarrekening model D 144 BIND( 145 IF(?eindtotaal_type = 1, ?p_totaal, 146 IF(?eindtotaal_type = 2, ?q_totaal, 147 IF(?eindtotaal_type = 3, ?p_totaal - ?q_totaal + ?r_i_totaal + ?r_ii_totaal - ?r_iii_totaal - ?r_iv_totaal, 148 IF(?eindtotaal_type = 4, ?p_totaal - ?q_totaal + ?r_i_totaal + ?r_ii_totaal - ?r_iii_totaal - ?r_iv_totaal - ?s_i_totaal + ?s_ii_totaal, 149 0)))) AS ?bedrag_rubriek 150 ) 151 } 152 UNION 153 { 154 # ======================================================================== 155 # DEEL 2: Individuele jaarrekeningposten uit grootboekdata (bestaande logica) 156 # ======================================================================== 157 { 158 # Aggregeer bedragen per grootboekcategorie 159 SELECT 160 ?categorie 161 (SUM(?geld_bedrag) AS ?bedrag_rubriek) 162 WHERE { 163 # BIND("2024-01-01"^^xsd:date AS ?startperiode) 164 # BIND("2024-12-31"^^xsd:date AS ?eindperiode) 165 166 # Haal alle 6-cijferige grootboekrubrieken op 167 { 168 SELECT DISTINCT ?rubriek WHERE { 169 ?rubriek a onz-fin:Grootboekrubriek . 170 FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:))) 171 FILTER(REGEX(STRAFTER(STR(?rubriek), STR(onz-fin:)), "^[0-9]{6}$")) 172 } 173 } 174 BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode) 175 176 # Wijs rubriekcodes toe aan jaarrekeningcategorieën 177 BIND( 178 COALESCE( 179 IF(STRSTARTS(?rubriekCode, "81"), "P.I", ?unbound), 180 IF( 181 STRSTARTS(?rubriekCode, "82") || 182 STRSTARTS(?rubriekCode, "83") || 183 STRSTARTS(?rubriekCode, "89") || 184 STRSTARTS(?rubriekCode, "919") || 185 STRSTARTS(?rubriekCode, "920") || 186 STRSTARTS(?rubriekCode, "930"), 187 "P.IV", ?unbound 188 ), 189 IF( 190 STRSTARTS(?rubriekCode, "417") || 191 STRSTARTS(?rubriekCode, "418"), 192 "Q.II", ?unbound 193 ), 194 IF( 195 STRSTARTS(?rubriekCode, "411") || 196 STRSTARTS(?rubriekCode, "412") || 197 STRSTARTS(?rubriekCode, "413") || 198 STRSTARTS(?rubriekCode, "414") || 199 STRSTARTS(?rubriekCode, "415") || 200 STRSTARTS(?rubriekCode, "416") || 201 STRSTARTS(?rubriekCode, "419"), 202 "Q.III", ?unbound 203 ), 204 IF( 205 STRSTARTS(?rubriekCode, "420") || 206 STRSTARTS(?rubriekCode, "4221") || 207 STRSTARTS(?rubriekCode, "4223") || 208 STRSTARTS(?rubriekCode, "4224") || 209 STRSTARTS(?rubriekCode, "4225") || 210 STRSTARTS(?rubriekCode, "4229"), 211 "Q.IV", ?unbound 212 ), 213 IF(STRSTARTS(?rubriekCode, "4226"), "Q.V", ?unbound), 214 IF( 215 STRSTARTS(?rubriekCode, "480") || 216 STRSTARTS(?rubriekCode, "481") || 217 STRSTARTS(?rubriekCode, "482") || 218 STRSTARTS(?rubriekCode, "483") || 219 STRSTARTS(?rubriekCode, "484"), 220 "Q.VI", ?unbound 221 ), 222 IF( 223 STRSTARTS(?rubriekCode, "423") || 224 STRSTARTS(?rubriekCode, "43") || 225 STRSTARTS(?rubriekCode, "44") || 226 STRSTARTS(?rubriekCode, "45") || 227 STRSTARTS(?rubriekCode, "46") || 228 STRSTARTS(?rubriekCode, "47") || 229 STRSTARTS(?rubriekCode, "486") || 230 STRSTARTS(?rubriekCode, "489") || 231 STRSTARTS(?rubriekCode, "905") || 232 STRSTARTS(?rubriekCode, "911") || 233 STRSTARTS(?rubriekCode, "912") || 234 STRSTARTS(?rubriekCode, "913") || 235 STRSTARTS(?rubriekCode, "914") || 236 STRSTARTS(?rubriekCode, "915") || 237 STRSTARTS(?rubriekCode, "921") || 238 STRSTARTS(?rubriekCode, "931"), 239 "Q.IX", ?unbound 240 ), 241 IF(STRSTARTS(?rubriekCode, "904"), "R.I", ?unbound), 242 IF(STRSTARTS(?rubriekCode, "900"), "R.II", ?unbound), 243 IF(STRSTARTS(?rubriekCode, "903"), "R.III", ?unbound), 244 # R.IV: 485/901 (Rentelasten en soortgelijke kosten) 245 IF( 246 STRSTARTS(?rubriekCode, "485") || 247 STRSTARTS(?rubriekCode, "901"), 248 "R.IV", ?unbound 249 ), 250 # S.II: 902 (Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen) 251 IF(STRSTARTS(?rubriekCode, "902"), "S.II", ?unbound), 252 "other" 253 ) AS ?categorie 254 ) 255 FILTER(?categorie != "other") 256 257 # Koppel grootboekposten aan rubrieken binnen meetperiode 258 ?grootboek_post a onz-fin:Grootboekpost ; 259 onz-g:partOf ?rubriek ; 260 onz-g:hasDate ?datum ; 261 onz-fin:heeftGeldBedrag ?geld_bedrag . 262 263 FILTER (?datum >= ?startperiode && ?datum <= ?eindperiode) 264 265 } GROUP BY ?categorie 266 } 267 268 # Map categorieën naar jaarrekeningpost labels 269 VALUES (?categorie ?jaarrekeningpost_child){ 270 ("P.I" "P.I Netto omzet") 271 ("P.IV" "P.IV Overige bedrijfsopbrengsten") 272 ("Q.II" "Q.II Kosten uitbesteed werk en andere externe kosten") 273 ("Q.III" "Q.III Lonen en salarissen") 274 ("Q.IV" "Q.IV Sociale lasten") 275 ("Q.V" "Q.V Pensioenlasten") 276 ("Q.VI" "Q.VI Afschrijvingen op immateriële vaste activa en materiële vaste activa") 277 ("Q.IX" "Q.IX Overige bedrijfskosten") 278 ("R.I" "R.I Opbrengst van vorderingen die tot de vaste activa behoren en van effecten") 279 ("R.II" "R.II Andere rentebaten en soortgelijke opbrengsten") 280 ("R.III" "R.III Waardeverandering van vorderingen die tot de vaste activa behoren en van effecten") 281 ("R.IV" "R.IV Rentelasten en soortgelijke kosten") 282 ("S.II" "S.II Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen") 283 } 284 285 BIND(?jaarrekeningpost_child AS ?jaarrekeningpost) 286 FILTER(BOUND(?jaarrekeningpost)) 287 } 288 UNION 289 { 290 # ======================================================================= 291 # DEEL 3: Volledige lijst van alle jaarrekeningposten (bedrag 0 als fallback) 292 # ======================================================================= 293 BIND(0 AS ?bedrag_rubriek) 294 VALUES ?jaarrekeningpost { 295 # P: Som der bedrijfsopbrengsten 296 "P.I Netto omzet" 297 "P.II Wijziging in voorraden gereed product en onderhanden werk ten opzichte van de voorafgaande balansdatum" 298 "P.III Geactiveerde productie voor het eigen bedrijf" 299 "P.IV Overige bedrijfsopbrengsten" 300 "P Som der bedrijfsopbrengsten" 301 302 # Q: Som der bedrijfslasten 303 "Q.I Kosten van grond- en hulpstoffen" 304 "Q.II Kosten uitbesteed werk en andere externe kosten" 305 "Q.III Lonen en salarissen" 306 "Q.IV Sociale lasten" 307 "Q.V Pensioenlasten" 308 "Q.VI Afschrijvingen op immateriële vaste activa en materiële vaste activa" 309 "Q.VII Overige waardevermindering immateriële vaste activa en materiële vaste activa" 310 "Q.VIII Bijzondere waardevermindering van vlottende activa" 311 "Q.IX Overige bedrijfskosten" 312 "Q Som der bedrijfslasten" 313 314 # R: Financiële baten en lasten 315 "R.I Opbrengst van vorderingen die tot de vaste activa behoren en van effecten" 316 "R.II Andere rentebaten en soortgelijke opbrengsten" 317 "R.III Waardeverandering van vorderingen die tot de vaste activa behoren en van effecten" 318 "R.IV Rentelasten en soortgelijke kosten" 319 "R Resultaat voor belastingen" 320 321 # S: Belastingen en resultaat deelnemingen 322 "S.I Belastingen" 323 "S.II Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen" 324 "S Resultaat na belastingen" 325 } 326 } 327} 328GROUP BY ?jaarrekeningpost 329ORDER BY ?jaarrekeningpost