com

package
v0.4.14 Latest Latest
Warning

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

Go to latest
Published: Apr 13, 2023 License: MIT Imports: 47 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AbweichungStructLevelValidation added in v0.2.9

func AbweichungStructLevelValidation(sl validator.StructLevel)

AbweichungStructLevelValidation does a cross check on a Abweichung object

func AdresseStructLevelValidation

func AdresseStructLevelValidation(sl validator.StructLevel)

AdresseStructLevelValidation does a cross check on a Adresse object

func RechnungspositionStructLevelValidation added in v0.0.9

func RechnungspositionStructLevelValidation(sl validator.StructLevel)

RechnungspositionStructLevelValidation does a cross check on a Rechnungsposition object

func SteuerbetragStructLevelValidation added in v0.0.9

func SteuerbetragStructLevelValidation(sl validator.StructLevel)

SteuerbetragStructLevelValidation does a cross check on a Steuerbetrag object and checks if Steuerbetrag.Steuerkennzeichen, Steuerbetrag.Basiswert and Steuerbetrag.Steuerbetrag are consistent

Types

type Abweichung added in v0.0.44

type Abweichung struct {
	AbweichungsGrund          *abweichungsgrund.AbweichungsGrund `json:"abweichungsgrund,omitempty" validate:"omitempty"`
	AbweichungsGrundBemerkung *string                            `json:"abweichungsgrundBemerkung,omitempty"`
	AbweichungsgrundCode      *string                            `json:"abweichungsgrundCode,omitempty" validate:"omitempty"`
	AbweichungsgrundCodeliste *string                            `json:"abweichungsgrundCodeliste,omitempty" validate:"omitempty"`
	ZugehoerigeRechnung       *string                            `json:"zugehoerigeRechnung,omitempty" validate:"omitempty"`
	Abschlagsrechnungen       []string                           `json:"abschlagsrechnungen,omitempty" validate:"omitempty"`
}

type Abweichungsposition added in v0.3.1

type Abweichungsposition struct {
	AbweichungsgrundCode      *string `json:"abweichungsgrundCode,omitempty" validate:"omitempty"`
	AbweichungsgrundCodeliste *string `json:"abweichungsgrundCodeliste,omitempty" validate:"required_with=AbweichungsgrundCode"`
	AbweichungsGrundBemerkung *string `json:"abweichungsgrundBemerkung,omitempty"`
	ZugehoerigeRechnung       *string `json:"zugehoerigeRechnung,omitempty"`
	ZugehoerigeBestellung     *string `json:"zugehoerigeBestellung,omitempty"`
}

type Adresse

type Adresse struct {
	Postleitzahl string                `json:"postleitzahl,omitempty" example:"82031" validate:"numeric,required"` // Postleitzahl is the zip code, mandatory
	Ort          string                `json:"ort,omitempty" example:"Grünwald" validate:"alphaunicode,required"`  // Ort is the city name, mandatory
	Strasse      string                `json:"strasse,omitempty" example:"Nördliche Münchner Straße 27A"`          // Strasse is the street name
	Hausnummer   string                `json:"hausnummer,omitempty" example:"27A"`                                 // Hausnummer is the house number including suffixes like "a" or "-1"
	Postfach     string                `json:"postfach,omitempty"`                                                 // Postfach is a post box
	Adresszusatz string                `json:"adresszusatz,omitempty" example:"3. Stock linke Wohnung"`            // Adresszusatz are additional data, like f.e. floor or "Hinterhaus"
	CoErgaenzung string                `json:"co_ergaenzung,omitempty" example:"c/o Veronica Hauptmieterin"`       //
	Landescode   landescode.Landescode `json:"landescode,omitempty"`                                               // Landescode is a ISO 3166 country code
}

Adresse is a general purpose address struct

type AvisPosition added in v0.0.44

type AvisPosition struct {
	RechnungsNummer      string                  `json:"rechnungsNummer,omitempty" validate:"required"` // Die Rechnungsnummer der Rechnung, auf die sich das Avis bezieht
	RechnungsDatum       time.Time               `json:"rechnungsDatum,omitempty" validate:"required"`  // Das Rechnungsdatum der Rechnung, auf die sich das Avis bezieht
	Storno               bool                    `json:"istStorno"`                                     // Kennzeichnung, ob es sich bei der Rechnung auf die sich das Avis bezieht, um eine Stornorechnung handelt
	IstSelbstausgestellt *bool                   `json:"istSelbstausgestellt,omitempty"`                // Kennzeichnung, ob es sich bei der Rechnung auf die sich das Avis bezieht, um eine selbst aus gestellte Rechnung handelt
	GesamtBrutto         Betrag                  `json:"gesamtBrutto,omitempty" validate:"required"`    // Überweisungsbetrag
	ZuZahlen             Betrag                  `json:"zuZahlen,omitempty" validate:"required"`        // Geforderter Rechnungsbetrag
	Referenz             string                  `json:"referenz,omitempty"`                            // Referenz auf COMDIS
	Abweichungen         []Abweichung            `json:"abweichungen,omitempty"`                        // Abweichungen ist eine Liste der Gründe der Ablehnung einer INVOIC oder COMDIS
	Positionen           []Rueckmeldungsposition `json:"positionen,omitempty"`                          // Rückmeldungspositionen
}

type Betrag added in v0.0.9

type Betrag struct {
	Wert     decimal.Decimal             `json:"wert" example:"18.36" validate:"required"`             // Wert is the amount
	Waehrung waehrungscode.Waehrungscode `json:"waehrung,omitempty" example:"EUR" validate:"required"` // Waehrung is the currency
}

Betrag wird dazu verwendet, Summenbeträge - beispielsweise in Angeboten und Rechnungen - als Geldbeträge abzubilden. Die Einheit ist dabei immer die Hauptwährung also Euro, Dollar etc

type Dienstleistung added in v0.0.3

type Dienstleistung struct {
	DienstleistungsTyp dienstleistungstyp.Dienstleistungstyp `json:"dienstleistungstyp,omitempty" validate:"required"`       // DienstleistungsTyp describes the type of the service
	Bezeichnung        string                                `json:"bezeichnung,omitempty" validate:"alphaunicode,required"` // Bezeichnung is a description
}

