bo

package
v0.0.43 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 22, 2022 License: MIT Imports: 42 Imported by: 1

Documentation

Index

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

func GetMaLoIdCheckSum(maloIdWithoutCheckSum string) int

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)

func (Ansprechpartner) GetDefaultJsonTags added in v0.0.37

func (_ Ansprechpartner) GetDefaultJsonTags() []string

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)!

func (Bilanzierung) GetDefaultJsonTags added in v0.0.37

func (_ Bilanzierung) GetDefaultJsonTags() []string

func (Bilanzierung) MarshalJSON added in v0.0.43

func (bila Bilanzierung) MarshalJSON() ([]byte, error)

func (*Bilanzierung) UnmarshalJSON added in v0.0.43

func (bila *Bilanzierung) UnmarshalJSON(bytes []byte) (err error)

type BusinessObject

type BusinessObject interface {
	// GetBoTyp returns the Geschaeftsobjekt.BoTyp
	GetBoTyp() botyp.BOTyp
	// GetVersionStruktur returns the Geschaeftsobjekt.VersionStruktur
	GetVersionStruktur() string
	// GetDefaultJsonTags returns an array of string that represent the json tags that are (by default) used by this business object
	GetDefaultJsonTags() []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

func (Energiemenge) GetDefaultJsonTags added in v0.0.37

func (_ Energiemenge) GetDefaultJsonTags() []string

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
	ExtensionData     map[string]interface{} `json:"-"`                                   // ExtensionData contain those values that are included in a Geschaeftsobjekt but not part of the BO4E standard/this implementation

}

Geschaeftsobjekt is the common base struct of all Business Objects

func (*Geschaeftsobjekt) DeleteExtensionData added in v0.0.36

func (gob *Geschaeftsobjekt) DeleteExtensionData(jsonKey string)

DeleteExtensionData removes the given jsonKey from the Geschaeftsobjekt.ExtensionData

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

func (*Geschaeftsobjekt) RemoveStronglyTypedFieldsFromExtensionData added in v0.0.36

func (gob *Geschaeftsobjekt) RemoveStronglyTypedFieldsFromExtensionData(keys []string)

RemoveStronglyTypedFieldsFromExtensionData removes the keys of the given key set from the Geschaeftsobjekt.ExtensionData

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
	Kontaktwege             []kontaktart.Kontaktart                         `json:"kontaktweg,omitempty"`                                                           // Kontaktwege sind die bevorzugten Kontaktwege des Geschäftspartners (todo: rename json tag, too)
	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.

func (Geschaeftspartner) GetDefaultJsonTags added in v0.0.37

func (_ Geschaeftspartner) GetDefaultJsonTags() []string

type Handelsunstimmigkeit added in v0.0.42

type Handelsunstimmigkeit struct {
	Geschaeftsobjekt

	// Nummer contains the "Handelsunstimmigkeitsnummer".
	Nummer string `json:"nummer,omitempty" validate:"required"`

	// Typ specifies the type of discrepancy.
	Typ handelsunstimmigkeitstyp.Handelsunstimmigkeitstyp `json:"typ,omitempty" validate:"required"`

	// Begruendung contains the reason of discrepancy.
	Begruendung com.Handelsunstimmigkeitsbegruendung `json:"begruendung" validate:"required"`

	// Betrag is the requested sum amount (optional).
	Betrag *com.Betrag `json:"zuZahlen,omitempty"`
}

Handelsunstimmigkeit contains information about discrepancies in market communication.

func (Handelsunstimmigkeit) GetDefaultJsonTags added in v0.0.42

func (_ Handelsunstimmigkeit) GetDefaultJsonTags() []string

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.

func (Lastgang) GetDefaultJsonTags added in v0.0.37

func (_ Lastgang) GetDefaultJsonTags() []string

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"

func (Marktlokation) GetDefaultJsonTags added in v0.0.37

func (_ Marktlokation) GetDefaultJsonTags() []string

func (Marktlokation) MarshalJSON added in v0.0.36

func (malo Marktlokation) MarshalJSON() ([]byte, error)

func (*Marktlokation) UnmarshalJSON added in v0.0.36

func (malo *Marktlokation) UnmarshalJSON(bytes []byte) (err error)

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

func (Marktteilnehmer) GetDefaultJsonTags added in v0.0.37

func (_ Marktteilnehmer) GetDefaultJsonTags() []string

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"

func (Messlokation) GetDefaultJsonTags added in v0.0.37

func (melo Messlokation) GetDefaultJsonTags() []string

func (Messlokation) MarshalJSON added in v0.0.37

func (melo Messlokation) MarshalJSON() ([]byte, error)

func (*Messlokation) UnmarshalJSON added in v0.0.37

func (melo *Messlokation) UnmarshalJSON(bytes []byte) (err error)

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

func (Netznutzungsrechnung) GetDefaultJsonTags added in v0.0.37

func (_ Netznutzungsrechnung) GetDefaultJsonTags() []string

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.

func (Preisblatt) GetDefaultJsonTags added in v0.0.37

func (_ Preisblatt) GetDefaultJsonTags() []string

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.

func (Rechnung) GetDefaultJsonTags added in v0.0.37

func (_ Rechnung) GetDefaultJsonTags() []string

type Reklamation added in v0.0.41

type Reklamation struct {
	Geschaeftsobjekt
	LokationsId                string                              `json:"lokationsId,omitempty" example:"DE0123456789012345678901234567890" validate:"alphanum,required,min=11,max=33"` // LokationsId gibt die ID der Lokation an (entweder LokationsTyp MALO ID (11 Stellen) oder LokationsTyp MELO ID (33 alphanum)).
	LokationsTyp               lokationstyp.Lokationstyp           `json:"lokationsTyp,omitempty" example:"MELO" validate:"required"`                                                    // LokationsTyp gibt an, ob es sich um eine Markt- oder Messlokation handelt.
	Reklamationsgrund          reklamationsgrund.Reklamationsgrund `json:"reklamationsgrund,omitempty" validate:"required"`                                                              // Reklamationsgrund gibt den Grund der Reklamation an
	ObisKennzahl               *string                             `json:"obisKennzahl,omitempty" validate:"required" example:"1-0:1.8.1"`                                               // ObisKennzahl für das Zählwerk, die festlegt, welche auf die gemessene Größe mit dem Stand gemeldet wird. Nur Zählwerkstände mit dieser OBIS-Kennzahl werden an diesem Zählwerk registriert.
	ZeitraumMesswertanfrage    *com.Zeitraum                       `json:"zeitraumMesswertanfrage,omitempty" validate:"required"`                                                        // ZeitraumMesswertanfrage gibt den com.Zeitraum an, auf die sich die Reklamation bezieht.
	ReklamationsgrundBemerkung string                              `json:"reklamationsgrundBemerkung,omitempty" validate:"omitempty"`                                                    // ReklamationsgrundBemerkung ist ein Freitext für eine weitere Beschreibung des Reklamationsgrunds
}

Reklamation wird benutzt um eine fehlende, oder unplausible Energiemenge anzuzeigen. Für Reklamationen von Rechnungen, wird ein Avis vom Typ Nicht-Zahlungsavis benutzt

func (Reklamation) GetDefaultJsonTags added in v0.0.41

func (_ Reklamation) GetDefaultJsonTags() []string

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.

func (Vertrag) GetDefaultJsonTags added in v0.0.37

func (_ Vertrag) GetDefaultJsonTags() []string

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

func (Zaehler) GetDefaultJsonTags added in v0.0.37

func (_ Zaehler) GetDefaultJsonTags() []string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL