Documentation ¶
Index ¶
- func RechnungStructLevelValidation(sl validator.StructLevel)
- func RechnungStructLevelValidationGesamtBrutto(sl validator.StructLevel)
- func RechnungStructLevelValidationGesamtNetto(sl validator.StructLevel)
- func RechnungStructLevelValidationGesamtSteuer(sl validator.StructLevel)
- func RechnungStructLevelValidationZuZahlen(sl validator.StructLevel)
- type BusinessObject
- type BusinessObjectSlice
- type Energiemenge
- type Geschaeftsobjekt
- type Geschaeftspartner
- type Lastgang
- type Marktteilnehmer
- type Messlokation
- type Netznutzungsrechnung
- type Rechnung
- type Vertrag
- type Zaehler
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RechnungStructLevelValidation ¶ added in v0.0.9
func RechnungStructLevelValidation(sl validator.StructLevel)
RechnungStructLevelValidation combines all the single validators
func RechnungStructLevelValidationGesamtBrutto ¶ added in v0.0.9
func RechnungStructLevelValidationGesamtBrutto(sl validator.StructLevel)
RechnungStructLevelValidationGesamtBrutto verifies that the sum of all Rechnungsposition. equals the Rechnung.GesamtBrutto
func RechnungStructLevelValidationGesamtNetto ¶ added in v0.0.9
func RechnungStructLevelValidationGesamtNetto(sl validator.StructLevel)
RechnungStructLevelValidationGesamtNetto verifies that the sum of all Rechnungsposition.Netto equals the Rechnung.GesamtNetto
func RechnungStructLevelValidationGesamtSteuer ¶ added in v0.0.9
func RechnungStructLevelValidationGesamtSteuer(sl validator.StructLevel)
RechnungStructLevelValidationGesamtSteuer verifies that the sum of all Rechnungsposition.Netto equals the Rechnung.GesamtSteuer
func RechnungStructLevelValidationZuZahlen ¶ added in v0.0.9
func RechnungStructLevelValidationZuZahlen(sl validator.StructLevel)
RechnungStructLevelValidationZuZahlen verifies that Rechnung.Zuzahlen = Rechnung.GesamtBrutto - Rechnung.Vorausgezahlt - Rechnung.RabattBrutto
Types ¶
type BusinessObject ¶
type BusinessObject interface { // GetBoTyp returns the Geschaeftsobjekt.BoTyp GetBoTyp() botyp.BOTyp // GetVersionStruktur returns the Geschaeftsobjekt.VersionStruktur GetVersionStruktur() string }
BusinessObject is the interface that all Business Objects implement.
func NewBusinessObject ¶ added in v0.0.13
func NewBusinessObject(typ botyp.BOTyp) BusinessObject
NewBusinessObject creates an empty BusinessObject based on the provided type; Returns nil if the type is not implemented.
type BusinessObjectSlice ¶ added in v0.0.13
type BusinessObjectSlice []BusinessObject
BusinessObjectSlice is a slice that contains 0-n BusinessObject s
func (*BusinessObjectSlice) UnmarshalJSON ¶ added in v0.0.13
func (boSlice *BusinessObjectSlice) UnmarshalJSON(data []byte) error
type Energiemenge ¶ added in v0.0.4
type Energiemenge struct { Geschaeftsobjekt LokationsId string `json:"lokationsId" example:"DE0123456789012345678901234567890" validate:"alphanum,required,min=11,max=33"` // ID of the location (either a LokationsTyp MALO ID (11 digits) or a LokationsTyp MELO ID (33 alphanum)) LokationsTyp lokationstyp.Lokationstyp `json:"lokationsTyp" example:"MELO" validate:"required"` // type of the location in LokationsId Verbrauch []com.Verbrauch `json:"energieverbrauch" validate:"required,min=1"` // consumption data (see Verbrauch) }
Energiemenge contains information about consumption at a location
type Geschaeftsobjekt ¶ added in v0.0.13
type Geschaeftsobjekt struct { BoTyp botyp.BOTyp `json:"boTyp" validate:"required"` // type of business object, may be used as discriminator VersionStruktur string `json:"versionStruktur" validate:"required"` // version of BO4E used ExterneReferenzen []com.ExterneReferenz `json:"externeReferenzen"` // external references of this object in various systems }
Geschaeftsobjekt is the common base struct of all Business Objects
func (Geschaeftsobjekt) GetBoTyp ¶ added in v0.0.13
func (gob Geschaeftsobjekt) GetBoTyp() botyp.BOTyp
func (Geschaeftsobjekt) GetVersionStruktur ¶ added in v0.0.13
func (gob Geschaeftsobjekt) GetVersionStruktur() string
type Geschaeftspartner ¶ added in v0.0.5
type Geschaeftspartner struct { Geschaeftsobjekt Anrede anrede.Anrede `json:"anrede"` // Die Anrede für den GePa, Z.B. HERR Name1 string `json:"name1" validate:"required" example:"Yellow Strom GmbH,Hagen"` // Erster Teil des Namens. Hier kann der Firmenname oder bei Privatpersonen beispielsweise der Nachname dargestellt werden. Name2 string `json:"name2,omitempty" example:"'Bereich Süd','Nina'"` // Zweiter Teil des Namens. Hier kann der eine Erweiterung zum Firmennamen oder bei Privatpersonen beispielsweise der Vorname dargestellt werden. Name3 string `json:"name3,omitempty" example:"Afrika,Sängerin"` // Hier können weitere Ergänzungen zum Firmennamen oder bei Privatpersonen Zusätze zum Namen dargestellt werden Gewerbekennzeichnung bool `json:"gewerbekennzeichnung" validate:"omitempty,required"` // Kennzeichnung, ob es sich um einen Gewerbe/Unternehmen (true) oder eine Privatperson handelt (false) HrNummer string `json:"hrnummer,omitempty"` // Handelsregisternummer des Geschäftspartners Amtsgericht string `json:"amtsgericht,omitempty"` // Amtsgericht bzw Handelsregistergericht, das die Handelsregisternummer herausgegeben hat Kontaktweg kontaktart.Kontaktart `json:"kontaktweg,omitempty"` // Bevorzugter Kontaktweg des Geschäftspartners. UmsatzsteuerId string `json:"umsatzsteuerId,omitempty" example:"DE 813281825"` // Die Steuer-ID des Geschäftspartners GlaeubigerId string `json:"glaeubigerId,omitempty" example:"DE 47116789"` // Die Gläubiger-ID welche im Zahlungsverkehr verwendet wird EMailAdresse string `json:"eMailAdresse,omitempty" validate:"omitempty,email" example:"info@mp-energie.de"` // E-Mail-Adresse des Ansprechpartners Website string `json:"website,omitempty" validate:"omitempty,url" example:"https://www.mp-energie.de"` // Internetseite des Marktpartners Geschaeftspartnerrollen []geschaeftspartnerrolle.Geschaeftspartnerrolle `json:"geschaeftspartnerrollen" validate:"required,min=1"` // Rollen die der Geschäftspartner hat Partneradresse com.Adresse `json:"partneradresse" validate:"required"` // Adresse des Geschäftspartners, an der sich der Hauptsitz befindet. }
Geschaeftspartner models business partners, both companies and private persons.
type Lastgang ¶ added in v0.0.4
type Lastgang struct { Geschaeftsobjekt Sparte sparte.Sparte `json:"sparte" example:"STROM" validate:"required"` // Angabe, ob es sich um einen GAS- oder STROM-Lastgang handelt Version string `json:"version,omitempty" validate:"alphanum"` // Versionsnummer des Lastgangs LokationsId string `json:"lokationsId" example:"DE0123456789012345678901234567890" validate:"alphanum,required,min=11,max=33"` // ID of the location (either a LokationsTyp MALO ID (11 digits) or a LokationsTyp MELO ID (33 alphanum)) LokationsTyp lokationstyp.Lokationstyp `json:"lokationsTyp" example:"MELO" validate:"required"` // type of the location in LokationsId Messgroesse mengeneinheit.Mengeneinheit `json:"einheit,omitempty" validate:"required" example:"KWH"` // Definition der gemessenen Größe anhand ihrer Einheit. Obiskennzahl string `json:"obiskennzahl,omitempty" example:"1-0:1.8.1"` // Genormte OBIS-Kennzahl zur Kennzeichnung der Messgröße Werte []com.Zeitreihenwert `json:"energieverbrauch" validate:"required,min=1"` // Die im Lastgang enthaltenen Messwerte. }
Lastgang ist ein Modell zur Abbildung eines Lastganges. In diesem Modell werden die Messwerte mit einem vollständigen Zeitintervall angegeben und es bietet daher eine hohe Flexibilität in der Übertragung jeglicher zeitlich veränderlicher Messgrössen.
type Marktteilnehmer ¶ added in v0.0.13
type Marktteilnehmer struct { Geschaeftspartner Marktrolle marktrolle.Marktrolle `json:"marktrolle" validate:"required"` // Gibt im Klartext die Bezeichnung der Marktrolle an. Details siehe ENUM Marktrolle Rollencodenummer string `json:"rollencodenummer" validate:"required,numeric,min=13,max=13"` // Gibt die Codenummer der Marktrolle an (13 digits) Rollencodetyp rollencodetyp.Rollencodetyp `json:"rollencodetyp" validate:"required"` // Gibt den Typ des Codes an/Vergabestelle. Details siehe ENUM Rollencodetyp Makoadresse string `json:"makoadresse,omitempty" validate:"omitempty"` // Die 1:1-Kommunikationsadresse des Marktteilnehmers. Diese wird in der Marktkommunikation verwendet. }
Marktteilnehmer models participants of the German energy market
type Messlokation ¶
type Messlokation struct { Geschaeftsobjekt MesslokationsId string `json:"messlokationsId" example:"DE0123456789012345678901234567890" validate:"alphanum,required,len=33"` // ID of the metering location Sparte sparte.Sparte `json:"sparte" validate:"required"` // division NetzebeneMessung netzebene.Netzebene `json:"netzebeneMessung,omitempty"` // grid level of measurement MessgebietNr string `json:"messgebietNr,omitempty"` // number of the measurement area in ene't database Gerate []com.Hardware `json:"geraete,omitempty"` // list of devices Messdienstleistung *com.Dienstleistung `json:"messdienstleistung,omitempty"` // list of metering services GrundzustaendigerMsbCodeNr string `json:"grundzustaendigerMSBCodeNr,omitempty" validate:"omitempty,numeric"` // Code number of the "grundzuständige Messstellenbetreiber", responsitble for this MeLo GrundzustaendigerMsbImCodeNr string `json:"GrundzustaendigerMsbImCodeNr,omitempty" validate:"omitempty,numeric"` // Code number of the "grundzuständige Messsstellenbetreiber", responsible for intelligent meters at this MeLo Messlokationszaehler []Zaehler `json:"messlokationszaehler,omitempty"` // meters associated to this Messlokation // only one of the following three optional address attributes can be set Messadresse *com.Adresse `json:"messadresse" validate:"required_without_all=Geoadresse KatasterInformation"` // address of the melo Geoadresse *com.Geokoordinaten `json:"geoadresse" validate:"required_without_all=Messadresse KatasterInformation"` // gps coordinates Katasterinformation *com.Katasteradresse `json:"katasterinformation" validate:"required_without_all=Messadresse Geoadresse"` // cadastre address }
Messlokation contains information about a metering location aka "MeLo"
type Netznutzungsrechnung ¶ added in v0.0.12
type Netznutzungsrechnung struct { Rechnung Sparte sparte.Sparte `json:"sparte" validate:"required"` // Sparte (STROM, GAS ...) für die die Rechnung ausgestellt ist Absendercodenummer string `json:"absendercodenummer" validate:"required,numeric,min=13,max=13"` // Absendercodenummer ist die Rollencodenummer des Absenders (Rechnung.Rechnungsersteller). Über die Nummer können weitere Informationen zum Marktteilnehmer ermittelt werden. Empfaengercodenummer string `json:"empfaengercodenummer" validate:"required,numeric,min=13,max=13"` // Absendercodenummer ist die Rollencodenummer des Empfängers (Rechnung.Rechnungsempfaenger). Über die Nummer können weitere Informationen zum Marktteilnehmer ermittelt werden. Nnrechnungsart nnrechnungsart.NNRechnungsart `json:"nnrechnungsart" validate:"required"` // Aus der INVOIC entnommen Nnrechnungstyp nnrechnungstyp.NNRechnungstyp `json:"nnrechnungstyp" validate:"required"` // Aus der INVOIC entnommen Original bool `json:"original"` // Original ist ein Kennzeichen, ob es sich um ein Original (true) oder eine Kopie handelt (false). Simuliert bool `json:"simuliert"` // Simuliert ist ein Kennzeichen, ob es sich um eine simulierte Rechnung, z.B. zur Rechnungsprüfung handelt. LokationsId string `json:"lokationsId,omitempty" validate:"omitempty,alphanum,max=33,min=11"` // LokationsId ist die Markt- oder Messlokations-Identifikation (als Malo/Melo-Id) der Lokation, auf die sich die Rechnung bezieht. }
Netznutzungsrechnung models grid usage invoices
type Rechnung ¶ added in v0.0.9
type Rechnung struct { Geschaeftsobjekt Rechnungstitel string `json:"rechnungstitel"` // Bezeichnung für die vorliegende Rechnung. Rechnungsstatus rechnungsstatus.Rechnungsstatus `json:"rechnungsstatus"` // Status der Rechnung zur Kennzeichnung des Bearbeitungsstandes Storno bool `json:"storno" validate:"required"` // Kennzeichnung, ob es sich um eine Stornorechnung handelt. Im Falle "true" findet sich im Attribut "originalrechnungsnummer" die Nummer der Originalrechnung Rechnungsnummer string `json:"rechnungsnummer" validate:"required"` // Eine im Verwendungskontext eindeutige Nummer für die Rechnung Rechnungsdatum time.Time `json:"rechnungsdatum" validate:"required"` // Ausstellungsdatum der Rechnung Faelligkeitsdatum time.Time `json:"faelligkeitsdatum" validate:"required"` // Zu diesem Datum ist die Zahlung fällig Rechnungstyp rechnungstyp.Rechnungstyp `json:"rechnungstyp" validate:"required"` // Ein kontextbezogener Rechnungstyp OriginalRechnungsnummer string `json:"originalRechnungsnummer" validate:"required_if=Storno true"` // Im Falle einer Stornorechnung (Storno = true) steht hier die Rechnungsnummer der stornierten Rechnung Rechnungsperiode com.Zeitraum `json:"rechnungsperiode" validate:"required"` // Der Zeitraum der zugrunde liegenden Lieferung zur Rechnung Rechnungsersteller Geschaeftspartner `json:"rechnungsersteller" validate:"required"` // Der Aussteller der Rechnung Rechnungsempfaenger Geschaeftspartner `json:"rechnungsempfaenger" validate:"required"` // Der Empfänger der Rechnung GesamtNetto com.Betrag `json:"gesamtnetto" validate:"required"` // Die Summe der Nettobeträge der Rechnungsteile GesamtSteuer com.Betrag `json:"gesamtsteuer" validate:"required"` // Die Summe der Steuerbeträge der Rechnungsteile GesamtBrutto com.Betrag `json:"gesamtbrutto" validate:"required"` // Die Summe aus Netto- und Steuerbeträge Vorausgezahlt *com.Betrag `json:"vorausgezahlt"` // Die Summe evtl. vorausbezahlter Beträge, z.B. Abschläge. Angabe als Bruttowert. RabattBrutto *com.Betrag `json:"rabattBrutto"` // Gesamtrabatt auf den Bruttobetrag Zuzahlen com.Betrag `json:"zuzahlen" validate:"required"` // Der zu zahlende Betrag, der sich aus (gesamtbrutto - vorausbezahlt - rabattBrutto) ergibt Steuerbetraege []com.Steuerbetrag `json:"steuerbetraege"` // Eine Liste mit Steuerbeträgen pro Steuerkennzeichen/Steuersatz. Die Summe dieser Beträge ergibt den Wert für GesamtSteuer Rechnungspositionen []com.Rechnungsposition `json:"rechnungspositionen" validate:"required,min=1"` // Die Rechnungspositionen }
Rechnung ist ein Modell für die Abbildung von Rechnungen im Kontext der Energiewirtschaft. Ausgehend von diesem Basismodell werden weitere spezifische Formen abgeleitet.
type Vertrag ¶ added in v0.0.5
type Vertrag struct { Geschaeftsobjekt Vertragsnummer string `json:"vertragsnummer" validate:"alphanum,required"` // Eine im Verwendungskontext eindeutige Nummer für den Vertrag Beschreibung string `json:"beschreibung,omitempty"` // Beschreibung zum Vertrag Vertragsstatus vertragsstatus.Vertragsstatus `json:"vertragsstatus" validate:"required"` // Gibt den Status des Vertrags an Vertragsart vertragsart.Vertragsart `json:"vertragsart" validate:"required"` // Hier ist festgelegt, um welche Art von Vertrag es sich handelt. Z.B. Netznutzungvertrag. Sparte sparte.Sparte `json:"sparte" validate:"required"` // Unterscheidungsmöglichkeiten für die Sparte Vertragsbeginn time.Time `json:"startdatum" validate:"required"` // inclusive start Vertragsende time.Time `json:"enddatum" validate:"required,gtfield=Vertragsbeginn"` // exclusive end Vertragspartner1 Geschaeftspartner `json:"vertragspartner1" validate:"required"` // Der "erstgenannte" Vertragspartner. In der Regel der Aussteller des Vertrags. Beispiel: "Vertrag zwischen Vertragspartner 1 ..." Vertragspartner2 Geschaeftspartner `json:"vertragspartner2" validate:"required"` // Der "zweitgenannte" Vertragspartner. In der Regel der Empfänger des Vertrags. Beispiel "Vertrag zwischen Vertragspartner 1 und Vertragspartner 2" UnterzeichnerVp1 []com.Unterschrift `json:"unterzeichnervp1,omitempty"` // Unterzeichner des Vertragspartner1 UnterzeichnerVp2 []com.Unterschrift `json:"unterzeichnervp2,omitempty"` // Unterzeichner des Vertragspartner2 Vertragskonditionen *com.Vertragskonditionen `json:"vertragskonditionen,omitempty"` // Festlegungen zu Laufzeiten und Kündigungsfristen Vertragsteile []com.Vertragsteil `json:"vertragsteile" validate:"required,min=1"` // Der Vertragsteil wird dazu verwendet, eine vertragliche Leistung in Bezug zu einer Lokation (Markt- oder Messlokation) festzulegen. }
Vertrag ist ein Modell für die Abbildung von Vertragsbeziehungen. Das Objekt dient dazu, alle Arten von Verträgen, die in der Energiewirtschaft Verwendung finden, abzubilden.
type Zaehler ¶ added in v0.0.7
type Zaehler struct { Geschaeftsobjekt Zaehlernummer string `json:"zahlernummer" validate:"required,alphanum"` // Nummerierung des Zaehlers, vergeben durch den Messstellenbetreiber Sparte sparte.Sparte `json:"sparte" validate:"required"` // Unterscheidungsmöglichkeiten für die Sparte Zaehlerauspraegung zaehlerauspraegung.Zaehlerauspraegung `json:"zaehlerauspraegung" validate:"required"` // Spezifikation die Richtung des Zählers betreffend Zaehlertyp zaehlertyp.Zaehlertyp `json:"zaehlertyp" validate:"required"` // Typisierung des Zählers Tarifart tarifart.Tarifart `json:"tarifart" validate:"required"` // Spezifikation bezüglich unterstützter Tarifarten Zaehlerkonstante decimal.NullDecimal `json:"zaehlerkonstante,omitempty"` // Zählerkonstante auf dem Zähler EichungBis time.Time `json:"eichungBis,omitempty"` // Bis zu diesem Datum ist der Zähler geeicht LetzteEichung time.Time `json:"letzteEichung,omitempty"` // Zu diesem Datum fand die letzte Eichprüfung des Zählers statt Zaehlwerke []com.Zaehlwerk `json:"zaehlwerke" validate:"required,min=1"` // Die Zählwerke des Zählers Zaehlerhersteller *Geschaeftspartner `json:"zaehlerhersteller,omitempty"` // Der Hersteller des Zählers }
Zaehler ist ein Modell für die Abbildung der Informationen zu einem Zähler