A Dienstleistung is a billable Service

type ExterneReferenz added in v0.0.3

type ExterneReferenz struct {
	ExRefName string `json:"exRefName" validate:"required"` // ExRefName is the name of the external reference (e.g. "SAP IS-U" or "BelVis ID"
	ExRefWert string `json:"exRefWert" validate:"required"` // ExRefWert is the value of the external reference, usually a unique value
}

ExterneReferenz models the existence of an object in another system and defines a way to reference it there

type Fehler added in v0.2.2

type Fehler struct {
	Typ           fehlertyp.FehlerTyp `json:"typ" validate:"required"` //
	FehlerDetails []FehlerDetail      `json:"fehlerDetails"`           //
}

Die Komponente wird dazu verwendet Fehler innerhalb eines bo.Statusbericht abzubilden

type FehlerDetail added in v0.2.2

type FehlerDetail struct {
	Code         fehlercode.FehlerCode `json:"code" validate:"required"` //
	Beschreibung *string               `json:"beschreibung,omitempty"`   //
	Ursache      *FehlerUrsache        `json:"ursache,omitempty"`
}

Die Komponente wird dazu verwendet Fehler innerhalb eines bo.Statusbericht abzubilden

type FehlerUrsache added in v0.2.2

type FehlerUrsache struct {
	Dokument     *string `json:"dokument,omitempty"`     //
	Nachricht    *string `json:"nachricht,omitempty"`    //
	Transaktion  *string `json:"transaktion,omitempty"`  //
	Gruppe       *string `json:"gruppe,omitempty"`       //
	Segment      *string `json:"segment,omitempty"`      //
	Beschreibung *string `json:"beschreibung,omitempty"` //
}

Die Komponente wird dazu verwendet die Ursache bzw. Herkunft von Fehlern genauer zu spezifizieren

type Geokoordinaten added in v0.0.3

type Geokoordinaten struct {
	Breitengrad decimal.Decimal `json:"breitengrad" validate:"latitude"`  // Breitengrad is the latitude
	Laengengrad decimal.Decimal `json:"laengengrad" validate:"longitude"` // Laengengrad is the longitude
}

Geokoordinaten are GPS coordinates

type Handelsunstimmigkeitsbegruendung added in v0.0.42

type Handelsunstimmigkeitsbegruendung struct {
	// Referenzen describes references to older messages.
	Referenzen []string `json:"referenzen,omitempty"`

	// Grund describes the reaseon for a "Handelsunstimmigkeit".
	Grund handelsunstimmigkeitsgrund.Handelsunstimmigkeitsgrund `json:"grund,omitempty" validate:"required"`
}

Handelsunstimmigkeitsbegruendung reasons about the correctness of a "Rechnung" or "Lieferschein"

type Hardware added in v0.0.3

type Hardware struct {
	GeraeteTyp  geraetetyp.Geraetetyp `json:"geraeteTyp,omitempty" validate:"required"`               // GeraeteTyp type of the hardware
	Bezeichnung string                `json:"bezeichnung,omitempty" validate:"alphaunicode,required"` // Bezeichnung is a description
}

A Hardware is a billable device

type Katasteradresse added in v0.0.3

type Katasteradresse struct {
	// ToDo: why is this `gemarkung_flur` and not `gemarkungFlur`
	GemarkungFlur string `json:"gemarkung_flur,omitempty" validate:"required"` // GemarkungFlur is the district in which something is located
	Flurstueck    string `json:"flurstueck,omitempty" validate:"required"`     // Flurstueck describes the parcel
}

Katasteradresse is a cadastre location

type Konzessionsabgabe added in v0.4.14

type Konzessionsabgabe struct {
	Satz      abgabeart.AbgabeArt
	Kosten    *decimal.Decimal
	Kategorie *string
}

type Lastprofil added in v0.0.21

type Lastprofil struct {
	Bezeichnung    string                          `json:"bezeichnung,omitempty" validate:"omitempty,alphanum" example:"H0"`              // Bezeichnung des Profils, durch DVGW bzw. den Netzbetreiber vergeben
	Verfahren      profilverfahren.Profilverfahren `json:"verfahren,omitempty"`                                                           // Verfahren des Profils (analytisch oder synthetisch)
	Einspeisung    *bool                           `json:"einspeisung,omitempty"`                                                         // Einspeisung ist true, falls es sich um Einspeisung handelt
	Tagesparameter *Tagesparameter                 `json:"tagesparameter,omitempty"`                                                      // Tagesparameter contains the Klimazone or Temperaturmessstelle
	Profilart      profilart.Profilart             `json:"profilart,omitempty"`                                                           // Profilart describes the kind of this profile
	Herausgeber    string                          `json:"herausgeber,omitempty" validate:"omitempty,oneof=BDEW HAENDLER" example:"BDEW"` // Herausgeber is the publisher of the Tagesparameter. As of 2022-03-29 its value can be either 'BDEW' or 'HAENDLER'.

}

Lastprofil defines a Lastprofil (no shit, sherlock) Note that this component is not official BO4E standard (yet)!

type Menge added in v0.0.5

type Menge struct {
	Wert    decimal.Decimal             `json:"wert" validate:"required"`              // Wert gibt den absoluten Wert der Menge an
	Einheit mengeneinheit.Mengeneinheit `json:"einheit,omitempty" validate:"required"` // Einheit gibt die Einheit zum jeweiligen Wert an
}

Menge ist die Abbildung einer Menge mit Wert und Einheit.

type Messlokationszuordnung added in v0.0.18

type Messlokationszuordnung struct {
	MesslokationsId string                                        `json:"messlokationsId,omitempty" validate:"required,alphanum,len=33"` // MesslokationsId, früher die Zählpunktbezeichnung.
	Arithmetik      arithmetischeoperation.ArithmetischeOperation `json:"arithmetik,omitempty" validate:"required"`                      // Arithmetik ist die Operation, mit der eine Messung an dieser Lokation für den Gesamtverbrauch der Marktlokation verrechnet wird. Beispielsweise bei einer Untermessung, wird der Verbauch der Untermessung subtrahiert.
	GueltigSeit     time.Time                                     `json:"gueltigSeit,omitempty" validate:"ltefield=GueltigBis"`          // GueltigSeit ist der inklusive Zeitpunkt, ab dem die Messlokation zur Marktlokation gehört
	GueltigBis      time.Time                                     `json:"gueltigBis,omitempty" validate:"gtefield=GueltigSeit"`          // GueltigBis ist der exklusive Zeitpunkt, bis zu dem die Messlokation zur Marktlokation gehört
}

