819 lines
25 KiB
C#
819 lines
25 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.Globalization;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace gehGassi.Web.Models
|
|
{
|
|
/// <summary>
|
|
/// Viewmodel für eine Bestellung
|
|
/// </summary>
|
|
public class OrderVm
|
|
{
|
|
/// <summary>
|
|
/// Id der Bestellung
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
public long Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// Spezial-ID
|
|
/// </summary>
|
|
[Display(Name = "Order_UniqueId")]
|
|
public Guid UniqueId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Welcher "Kunden-Typ" hat die Bestellung erstellt?
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Order_OrderSource")]
|
|
public OrderSourceVm OrderSource { get; set; }
|
|
|
|
#region App-User
|
|
|
|
/// <summary>
|
|
/// Id des App-Users
|
|
/// </summary>
|
|
[Display(Name = "Order_DogOwnerId")]
|
|
public string AppUserId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des App-Userss (Vor- und Nachname)
|
|
/// </summary>
|
|
[MaxLength(250, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Order_DogOwnerName")]
|
|
public string AppUserName { get; set; }
|
|
|
|
/// <summary>
|
|
/// App-Users - Firma
|
|
/// </summary>
|
|
[MaxLength(200, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Order_DogOwnerCompany")]
|
|
public string AppUserCompany { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Kunde
|
|
|
|
/// <summary>
|
|
/// Kunde
|
|
/// </summary>
|
|
[Display(Name = "Order_CustomerId")]
|
|
public long? CustomerId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des Kunden / Vertriebspartners
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(200, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Order_CustomerName")]
|
|
public string CustomerName { get; set; }
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Bestellnummer
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Order_Number")]
|
|
public string Number { get; set; }
|
|
|
|
/// <summary>
|
|
/// Zähler für Bestell-Nummer
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Order_Counter")]
|
|
public long Counter { get; set; }
|
|
|
|
/// <summary>
|
|
/// Zwischensumme Netto
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Order_Subtotal")]
|
|
public decimal Subtotal { get; set; }
|
|
|
|
/// <summary>
|
|
/// Zwischensumme Brutto
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Order_SubtotalGross")]
|
|
public decimal SubtotalGross { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gesamt-Preis Netto
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Order_Total")]
|
|
public decimal Total { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gesamt-Preis Brutto
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Order_TotalGross")]
|
|
public decimal TotalGross { get; set; }
|
|
|
|
/// <summary>
|
|
/// Versandkosten Netto
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Order_Shipment")]
|
|
public decimal Shipment { get; set; }
|
|
|
|
/// <summary>
|
|
/// Versandkosten Brutto
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Order_ShipmentGross")]
|
|
public decimal ShipmentGross { get; set; }
|
|
|
|
/// <summary>
|
|
/// Status der Bestellung
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Order_OrderStatus")]
|
|
public OrderStatusVm OrderStatus { get; set; }
|
|
|
|
/// <summary>
|
|
/// Zahlungsart
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Order_PaymentType")]
|
|
public PaymentTypeVm PaymentType { get; set; }
|
|
|
|
/// <summary>
|
|
/// Zahlungsstatus
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Order_PaymentStatus")]
|
|
public PaymentStatusVm PaymentStatus { get; set; }
|
|
|
|
/// <summary>
|
|
/// Versandart
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Order_ShipmentType")]
|
|
public ShipmentTypeVm ShipmentType { get; set; }
|
|
|
|
/// <summary>
|
|
/// Versandstatus
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Order_ShipmentStatus")]
|
|
public ShipmentStatusVm ShipmentStatus { get; set; }
|
|
|
|
/// <summary>
|
|
/// Versanddatum
|
|
/// </summary>
|
|
[Display(Name = "Order_ShipmentDate")]
|
|
public DateTimeOffset? ShipmentDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Lieferadresse
|
|
/// </summary>
|
|
[Display(Name = "Order_DeliveryAddress")]
|
|
public OrderAddressVm DeliveryAddress { get; set; }
|
|
|
|
/// <summary>
|
|
/// REchnungsadresse
|
|
/// </summary>
|
|
[Display(Name = "Order_BillingAddress")]
|
|
public OrderAddressVm BillingAddress { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist die Liefer-Adresse auch die Rechnungsadresse?
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Order_DeliveryAddressIsBilling")]
|
|
public bool DeliveryAddressIsBilling { get; set; }
|
|
|
|
/// <summary>
|
|
/// Anmerkungen
|
|
/// </summary>
|
|
[MaxLength(1000, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Order_Comment")]
|
|
public string Comment { get; set; }
|
|
|
|
/// <summary>
|
|
/// Steuerstufen mit Werten als Json
|
|
/// </summary>
|
|
[Display(Name = "Order_TaxRatesJson")]
|
|
public string TaxRatesJson { get; set; }
|
|
|
|
/// <summary>
|
|
/// Benutzer-Einstellungen
|
|
/// </summary>
|
|
[Display(Name = "Order_TaxRates")]
|
|
public Dictionary<decimal, decimal> TaxRates
|
|
{
|
|
get
|
|
{
|
|
if (string.IsNullOrWhiteSpace(TaxRatesJson))
|
|
return new Dictionary<decimal, decimal>();
|
|
var taxRates = JsonConvert.DeserializeObject<Dictionary<decimal, decimal>>(TaxRatesJson, new JsonSerializerSettings() { Culture = CultureInfo.CurrentCulture });
|
|
return taxRates;
|
|
}
|
|
set
|
|
{
|
|
var settings = JsonConvert.SerializeObject(value, new JsonSerializerSettings() { Culture = CultureInfo.InvariantCulture });
|
|
TaxRatesJson = settings;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Datum der Erstellung
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Common_Created")]
|
|
public DateTimeOffset Created { get; set; }
|
|
|
|
/// <summary>
|
|
/// Datum der letzten Änderung
|
|
/// </summary>
|
|
[Display(Name = "Common_LastUpdate")]
|
|
public DateTimeOffset? LastUpdate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Wann wurden die AGB akzeptiert
|
|
/// </summary>
|
|
[Display(Name = "Order_AcceptTermsAndConditionsDate")]
|
|
public DateTimeOffset? AcceptTermsAndConditionsDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Wann wurden die Datenschutzbestimmung akzeptiert
|
|
/// </summary>
|
|
[Display(Name = "Order_AcceptGdprDate")]
|
|
public DateTimeOffset? AcceptGdprDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Wurde die Bestellung gelöscht?
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Common_Deleted")]
|
|
public bool Deleted { get; set; }
|
|
|
|
#region PayPal & Klarna Info
|
|
|
|
/// <summary>
|
|
/// Datum der Bezahlung via PayPal oder Klarna
|
|
/// </summary>
|
|
[Display(Name = "Order_PaymentDate")]
|
|
public DateTimeOffset? PaymentDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// ID der PayPal-Order wenn Zahlung mittels PayPal
|
|
/// </summary>
|
|
[MaxLength(200, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Order_PayPalOrderId")]
|
|
public string PayPalOrderId { get; set; }
|
|
|
|
/// <summary>
|
|
/// ID der Klarna-Order wenn Zahlung mittels Klarna
|
|
/// </summary>
|
|
[MaxLength(200, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Order_KlarnaOrderId")]
|
|
public string KlarnaOrderId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Datum wann die "Alles versendet" Info an Klarna übergeben wurde
|
|
/// </summary>
|
|
[Display(Name = "Order_KlarnaShipmentSentDate")]
|
|
public DateTimeOffset? KlarnaShipmentSentDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gibt an ob beim Melden des Versands ein Problem aufgetreten ist und diese Bestellung ignoriert werden soll
|
|
/// </summary>
|
|
[Display(Name = "Order_KlarnaShipmentError")]
|
|
public bool KlarnaShipmentError { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional: Infos seitens des PaymentProviders
|
|
/// </summary>
|
|
[Display(Name = "Order_PaymentInfo")]
|
|
public string PaymentInfo { get; set; }
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Liste der Artikel
|
|
/// </summary>
|
|
public List<OrderItemVm> Items { get; set; }
|
|
|
|
/// <summary>
|
|
/// Erstellt eine Instanz
|
|
/// </summary>
|
|
public OrderVm()
|
|
{
|
|
DeliveryAddress = new OrderAddressVm();
|
|
BillingAddress = new OrderAddressVm();
|
|
Items = new List<OrderItemVm>();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Viewmodel für eine Adresse für eine Bestellung
|
|
/// </summary>
|
|
public class OrderAddressVm
|
|
{
|
|
/// <summary>
|
|
/// Titel
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderAddress_Title")]
|
|
public string Title { get; set; }
|
|
|
|
/// <summary>
|
|
/// Vorname
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderAddress_FirstName")]
|
|
public string FirstName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Nachname
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderAddress_LastName")]
|
|
public string LastName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Company
|
|
/// </summary>
|
|
[MaxLength(200, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderAddress_Company")]
|
|
public string Company { get; set; }
|
|
|
|
/// <summary>
|
|
/// UID Nummer
|
|
/// </summary>
|
|
[MaxLength(50, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderAddress_Vat")]
|
|
public string Vat { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optionale Adresszeile 1
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderAddress_AddressLine1")]
|
|
public string AddressLine1 { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optionale Adresszeile 2
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderAddress_AddressLine2")]
|
|
public string AddressLine2 { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional: Stadt / Ort
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderAddress_City")]
|
|
public string City { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optinale PLZ
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(20, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderAddress_Zip")]
|
|
public string Zip { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bundesland / Staat
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(25, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderAddress_State")]
|
|
public string State { get; set; }
|
|
|
|
/// <summary>
|
|
/// ISO2 Ländercode
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(2, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderAddress_CountryCode")]
|
|
public string CountryCode { get; set; }
|
|
|
|
public string GetNameForPayPal()
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(Company))
|
|
return Company;
|
|
return $"{FirstName} {LastName}";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Viewmodel für einen Artikel in einer Bestellung
|
|
/// </summary>
|
|
public class OrderItemVm
|
|
{
|
|
/// <summary>
|
|
/// Id des Bestell-Items
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
public long Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id der Bestellung
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_OrderId")]
|
|
public long OrderId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id des Artikels
|
|
/// </summary>
|
|
[Display(Name = "OrderItem_ProductId")]
|
|
public int? ProductId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id der Produktkategorie
|
|
/// </summary>
|
|
[Display(Name = "OrderItem_ProductCategoryId")]
|
|
public int? ProductCategoryId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des Artikels
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(200, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderItem_Name")]
|
|
public string Name { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des Artikels in Standardsprache
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(200, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderItem_NameDefault")]
|
|
public string NameDefault { get; set; }
|
|
|
|
/// <summary>
|
|
/// Artikelnummer
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderItem_Sku")]
|
|
public string Sku { get; set; }
|
|
|
|
/// <summary>
|
|
/// Typ
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_ProductType")]
|
|
public ProductTypeVm ProductType { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id einer Listung, Werbung, Banner, Pin im Draft-Mode
|
|
/// </summary>
|
|
[MaxLength(128, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "OrderItem_ItemId")]
|
|
public string ItemId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id der Zugeordneten Steuer
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_TaxRateId")]
|
|
public int TaxRateId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gibt an ob das Produkt von der Steuer ausgenommen ist
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_IsTaxExempt")]
|
|
public bool IsTaxExempt { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gibt an ob das Produkt versendet werden kann
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_IsShipEnabled")]
|
|
public bool IsShipEnabled { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gibt an ob das Produkt Versandkostenbefreit ist
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_IsFreeShipping")]
|
|
public bool IsFreeShipping { get; set; }
|
|
|
|
/// <summary>
|
|
/// Zusatzversandkosten netto
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_AdditionalShippingCharge")]
|
|
public decimal AdditionalShippingCharge { get; set; }
|
|
|
|
/// <summary>
|
|
/// Stückzahl
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_Quantity")]
|
|
public int Quantity { get; set; }
|
|
|
|
/// <summary>
|
|
/// Einzel-Preis Netto
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_Price")]
|
|
public decimal Price { get; set; }
|
|
|
|
/// <summary>
|
|
/// Einzel-Preis Brutto
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_PriceGross")]
|
|
public decimal PriceGross { get; set; }
|
|
|
|
/// <summary>
|
|
/// Preis des Produktes netto für Produkte die 2 Preise benötigen
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_Price2")]
|
|
public decimal Price2 { get; set; }
|
|
|
|
/// <summary>
|
|
/// Preis des Produktes brutto für Produkte die 2 Preise benötigen
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_Price2Gross")]
|
|
public decimal Price2Gross { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gesamt-Preis Netto
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_Total")]
|
|
public decimal Total { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gesamt-Preis Brutto
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_TotalGross")]
|
|
public decimal TotalGross { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the weight
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_Weight")]
|
|
public decimal Weight { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the length
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_Length")]
|
|
public decimal Length { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the width
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_Width")]
|
|
public decimal Width { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the height
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "OrderItem_Height")]
|
|
public decimal Height { get; set; }
|
|
|
|
/// <summary>
|
|
/// Datum der Erstellung
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Common_Created")]
|
|
public DateTimeOffset Created { get; set; }
|
|
|
|
/// <summary>
|
|
/// Datum der letzten Änderung
|
|
/// </summary>
|
|
[Display(Name = "Common_LastUpdate")]
|
|
public DateTimeOffset? LastUpdate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Zusatzinfos zum Produkt wenn Listung, Banner usw.
|
|
/// </summary>
|
|
public string ProductSpecialInfo { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Viewmodel für eine Bestellung Listendarstellung
|
|
/// </summary>
|
|
public class OrderListVm
|
|
{
|
|
/// <summary>
|
|
/// Id der Bestellung
|
|
/// </summary>
|
|
public long Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// Spezial-ID
|
|
/// </summary>
|
|
public Guid UniqueId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Welcher "Kunden-Typ" hat die Bestellung erstellt?
|
|
/// </summary>
|
|
public OrderSourceVm OrderSource { get; set; }
|
|
|
|
/// <summary>
|
|
/// Welcher "Kunden-Typ" hat die Bestellung erstellt?
|
|
/// </summary>
|
|
public string OrderSourceText { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des Bestellers in Abhängigkeit der Bestellquelle
|
|
/// </summary>
|
|
public string OrderSourceName {
|
|
get
|
|
{
|
|
switch (OrderSource)
|
|
{
|
|
case OrderSourceVm.Customer:
|
|
return CustomerName;
|
|
case OrderSourceVm.AppUserDogOwner:
|
|
return AppUserName;
|
|
case OrderSourceVm.AppUserDogWalker:
|
|
return AppUserName;
|
|
case OrderSourceVm.AppUserBoth:
|
|
return AppUserName;
|
|
default:
|
|
throw new ArgumentOutOfRangeException();
|
|
}
|
|
}
|
|
}
|
|
|
|
#region Hundebesitzer
|
|
|
|
/// <summary>
|
|
/// Id des App-Users
|
|
/// </summary>
|
|
public string AppUserId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des App-Userss (Vor- und Nachname)
|
|
/// </summary>
|
|
public string AppUserName { get; set; }
|
|
|
|
/// <summary>
|
|
/// App-Users - Firma
|
|
/// </summary>
|
|
public string AppUserCompany { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Kunde
|
|
|
|
/// <summary>
|
|
/// Kunde
|
|
/// </summary>
|
|
public long? CustomerId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des Kunden / Vertriebspartners
|
|
/// </summary>
|
|
public string CustomerName { get; set; }
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Bestellnummer
|
|
/// </summary>
|
|
public string Number { get; set; }
|
|
|
|
/// <summary>
|
|
/// Zwischensumme Netto
|
|
/// </summary>
|
|
public decimal Subtotal { get; set; }
|
|
|
|
/// <summary>
|
|
/// Zwischensumme Brutto
|
|
/// </summary>
|
|
public decimal SubtotalGross { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gesamt-Preis Netto
|
|
/// </summary>
|
|
public decimal Total { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gesamt-Preis Brutto
|
|
/// </summary>
|
|
public decimal TotalGross { get; set; }
|
|
|
|
/// <summary>
|
|
/// Versandkosten Netto
|
|
/// </summary>
|
|
public decimal Shipment { get; set; }
|
|
|
|
/// <summary>
|
|
/// Versandkosten Brutto
|
|
/// </summary>
|
|
public decimal ShipmentGross { get; set; }
|
|
|
|
/// <summary>
|
|
/// Status der Bestellung
|
|
/// </summary>
|
|
public OrderStatusVm OrderStatus { get; set; }
|
|
|
|
/// <summary>
|
|
/// Status der Bestellung
|
|
/// </summary>
|
|
public string OrderStatusText { get; set; }
|
|
|
|
/// <summary>
|
|
/// Zahlungsart
|
|
/// </summary>
|
|
public PaymentTypeVm PaymentType { get; set; }
|
|
|
|
/// <summary>
|
|
/// Zahlungsart
|
|
/// </summary>
|
|
public string PaymentTypeText { get; set; }
|
|
|
|
/// <summary>
|
|
/// Zahlungsstatus
|
|
/// </summary>
|
|
public PaymentStatusVm PaymentStatus { get; set; }
|
|
|
|
/// <summary>
|
|
/// Zahlungsstatus
|
|
/// </summary>
|
|
public string PaymentStatusText { get; set; }
|
|
|
|
/// <summary>
|
|
/// Versandart
|
|
/// </summary>
|
|
public ShipmentTypeVm ShipmentType { get; set; }
|
|
|
|
/// <summary>
|
|
/// Versandart
|
|
/// </summary>
|
|
public string ShipmentTypeText { get; set; }
|
|
|
|
/// <summary>
|
|
/// Versandstatus
|
|
/// </summary>
|
|
public ShipmentStatusVm ShipmentStatus { get; set; }
|
|
|
|
/// <summary>
|
|
/// Versandstatus
|
|
/// </summary>
|
|
public string ShipmentStatusText { get; set; }
|
|
|
|
/// <summary>
|
|
/// Versanddatum
|
|
/// </summary>
|
|
public DateTimeOffset? ShipmentDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Datum der Erstellung
|
|
/// </summary>
|
|
public DateTimeOffset Created { get; set; }
|
|
|
|
/// <summary>
|
|
/// Datum der letzten Änderung
|
|
/// </summary>
|
|
public DateTimeOffset? LastUpdate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Wurde die Bestellung gelöscht?
|
|
/// </summary>
|
|
public bool Deleted { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Hilfsklasse für das Aktualisieren eines der Status-Felder einer Bestellung
|
|
/// </summary>
|
|
public class UpdateOrderStatusVm
|
|
{
|
|
/// <summary>
|
|
/// Name des Feldes
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
public string Name { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id der Bestellung - UniqueID!!!
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
public string PrimaryKey { get; set; }
|
|
|
|
/// <summary>
|
|
/// Wert der gesetzt werden soll. Enum, aber als ZAHL!
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
public string Value { get; set; }
|
|
}
|
|
}
|