Skip to content

Commit

Permalink
Adding Einspeise BO and its enums (#459)
Browse files Browse the repository at this point in the history
* Einspeise BO and its enums

* 🚀 Add new enums and message for EEG vermarktungsform & fernsteuerbarkeit status.

* 🛠️ Fix enum member value formatting

Updated the enum member value to remove special characters for consistency.

* 🚀 Add new enum Profilart with profile types

Added a new enum Profilart in the protobuf file to define different profile types for energy consumption and generation.

* remove BOMs

* ⚡️ Add new subclass Einspeise to BusinessObject

* ✨ Refactor enum names for clarity and consistency

* 🚀 Update ProtoInclude index for a class

* ⚡️ Update Einspeise to Einspeisung in codebase

* removing EDIFACT-Qualifier
  • Loading branch information
hamidhajiparvaneh authored Jul 24, 2024
1 parent f4d8fe6 commit 27673fd
Show file tree
Hide file tree
Showing 6 changed files with 188 additions and 0 deletions.
1 change: 1 addition & 0 deletions BO4E/BO/BusinessObject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ namespace BO4E.BO;
[ProtoInclude(32, typeof(MabisZaehlpunkt))]
[ProtoInclude(33, typeof(Summenzeitreihe))]
[ProtoInclude(34, typeof(Lokationszuordnung))]
[ProtoInclude(35, typeof(Einspeisung))]
public abstract class BusinessObject : IUserProperties, IOptionalGuid
{
/// <summary>
Expand Down
66 changes: 66 additions & 0 deletions BO4E/BO/Einspeisung.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
using System.Text.Json.Serialization;

using BO4E.ENUM;
using BO4E.meta;

using Newtonsoft.Json;

using ProtoBuf;

namespace BO4E.BO;

/// <summary>
/// Einspeisung BO
/// </summary>
[ProtoContract]
[NonOfficial(NonOfficialCategory.MISSING)]
public class Einspeisung : BusinessObject
{
/// <summary>
/// Für welche Marktlokation gelten diese Einspeisedaten
/// </summary>
[JsonProperty(PropertyName = "marktlokationsId", Required = Required.Default, Order = 10)]
[JsonPropertyName("marktlokationsId")]
[JsonPropertyOrder(10)]
[NonOfficial(NonOfficialCategory.MISSING)]
[ProtoMember(10)]
[BoKey]
public string? MarktlokationsId { get; set; }
/// <summary>
/// Empfänger der Vergütung zur Einspeisung
/// </summary>
[JsonProperty(PropertyName = "verguetungsempfaenger", Required = Required.Default, Order = 11)]
[JsonPropertyName("verguetungsempfaenger")]
[JsonPropertyOrder(11)]
[NonOfficial(NonOfficialCategory.MISSING)]
[ProtoMember(11)]
public Geschaeftspartnerrolle? Verguetungsempfaenger { get; set; }

/// <summary>
/// Vermarktungsformen gemäß dem Erneuerbare-Energien-Gesetz (EEG).
/// </summary>
[JsonProperty(PropertyName = "eegVermarktungsform", Required = Required.Default, Order = 12)]
[JsonPropertyName("eegVermarktungsform")]
[JsonPropertyOrder(12)]
[NonOfficial(NonOfficialCategory.MISSING)]
[ProtoMember(12)]
public EEGVermarktungsform? EEGVermarktungsform { get; set; }

/// <summary>Land der Förderung, Details <see cref="ENUM.Landescode" /></summary>
[JsonProperty(PropertyName = "landescode", Required = Required.Default, Order = 13)]
[JsonPropertyName("landescode")]
[ProtoMember(13)]
[JsonPropertyOrder(13)]
[NonOfficial(NonOfficialCategory.MISSING)]
public Landescode? Landescode { get; set; }

/// <summary>
/// Status der Fernsteuerbarkeit einer Marktlokation
/// </summary>
[JsonProperty(PropertyName = "fernsteuerbarkeitStatus", Required = Required.Default, Order = 14)]
[JsonPropertyName("fernsteuerbarkeitStatus")]
[JsonPropertyOrder(14)]
[NonOfficial(NonOfficialCategory.MISSING)]
[ProtoMember(12)]
public FernsteuerbarkeitStatus? FernsteuerbarkeitStatus { get; set; }
}
37 changes: 37 additions & 0 deletions BO4E/ENUM/EEGVermarktungsform.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
using System.Runtime.Serialization;

using ProtoBuf;

namespace BO4E.ENUM
{
/// <summary>
/// Verschiedenen Vermarktungsformen gemäß dem Erneuerbare-Energien-Gesetz (EEG).
/// </summary>
[ProtoContract]
public enum EEGVermarktungsform
{
/// <summary>Ausfallvergütung für den Fall, dass andere Vermarktungsmethoden nicht verfügbar sind</summary>
/// <remarks>Z90</remarks>
[ProtoEnum(Name = nameof(EEGVermarktungsform) + "_" + nameof(AUSFALLVERGUETUNG))]
[EnumMember(Value = "AUSFALLVERGUETUNG")]
AUSFALLVERGUETUNG,

/// <summary>Marktprämie für die geförderte Direktvermarktung</summary>
/// <remarks>Z91</remarks>
[ProtoEnum(Name = nameof(EEGVermarktungsform) + "_" + nameof(MARKTPRAEMIE))]
[EnumMember(Value = "MARKTPRAEMIE")]
MARKTPRAEMIE,

/// <summary>Sonstige Vermarktungsformen ohne gesetzliche Vergütung</summary>
/// <remarks>Z92</remarks>
[ProtoEnum(Name = nameof(EEGVermarktungsform) + "_" + nameof(SONSTIGE))]
[EnumMember(Value = "SONSTIGE")]
SONSTIGE,

/// <summary>Vergütung nach dem Kraft-Wärme-Kopplungsgesetz (KWKG)</summary>
/// <remarks>Z94</remarks>
[ProtoEnum(Name = nameof(EEGVermarktungsform) + "_" + nameof(KWKG_VERGUETUNG))]
[EnumMember(Value = "KWKG_VERGUETUNG")]
KWKG_VERGUETUNG
}
}
40 changes: 40 additions & 0 deletions BO4E/ENUM/FernsteuerbarkeitStatus.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using System.Runtime.Serialization;

using ProtoBuf;

namespace BO4E.ENUM
{
/// <summary>
/// Status der Fernsteuerbarkeit einer Marktlokation gemäß den Vorgaben für die Direktvermarktung.
/// </summary>
[ProtoContract]
public enum FernsteuerbarkeitStatus
{
/// <summary>
/// Marktlokation ist technisch nicht fernsteuerbar.
/// Der NB bestätigt mit der Anmeldung einer erzeugenden Marktlokation zur Direktvermarktung, dass die Anlage nicht mit einer Fernsteuerung ausgestattet ist und nicht fernsteuerbar ist. Die Voraussetzung zur Zahlung der Managementprämie für fernsteuerbare Anlagen ist nicht gegeben.
/// </summary>
/// <remarks>Z96</remarks>
[ProtoEnum(Name = nameof(FernsteuerbarkeitStatus) + "_" + nameof(NICHT_FERNSTEUERBAR))]
[EnumMember(Value = "NICHT_FERNSTEUERBAR")]
NICHT_FERNSTEUERBAR,

/// <summary>
/// Marktlokation ist technisch fernsteuerbar.
/// Der NB bestätigt mit der Anmeldung einer erzeugenden Marktlokation zur Direktvermarktung, dass die Marktlokation mit einer Fernsteuerung ausgestattet, aber dem NB keine Information darüber vorliegt, dass der LF die Marktlokation fernsteuern kann. Die Voraussetzung zur Zahlung der Managementprämie für fernsteuerbare Marktlokation ist nicht gegeben.
/// </summary>
/// <remarks>Z97</remarks>
[ProtoEnum(Name = nameof(FernsteuerbarkeitStatus) + "_" + nameof(TECHNISCH_FERNSTEUERBAR))]
[EnumMember(Value = "TECHNISCH_FERNSTEUERBAR")]
TECHNISCH_FERNSTEUERBAR,

/// <summary>
/// Marktlokation ist durch den Lieferanten fernsteuerbar.
/// Der NB bestätigt mit der Anmeldung einer Marktlokation zur Direktvermarktung, dass die Marktlokation mit einer Fernsteuerung ausgestattet ist und der LF diese auch fernsteuern kann. Die Voraussetzung zur Zahlung der Managementprämie für fernsteuerbare Marktlokationen ist gegeben.
/// </summary>
/// <remarks>Z98</remarks>
[ProtoEnum(Name = nameof(FernsteuerbarkeitStatus) + "_" + nameof(LIEFERANT_FERNSTEUERBAR))]
[EnumMember(Value = "LIEFERANT_FERNSTEUERBAR")]
LIEFERANT_FERNSTEUERBAR
}
}
10 changes: 10 additions & 0 deletions BO4E/ENUM/Profilart.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,14 @@ public enum Profilart
/// <remarks>Z12</remarks>
[EnumMember(Value = "ART_LASTPROFIL")]
ART_LASTPROFIL,

/// <summary>Z04 Standardeinspeiseprofil</summary>
/// <remarks>Z04</remarks>
[EnumMember(Value = "ART_STANDARDEINSPEISEPROFIL")]
ART_STANDARDEINSPEISEPROFIL,

/// <summary>Z05 tagesparameterabhängiges Einspeiseprofil</summary>
/// <remarks>Z05</remarks>
[EnumMember(Value = "ART_TAGESPARAMETERABHAENGIGES_EINSPEISEPROFIL")]
ART_TAGESPARAMETERABHAENGIGES_EINSPEISEPROFIL
}
34 changes: 34 additions & 0 deletions BO4E/protobuf-files/bo4e.proto
Original file line number Diff line number Diff line change
Expand Up @@ -2067,3 +2067,37 @@ message Zustaendigkeit {
string Abteilung = 4;
string Themengebiet = 5;
}

enum EEGVermarktungsform {
option (.protobuf_net.enumopt).namespace = "BO4E.ENUM";
AUSFALLVERGUETUNG = 0;
MARKTPRAEMIE = 1;
SONSTIGE = 2;
KWKG_VERGUETUNG = 3;
}

enum FernsteuerbarkeitStatus {
option (.protobuf_net.enumopt).namespace = "BO4E.ENUM";
NICHT_FERNSTEUERBAR = 0;
TECHNISCH_FERNSTEUERBAR = 1;
LIEFERANT_FERNSTEUERBAR = 2;
}

message Einspeisung {
option (.protobuf_net.msgopt).namespace = "BO4E.BO";
string MarktlokationsId = 10;
Geschaeftspartnerrolle Verguetungsempfaenger = 11;
EEGVermarktungsform EEGVermarktungsform = 12;
Landescode Landescode = 13;
FernsteuerbarkeitStatus FernsteuerbarkeitStatus = 14;
}

enum Profilart {
option (.protobuf_net.enumopt).namespace = "BO4E.ENUM";
option (.protobuf_net.enumopt).name = "Profilart";
ART_STANDARDLASTPROFIL = 0; // Z02
ART_TAGESPARAMETERABHAENGIGES_LASTPROFIL = 1; // Z03
ART_LASTPROFIL = 2; // Z12
ART_STANDARDEINSPEISEPROFIL = 3; // Z04
ART_TAGESPARAMETERABHAENGIGES_EINSPEISEPROFIL = 4; // Z05
}

0 comments on commit 27673fd

Please sign in to comment.