Messlokationszuordnung. Mit dieser Komponente werden Messlokationen zu Marktlokationen zugeordnet. Dabei kann eine arithmetische Operation (Addition, Subtraktion) angegeben werden, mit der die Messlokation zum Verbrauch der Marklokation beiträgt.

type Netznutzungsabrechnungsdaten added in v0.2.8

type Netznutzungsabrechnungsdaten struct {
	ArtikelId                     *string                    `json:"artikelId" validate:"omitempty"` // ArtikelId enthält die Artikel oder Gruppen-ArtikelId
	ArtikelIdTyp                  *artikelidtyp.ArtikelIdTyp `json:"artikelIdTyp"`                   // ArtikelIdTyp ist der Typ der ArtikelId (Einzel oder Gruppe)
	Anzahl                        *int                       `json:"anzahl"`                         // Anzahl ist die Anzahl der Positionen für diese ArtikelId
	Gemeinderabatt                decimal.NullDecimal        `json:"gemeinderabatt"`                 // Gemeinderabatt
	Zuschlag                      decimal.NullDecimal        `json:"zuschlag"`                       // Zuschlag
	Abschlag                      decimal.NullDecimal        `json:"abschlag"`                       // Abschlag
	SingulaereBetriebsmittel      *Menge                     `json:"singulaereBetriebsmittel"`       // SingulaereBetriebsmittel sind Singuläre Betriebsmittel
	PreisSingulaereBetriebsmittel *Preis                     `json:"preisSingulaereBetriebsmittel"`  // PreisSingulaereBetriebsmittel ist der Preis für SingulaereBetriebsmittel
}

Netznutzungsabrechnungsdaten sind Daten zur Abrechnung der Netznutzung (no shit, sherlock)

type PositionsAufAbschlag added in v0.2.2

type PositionsAufAbschlag struct {
	Bezeichnung          string                            `json:"bezeichnung" validate:"required"`          // Bezeichnung des Auf-/Abschlags
	Beschreibung         string                            `json:"beschreibung" validate:"required"`         // Beschreibung zum Auf-/Abschlags
	AufAbschlagstyp      aufabschlagstyp.AufAbschlagstyp   `json:"aufabschlagstyp" validate:"required"`      // Typ des AufAbschlages
	AufAbschlagswert     decimal.NullDecimal               `json:"aufabschlagswert" validate:"required"`     // Höhe des AufAbschlages
	AufAbschlagswaehrung waehrungseinheit.Waehrungseinheit `json:"aufabschlagswaehrung" validate:"required"` //  Einheit, in der der Auf-/Abschlag angegeben ist (z.B. ct/kWh)
}

PositionsAufAbschlag Differenzierung der zu betrachtenden Produkte anhand der preiserhöhenden (Aufschlag) bzw. preisvermindernden (Abschlag) Zusatzvereinbarungen, die individuell zu einem neuen oder bestehenden Liefervertrag abgeschlossen werden können. Es können mehrere Auf-/Abschläge gleichzeitig ausgewählt werden.

type Preis added in v0.0.9

type Preis struct {
	Wert       decimal.Decimal                   `json:"wert" validate:"required"`                 // Wert gibt die nominale Höhe des Preises an
	Einheit    waehrungseinheit.Waehrungseinheit `json:"einheit,omitempty" validate:"required"`    // Einheit ist die Währungseinheit für den Preis
	Bezugswert mengeneinheit.Mengeneinheit       `json:"bezugswert,omitempty" validate:"required"` // Bezugswert ist eine Angabe, für welche Bezugsgröße der Preis gilt. Z.B. kWh
	Status     preisstatus.Preisstatus           `json:"status,omitempty"`                         // Status gibt den Status des veröffentlichten Preises an
}

Preis is a price

type Preisposition added in v0.0.34

