@@ -700,7 +700,6 @@ private static void ErmittlungWarmeEinheiten(Betriebskostenabrechnung abrechnung
700700 underlined . Add ( false ) ;
701701
702702 var verbrauchAnteile = abrechnungseinheit . VerbrauchAnteile ;
703- // Kalte Betriebskosten are equal / warme are odd
704703 var warmeAnteile = verbrauchAnteile . Where ( verbrauch => verbrauch . Umlage . HKVO != null ) ;
705704 foreach ( var verbrauchAnteil in warmeAnteile )
706705 {
@@ -737,6 +736,22 @@ private static void ErmittlungWarmeEinheiten(Betriebskostenabrechnung abrechnung
737736
738737 p . Table ( widths , justification , bold . ToArray ( ) , underlined . ToArray ( ) , cols ) ;
739738 }
739+
740+ private class WarmAnteilEntry
741+ {
742+ public double NFZeitanteil ;
743+ public double HeizkostenVerbrauchAnteil ;
744+ public double WarmwasserVerbrauchAnteil ;
745+ public double WaermeAnteilNF ;
746+ public double WaermeAnteilVerb ;
747+ public double WarmwasserAnteilNF ;
748+ public double WarmwasserAnteilVerb ;
749+ public double Para9_2 ;
750+ public double Para7 ;
751+ public double Para8 ;
752+ public double PauschalBetrag ;
753+ }
754+
740755 private static void ErmittlungWarmanteil ( Betriebskostenabrechnung abrechnung , Abrechnungseinheit abrechnungseinheit , IPrint < T > p )
741756 {
742757 var widths = new int [ ] { 24 , 13 , 9 , 14 , 14 , 13 , 13 } ;
@@ -752,45 +767,81 @@ private static void ErmittlungWarmanteil(Betriebskostenabrechnung abrechnung, Ab
752767
753768 var wohnung = abrechnung . Vertrag . Wohnung ;
754769
755- foreach ( var heizkostenberechnung in abrechnungseinheit . Heizkostenberechnungen )
770+ Dictionary < int , WarmAnteilEntry > warmAnteile = [ ] ;
771+ foreach ( var r in abrechnungseinheit . Heizkostenberechnungen )
772+ {
773+ if ( r . UmlageId == 0 )
774+ {
775+ continue ;
776+ }
777+
778+ if ( ! warmAnteile . ContainsKey ( r . UmlageId ) )
779+ {
780+ warmAnteile [ r . UmlageId ] = new WarmAnteilEntry ( )
781+ {
782+ PauschalBetrag = r . PauschalBetrag ,
783+ Para9_2 = r . Para9_2 ,
784+ Para7 = r . Para7 ,
785+ Para8 = r . Para8 ,
786+ NFZeitanteil = r . NFZeitanteil ,
787+ HeizkostenVerbrauchAnteil = r . HeizkostenVerbrauchAnteil ,
788+ WarmwasserVerbrauchAnteil = r . WarmwasserVerbrauchAnteil ,
789+ WaermeAnteilNF = r . WaermeAnteilNF ,
790+ WaermeAnteilVerb = r . WaermeAnteilVerb ,
791+ WarmwasserAnteilNF = r . WarmwasserAnteilNF ,
792+ WarmwasserAnteilVerb = r . WarmwasserAnteilVerb
793+ } ;
794+ }
795+ else
796+ {
797+ warmAnteile [ r . UmlageId ] . PauschalBetrag += r . PauschalBetrag ;
798+ warmAnteile [ r . UmlageId ] . WaermeAnteilNF += r . WaermeAnteilNF ;
799+ warmAnteile [ r . UmlageId ] . WaermeAnteilVerb += r . WaermeAnteilVerb ;
800+ warmAnteile [ r . UmlageId ] . WarmwasserAnteilNF += r . WarmwasserAnteilNF ;
801+ warmAnteile [ r . UmlageId ] . WarmwasserAnteilVerb += r . WarmwasserAnteilVerb ;
802+ }
803+ }
804+
805+ foreach ( var warmAnteil in warmAnteile . Values )
756806 {
807+
757808 col1 . Add ( "Heizung" ) ;
758809 col2 . Add ( Umlageschluessel . NachNutzflaeche . ToDescriptionString ( ) ) ;
759- col3 . Add ( Euro ( heizkostenberechnung . PauschalBetrag ) ) ;
760- col4 . Add ( Prozent ( 1 - heizkostenberechnung . Para9_2 ) ) ;
761- col5 . Add ( Prozent ( 1 - heizkostenberechnung . Para7 ) ) ;
762- col6 . Add ( Prozent ( heizkostenberechnung . NFZeitanteil ) ) ;
763- col7 . Add ( Euro ( heizkostenberechnung . WaermeAnteilNF ) ) ;
810+ col3 . Add ( Euro ( warmAnteil . PauschalBetrag ) ) ;
811+ col4 . Add ( Prozent ( 1 - warmAnteil . Para9_2 ) ) ;
812+ col5 . Add ( Prozent ( 1 - warmAnteil . Para7 ) ) ;
813+ col6 . Add ( Prozent ( warmAnteil . NFZeitanteil ) ) ;
814+ col7 . Add ( Euro ( warmAnteil . WaermeAnteilNF ) ) ;
764815 bold . Add ( false ) ;
765816 underlined . Add ( true ) ;
766817
767818 col1 . Add ( "Heizung" ) ;
768819 col2 . Add ( Umlageschluessel . NachVerbrauch . ToDescriptionString ( ) ) ;
769- col3 . Add ( Euro ( heizkostenberechnung . PauschalBetrag ) ) ;
770- col4 . Add ( Prozent ( 1 - heizkostenberechnung . Para9_2 ) ) ;
771- col5 . Add ( Prozent ( heizkostenberechnung . Para7 ) ) ;
772- col6 . Add ( Prozent ( heizkostenberechnung . HeizkostenVerbrauchAnteil ) ) ;
773- col7 . Add ( Euro ( heizkostenberechnung . WaermeAnteilVerb ) ) ;
820+ col3 . Add ( Euro ( warmAnteil . PauschalBetrag ) ) ;
821+ col4 . Add ( Prozent ( 1 - warmAnteil . Para9_2 ) ) ;
822+ col5 . Add ( Prozent ( warmAnteil . Para7 ) ) ;
823+ col6 . Add ( Prozent ( warmAnteil . HeizkostenVerbrauchAnteil ) ) ;
824+ col7 . Add ( Euro ( warmAnteil . WaermeAnteilVerb ) ) ;
774825 bold . Add ( false ) ;
775826 underlined . Add ( true ) ;
776827
777828 col1 . Add ( "Warmwasser" ) ;
778829 col2 . Add ( Umlageschluessel . NachNutzflaeche . ToDescriptionString ( ) ) ;
779- col3 . Add ( Euro ( heizkostenberechnung . PauschalBetrag ) ) ;
780- col4 . Add ( Prozent ( heizkostenberechnung . Para9_2 ) ) ;
781- col5 . Add ( Prozent ( heizkostenberechnung . Para8 ) ) ;
782- col6 . Add ( Prozent ( heizkostenberechnung . NFZeitanteil ) ) ;
783- col7 . Add ( Euro ( heizkostenberechnung . WarmwasserAnteilNF ) ) ;
830+ col3 . Add ( Euro ( warmAnteil . PauschalBetrag ) ) ;
831+ col4 . Add ( Prozent ( warmAnteil . Para9_2 ) ) ;
832+ col5 . Add ( Prozent ( warmAnteil . Para8 ) ) ;
833+ col6 . Add ( Prozent ( warmAnteil . NFZeitanteil ) ) ;
834+ col7 . Add ( Euro ( warmAnteil . WarmwasserAnteilNF ) ) ;
784835 bold . Add ( false ) ;
785836 underlined . Add ( true ) ;
786837
787838 col1 . Add ( "Warmwasser" ) ;
788839 col2 . Add ( Umlageschluessel . NachVerbrauch . ToDescriptionString ( ) ) ;
789- col3 . Add ( Euro ( heizkostenberechnung . PauschalBetrag ) ) ;
790- col4 . Add ( Prozent ( heizkostenberechnung . Para9_2 ) ) ;
791- col5 . Add ( Prozent ( heizkostenberechnung . Para8 ) ) ;
792- col6 . Add ( Prozent ( heizkostenberechnung . WarmwasserVerbrauchAnteil ) ) ;
793- col7 . Add ( Euro ( heizkostenberechnung . WarmwasserAnteilVerb ) ) ;
840+ col3 . Add ( Euro ( warmAnteil . PauschalBetrag ) ) ;
841+ col4 . Add ( Prozent ( warmAnteil . Para9_2 ) ) ;
842+ col5 . Add ( Prozent ( warmAnteil . Para8 ) ) ;
843+ col6 . Add ( Prozent ( warmAnteil . WarmwasserVerbrauchAnteil ) ) ;
844+ col7 . Add ( Euro ( warmAnteil . WarmwasserAnteilVerb ) ) ;
794845 bold . Add ( false ) ;
795846 underlined . Add ( true ) ;
796847
0 commit comments