Documentation ¶
Index ¶
- func EICFieldLevelValidation(fl validator.FieldLevel) bool
- func GetMaLoIdCheckSum(maloIdWithoutCheckSum string) int
- func MaloIdFieldLevelValidation(fl validator.FieldLevel) bool
- 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)
- func XorStructLevelMesslokationValidation(sl validator.StructLevel)
- func XorStructLevelValidation(sl validator.StructLevel)
- type Ansprechpartner
- type Bilanzierung
- type BusinessObject
- type BusinessObjectSlice
- type Energiemenge
- type Geschaeftsobjekt
- type Geschaeftspartner
- type Lastgang
- type Marktlokation
- type Marktteilnehmer
- type Messlokation
- type Netznutzungsrechnung
- type Preisblatt
- type Rechnung
- type Vertrag
- type Zaehler
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func EICFieldLevelValidation ¶ added in v0.0.21
func EICFieldLevelValidation(fl validator.FieldLevel) bool
EICFieldLevelValidation ensures that the string stored in the annotated/tagged field is a valid EIC code Therefore it has to obey the "Bildungsvorschrift" according to https://bdew-codes.de/Content/Files/EIC/Awh_20171218_EIC-Vergabe_V1-0.pdf section 2.2.1
func GetMaLoIdCheckSum ¶ added in v0.0.33
GetMaLoIdCheckSum returns the checksum (11th character of the malo ID) that matches the first ten characters long provided in maloIdWithoutCheckSum. This is going to crash if the length of the maloIdWithoutCheckSum is <10
func MaloIdFieldLevelValidation ¶ added in v0.0.18
func MaloIdFieldLevelValidation(fl validator.FieldLevel) bool
MaloIdFieldLevelValidation validates the Marktlokationsid as specified by the BDEW https://bdew-codes.de/Content/Files/MaLo/2017-04-28-BDEW-Anwendungshilfe-MaLo-ID_Version1.0_FINAL.PDF
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
func XorStructLevelMesslokationValidation ¶ added in v0.0.18
func XorStructLevelMesslokationValidation(sl validator.StructLevel)
XorStructLevelMesslokationValidation ensures that only one of the possible address types is given
func XorStructLevelValidation ¶ added in v0.0.18
func XorStructLevelValidation(sl validator.StructLevel)
XorStructLevelValidation ensures that only one of the possible address types is given
Types ¶
type Ansprechpartner ¶ added in v0.0.21
type Ansprechpartner struct { Geschaeftsobjekt Anrede anrede.Anrede `json:"anrede,omitempty"` // Anrede ist die mögliche Anrede des Ansprechpartners // IndividuelleAnrede ermöglicht im Falle einer nicht standardisierten Anrede (7=anrede.INDIVIDUELL) eine frei definierbare Anrede vorzugeben. IndividuelleAnrede string `` /* 135-byte string literal not displayed */ Titel titel.Titel `json:"titel,omitempty"` // Titel ist ein möglicher Titel des Ansprechpartners Vorname string `json:"vorname,omitempty"` // Vorname ist der Vorname des Ansprechpartners Nachname string `json:"nachname,omitempty" validate:"required"` // Nachname ist der Familienname des Ansprechpartners Kommentar string `json:"kommentar,omitempty"` // Kommentar sind zusätzlich Freitextinformationen zum Ansprechpartner Geschaeftspartner Geschaeftspartner `json:"geschaeftspartner,omitempty" validate:"required"` // Geschaeftspartner ist der Geschäftspartner für den der Ansprechpartner modelliert wird Adresse *com.Adresse `json:"adresse,omitempty"` // Adresse des Ansprechpartners, falls diese von der Adresse des Geschaeftspartner s abweicht Rufnummern []com.Rufnummer `json:"rufnummer,omitempty" validate:"omitempty,dive"` // Rufnummern ist eine Liste der Telefonnummern, unter denen der Ansprechpartner erreichbar ist Zustaendigkeiten []com.Zustaendigkeit `json:"zustaendigkeit,omitempty" validate:"omitempty,dive"` // Zustaendigkeiten ist eine Liste der Abteilungen und Zuständigkeiten des Ansprechpartner }
Ansprechpartner sind ansprechbare Geschäftspartner (Personen)
type Bilanzierung ¶ added in v0.0.21
type Bilanzierung struct { Geschaeftsobjekt Lastprofile []com.Lastprofil `json:"lastprofile,omitempty"` // Lastprofile ist eine Liste der verwendeten Lastprofile (SLP, SLP/TLP, ALP etc.) Bilanzierungsbeginn time.Time `json:"bilanzierungsbeginn,omitempty" validate:"omitempty,ltefield=Bilanzierungsende"` // Bilanzierungsbeginn ist der inklusive Beginn der Bilanzierung Bilanzierungsende time.Time `json:"bilanzierungsende,omitempty" validate:"omitempty,gtefield=Bilanzierungsbeginn"` // Bilanzierungsende ist das exklusive Ende der Bilanzierung Bilanzkreis string `json:"bilanzkreis,omitempty" validate:"omitempty,len=16,eic"` // Bilanzkreis ist der EIC-Code des Bilanzkreises Jahresverbrauchsprognose *com.Menge `json:"jahresverbrauchsprognose,omitempty"` // Jahresverbrauchsprognose ist die Jahresverbrauchsprognose Kundenwert *com.Menge `json:"kundenwert,omitempty"` // Kundenwert ist der Kundenwert // Verbrauchsaufteilung beschreibt, welcher Anteil im SLP- bzw. TLP-Profil steckt // 1. [Gemessene Energiemenge der OBIS "nicht Schwachlast"] * [Verbrauchsaufteilung in % / 100%] = [zu verlagernde Energiemenge] // 2. [Gemessene Energiemenge der OBIS "Schwachlast"] - [zu verlagernde Energiemenge] = [Ermittelte Energiemenge für Schwachlast] // 3. [Gemessene Energiemenge der OBIS "nicht Schwachlast"] + [zu verlagernde Energiemenge] = [Ermittelte Energiemenge für nicht Schwachlast] Verbrauchsaufteilung decimal.NullDecimal `json:"verbrauchsaufteilung,omitempty"` Zeitreihentyp zeitreihentyp.Zeitreihentyp `json:"zeitreihentyp,omitempty"` // Zeitreihentyp beschreibt den verwendeten Zeitreihentyp (SLS, TLS...) Aggregationsverantwortung aggregationsverantwortung.Aggregationsverantwortung `json:"aggregationsverantwortung,omitempty"` // Aggregationsverantwortung benennt, bei wem die Aggregationsverantwortung liegt Prognosegrundlage prognosegrundlage.Prognosegrundlage `json:"prognosegrundlage,omitempty"` // Die Prognosegrundlage beschreibt die Prognosegrundlage DetailsPrognosegrundlage []profiltyp.Profiltyp `json:"detailsPrognosegrundlage,omitempty"` // ? WahlrechtPrognosegrundlage *bool `json:"wahlrechtPrognosegrundlage,omitempty"` // WahlrechtPrognosegrundlage ist true, falls der Lieferant das Wahlrecht hat Fallgruppenzuordnung fallgruppenzuordnung.Fallgruppenzuordnung `json:"fallgruppenzuordnung,omitempty"` // Fallgruppenzuordnung (für Gas RLM) Prioritaet *int `json:"prioritaet,omitempty"` // Prioritaet ist die Priorität des Bilanzkreises für Gas MarktlokationsId string `json:"marktlokationsId,omitempty" validate:"omitempty,maloid"` // MarktlokationsId referenziert eine Marktlokation }
Bilanzierung is a business object used for balancing. Note that this is not official BO4E standard (yet)!
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,omitempty" example:"DE0123456789012345678901234567890" validate:"alphanum,required,min=11,max=33"` // LokationsId is the ID of the location (either a LokationsTyp MALO ID (11 digits) or a LokationsTyp MELO ID (33 alphanum)) LokationsTyp lokationstyp.Lokationstyp `json:"lokationsTyp,omitempty" example:"MELO" validate:"required"` // LokationsTyp is the type of the location in LokationsId Verbrauch []com.Verbrauch `json:"energieverbrauch,omitempty" validate:"required,min=1"` // Verbrauch are consumption data }
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"` // BoTyp is the type of business object, may be used as discriminator VersionStruktur string `json:"versionStruktur" validate:"required"` // VersionStruktur is the version of BO4E used ExterneReferenzen []com.ExterneReferenz `json:"externeReferenzen,omitempty"` // ExterneReferenzen are 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,omitempty"` // Die Anrede für den Geschaeftspartner, Z.B. HERR Name1 string `json:"name1,omitempty" validate:"required" example:"Yellow Strom GmbH,Hagen"` // Name1 ist der erste 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'"` // Name2 ist der zweite 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"` // Name3 enthält weitere Ergänzungen zum Firmennamen oder bei Privatpersonen Zusätze zum Namen dargestellt werden Gewerbekennzeichnung bool `json:"gewerbekennzeichnung" validate:"omitempty,required"` // Gewerbekennzeichnung markiert, ob es sich um einen Gewerbe/Unternehmen (true) oder eine Privatperson handelt (false) HrNummer string `json:"hrnummer,omitempty"` // HrNummer ist die Handelsregisternummer des Geschäftspartners Amtsgericht string `json:"amtsgericht,omitempty"` // Amtsgericht bzw Handelsregistergericht, das die Handelsregisternummer herausgegeben hat Kontaktweg kontaktart.Kontaktart `json:"kontaktweg,omitempty"` // Kontaktweg ist der bevorzugte Kontaktweg des Geschäftspartners UmsatzsteuerId string `json:"umsatzsteuerId,omitempty" example:"DE 813281825"` // UmsatzsteuerId ist die Steuer-ID des Geschäftspartners GlaeubigerId string `json:"glaeubigerId,omitempty" example:"DE 47116789"` // GlaeubigerId ist die Gläubiger-ID, welche im Zahlungsverkehr verwendet wird EMailAdresse string `json:"eMailAdresse,omitempty" validate:"omitempty,email" example:"info@mp-energie.de"` // EMailAdresse ist die E-Mail-Adresse des Ansprechpartners Website string `json:"website,omitempty" validate:"omitempty,url" example:"https://www.mp-energie.de"` // Website ist die Internetseite des Marktpartners Geschaeftspartnerrollen []geschaeftspartnerrolle.Geschaeftspartnerrolle `json:"geschaeftspartnerrollen,omitempty" validate:"required,min=1"` // Geschaeftspartnerrollen sind die Rollen, die der Geschäftspartner hat Partneradresse *com.Adresse `json:"partneradresse,omitempty" validate:"required"` // Partneradresse ist die 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,omitempty" example:"STROM" validate:"required"` // Sparte ist eine Angabe, ob es sich um einen GAS- oder STROM-Lastgang handelt Version string `json:"version,omitempty" validate:"alphanum"` // Version ist die Versionsnummer des Lastgangs LokationsId string `json:"lokationsId,omitempty" example:"DE0123456789012345678901234567890" validate:"alphanum,required,min=11,max=33"` // LokationsId is the ID of the location (either a LokationsTyp MALO ID (11 digits) or a LokationsTyp MELO ID (33 alphanum)) LokationsTyp lokationstyp.Lokationstyp `json:"lokationsTyp,omitempty" example:"MELO" validate:"required"` // LokationsTyp is the type of the location in LokationsId Messgroesse mengeneinheit.Mengeneinheit `json:"einheit,omitempty" validate:"required" example:"KWH"` // Messgroesse ist die Definition der gemessenen Größe anhand ihrer Einheit. Obiskennzahl string `json:"obiskennzahl,omitempty" example:"1-0:1.8.1"` // Obiskennzahl ist die genormte OBIS-Kennzahl zur Kennzeichnung der Messgröße Werte []com.Zeitreihenwert `json:"energieverbrauch,omitempty" validate:"required,min=1"` // Werte sind 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 Marktlokation ¶ added in v0.0.18
type Marktlokation struct { Geschaeftsobjekt MarktlokationsId string `json:"marktlokationsId,omitempty" example:"12345678913" validate:"required,numeric,len=11,maloid"` // MarktlokationsId is the ID of the market location Sparte sparte.Sparte `json:"sparte,omitempty" validate:"required"` // Sparte describes the Division Energierichtung energierichtung.Energierichtung `json:"energierichtung,omitempty" validate:"required"` // Energierichtung describes whether energy is supplied out of or fed into the grid. Bilanzierungsmethode bilanzierungsmethode.Bilanzierungsmethode `json:"bilanzierungsmethode,omitempty" validate:"required"` // Bilanzierungsmethode is the accounting method Verbrauchsart verbrauchsart.Verbrauchsart `json:"verbrauchsart,omitempty"` // Verbrauchsart is the consumption type Unterbrechbar *bool `json:"unterbrechbar,omitempty"` // Unterbrechbar describes whether the supply is interruptible Netzebene netzebene.Netzebene `json:"netzebene,omitempty" validate:"required"` // Netzebene, in der der Bezug der Energie erfolgt. Bei Strom Spannungsebene der Lieferung, bei Gas Druckstufe. Netzbetreibercodenr string `json:"netzbetreibercodenr,omitempty" validate:"omitempty,numeric,len=13"` // Netzbetreibercodenr is the code number of the "Netzbetreiber" Gebiettyp gebiettyp.Gebiettyp `json:"gebiettyp,omitempty"` // Gebiettyp is the type of the "Netzgebiet" Netzgebietnr string `json:"netzgebietnr,omitempty"` // Netzgebietnr is the number of the "Netzgebiet" in the enet database Bilanzierungsgebiet string `json:"bilanzierungsgebiet,omitempty"` // Bilanzierungsgebiet, dem das Netzgebiet zugeordnet ist - im Falle eines Strom Netzes. Grundversorgercodenr string `json:"grundversorgercodenr,omitempty" validate:"omitempty,numeric,len=13"` // Grundversorgercodenr is the code number of the "Grundversorger" responsible for this market location Gasqualitaet gasqualitaet.Gasqualitaet `json:"gasqualitaet,omitempty"` // Gasqualitaet is the gas quality Endkunde *Geschaeftspartner `json:"endkunde,omitempty" validate:"-"` // Endkunde is the Geschaeftspartner who owns this market location // only one of the following three optional address attributes can be set Lokationsadresse *com.Adresse `json:"lokationsadresse,omitempty" validate:"required_without_all=Geoadresse Katasterinformation"` // Lokationsadresse is the address at which the energy supply or feed-in takes place Geoadresse *com.Geokoordinaten `json:"geoadresse,omitempty" validate:"required_without_all=Lokationsadresse Katasterinformation"` // Geoadresse are the gps coordinates Katasterinformation *com.Katasteradresse `json:"katasterinformation,omitempty" validate:"required_without_all=Lokationsadresse Geoadresse"` // Katasterinformation is the Cadastre address ZugehoerigeMesslokationen []com.Messlokationszuordnung `json:"zugehoerigemesslokationen,omitempty"` // ZugehoerigeMesslokationen is a list of MeLos belonging to this market location }
Marktlokation contains information about a market location aka "MaLo"
type Marktteilnehmer ¶ added in v0.0.13
type Marktteilnehmer struct { Geschaeftspartner Marktrolle marktrolle.Marktrolle `json:"marktrolle,omitempty" validate:"required"` // Marktrolle gibt im Klartext die Bezeichnung der Marktrolle an. Details siehe ENUM Marktrolle Rollencodenummer string `json:"rollencodenummer,omitempty" validate:"required,numeric,min=13,max=13"` // Rollencodenummer gibt die Codenummer der Marktrolle an (13 digits) Rollencodetyp rollencodetyp.Rollencodetyp `json:"rollencodetyp,omitempty" validate:"required"` // Rollencodetyp gibt den Typ des Codes an/Vergabestelle. Details siehe ENUM Rollencodetyp Makoadresse string `json:"makoadresse,omitempty" validate:"omitempty"` // Makoadresse ist 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,omitempty" example:"DE0123456789012345678901234567890" validate:"alphanum,required,len=33"` // MesslokationsId is the ID of the metering location Sparte sparte.Sparte `json:"sparte,omitempty" validate:"required"` // Sparte is the division NetzebeneMessung netzebene.Netzebene `json:"netzebeneMessung,omitempty"` // NetzebeneMessung is the grid level of measurement MessgebietNr string `json:"messgebietNr,omitempty"` // MessgebietNr is the number of the measurement area in ene't database Geraete []com.Hardware `json:"geraete,omitempty"` // Geraete is a list of devices Messdienstleistung *com.Dienstleistung `json:"messdienstleistung,omitempty"` // Messdienstleistung is a metering services GrundzustaendigerMsbCodeNr string `json:"grundzustaendigerMSBCodeNr,omitempty" validate:"omitempty,numeric,len=13"` // GrundzustaendigerMsbCodeNr is the code number of the "grundzuständige Messstellenbetreiber", responsitble for this MeLo GrundzustaendigerMsbImCodeNr string `json:"GrundzustaendigerMsbImCodeNr,omitempty" validate:"omitempty,numeric,len=13"` // GrundzustaendigerMsbImCodeNr si the code number of the "grundzuständige Messsstellenbetreiber", responsible for intelligent meters at this MeLo Messlokationszaehler []Zaehler `json:"messlokationszaehler,omitempty"` // Messlokationszaehler meters associated to this Messlokation // only one of the following three optional address attributes can be set Messadresse *com.Adresse `json:"messadresse,omitempty" validate:"required_without_all=Geoadresse Katasterinformation"` // Messadresse is a street address of the Messlokation Geoadresse *com.Geokoordinaten `json:"geoadresse,omitempty" validate:"required_without_all=Messadresse Katasterinformation"` // Geoadresse are gps coordinates of the Messlokation Katasterinformation *com.Katasteradresse `json:"katasterinformation,omitempty" validate:"required_without_all=Messadresse Geoadresse"` // Katasterinformation is a cadastre address of the Messlokation }
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,omitempty" validate:"required"` // Sparte (STROM, GAS ...) für die die Rechnung ausgestellt ist Absendercodenummer string `json:"absendercodenummer,omitempty" 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,omitempty" 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,omitempty" validate:"required"` // Nnrechnungsart ist aus der INVOIC entnommen Nnrechnungstyp nnrechnungstyp.NNRechnungstyp `json:"nnrechnungstyp,omitempty" validate:"required"` // Nnrechnungstyp ist 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 Preisblatt ¶ added in v0.0.34
type Preisblatt struct { Geschaeftsobjekt Bezeichnung string `json:"bezeichnung" validate:"required"` // Rechnungstitel ist die Bezeichnung für die vorliegende Rechnung. Sparte sparte.Sparte `json:"sparte,omitempty" validate:"required"` // Preisblatt gilt für angegebene Sparte. TODO Klärung dieses Feld zu entfernen, da Herausgeber, sowie Artikel bereits Spartenscharf sind Preisstatus preisstatus.Preisstatus `json:"preisstatus,omitempty" validate:"required"` // Merkmal, das anzeigt, ob es sich um vorläufige oder endgültige Preise handelt Herausgeber Marktteilnehmer `json:"herausgeber" validate:"required"` // Der Marktteilnehmer, der die Preise veröffentlicht hat. Details zum Marktteilnehmer Gueltigkeit com.Zeitraum `json:"gueltigkeit" validate:"required"` // Der Zeitraum für den der Preis festgelegt ist Preispositionen []com.Preisposition `json:"preispositionen" validate:"required"` // Die einzelnen Positionen, die mit dem Preisblatt abgerechnet werden können. Z.B. Arbeitspreis, Grundpreis etc }
Rechnung ist ein Modell für die Abbildung von Rechnungen im Kontext der Energiewirtschaft. Ausgehend von diesem Basismodell werden weitere spezifische Formen abgeleitet.
type Rechnung ¶ added in v0.0.9
type Rechnung struct { Geschaeftsobjekt Rechnungstitel string `json:"rechnungstitel,omitempty"` // Rechnungstitel ist die Bezeichnung für die vorliegende Rechnung. Rechnungsstatus rechnungsstatus.Rechnungsstatus `json:"rechnungsstatus,omitempty"` // Rechnungsstatus ist der Status der Rechnung zur Kennzeichnung des Bearbeitungsstandes Storno bool `json:"storno" validate:"required"` // Storno ist eine Kennzeichnung, ob es sich um eine Stornorechnung handelt. Im Falle "true" findet sich im Attribut "originalrechnungsnummer" die Nummer der Originalrechnung Rechnungsnummer string `json:"rechnungsnummer,omitempty" validate:"required"` // Rechnungsnummer ist eine im Verwendungskontext eindeutige Nummer für die Rechnung Rechnungsdatum time.Time `json:"rechnungsdatum,omitempty" validate:"required"` // Rechnungsdatum ist das Ausstellungsdatum der Rechnung Faelligkeitsdatum time.Time `json:"faelligkeitsdatum,omitempty" validate:"required"` // Faelligkeitsdatum ist das Datum, zu dem die Zahlung fällig ist Rechnungstyp rechnungstyp.Rechnungstyp `json:"rechnungstyp,omitempty" validate:"required"` // Rechnungstyp ist ein kontextbezogener Rechnungstyp OriginalRechnungsnummer string `json:"originalRechnungsnummer,omitempty" validate:"required_if=Storno true"` // OriginalRechnungsnummer: Im Falle einer Stornorechnung (Storno = true) steht hier die Rechnungsnummer der stornierten Rechnung Rechnungsperiode com.Zeitraum `json:"rechnungsperiode,omitempty" validate:"required"` // Rechnungsperiode ist der Zeitraum der zugrunde liegenden Lieferung zur Rechnung Rechnungsersteller Geschaeftspartner `json:"rechnungsersteller,omitempty" validate:"required"` // Rechnungsersteller ist der Aussteller der Rechnung Rechnungsempfaenger Geschaeftspartner `json:"rechnungsempfaenger,omitempty" validate:"required"` // Rechnungsempfaenger ist der Empfänger der Rechnung GesamtNetto com.Betrag `json:"gesamtnetto,omitempty" validate:"required"` // GesamtNetto ist die Summe der Nettobeträge der Rechnungsteile GesamtSteuer com.Betrag `json:"gesamtsteuer,omitempty" validate:"required"` // GesamtSteuer ist die Summe der Steuerbeträge der Rechnungsteile GesamtBrutto com.Betrag `json:"gesamtbrutto,omitempty" validate:"required"` // GesamtBrutto ist die Summe aus Netto- und Steuerbeträge Vorausgezahlt *com.Betrag `json:"vorausgezahlt,omitempty"` // Vorausgezahlt ist die Summe eventuell vorausbezahlter Beträge, z.B. Abschläge. Angabe als Bruttowert. RabattBrutto *com.Betrag `json:"rabattBrutto,omitempty"` // RabattBrutto ist der Gesamtrabatt auf den Bruttobetrag Zuzahlen com.Betrag `json:"zuzahlen,omitempty" validate:"required"` // Zuzahlen ist der zu zahlende Betrag, der sich aus (gesamtbrutto - vorausbezahlt - rabattBrutto) ergibt Steuerbetraege []com.Steuerbetrag `json:"steuerbetraege,omitempty"` // Steuerbetraege ist eine Liste mit Steuerbeträgen pro Steuerkennzeichen/Steuersatz. Die Summe dieser Beträge ergibt den Wert für GesamtSteuer Rechnungspositionen []com.Rechnungsposition `json:"rechnungspositionen,omitempty" validate:"required,min=1"` // Rechnungspositionen sind die einzelnen Rechnungsposition en. }
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,omitempty" validate:"alphanum,required"` // Vertragsnummer ist eine im Verwendungskontext eindeutige Nummer für den Vertrag Beschreibung string `json:"beschreibung,omitempty"` // Beschreibung zum Vertrag Vertragsstatus vertragsstatus.Vertragsstatus `json:"vertragstatus,omitempty" validate:"required"` // Vertragsstatus ist der Status des Vertrags // vertragsstatus serializes as "vertragstatus" with single "s" for compatability. Vertragsart vertragsart.Vertragsart `json:"vertragsart,omitempty" validate:"required"` // Vertragsart legt fest, um welche Art von Vertrag es sich handelt. Z.B. Netznutzungvertrag. Sparte sparte.Sparte `json:"sparte,omitempty" validate:"required"` // Sparte sind Unterscheidungsmöglichkeiten für die Sparte Vertragsbeginn time.Time `json:"vertragsbeginn,omitempty" validate:"required"` // Vertragsbeginn is the inclusive start Vertragsende time.Time `json:"vertragsende,omitempty" validate:"required,gtfield=Vertragsbeginn"` // Vertragsende is the exclusive end Vertragspartner1 Geschaeftspartner `json:"vertragspartner1,omitempty" validate:"required"` // Vertragspartner1 ist der "erstgenannte" Vertragspartner. In der Regel der Aussteller des Vertrags. Beispiel: "Vertrag zwischen Vertragspartner 1 ..." Vertragspartner2 Geschaeftspartner `json:"vertragspartner2,omitempty" validate:"required"` // Vertragspartner2 ist 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"` // UnterzeichnerVp1 ist der Unterzeichner des Vertragspartner1 UnterzeichnerVp2 []com.Unterschrift `json:"unterzeichnervp2,omitempty"` // UnterzeichnerVp2 ist der Unterzeichner des Vertragspartner2 Vertragskonditionen *com.Vertragskonditionen `json:"vertragskonditionen,omitempty"` // Vertragskonditionen ist eine Festlegungen zu Laufzeiten und Kündigungsfristen Vertragsteile []com.Vertragsteil `json:"vertragsteile,omitempty" validate:"required,min=1"` // Vertragsteile sind die Vertragsteile, die dazu verwendet werden, 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:"zaehlernummer,omitempty" validate:"required,alphanum"` // Zaehlernummer ist eine Nummerierung des Zaehlers, vergeben durch den Messstellenbetreiber Sparte sparte.Sparte `json:"sparte,omitempty" validate:"required"` // Sparte ist eine Unterscheidungsmöglichkeit für die Sparte Zaehlerauspraegung zaehlerauspraegung.Zaehlerauspraegung `json:"zaehlerauspraegung,omitempty" validate:"required"` // Zaehlerauspraegung ist eine Spezifikation die Richtung des Zählers betreffend Zaehlertyp zaehlertyp.Zaehlertyp `json:"zaehlertyp,omitempty" validate:"required"` // Zaehlertyp erlaubt eine Typisierung des Zählers Tarifart tarifart.Tarifart `json:"tarifart,omitempty" validate:"required"` // Tarifart erlaubt eine Spezifikation bezüglich unterstützter Tarifarten Zaehlerkonstante decimal.NullDecimal `json:"zaehlerkonstante,omitempty"` // Zaehlerkonstante ist die Zählerkonstante auf dem Zähler EichungBis time.Time `json:"eichungBis,omitempty"` // EichungBis ist das exklusive Enddatum bis zu dem der Zähler geeicht ist LetzteEichung time.Time `json:"letzteEichung,omitempty"` // LetzteEichung ist das Datum, an dem die letzte Eichprüfung des Zählers stattfand Zaehlwerke []com.Zaehlwerk `json:"zaehlwerke,omitempty" validate:"required,min=1"` // Zaehlwerke sind die Zählwerke des Zählers Zaehlerhersteller *Geschaeftspartner `json:"zaehlerhersteller,omitempty"` // Zaehlerhersteller ist der Hersteller des Zählers Fernschaltung fernschaltung.Fernschaltung `json:"fernschaltung,omitempty"` // Fernschaltung is set to VORHANDEN if there is a fernschaltung Messwerterfassung messwerterfassung.Messwerterfassung `json:"messwerterfassung,omitempty"` // Messwerterfassung describes if meter readings have to happen manually }
Zaehler ist ein Modell für die Abbildung der Informationen zu einem Zähler