type Preisposition struct {
	Berechnungsmethode       kalkulationsmethode.Kalkulationsmethode `json:"berechnungsmethode,omitempty" validate:"required"`       //	Das Modell, das der Preisbildung zugrunde liegt. Details siehe ENUM Kalkulationsmethode
	Leistungstyp             leistungstyp.Leistungstyp               `json:"leistungstyp,omitempty" validate:"required"`             // Standardisierte Bezeichnung für die abgerechnete Leistungserbringung. Details siehe ENUM Leistungstyp
	Leistungsbezeichung      string                                  `json:"leistungsbezeichnung,omitempty" validate:"required"`     // Bezeichnung für die in der Position abgebildete Leistungserbringung
	Preiseinheit             waehrungseinheit.Waehrungseinheit       `json:"preiseinheit,omitempty" validate:"required"`             // Festlegung, mit welcher Preiseinheit abgerechnet wird, z.B. Ct. oder €
	Bezugsgroesse            mengeneinheit.Mengeneinheit             `json:"bezugsgroesse,omitempty" validate:"required"`            // Hier wird festgelegt, auf welche Bezugsgrösse sich der Preis bezieht, z.B. kWh oder Stück
	Zeitbasis                *zeiteinheit.Zeiteinheit                `json:"zeitbasis,omitempty" validate:"required"`                // Die Zeit(dauer) auf die sich der Preis bezieht. Z.B. ein Jahr für einen Leistungspreis der in €/kW/Jahr ausgegeben wird
	Tarifzeit                *tarifzeit.Tarifzeit                    `json:"tarifzeit,omitempty" validate:"required"`                // Festlegung, für welche Tarifzeit der Preis hier festgelegt ist
	BdewArtikelnummer        *bdewartikelnummer.BDEWArtikelnummer    `json:"bdewartikelnummer,omitempty" validate:"required"`        // Eine vom BDEW standardisierte Bezeichnug für die abgerechnete Leistungserbringung. Diese Artikelnummer wird auch im Rechnungsteil der INVOIC verwendet
	ArtikelId                string                                  `json:"artikelId,omitempty" validate:"required"`                // Standardisierte vom BDEW herausgegebene Liste, welche im Strommarkt die BDEW-Artikelnummer ablöst
	Zonungsgroesse           *bemessungsgroesse.Bemessungsgroesse    `json:"zonungsgroesse,omitempty" validate:"required"`           // Mit der Menge der hier angegebenen Größe wird die Staffelung/Zonung durchgeführt. Z.B. Vollbenutzungsstunden
	ZuAbschlaege             *PositionsAufAbschlag                   `json:"zuabschlaege,omitempty" validate:"omitempty"`            // Zuschläge oder Abschläge auf die Position
	FreimengeBlindarbeit     decimal.NullDecimal                     `json:"freimengeBlindarbeit,omitempty" validate:"required"`     // Der Anteil der Menge der Blindarbeit in Prozent von der Wirkarbeit, für die keine Abrechnung erfolgt
	FreimengeLeistungsfaktor decimal.NullDecimal                     `json:"freimengeLeistungsfaktor,omitempty" validate:"required"` // Der cos phi (Verhältnis Wirkleistung/Scheinleistung) aus dem die Freimenge für die Blindarbeit berechnet wird als tan phi (Verhältnis Blindleistung/Wirkleistung)
	Preisstaffeln            []Preisstaffel                          `json:"preisstaffeln" validate:"required"`                      // Preisstaffeln, die zu dieser Preisposition gehören
	Preisschluesselstamm     string                                  `json:"preisschluesselstamm,omitempty" validate:"omitempty"`    // Preisschlüsselstamm
	Positionsnummer          int                                     `json:"positionsnummer,omitempty" validate:"omitempty"`         // Fortlaufende Nummer für die Preisposition
	Messebene                netzebene.Netzebene                     `json:"messebene,omitempty" validate:"omitempty"`               // Vgl. PRICAT IMD 7009
	Beschreibung             string                                  `json:"beschreibung,omitempty" validate:"omitempty"`            // Produkt-/Leistungsbeschreibung, wenn IMD+X vorhanden Vgl. PRICAT IMD 7008
	Verarbeitungszeitraum    Zeitraum                                `json:"verarbeitungszeitraum,omitempty" validate:"omitempty"`   // Verarbeitungszeitraum
}

Preisposition is part of a Preisblatt and includes a price for a product or service

type Preisstaffel added in v0.0.34

type Preisstaffel struct {
	Einheitspreis    decimal.Decimal `json:"einheitspreis" validate:"required"` // Preis pro abgerechneter Mengeneinheit
	StaffelgrenzeVon decimal.Decimal `json:"staffelgrenzeVon,omitempty"`        // Unterer Wert, ab dem die Staffel gilt (inklusiv)
	StaffelgrenzeBis decimal.Decimal `json:"staffelgrenzeBis,omitempty"`        // Oberer Wert, bis zu dem die Staffel gilt (exklusiv) TODO Inklusivität/Exklusivität noch nicht global abgestimmt!

}

Preisstaffel is part of a Preisposition and includes a price for a distinct set of parameters

type Rechnungsposition added in v0.0.9

type Rechnungsposition struct {
	Positionsnummer   int                                  `json:"positionsnummer,omitempty" validate:"required"`                        // Positionsnummer ist eine fortlaufende Nummer für die Rechnungsposition
	LieferungVon      time.Time                            `json:"lieferungVon,omitempty"`                                               // LieferungVon ist ein _inklusiver_ Start der Lieferung für die abgerechnete LEISTUNG
	LieferungBis      time.Time                            `json:"lieferungBis,omitempty" validate:"omitempty,gtfield=LieferungVon"`     // LieferungBis ist ein _exklusives_ Ende der Lieferung für die abgerechnete LEISTUNG
	Positionstext     string                               `json:"positionstext,omitempty" validate:"required"`                          // Positionstext ist eine Bezeichung für die abgerechnete Position.
	Zeiteinheit       zeiteinheit.Zeiteinheit              `json:"zeiteinheit,omitempty"`                                                // Zeiteinheit wird angegeben, falls sich der Preis auf eine Zeit bezieht, steht hier die Einheit, z.B. JAHR
	Artikelnummer     *bdewartikelnummer.BDEWArtikelnummer `json:"artikelnummer,omitempty"`                                              // Artikelnummer ist eine Kennzeichnung der Rechnungsposition mit der Standard-Artikelnummer des BDEW
	LokationsId       string                               `json:"lokationsId,omitempty" validate:"omitempty,min=11,max=11,numeric"`     // LokationsId ist die MarktlokationsId zu der diese Position gehört
	PositionsMenge    Menge                                `json:"positionsMenge,omitempty" validate:"required"`                         // PositionsMenge ist die abgerechnete Menge mit Einheit. Z.B. 4372 kWh
	ZeitbezogeneMenge *Menge                               `json:"zeitbezogeneMenge,omitempty"`                                          // ZeitbezogeneMenge ist eine optionale, auf die Zeiteinheit bezogene Untermenge. Z.B. bei einem Jahrespreis, 3 Monate oder 146 Tage. Basierend darauf wird der Preis aufgeteilt
	Korrekturfaktor   *float32                             `json:"korrekturfaktor,omitempty" validate:"omitempty,min=-1,max=-1,numeric"` // Korrekturfaktor ist ein Faktor -1 der ggf. in Mehrmengen-Rechnungen vorkommt
	Einzelpreis       Preis                                `json:"einzelpreis,omitempty" validate:"required"`                            // Einzelpreis ist der Preis für eine Einheit der energetischen Menge
	TeilsummeNetto    Betrag                               `json:"teilsummeNetto,omitempty" validate:"required"`                         // TeilsummeNetto ist das Ergebnis der Multiplikation aus einzelpreis * positionsMenge * (Faktor aus zeitbezogeneMenge). Z.B. 12,60€ * 120 kW * 3/12 (für 3 Monate).
	TeilsummeSteuer   Steuerbetrag                         `json:"teilsummeSteuer,omitempty" validate:"required"`                        // TeilsummeSteuer ist der auf die Position entfallende Steuer, bestehend aus Steuersatz und Betrag
	TeilrabattNetto   *Betrag                              `json:"teilrabattNetto,omitempty"`                                            // TeilrabattNetto ist der Rabatt für diese Position
	ArtikelId         *string                              `json:"artikelId,omitempty"`                                                  // Die ArtikelId ist Artikel-ID (zu verwenden seit 2022-10-01)
	Ausfuehrungsdatum time.Time                            `json:"ausfuehrungsdatum,omitempty"`                                          // Das Ausfuehrungsdatum leitet sich aus den Qualifier 203 Ausführungsdatum/-zeit ab
}

