com

package
v0.0.19 Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2021 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

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 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 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 dienstleistung.Dienstleistungstyp `json:"dienstleistungstyp,omitempty" validate:"required"` // DienstleistungsTyp describes the type of the service
	Bezeichnung        string                            `json:"bezeichnung" 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 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 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" 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" validate:"required"` // GemarkungFlur is the district in which something is located
	Flurstueck    string `json:"flurstueck" validate:"required"`     // Flurstueck describes the parcel
}

Katasteradresse is a cadastre location

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" validate:"ltefield=GueltigBis"`                    // GueltigSeit ist der inklusive Zeitpunkt, ab dem die Messlokation zur Marktlokation gehört
	GueltigBis      time.Time                                     `json:"gueltigbis" 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 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 Rechnungsposition added in v0.0.9

type Rechnungsposition struct {
	Positionsnummer   int                                 `json:"positionsnummer" validate:"required"`                              // Positionsnummer ist eine fortlaufende Nummer für die Rechnungsposition
	LieferungVon      time.Time                           `json:"lieferungVon" validate:"required"`                                 // LieferungVon ist ein _inklusiver_ Start der Lieferung für die abgerechnete LEISTUNG
	LieferungBis      time.Time                           `json:"lieferungBis" validate:"required,gtfield=LieferungVon"`            // LieferungBis ist ein _exklusives_ Ende der Lieferung für die abgerechnete LEISTUNG
	Positionstext     string                              `json:"positionstext" 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:"bdewartikelnummer,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" validate:"required"`                               // PositionsMenge ist die abgerechnete Menge mit Einheit. Z.B. 4372 kWh
	ZeitbezogeneMenge *Menge                              `json:"zeitbezogeneMenge"`                                                // 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
	Einzelpreis       Preis                               `json:"einzelpreis" validate:"required"`                                  // Einzelpreis ist der Preis für eine Einheit der energetischen Menge
	TeilsummeNetto    Betrag                              `json:"teilsummeNetto" 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" validate:"required"`                              // TeilsummeSteuer ist der auf die Position entfallende Steuer, bestehend aus Steuersatz und Betrag
	TeilrabattNetto   *Betrag                             `json:"teilrabattNetto"`                                                  // TeilrabattNetto ist der Rabatt für diese Position
}

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

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

Steuerbetrag ist ein besteuerter Betrag

type Unterschrift added in v0.0.5

type Unterschrift struct {
	Name  string    `json:"name" validate:"required"`   // Name des Unterschreibers
	Datum time.Time `json:"datum" validate:"omitempty"` // Datum der Unterschrift
	Ort   string    `json:"ort" 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               time.Time                                         `json:"startdatum" validate:"omitempty"`                        // Startdatum is an inclusive start
	Enddatum                 time.Time                                         `json:"enddatum" validate:"omitempty,gtfield=Startdatum"`       // Enddatum is an exclusive end
	Wertermittlungsverfahren wertermittlungsverfahren.Wertermittlungsverfahren `json:"wertermittlungsverfahren,omitempty" validate:"required"` // Wertermittlungsverfahren is the type of the consumption
	Obiskennzahl             string                                            `json:"obiskennzahl" validate:"required" example:"1-0:1.8.1"`   // 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})
	Wert                     decimal.Decimal                                   `json:"wert" validate:"required" example:"17"`                  // Wert is the value (of einheit)
	Einheit                  mengeneinheit.Mengeneinheit                       `json:"einheit,omitempty" validate:"required" example:"KWH"`    // Einheit is the unit (associated to the wert)
}

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"`      // Vertragslaufzeit enthält den Zeitraum, über den dieser Vertrag läuft
	Kuendigungsfrist      Zeitraum `json:"kuendigungsfrist,omitempty"`      // Kuendigungsfrist ist die Frist, innerhalb derer der Vertrag gekündigt werden kann
	Vertragsverlaengerung Zeitraum `json:"vertragsverlaengerung,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"`       // Abschlagszyklus sind die Zyklen, in denen Abschläge erstellt werden. Alternativ kann auch die Anzahl in den Konditionen angeben werden.
}

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" validate:"required"`                          // Vertragsteilbeginn ist der inklusive Start der Gültigkeit des Vertragsteils
	Vertragsteilende         time.Time `json:"Vertragsteilende" validate:"required,gtfield=Vertragsteilbeginn"` // Vertragsteilende ist das exklusive Ende der Gültigkeit des Vertragsteils
	Lokation                 string    `json:"lokation" 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"`                                        // VertraglichFixierteMenge ist die für die Lokation festgeschriebene Abnahmemenge
	MinimaleAbnahmemenge     *Menge    `json:"minimaleAbnahmemenge"`                                            // MinimaleAbnahmemenge ist die, für die Lokation festgelegte Mindestabnahmemenge
	MaximaleAbnahmemenge     *Menge    `json:"maximaleAbnahmemenge"`                                            // 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 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" 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" 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" 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" 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)
}

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

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

type Zeitreihenwert added in v0.0.4

type Zeitreihenwert struct {
	Zeitreihenwertkompakt
	DatumUhrzeitVon time.Time `json:"datumUhrzeitVon" validate:"required" example:"2018-01-28T10:15:00+01"` // DatumUhrzeitVon is the inclusive begin
	DatumUhrzeitBis time.Time `json:"datumUhrzeitBis" 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.

Jump to

Keyboard shortcuts

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