@startuml

hide empty fields
hide empty methods
legend
|= |= line |
|<back:black>   </back>| inheritance |
|<back:green>   </back>| property reference |
|<back:blue>   </back>| discriminated class |
endlegend
interface QuoteRequestReference [[QuoteRequestReference.svg]] extends Reference {
    typeId: [[ReferenceTypeId.svg ReferenceTypeId]]
    id: String
    obj: [[QuoteRequest.svg QuoteRequest]]
}
interface Reference [[Reference.svg]]  {
    typeId: [[ReferenceTypeId.svg ReferenceTypeId]]
    id: String
}

interface QuoteRequestReference [[QuoteRequestReference.svg]]  {
    typeId: [[ReferenceTypeId.svg ReferenceTypeId]]
    id: String
    obj: [[QuoteRequest.svg QuoteRequest]]
}
interface Quote [[Quote.svg]]  {
    id: String
    version: Long
    createdAt: DateTime
    lastModifiedAt: DateTime
    key: String
    lastModifiedBy: [[LastModifiedBy.svg LastModifiedBy]]
    createdBy: [[CreatedBy.svg CreatedBy]]
    quoteRequest: [[QuoteRequestReference.svg QuoteRequestReference]]
    stagedQuote: [[StagedQuoteReference.svg StagedQuoteReference]]
    customer: [[CustomerReference.svg CustomerReference]]
    customerGroup: [[CustomerGroupReference.svg CustomerGroupReference]]
    validTo: DateTime
    sellerComment: String
    buyerComment: String
    store: [[StoreKeyReference.svg StoreKeyReference]]
    lineItems: [[LineItem.svg List<LineItem>]]
    customLineItems: [[CustomLineItem.svg List<CustomLineItem>]]
    totalPrice: [[TypedMoney.svg TypedMoney]]
    taxedPrice: [[TaxedPrice.svg TaxedPrice]]
    shippingAddress: [[Address.svg Address]]
    billingAddress: [[Address.svg Address]]
    inventoryMode: [[InventoryMode.svg InventoryMode]]
    taxMode: [[TaxMode.svg TaxMode]]
    taxRoundingMode: [[RoundingMode.svg RoundingMode]]
    taxCalculationMode: [[TaxCalculationMode.svg TaxCalculationMode]]
    country: String
    shippingInfo: [[ShippingInfo.svg ShippingInfo]]
    paymentInfo: [[PaymentInfo.svg PaymentInfo]]
    shippingRateInput: [[ShippingRateInput.svg ShippingRateInput]]
    itemShippingAddresses: [[Address.svg List<Address>]]
    directDiscounts: [[DirectDiscount.svg List<DirectDiscount>]]
    custom: [[CustomFields.svg CustomFields]]
    quoteState: [[QuoteState.svg QuoteState]]
    state: [[StateReference.svg StateReference]]
    purchaseOrderNumber: String
    businessUnit: [[BusinessUnitKeyReference.svg BusinessUnitKeyReference]]
}
interface StagedQuote [[StagedQuote.svg]]  {
    id: String
    version: Long
    createdAt: DateTime
    lastModifiedAt: DateTime
    key: String
    lastModifiedBy: [[LastModifiedBy.svg LastModifiedBy]]
    createdBy: [[CreatedBy.svg CreatedBy]]
    stagedQuoteState: [[StagedQuoteState.svg StagedQuoteState]]
    customer: [[CustomerReference.svg CustomerReference]]
    quoteRequest: [[QuoteRequestReference.svg QuoteRequestReference]]
    quotationCart: [[CartReference.svg CartReference]]
    validTo: DateTime
    sellerComment: String
    custom: [[CustomFields.svg CustomFields]]
    state: [[StateReference.svg StateReference]]
    purchaseOrderNumber: String
    businessUnit: [[BusinessUnitKeyReference.svg BusinessUnitKeyReference]]
}
QuoteRequestReference --> QuoteRequestReference #blue;text:blue : "typeId : quote-request"
QuoteRequestReference --> Quote #green;text:green : "quoteRequest"
QuoteRequestReference --> StagedQuote #green;text:green : "quoteRequest"
@enduml
