bo

package
v0.0.10 Latest Latest
Warning

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

Go to latest
Published: Sep 27, 2021 License: MIT Imports: 18 Imported by: 1

Documentation

Index

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 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
}

BusinessObject is the common base struct of all Business Objects

type Energiemenge added in v0.0.4

type Energiemenge struct {
	BusinessObject
	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 Geschaeftspartner added in v0.0.5

type Geschaeftspartner struct {
	BusinessObject
	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 {
	BusinessObject
	Sparte       sparte.Sparte               `json:"sparte" example:"STROM" validate:"required"`                                                         // Angabe, ob es sich um einen Gas- oder Stromlastgang 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 Messlokation

type Messlokation struct {
	BusinessObject
	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 Rechnung added in v0.0.9

type Rechnung struct {
	BusinessObject
	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 {
	BusinessObject
	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 {
	BusinessObject
	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   float32                               `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

Jump to

Keyboard shortcuts

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