Rechnungsposition en sind Teil von Rechnung en. In einem Rechnungsteil wird jeweils eine in sich geschlossene LEISTUNG abgerechnet.

type Rueckmeldungsposition added in v0.3.1

type Rueckmeldungsposition struct {
	Positionsnummer       *string               `json:"positionsnummer,omitempty"`
	Abweichungspositionen []Abweichungsposition `json:"abweichungspositionen"`
}

type Rufnummer added in v0.0.21

type Rufnummer struct {
	Nummerntyp rufnummernart.Rufnummernart `json:"nummerntyp,omitempty" validate:"required"`                           // Nummerntyp ist die Ausprägung der Nummer
	Rufnummer  string                      `json:"rufnummer,omitempty" validate:"required" example:"4989209090153910"` // Rufnummer ist die konkrete Rufnummer
}

Rufnummer bildet eine Telefonnummer ab

type StatusZusatzInformation added in v0.2.1

type StatusZusatzInformation struct {
	// StatusArt enthält die Zusatzinformation Art des angegebenen Wertes.
	Art *statusart.StatusArt `json:"art,omitempty"`

	// Status enthält die Zusatzinformation Status des angegebenen Wertes.
	Status status.Status `json:"status,omitempty" validate:"required"`
}

StatusZusatzInformation enthält die Auflistung der STS Segmente Plausibilisierungshinweis, Ersatzwertbildungsverfahren, Korrekturgrund, Gasqualität, Tarif, Grundlage der Energiemenge.

type Steuerbetrag added in v0.0.9

type Steuerbetrag struct {
	Steuerkennzeichen steuerkennzeichen.Steuerkennzeichen `json:"steuerkennzeichen,omitempty" validate:"required" example:"UST19"` // Kennzeichnung des Steuersatzes, bzw. Verfahrens
	// Basiswert and Steuerwert are _not_ marked as required because the steuerwert 0 is actually valid
	Sondersteuersatz        *decimal.Decimal            `json:"sondersteuersatz,omitempty"`                           // Wert eines besonderen Steuersatzes, wichig wenn Steuerkennzeichen den Wert UST_SONDER hat
	Basiswert               decimal.Decimal             `json:"basiswert" example:"100"`                              // Basiswert ist der Nettobetrag für den die Steuer berechnet wurde
	Steuerwert              decimal.Decimal             `json:"steuerwert" example:"19"`                              // Steuerwert ist die aus dem Basiswert berechnete Steuer
	Waehrung                waehrungscode.Waehrungscode `json:"waehrung,omitempty" example:"EUR" validate:"required"` // Waehrung is the currency
	BasiswertVorausgezahlt  *decimal.Decimal            `json:"basiswertVorausgezahlt,omitempty"`                     // BasiswertVorausgezahlt ist die Brutto-Summe der vorausbezahlten Beträge
	SteuerwertVorausgezahlt *decimal.Decimal            `json:"steuerwertVorausgezahlt,omitempty"`                    // SteuerwertVorausgezahlt ist die Steuer-Summe der vorausbezahlten Beträge
}

Steuerbetrag ist ein besteuerter Betrag

type Tagesparameter added in v0.0.21

type Tagesparameter struct {
	Klimazone            string `json:"klimazone,omitempty" validate:"omitempty,alphanum" example:"7624q"`             // Klimazone is the qualifier of the climate zone
	Temperaturmessstelle string `json:"temperaturmessstelle,omitempty" validate:"omitempty,alphanum" example:"1234x"`  // Temperaturmessstelle is the qualifier of the temperature measurement station
	Dienstanbieter       string `json:"dienstanbieter,omitempty" validate:"required_with=Temperaturmessstelle"`        // Dienstanbieter is the service provider for temperature measurements
	Herausgeber          string `json:"herausgeber,omitempty" validate:"omitempty,oneof=BDEW HAENDLER" example:"BDEW"` // Herausgeber is the publisher of the Tagesparameter. As of 2022-03-29 its value can be either 'BDEW' or 'HAENDLER'.

}

Tagesparameter speichert Informationen zu einer tagesparameter-abhängigen Messstelle. z.B. den Namen einer Klimazone oder die ID der Wetterstation für die Temperaturmessstelle

type Unterschrift added in v0.0.5

type Unterschrift struct {
	Name  string    `json:"name,omitempty" validate:"required"`   // Name des Unterschreibers
	Datum time.Time `json:"datum,omitempty" validate:"omitempty"` // Datum der Unterschrift
	Ort   string    `json:"ort,omitempty" validate:"omitempty"`   // Ort, an dem die Unterschrift geleistet wird
}

Unterschrift ist die Modellierung einer Unterschrift, z.B. für Verträge, Angebote etc.

type Verbrauch added in v0.0.4

