@startuml

class Angebot {
    Los: SubmodelElementCollection[1]?

    Bei Vorverkauf / Stockverkauf keine Sortimentierung
    Preisvorstellung: SubmodelElementCollection[0..1]
    Bereitstellungsart: String[1]
    Anfahrthinweis: String?[0..1]
    Zielgruppe: ? [0..1]
    Abrechnungsmaß: String?[1]
    Umsatzsteuer: Float? [0..1]
    VerfügbarAb: Date [1]
    VerfügbarBis: Date [0..1]
    Status: ?
}
note right of Angebot::Bereitstellungsart
  siehe Property "TypeOfFaxNumber"
  in Digital Nameplate Submodel
end note

note left of Angebot::Bei
    Virtuelle Holzlisten/Polter nötig?
end note

note left of Angebot::Zielgruppe
  Collection? Enum?
  Spielt es überh. eine Rolle?
  Ich will nur verkaufen.
  Eher für Suche relevant.
end note

note left of Angebot::Status
  String? Enum?
end note

note right of Angebot::VerfügbarAb
  statt Verfügbarkeitszeitraum.
end note

object Preisvorstellung <<SubmodelElementCollection>>{
    Mindestpreis / Taxe (bei spät. Versteigerung/Submission)
    Durchschnittspreis
    Preis pro Stärkeklasse und Güteklasse
}
note right of Preisvorstellung
    SMC für Preis pro Stärke-/Güteklasse
end note

object Bereitstellungsart <<enum>>{
    1 - Frei Waldstraße
    5 - Frei Werk
    10 - Frei Bahnhof
    ...
    99 - Sonstiges
}

object Zielgruppe{
        Alle
        z. B. nur regionale Sägewerke/Einkäufer
        national
        EU
        International
        ....
}

object Abrechnungsmaß <<enum>>{
    1 - Waldmaß
    5 - Werkeingangsmaß
    10 - Beides ?
}


object Los <<SubmodelElementCollection>>{
    Nummer: String
    Holzliste: SubmodelElementCollection[1..*]
}

class Holzliste <<SubmodelElementCollection>>{
	Kopf-Daten: Waldbesitzer, Revier, Projekt, Hieb, Los, Ernte, Käufer, Hiebsart, Fuhrmann, Notizen
    Polter: SubmodelElementCollection[1..n]
    MessverfahrenTyp
    Sortiment
    Sorte
    Holzart
    Messverfahren
}

object Polter {
    Standort: ?
    Polternummer: String[1]
    Messverfahren: SubmodelElementCollection[*]
}



object Messverfahren {
}
object Einzelstamm {
    Stammnummer: String[1]
    Klammerstamm: SubmodelElementCollection[*]
    Mittendurchmesser
    Güteklasse
    Länge
    Festmeter ohne Rinde
    Qualitätsmerkmale
}
object Klammerstamm {
    Güteklasse: String[1]
    Durchmesser: Float[1]
    DurchmesserOhneRinde: Boolean[1]
    Länge: Float[1]
    Qualitätsmerkmale
}
note left of Klammerstamm
    Qualität und Güteklasse ist das gleiche
end note


object RaummaßIndustrieHolz{
    Stammlänge: Float[1]
    Polterbreite: Float[1]
    Durchschnittliche Polterhöhe: Float[1]
    Raummeter mit Rinde
    Reduktionsfaktor
    Festmeter ohne Rinde
}

object RaummaßEnergieholz {
    EnergieholzFormat: String[1]
    Angabe in Raummeter / Schüttraummeter: Float[1]
}
object EnergieholzFormat <<enum>> {
    1 - Waldhackschnitzel
    5 - Waldrestholz
    10 - Kaminholz
    99 - Sonstiges
}
object Schätzung {
}


Angebot --> "0..1" Preisvorstellung
Angebot --> "0..1" Zielgruppe
Angebot --> "1" Bereitstellungsart
Angebot --> "1" Abrechnungsmaß
Angebot --> "1" Los
Los "besteht aus"--> "1..*" Holzliste
Holzliste "besteht aus"--> "1..*" Polter
Polter --> "1..*" Messverfahren
Messverfahren ^-- RaummaßIndustrieHolz
Messverfahren ^-- RaummaßEnergieholz
Messverfahren ^-- Einzelstamm
Messverfahren ^-- Schätzung
Einzelstamm --> "*" Klammerstamm
RaummaßEnergieholz --> "1" EnergieholzFormat


@enduml
