diff --git a/BO4E/BO/BusinessObject.cs b/BO4E/BO/BusinessObject.cs index 9ad28fd5..9b7b3988 100644 --- a/BO4E/BO/BusinessObject.cs +++ b/BO4E/BO/BusinessObject.cs @@ -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 { /// diff --git a/BO4E/BO/Einspeisung.cs b/BO4E/BO/Einspeisung.cs new file mode 100644 index 00000000..728ea3b6 --- /dev/null +++ b/BO4E/BO/Einspeisung.cs @@ -0,0 +1,66 @@ +using System.Text.Json.Serialization; + +using BO4E.ENUM; +using BO4E.meta; + +using Newtonsoft.Json; + +using ProtoBuf; + +namespace BO4E.BO; + +/// +/// Einspeisung BO +/// +[ProtoContract] +[NonOfficial(NonOfficialCategory.MISSING)] +public class Einspeisung : BusinessObject +{ + /// + /// Für welche Marktlokation gelten diese Einspeisedaten + /// + [JsonProperty(PropertyName = "marktlokationsId", Required = Required.Default, Order = 10)] + [JsonPropertyName("marktlokationsId")] + [JsonPropertyOrder(10)] + [NonOfficial(NonOfficialCategory.MISSING)] + [ProtoMember(10)] + [BoKey] + public string? MarktlokationsId { get; set; } + /// + /// Empfänger der Vergütung zur Einspeisung + /// + [JsonProperty(PropertyName = "verguetungsempfaenger", Required = Required.Default, Order = 11)] + [JsonPropertyName("verguetungsempfaenger")] + [JsonPropertyOrder(11)] + [NonOfficial(NonOfficialCategory.MISSING)] + [ProtoMember(11)] + public Geschaeftspartnerrolle? Verguetungsempfaenger { get; set; } + + /// + /// Vermarktungsformen gemäß dem Erneuerbare-Energien-Gesetz (EEG). + /// + [JsonProperty(PropertyName = "eegVermarktungsform", Required = Required.Default, Order = 12)] + [JsonPropertyName("eegVermarktungsform")] + [JsonPropertyOrder(12)] + [NonOfficial(NonOfficialCategory.MISSING)] + [ProtoMember(12)] + public EEGVermarktungsform? EEGVermarktungsform { get; set; } + + /// Land der Förderung, Details + [JsonProperty(PropertyName = "landescode", Required = Required.Default, Order = 13)] + [JsonPropertyName("landescode")] + [ProtoMember(13)] + [JsonPropertyOrder(13)] + [NonOfficial(NonOfficialCategory.MISSING)] + public Landescode? Landescode { get; set; } + + /// + /// Status der Fernsteuerbarkeit einer Marktlokation + /// + [JsonProperty(PropertyName = "fernsteuerbarkeitStatus", Required = Required.Default, Order = 14)] + [JsonPropertyName("fernsteuerbarkeitStatus")] + [JsonPropertyOrder(14)] + [NonOfficial(NonOfficialCategory.MISSING)] + [ProtoMember(12)] + public FernsteuerbarkeitStatus? FernsteuerbarkeitStatus { get; set; } +} \ No newline at end of file diff --git a/BO4E/ENUM/EEGVermarktungsform.cs b/BO4E/ENUM/EEGVermarktungsform.cs new file mode 100644 index 00000000..7c0ba576 --- /dev/null +++ b/BO4E/ENUM/EEGVermarktungsform.cs @@ -0,0 +1,37 @@ +using System.Runtime.Serialization; + +using ProtoBuf; + +namespace BO4E.ENUM +{ + /// + /// Verschiedenen Vermarktungsformen gemäß dem Erneuerbare-Energien-Gesetz (EEG). + /// + [ProtoContract] + public enum EEGVermarktungsform + { + /// Ausfallvergütung für den Fall, dass andere Vermarktungsmethoden nicht verfügbar sind + /// Z90 + [ProtoEnum(Name = nameof(EEGVermarktungsform) + "_" + nameof(AUSFALLVERGUETUNG))] + [EnumMember(Value = "AUSFALLVERGUETUNG")] + AUSFALLVERGUETUNG, + + /// Marktprämie für die geförderte Direktvermarktung + /// Z91 + [ProtoEnum(Name = nameof(EEGVermarktungsform) + "_" + nameof(MARKTPRAEMIE))] + [EnumMember(Value = "MARKTPRAEMIE")] + MARKTPRAEMIE, + + /// Sonstige Vermarktungsformen ohne gesetzliche Vergütung + /// Z92 + [ProtoEnum(Name = nameof(EEGVermarktungsform) + "_" + nameof(SONSTIGE))] + [EnumMember(Value = "SONSTIGE")] + SONSTIGE, + + /// Vergütung nach dem Kraft-Wärme-Kopplungsgesetz (KWKG) + /// Z94 + [ProtoEnum(Name = nameof(EEGVermarktungsform) + "_" + nameof(KWKG_VERGUETUNG))] + [EnumMember(Value = "KWKG_VERGUETUNG")] + KWKG_VERGUETUNG + } +} diff --git a/BO4E/ENUM/FernsteuerbarkeitStatus.cs b/BO4E/ENUM/FernsteuerbarkeitStatus.cs new file mode 100644 index 00000000..6a4a7631 --- /dev/null +++ b/BO4E/ENUM/FernsteuerbarkeitStatus.cs @@ -0,0 +1,40 @@ +using System.Runtime.Serialization; + +using ProtoBuf; + +namespace BO4E.ENUM +{ + /// + /// Status der Fernsteuerbarkeit einer Marktlokation gemäß den Vorgaben für die Direktvermarktung. + /// + [ProtoContract] + public enum FernsteuerbarkeitStatus + { + /// + /// 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. + /// + /// Z96 + [ProtoEnum(Name = nameof(FernsteuerbarkeitStatus) + "_" + nameof(NICHT_FERNSTEUERBAR))] + [EnumMember(Value = "NICHT_FERNSTEUERBAR")] + NICHT_FERNSTEUERBAR, + + /// + /// 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. + /// + /// Z97 + [ProtoEnum(Name = nameof(FernsteuerbarkeitStatus) + "_" + nameof(TECHNISCH_FERNSTEUERBAR))] + [EnumMember(Value = "TECHNISCH_FERNSTEUERBAR")] + TECHNISCH_FERNSTEUERBAR, + + /// + /// 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. + /// + /// Z98 + [ProtoEnum(Name = nameof(FernsteuerbarkeitStatus) + "_" + nameof(LIEFERANT_FERNSTEUERBAR))] + [EnumMember(Value = "LIEFERANT_FERNSTEUERBAR")] + LIEFERANT_FERNSTEUERBAR + } +} diff --git a/BO4E/ENUM/Profilart.cs b/BO4E/ENUM/Profilart.cs index 87190835..5e74c30b 100644 --- a/BO4E/ENUM/Profilart.cs +++ b/BO4E/ENUM/Profilart.cs @@ -22,4 +22,14 @@ public enum Profilart /// Z12 [EnumMember(Value = "ART_LASTPROFIL")] ART_LASTPROFIL, + + /// Z04 Standardeinspeiseprofil + /// Z04 + [EnumMember(Value = "ART_STANDARDEINSPEISEPROFIL")] + ART_STANDARDEINSPEISEPROFIL, + + /// Z05 tagesparameterabhängiges Einspeiseprofil + /// Z05 + [EnumMember(Value = "ART_TAGESPARAMETERABHAENGIGES_EINSPEISEPROFIL")] + ART_TAGESPARAMETERABHAENGIGES_EINSPEISEPROFIL } \ No newline at end of file diff --git a/BO4E/protobuf-files/bo4e.proto b/BO4E/protobuf-files/bo4e.proto index f3a0f239..6f16aa3b 100644 --- a/BO4E/protobuf-files/bo4e.proto +++ b/BO4E/protobuf-files/bo4e.proto @@ -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 +} \ No newline at end of file