type Verbrauch struct {
	// Startdatum is an inclusive start
	Startdatum time.Time `json:"startdatum,omitempty" validate:"omitempty"`

	// Enddatum is an exclusive end
	Enddatum time.Time `json:"enddatum,omitempty" validate:"omitempty,gtfield=Startdatum"`

	// Wertermittlungsverfahren is the type of the consumption
	Wertermittlungsverfahren wertermittlungsverfahren.Wertermittlungsverfahren `json:"wertermittlungsverfahren,omitempty" validate:"required"`

	// Messwertstatus includes the plausibility of the value
	Messwertstatus *messwertstatus.Messwertstatus `json:"messwertstatus,omitempty" validate:"omitempty"`

	// StatusZusatzInformationen enthält die Auflistung der STS Segmente
	// Plausibilisierungshinweis, Ersatzwertbildungsverfahren, Korrekturgrund,
	// Gasqualität, Tarif, Grundlage der Energiemenge.
	StatusZusatzInformationen []StatusZusatzInformation `json:"statuszusatzinformationen" validate:"omitempty"`

	// Obiskennzahl is the OBIS Kennzahl
	// (?<power>(1)-((?:[0-5]?[0-9])|(?:6[0-5])):((?:[1-8]|99))\.((?:6|8|9|29))\.([0-9]{1,2}))||(?<gas>)(7)-((?:[0-5]?[0-9])|(?:6[0-5])):(.{1,2})\.(.{1,2})\.([0-9]{1,2})
	Obiskennzahl string `json:"obiskennzahl,omitempty" validate:"required" example:"1-0:1.8.1"`

	// Wert is the value (of einheit)
	Wert decimal.Decimal `json:"wert,omitempty" validate:"required" example:"17"`

	// Einheit is the unit (associated to the wert)
	Einheit mengeneinheit.Mengeneinheit `json:"einheit,omitempty" validate:"required" example:"KWH"`

	Nutzungszeitpunkt     time.Time `json:"nutzungszeitpunkt"`     // Der Nutzungszeitpunkt wird verwendet, um einen Zählerstand eindeutig einem Prozesszeitpunkt zuzuordnen. Dieser Prozesszeitpunkt kann entweder ein Zeitpunkt einer Stammdatenänderung sein(z. B.bei einem Gerätewechsel, in der die Änderung vor dem Versand des Zählerstandes übermittelt wurde) oder die Bestellung eines Wertes aufgrund eines eingetretenen Ereignisses(z.B. Lieferantenwechsel). Der  Nutzungszeitpunkt ist für den Zählerstand der Zeitpunkt der für die weitere Verarbeitung relevant ist(z.B.Zuordnung bei Empfänger anhand der Zuordnungstupel)
	Ausfuehrungszeitpunkt time.Time `json:"ausfuehrungszeitpunkt"` // Der Ausfuehrungszeitpunkt wird verwendet, um einen Zählerstand eindeutig einer tatsächlichen Änderung zuzuordnen, z.B.bei einem Gerätewechsel oder Geräteparameteränderung der tatsächliche Zeitpunkt an dem die Änderung an der Messlokation durchgeführt wurde. Der Nutzungszeitpunkt ist für den Zählerstand der Zeitpunkt der für die weitere Verarbeitung relevant ist(z.B. Zuordnung bei Empfänger anhand der Zuordnungstupel).
}

Verbrauch is a a consumption during a specific time frame

type Vertragskonditionen added in v0.0.5

type Vertragskonditionen struct {
	Beschreibung          string    `json:"beschreibung,omitempty"`                               // Beschreibung ist ein Freitext zur Beschreibung der Konditionen, z.B. "Standardkonditionen Gas"
	AnzahlAbschlaege      int       `json:"anzahlAbschlaege,omitempty"`                           // AnzahlAbschlaege enthält die Anzahl der vereinbarten Abschläge pro Jahr, z.B. 12
	Vertragslaufzeit      *Zeitraum `json:"vertragslaufzeit,omitempty" validate:"omitempty"`      // Vertragslaufzeit enthält den Zeitraum, über den dieser Vertrag läuft
	Kuendigungsfrist      *Zeitraum `json:"kuendigungsfrist,omitempty" validate:"omitempty"`      // Kuendigungsfrist ist die Frist, innerhalb derer der Vertrag gekündigt werden kann
	Vertragsverlaengerung *Zeitraum `json:"vertragsverlaengerung,omitempty" validate:"omitempty"` // Vertragsverlaengerung beschreibt, dass, falls der Vertrag nicht gekündigt wird, er sich automatisch um die angegebene Zeit verlängert
	Abschlagszyklus       *Zeitraum `json:"abschlagszyklus,omitempty" validate:"omitempty"`       // Abschlagszyklus sind die Zyklen, in denen Abschläge erstellt werden. Alternativ kann auch die Anzahl in den Konditionen angeben werden.

	StartAbrechnungsjahr    time.Time                                       `json:"startAbrechnungsjahr,omitempty"`                               // StartAbrechnungsjahr ist der Beginn des Abrechnungsjahres
	GeplanteTurnusablesung  *Zeitraum                                       `json:"geplanteTurnusablesung,omitempty" validate:"omitempty"`        // GeplanteTurnusablesung beschreibt die geplante Turnusablesung
	TurnusablesungIntervall *int                                            `json:"turnusablesungIntervall,omitempty" validate:"omitempty,min=1"` // Das TurnusablesungIntervall beschreibt die Anzahl Monate die zwischen zwei Ablesungen liegen
	Netznutzungsabrechnung  *Zeitraum                                       `json:"netznutzungsabrechnung,omitempty" validate:"omitempty"`        // Netznutzungsabrechnung ist der Zeitraum der bei der Netznutzung abgerechnet wird
	Haushaltskunde          *bool                                           `json:"haushaltskunde,omitempty" validate:"omitempty"`                // Haushaltskunde ist true, wenn es sich um einen privat/Haushaltskunden handelt
	Netznutzungsvertragsart netznutzungsvertragsart.Netznutzungsvertragsart `json:"netznutzungsvertrag,omitempty"`                                // Netznutzungsvertragsart beschreibt, zwischen welchen Vertragspartnern der Vertrag besteht
	// the json tag is "netznutzungsvertrag" for consistency with the dotnet-implementation
	Netznutzungszahler               netznutzungszahler.Netznutzungszahler                             `json:"netznutzungszahler,omitempty"`
	Netznutzungsabrechnungsvariante  netznutzungsabrechnungsvariante.Netznutzungsabrechnungsvariante   `json:"netznutzungsabrechnungsvariante,omitempty"`
	Netznutzungsabrechnungsgrundlage netznutzungsabrechnungsgrundlage.Netznutzungsabrechnungsgrundlage `json:"netznutzungsabrechnungsgrundlage,omitempty"`
}

Vertragskonditionen ist eine Komponente zur Abbildung von Vertragskonditionen. Die Komponente wird sowohl im Vertrag als auch im Tarif verwendet.

type Vertragsteil added in v0.0.5

type Vertragsteil struct {
	Vertragsteilbeginn       time.Time `json:"vertragsteilbeginn,omitempty" validate:"required"`                          // Vertragsteilbeginn ist der inklusive Start der Gültigkeit des Vertragsteils
	Vertragsteilende         time.Time `json:"vertragsteilende,omitempty" validate:"required,gtfield=Vertragsteilbeginn"` // Vertragsteilende ist das exklusive Ende der Gültigkeit des Vertragsteils
	Lokation                 string    `json:"lokation,omitempty" validate:"omitempty,alphanum,min=11,max=33"`            // Lokation ist der Identifier für diejenigen Markt- oder Messlokation, die zu diesem Vertragsteil gehören. Verträge für mehrere Lokationen werden mit mehreren Vertragsteilen abgebildet.
	VertraglichFixierteMenge *Menge    `json:"vertraglichFixierteMenge,omitempty"`                                        // VertraglichFixierteMenge ist die für die Lokation festgeschriebene Abnahmemenge
	MinimaleAbnahmemenge     *Menge    `json:"minimaleAbnahmemenge,omitempty"`                                            // MinimaleAbnahmemenge ist die, für die Lokation festgelegte Mindestabnahmemenge
	MaximaleAbnahmemenge     *Menge    `json:"maximaleAbnahmemenge,omitempty"`                                            // MaximaleAbnahmemenge ist die, für die Lokation festgelegte maximale Abnahmemenge
}

Vertragsteil wird dazu verwendet, eine vertragliche Leistung in Bezug zu einer Lokation (Markt- oder Messlokation) festzulegen.

type Verwendungszweck added in v0.4.6

type Verwendungszweck struct {
	Marktrolle marktrolle.Marktrolle               `json:"marktrolle,omitempty"` // rollencodenummer von Marktrolle
	Zweck      []verwendungszweck.Verwendungszweck `json:"zweck,omitempty"`      // code von Marktrolle
}

type Vorauszahlung added in v0.2.8

type Vorauszahlung struct {
	Betrag        Betrag     `json:"betrag"`                  // Betrag gibt den Betrag des Preises an
	Referenz      *string    `json:"referenz,omitempty"`      // Referenz auf die Rechnungsnummer, die durch diesen Betrag bezahlt wurde
	ReferenzDatum *time.Time `json:"referenzDatum,omitempty"` // ReferenzDatum ist die Referenz auf das Datum der Rechnung, die durch diesen Betrag bezahlt wurde
}

Vorauszahlung wird dazu verwendet Vorauszahlungen einer Rechnung abzubilden (inkl. Referenz auf die bezahlte Rechnung)

type Zaehlerstaende added in v0.0.7

type Zaehlerstaende []Zaehlerstand

Zaehlerstaende is a table type of Zaehlerstand with defined descending sorting of the Zaehlerstand.Ablesedatum for sort.Sort(...)

func (Zaehlerstaende) Len added in v0.0.7

func (z Zaehlerstaende) Len() int

Len returns the size of z

func (Zaehlerstaende) Less added in v0.0.7

func (z Zaehlerstaende) Less(i, j int) bool

Less returns true iff the Zaehlerstand.Ablesedatum at index i is after the Zaehlerstand.Ablesedatum at index j

func (Zaehlerstaende) Swap added in v0.0.7

func (z Zaehlerstaende) Swap(i, j int)

Swap swaps the entries at index i and j

type Zaehlerstand added in v0.0.7

type Zaehlerstand struct {
	Ablesedatum              time.Time                                         `json:"ablesedatum,omitempty" validate:"required"`              // Ablesedatum is a point in time
	Wertermittlungsverfahren wertermittlungsverfahren.Wertermittlungsverfahren `json:"wertermittlungsverfahren,omitempty" validate:"required"` // Wertermittlungsverfahren is the type of the consumption
	Wert                     decimal.Decimal                                   `json:"wert" validate:"required" example:"17086"`               // Wert is the value (of Einheit)
	Einheit                  mengeneinheit.Mengeneinheit                       `json:"einheit,omitempty" validate:"required" example:"KWH"`    // Einheit ist the unit (associated to the wert)
	Brennwert                decimal.NullDecimal                               `json:"brennwert,omitempty"`                                    // Brennwert is used to calculate caloric Energy from gas volume
	Zustandszahl             decimal.NullDecimal                               `json:"zustandszahl,omitempty"`                                 // Zustandszahl is used to calculate caloric Energy from gas volume
}

Zaehlerstand is the value of a meter for a specific point in time (non-standard)

type Zaehlwerk added in v0.0.7

type Zaehlwerk struct {
	ZaehlwerkId       string                               `json:"zaehlwerkId,omitempty" validate:"required" example:"47110815_1"`          // ZaehlwerkId ist die Identifikation des Zählwerks (Registers) innerhalb des Zählers. Oftmals eine laufende Nummer hinter der Zählernummer.
	Bezeichnung       string                               `json:"bezeichnung,omitempty" validate:"required" example:"Zählwerk_Wirkarbeit"` // Bezeichnung ist eine zusätzliche Bezeichnung
	Richtung          energierichtung.Energierichtung      `json:"richtung,omitempty" validate:"required"`                                  // Richtung beschreibt die Energierichtung: Einspeisung oder Ausspeisung.
	ObisKennzahl      string                               `json:"obisKennzahl,omitempty" validate:"required" example:"1-0:1.8.1"`          // Die 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.
	Wandlerfaktor     decimal.Decimal                      `json:"wandlerfaktor" validate:"required"`                                       // Der Wandlerfaktor ist der Faktor, mit dem die Zählerstandsdifferenz multipliziert wird, um zum eigentlichen Verbrauch im Zeitraum zu kommen.
	Einheit           mengeneinheit.Mengeneinheit          `json:"einheit,omitempty" validate:"required"`                                   // Die Einheit der gemessenen Größe
	Zaehlerstaende    Zaehlerstaende                       `json:"zaehlerstaende,omitempty"`                                                // A list of Zaehlerstand (Non BO4E Standard)
	Verwendungszwecke []Verwendungszweck                   `json:"verwendungszwecke,omitempty"`                                             // Verwendungungszweck der Werte Marktlokation
	Verbrauchsart     *verbrauchsart.Verbrauchsart         `json:"verbrauchsart,omitempty"`                                                 // Stromverbrauchsart/Verbrauchsart Marktlokation
	Unterbrechbarkeit *unterbrechbarkeit.Unterbrechbarkeit `json:"unterbrechbarkeit,omitempty"`                                             // Stromverbrauchsart/Unterbrechbarkeit Marktlokation
	Waermenutzung     *waermenutzung.Waermenutzung         `json:"waermenutzung,omitempty"`                                                 // Stromverbrauchsart/Wärmenutzung Marktlokation

	// note that both "kommastellen" (plural) serialize as singular "...stelle" for compatability reasons (with bo4e dotnet)
	Vorkommastellen   *int                                        `json:"vorkommastelle,omitempty" validate:"omitempty,min=0"`  // Vorkommastellen ist the number of pre-decimal places
	Nachkommastellen  *int                                        `json:"nachkommastelle,omitempty" validate:"omitempty,min=0"` // Nachkommastellen is the number of post decimal places
	Schwachlastfaehig schwachlastfaehigkeit.Schwachlastfaehigkeit `json:"schwachlastfaehig,omitempty"`

	AnzahlAblesungen *int `json:"anzahlAblesungen,omitempty"`
	// the json tag is different from the field name ("zaehlzeiten" instead of "zaehlzeit") to be consistent with the C# lib: https://github.com/Hochfrequenz/BO4E-dotnet/issues/249
	Zaehlzeit         *Zaehlzeit         `json:"zaehlzeiten,omitempty"`
	Konfiguration     *string            `json:"konfiguration,omitempty"`
	Konzessionsabgabe *Konzessionsabgabe `json:"konzessionsabgabe,omitempty"`
}

A Zaehlwerk is the counting part of a meter. A meter consists of one or more Zaehlwerke

type Zaehlzeit added in v0.2.8

type Zaehlzeit struct {
	Zaehlzeitdefinition *string `json:"zaehlzeitDefinition,omitempty"`
	Zaehlzeitregister   *string `json:"zaehlzeitRegister,omitempty"`
}

type Zeitraum added in v0.0.5

type Zeitraum struct {
	Einheit        zeiteinheit.Zeiteinheit `json:"zeiteinheit,omitempty" validate:"omitempty,required_with=Dauer"`                                          // Einheit is the unit of measurement
	Dauer          decimal.NullDecimal     `json:"dauer,omitempty" validate:"omitempty,required_with=Einheit"`                                              // Dauer ist eh duration
	Startdatum     *time.Time              `json:"startdatum,omitempty" validate:"required_without_all=Einheit Dauer" example:"2018-01-28T10:15:00+01"`     // Startdatum is the day and time of begin
	Enddatum       *time.Time              `json:"enddatum,omitempty" validate:"required_without_all=Einheit Dauer" example:"2018-01-28T10:15:00+01"`       // Enddatum is the day and time of end
	Startzeitpunkt *time.Time              `json:"startzeitpunkt,omitempty" validate:"required_without_all=Einheit Dauer" example:"2018-01-28T10:15:00+01"` // Startzeitpunkt is the inclusive begin
	Endzeitpunkt   *time.Time              ``                                                                                                               // Endzeitpunkt is the exclusive end
	/* 135-byte string literal not displayed */
}

Zeitraum ist eine Komponente zur Abbildung von Zeiträumen in Form von Dauern oder der Angabe von Start und Ende verwendet.

func (Zeitraum) AsPointer added in v0.0.41

func (zeitraum Zeitraum) AsPointer() *Zeitraum

type Zeitreihenwert added in v0.0.4

type Zeitreihenwert struct {
	Zeitreihenwertkompakt
	DatumUhrzeitVon time.Time `json:"datumUhrzeitVon,omitempty" validate:"required" example:"2018-01-28T10:15:00+01"` // DatumUhrzeitVon is the inclusive begin
	DatumUhrzeitBis time.Time `json:"datumUhrzeitBis,omitempty" validate:"required" example:"2018-01-28T10:30:00+01"` // DatumUhrzeitBis is the exclusive end
}

Zeitreihenwert ist eine Abbildung eines Zeitreihenwertes bestehend aus Zeitraum, Wert und Statusinformationen.

type Zeitreihenwertkompakt added in v0.0.4

type Zeitreihenwertkompakt struct {
	Wert         decimal.Decimal                           `json:"wert" validate:"required" example:"17"` // Wert ist der der im Zeitintervall gültige Wert.
	Status       messwertstatus.Messwertstatus             `json:"status,omitempty"`                      // Der Status gibt an, wie der Wert zu interpretieren ist, z.B. in Berechnungen.
	Statuszusatz messwertstatuszusatz.Messwertstatuszusatz `json:"statuszusatz,omitempty"`                // Statuszusatz ist eine Zusatzinformation zum Status, beispielsweise ein Grund für einen fehlenden Wert.
}

Zeitreihenwertkompakt ist eine Abbildung eines kompakten Zeitreihenwertes in dem ausschliesslich der Wert und Statusinformationen stehen.

type Zustaendigkeit added in v0.0.21

type Zustaendigkeit struct {
	Jobtitel     string                    `json:"jobtitel,omitempty"`                         // Jobtitel ist die berufliche Rolle des Ansprechpartners
	Abteilung    string                    `json:"abteilung,omitempty"`                        // Abteilung ist die Abteilung, in der der bo.Ansprechpartner tätig ist
	Themengebiet themengebiet.Themengebiet `json:"themengebiet,omitempty" validate:"required"` // Themengebiet erlaubt eine thematische Zuordnung des bo.Ansprechpartner
}

Zustaendigkeit ordnet einem bo.Ansprechpartner Abteilungen und Zuständigkeiten zu

Jump to

Keyboard shortcuts

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