using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using gehGassi.Domain.Localization;
using gehGassi.Web.Helper;
using Microsoft.Extensions.Localization;
namespace gehGassi.Web.Models
{
///
/// Viewmodel für ein Produkt
///
public class ProductVm
{
///
/// Eindeutige Id
///
[Required(ErrorMessage = "Err_Required")]
public int Id { get; set; }
///
/// Produkttyp
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Product_ProductType", Description = "Product_ProductType_Desc")]
public ProductTypeVm ProductType { get; set; }
///
/// Um welche Art von Listung handelt es sich, wenn das Produkt für Listungen ist
///
[Display(Name = "Common_ListingType", Description = "Common_ListingType_Desc")]
public ListingTypeVm ListingType { get; set; }
///
/// Id der Rubrik - notwendig wenn Typ Listung!
///
[Display(Name = "Product_AdvertisementCategoryId")]
public string AdvertisementCategoryId { get; set; }
///
/// Id der Produktkategorie
///
[Display(Name = "Product_ProductCategoryId")]
public int? ProductCategoryId { get; set; }
///
/// Id der Branche - notwendig wenn Typ Listung!
///
[Display(Name = "Product_BranchId")]
public string BranchId { get; set; }
///
/// Einstellung wer das Produkt sehen darf
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Product_Visibility", Description = "Product_Visibility_Desc")]
public ShopVisibilityVm Visibility { get; set; }
///
/// Art des Preises für die Kalkulation
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Product_PriceType", Description = "Product_PriceType_Desc")]
public PriceTypeVm PriceType { get; set; }
///
/// Aliquot Berechnung?
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Product_PriceAliquotType", Description = "Product_PriceAliquotType_Desc")]
public PriceAliquotTypeVm PriceAliquotType { get; set; }
///
/// Starttyp bei Zeitbezogenen Produkten
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Product_ProductStartType", Description = "Product_ProductStartType_Desc")]
public ProductStartTypeVm ProductStartType { get; set; }
///
/// Wenn Banner, wo plaziert
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Product_BannerLocation", Description = "Product_BannerLocation_Desc")]
public BannerLocationVm BannerLocation { get; set; }
///
/// Wenn Banner wie groß?
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Product_BannerSize", Description = "Product_BannerSize_Desc")]
public BannerSizeVm BannerSize { get; set; }
///
/// Pin: Radius in KM der bei einem Pin inkludiert ist
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 500.0, ErrorMessage = "Err_Range")]
[Display(Name = "Product_PinRadius", Description = "Product_PinRadius_Desc")]
public double PinRadius { get; set; }
///
/// Pin: Prozent des Preises je zusätzlichen KM als Aufschlag
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100.0, ErrorMessage = "Err_Range")]
[Display(Name = "Product_PinPercentPerKm", Description = "Product_PinPercentPerKm_Desc")]
public decimal PinPercentPerKm { get; set; }
///
/// Bild für das Produkt - Allgemein
///
[MaxLength(500, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Product_Image", Description = "Product_Image_Desc")]
public string Image { get; set; }
///
/// Interne Anmerkungen
///
[Display(Name = "Common_Comment")]
public string Comment { get; set; }
///
/// Artikelnummer
///
[Required(ErrorMessage = "Err_Required")]
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Product_Sku", Description = "Product_Sku_Desc")]
public string Sku { get; set; }
///
/// Nummer laut Hersteller
///
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Product_ManufacturerPartNumber", Description = "Product_ManufacturerPartNumber_Desc")]
public string ManufacturerPartNumber { get; set; }
///
/// Id des Downloads, wenn das Produkt ein Download ist
///
[Display(Name = "Product_DownloadId", Description = "Product_DownloadId_Desc")]
public int? DownloadId { get; set; }
///
/// Gibt an ob das Produkt versendet werden kann
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Product_IsShipEnabled", Description = "Product_IsShipEnabled_Desc")]
public bool IsShipEnabled { get; set; }
///
/// Gibt an ob das Produkt Versandkostenbefreit ist
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Product_IsFreeShipping", Description = "Product_IsFreeShipping_Desc")]
public bool IsFreeShipping { get; set; }
///
/// Zusatzversandkosten netto
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_AdditionalShippingCharge", Description = "Product_AdditionalShippingCharge_Desc")]
public decimal AdditionalShippingCharge { get; set; }
///
/// Gibt an ob das Produkt von der Steuer ausgenommen ist
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Product_IsTaxExempt", Description = "Product_IsTaxExempt_Desc")]
public bool IsTaxExempt { get; set; }
///
/// Id der Zugeordneten Steuer
///
[Required(ErrorMessage = "Err_Required")]
[Range(1, int.MaxValue, ErrorMessage = "Err_Required")]
[Display(Name = "Product_TaxRateId", Description = "Product_TaxRateId_Desc")]
public int TaxRateId { get; set; }
///
/// Anzahl der Produkte auf Lager
///
[Required(ErrorMessage = "Err_Required")]
[Range(0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_StockQuantity", Description = "Product_StockQuantity_Desc")]
public int StockQuantity { get; set; }
///
/// Soll die Lagerverfügbarkeit angezeigt werden?
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Product_DisplayStockAvailability", Description = "Product_DisplayStockAvailability_Desc")]
public bool DisplayStockAvailability { get; set; }
///
/// Soll die Anzahl der Produkte auf Lager angezeigt werden?
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Product_DisplayStockQuantity", Description = "Product_DisplayStockQuantity_Desc")]
public bool DisplayStockQuantity { get; set; }
///
/// Ab wie vielen Produkten eine Warnung an den Admin senden?
///
[Required(ErrorMessage = "Err_Required")]
[Range(0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_NotifyAdminForQuantityBelow", Description = "Product_NotifyAdminForQuantityBelow_Desc")]
public int NotifyAdminForQuantityBelow { get; set; }
///
/// Wie viele Produkte müssen mindestens bestellt werden?
///
[Required(ErrorMessage = "Err_Required")]
[Range(0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_OrderMinimumQuantity", Description = "Product_OrderMinimumQuantity_Desc")]
public int OrderMinimumQuantity { get; set; }
///
/// Wie viele Produkte dürfen maximal bestellt werden?
///
[Required(ErrorMessage = "Err_Required")]
[Range(0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_OrderMaximumQuantity", Description = "Product_OrderMaximumQuantity_Desc")]
public int OrderMaximumQuantity { get; set; }
///
/// Preis des Produktes netto
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_Price", Description = "Product_Price_Desc")]
public decimal Price { get; set; }
///
/// Alter Preis wenn man eine Aktion setzen möchte
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_OldPrice", Description = "Product_OldPrice_Desc")]
public decimal OldPrice { get; set; }
///
/// Preis des Produktes netto für Produkte die 2 Preise benötigen
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_Price2", Description = "Product_Price2_Desc")]
public decimal Price2 { get; set; }
///
/// Alter Preis wenn man eine Aktion setzen möchte für Produkte die 2 Preise benötigen
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_OldPrice2", Description = "Product_OldPrice2_Desc")]
public decimal OldPrice2 { get; set; }
///
/// Gets or sets the weight
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_Weight", Description = "Product_Weight_Desc")]
public decimal Weight { get; set; }
///
/// Gets or sets the length
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_Length", Description = "Product_Length_Desc")]
public decimal Length { get; set; }
///
/// Gets or sets the width
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_Width", Description = "Product_Width_Desc")]
public decimal Width { get; set; }
///
/// Gets or sets the height
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_Height", Description = "Product_Height_Desc")]
public decimal Height { get; set; }
///
/// Reihenfolge der Darstellung, danach nach Name
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Common_DisplayOrder", Description = "Common_DisplayOrder_Desc")]
public int DisplayOrder { get; set; }
///
/// Wurde das Produkt gelöscht
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Common_Deleted")]
public bool Deleted { get; set; }
///
/// Datum der Erstellung
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Common_Created")]
public DateTimeOffset Created { get; set; }
///
/// Texte mehrsprachig
///
public List TextVms { get; set; }
}
///
/// Viewmodel für das Anlegen und Bearbeiten von Produkten
///
public class ProductCrudVm : ProductVm, IValidatableObject
{
///
/// Name der Produktkategorie
///
public string ProductCategoryName { get; set; }
///
/// Name der Steuerstufe
///
public string TaxRateName { get; set; }
///
/// Name der Branche
///
public string BranchName { get; set; }
///
/// Name der Rubrik
///
public string AdvertisementCategoryName { get; set; }
public IEnumerable Validate(ValidationContext validationContext)
{
if (ProductType == ProductTypeVm.Advertisement)
{
if (string.IsNullOrEmpty(AdvertisementCategoryId))
{
var stringLocalizer = validationContext.GetService(typeof(IStringLocalizer)) as IStringLocalizer;
yield return new ValidationResult(stringLocalizer["Err_AdvertisementCategory_Missing"], new List { "AdvertisementCategoryId" });
}
}
if (ProductType == ProductTypeVm.Listing)
{
if (string.IsNullOrEmpty(BranchId))
{
var stringLocalizer = validationContext.GetService(typeof(IStringLocalizer)) as IStringLocalizer;
yield return new ValidationResult(stringLocalizer["Err_Branch_Missing"], new List { "BranchId" });
}
}
if (OrderMaximumQuantity < OrderMinimumQuantity)
{
var stringLocalizer = validationContext.GetService(typeof(IStringLocalizer)) as IStringLocalizer;
yield return new ValidationResult(stringLocalizer["Err_OrderMaximumQuantity"], new List { "OrderMaximumQuantity" });
}
}
}
///
/// Hilfsklasse für das Erfassen Mehrsprachiger Texte für Produkte.
/// Wird so gelöst, damit beliebig viele Sprachen verwendet werden können
///
public class ProductTextVm
{
///
/// Id
///
[Required(ErrorMessage = "Err_Required")]
public int Id { get; set; }
///
/// Srache
///
[Required(ErrorMessage = "Err_Required")]
public string Language { get; set; }
///
/// Name
///
//[Required(ErrorMessage = "Err_Required")]
[RequiredIfDefaultLanguage("Language", ErrorMessage = "Err_Required")]
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Product_Name", Description = "Product_Name_Desc")]
public string Name { get; set; }
///
/// Beschreibung
///
[Display(Name = "Product_ShortDescription", Description = "Product_ShortDescription_Desc")]
[MaxLength(500, ErrorMessage = "Err_StringLength_Max")]
public string ShortDescription { get; set; }
///
/// Beschreibung
///
[Display(Name = "Product_Description", Description = "Product_Description_Desc")]
public string Description { get; set; }
///
/// Bild für die jeweilige Sprache
///
[Display(Name = "Product_ImageLanguage", Description = "Product_ImageLanguage_Desc")]
public string ImageLanguage { get; set; }
}
///
/// Viewmodel für ein Produkt Listendarstellung
///
public class ProductListVm : LocalizableBase
{
///
/// Eindeutige Id
///
public int Id { get; set; }
///
/// Produkttyp
///
public ProductTypeVm ProductType { get; set; }
///
/// Produkttyp als Text
///
public string ProductTypeText { get; set; }
///
/// Um welche Art von Listung handelt es sich, wenn das Produkt für Listungen ist
///
public ListingTypeVm ListingType { get; set; }
///
/// Id der Rubrik - notwendig wenn Typ Listung!
///
public string AdvertisementCategoryId { get; set; }
///
/// Name der Rubrik wenn Listing
///
public string AdvertisementCategoryName { get; set; }
///
/// Id der Produktkategorie
///
public int? ProductCategoryId { get; set; }
///
/// Name der Produktkategorie
///
public string ProductCategoryName { get; set; }
///
/// Id der Branche - notwendig wenn Typ Listung!
///
public string BranchId { get; set; }
///
/// Name der Branche
///
public string BranchName { get; set; }
///
/// Einstellung wer das Produkt sehen darf
///
public ShopVisibilityVm Visibility { get; set; }
///
/// Einstellung wer das Produkt sehen darf als Text
///
public string VisibilityText { get; set; }
///
/// Art des Preises für die Kalkulation
///
public PriceTypeVm PriceType { get; set; }
///
/// Art des Preises für die Kalkulation
///
public string PriceTypeText { get; set; }
///
/// Aliquot Berechnung?
///
public PriceAliquotTypeVm PriceAliquotType { get; set; }
///
/// Aliquot Berechnung?
///
public string PriceAliquotTypeText { get; set; }
///
/// Starttyp bei Zeitbezogenen Produkten
///
public ProductStartTypeVm ProductStartType { get; set; }
///
/// Starttyp bei Zeitbezogenen Produkten
///
public string ProductStartTypeText { get; set; }
///
/// Wenn Banner, wo plaziert
///
public BannerLocationVm BannerLocation { get; set; }
///
/// Text für Bannerplatzierung
///
public string BannerLocationText { get; set; }
///
/// Wenn Banner wie groß?
///
public BannerSizeVm BannerSize { get; set; }
///
/// Text für Bannergröße
///
public string BannerSizeText { get; set; }
///
/// Pin: Radius in KM der bei einem Pin inkludiert ist
///
public double PinRadius { get; set; }
///
/// Pin: Prozent des Preises je zusätzlichen KM als Aufschlag
///
public decimal PinPercentPerKm { get; set; }
///
/// Name des Produktes
///
public string Name
{
get => Get("Name", GetLanguage());
set => Set("Name", GetLanguage(), value);
}
///
/// Name Übersetzungen
///
public string NameLocalized { get; set; }
///
/// Kurzbeschreibung des Produktes
///
public string ShortDescription
{
get => Get("ShortDescription", GetLanguage());
set => Set("ShortDescription", GetLanguage(), value);
}
///
/// Kurzbeschreibung Übersetzungen
///
public string ShortDescriptionLocalized { get; set; }
///
/// Bild für das Produkt - Allgemein
///
public string Image { get; set; }
///
/// Bild für das Produkt - für die gewählte Sprache
///
public string ImageLanguage { get; set; }
///
/// Artikelnummer
///
public string Sku { get; set; }
///
/// Gibt an ob das Produkt versendet werden kann
///
public bool IsShipEnabled { get; set; }
///
/// Gibt an ob das Produkt Versandkostenbefreit ist
///
public bool IsFreeShipping { get; set; }
///
/// Zusatzversandkosten netto
///
public decimal AdditionalShippingCharge { get; set; }
///
/// Gibt an ob das Produkt von der Steuer ausgenommen ist
///
public bool IsTaxExempt { get; set; }
///
/// Id der Zugeordneten Steuer
///
public int TaxRateId { get; set; }
///
/// Name der Steuerstufe
///
public string TaxRateName { get; set; }
///
/// Anzahl der Produkte auf Lager
///
public int StockQuantity { get; set; }
///
/// Wie viele Produkte müssen mindestens bestellt werden?
///
public int OrderMinimumQuantity { get; set; }
///
/// Wie viele Produkte dürfen maximal bestellt werden?
///
public int OrderMaximumQuantity { get; set; }
///
/// Preis des Produktes netto
///
public decimal Price { get; set; }
///
/// Alter Preis wenn man eine Aktion setzen möchte
///
public decimal OldPrice { get; set; }
///
/// Preis des Produktes netto für Produkte die 2 Preise benötigen
///
public decimal Price2 { get; set; }
///
/// Alter Preis wenn man eine Aktion setzen möchte für Produkte die 2 Preise benötigen
///
public decimal OldPrice2 { get; set; }
///
/// Reihenfolge der Darstellung, danach nach Name
///
public int DisplayOrder { get; set; }
///
/// Anzahl der Ländereinstellungen für dieses Produkt
///
public int CountrySettingsCount { get; set; }
///
/// Wurde das Produkt gelöscht
///
public bool Deleted { get; set; }
///
/// Datum der Erstellung
///
public DateTimeOffset Created { get; set; }
}
///
/// Viewmodel für ein Produkt Listendarstellung um Ländersettings erweitert
///
public class ProductListCountryVm : ProductListVm
{
///
/// ISO2 Land für die Einstellungen
///
public string CountryIso { get; set; }
///
/// Preis des Produktes netto
///
public decimal PriceCountry { get; set; }
///
/// Alter Preis wenn man eine Aktion setzen möchte
///
public decimal OldPriceCountry { get; set; }
///
/// Preis des Produktes netto für Produkte die 2 Preise benötigen
///
public decimal Price2Country { get; set; }
///
/// Alter Preis wenn man eine Aktion setzen möchte für Produkte die 2 Preise benötigen
///
public decimal OldPrice2Country { get; set; }
///
/// Einstellung ob das Produkt in einem Land nicht verfügbar ist
///
public bool NotAvailable { get; set; }
}
///
/// Einstellungen eines Produktes in Bezug auf ein Land
///
public class ProductCountryVm
{
///
/// Eindeutige Id
///
[Required(ErrorMessage = "Err_Required")]
public int Id { get; set; }
///
/// Id des Produktes
///
[Required(ErrorMessage = "Err_Required")]
public int ProductId { get; set; }
///
/// ISO2 Land für die Einstellungen
///
[Required(ErrorMessage = "Err_Required")]
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Common_Country")]
public string CountryIso { get; set; }
///
/// Preis des Produktes netto
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_Price", Description = "Product_Price_Desc")]
public decimal Price { get; set; }
///
/// Alter Preis wenn man eine Aktion setzen möchte
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_OldPrice", Description = "Product_OldPrice_Desc")]
public decimal OldPrice { get; set; }
///
/// Preis des Produktes netto für Produkte die 2 Preise benötigen
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_Price2", Description = "Product_Price2_Desc")]
public decimal Price2 { get; set; }
///
/// Alter Preis wenn man eine Aktion setzen möchte für Produkte die 2 Preise benötigen
///
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100000000, ErrorMessage = "Err_Range")]
[Display(Name = "Product_OldPrice2", Description = "Product_OldPrice2_Desc")]
public decimal OldPrice2 { get; set; }
///
/// Einstellung ob das Produkt in einem Land nicht verfügbar ist
///
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Product_NotAvailable", Description = "Product_NotAvailable_Desc")]
public bool NotAvailable { get; set; }
}
///
/// Viewmodel für das Anlegen und Bearbeiten einer Produkteinstellung für ein Land
///
public class ProductCountryCrudVm : ProductCountryVm
{
///
/// Name des Landes
///
public string CountryName { get; set; }
}
public class ProductShopVm : LocalizableBase
{
///
/// Eindeutige Id
///
public int Id { get; set; }
///
/// Produkttyp
///
public ProductTypeVm ProductType { get; set; }
///
/// Produkttyp als Text
///
public string ProductTypeText { get; set; }
///
/// Um welche Art von Listung handelt es sich, wenn das Produkt für Listungen ist
///
public ListingTypeVm ListingType { get; set; }
///
/// Id der Rubrik - notwendig wenn Typ Listung!
///
public string AdvertisementCategoryId { get; set; }
///
/// Name der Rubrik wenn Listing
///
public string AdvertisementCategoryName { get; set; }
///
/// Id der Produktkategorie
///
public int? ProductCategoryId { get; set; }
///
/// Name der Produktkategorie
///
public string ProductCategoryName { get; set; }
///
/// Id der Branche - notwendig wenn Typ Listung!
///
public string BranchId { get; set; }
///
/// Name der Branche
///
public string BranchName { get; set; }
///
/// Art des Preises für die Kalkulation
///
public PriceTypeVm PriceType { get; set; }
///
/// Art des Preises für die Kalkulation
///
public string PriceTypeText { get; set; }
///
/// Aliquot Berechnung?
///
public PriceAliquotTypeVm PriceAliquotType { get; set; }
///
/// Aliquot Berechnung?
///
public string PriceAliquotTypeText { get; set; }
///
/// Starttyp bei Zeitbezogenen Produkten
///
public ProductStartTypeVm ProductStartType { get; set; }
///
/// Starttyp bei Zeitbezogenen Produkten
///
public string ProductStartTypeText { get; set; }
///
/// Wenn Banner, wo plaziert
///
public BannerLocationVm BannerLocation { get; set; }
///
/// Text für Bannerplatzierung
///
public string BannerLocationText { get; set; }
///
/// Wenn Banner wie groß?
///
public BannerSizeVm BannerSize { get; set; }
///
/// Text für Bannergröße
///
public string BannerSizeText { get; set; }
///
/// Pin: Radius in KM der bei einem Pin inkludiert ist
///
public double PinRadius { get; set; }
///
/// Pin: Prozent des Preises je zusätzlichen KM als Aufschlag
///
public decimal PinPercentPerKm { get; set; }
///
/// Name des Produktes
///
public string Name
{
get => Get("Name", GetLanguage());
set => Set("Name", GetLanguage(), value);
}
///
/// Name Übersetzungen
///
public string NameLocalized { get; set; }
///
/// Kurzbeschreibung des Produktes
///
public string ShortDescription
{
get => Get("ShortDescription", GetLanguage());
set => Set("ShortDescription", GetLanguage(), value);
}
///
/// Kurzbeschreibung Übersetzungen
///
public string ShortDescriptionLocalized { get; set; }
///
/// Beschreibung des Produktes in HTML
///
public string Description
{
get => Get("Description", GetLanguage());
set => Set("Description", GetLanguage(), value);
}
///
/// Beschreibung des Produktes in HTML Übersetzung
///
public string DescriptionLocalized { get; set; }
///
/// Bild für das Produkt - Allgemein
///
public string Image { get; set; }
///
/// Bild für das Produkt - für die gewählte Sprache
///
public string ImageLanguage { get; set; }
///
/// Artikelnummer
///
public string Sku { get; set; }
///
/// Gibt an ob das Produkt versendet werden kann
///
public bool IsShipEnabled { get; set; }
///
/// Gibt an ob das Produkt Versandkostenbefreit ist
///
public bool IsFreeShipping { get; set; }
///
/// Zusatzversandkosten netto
///
public decimal AdditionalShippingCharge { get; set; }
///
/// Gibt an ob das Produkt von der Steuer ausgenommen ist
///
public bool IsTaxExempt { get; set; }
///
/// Id der Zugeordneten Steuer
///
public int TaxRateId { get; set; }
///
/// Name der Steuerstufe
///
public string TaxRateName { get; set; }
///
/// Anzahl der Produkte auf Lager
///
public int StockQuantity { get; set; }
///
/// Wie viele Produkte müssen mindestens bestellt werden?
///
public int OrderMinimumQuantity { get; set; }
///
/// Wie viele Produkte dürfen maximal bestellt werden?
///
public int OrderMaximumQuantity { get; set; }
///
/// Preis des Produktes netto
///
public decimal Price { get; set; }
///
/// Alter Preis wenn man eine Aktion setzen möchte
///
public decimal OldPrice { get; set; }
///
/// Preis des Produktes brutto
///
public decimal PriceGross { get; set; }
///
/// Alter Preis wenn man eine Aktion setzen möchte brutto
///
public decimal OldPriceGross { get; set; }
///
/// Preis des Produktes netto für Produkte die 2 Preise benötigen
///
public decimal Price2 { get; set; }
///
/// Alter Preis wenn man eine Aktion setzen möchte für Produkte die 2 Preise benötigen
///
public decimal OldPrice2 { get; set; }
///
/// Preis des Produktes netto für Produkte die 2 Preise benötigen brutto
///
public decimal Price2Gross { get; set; }
///
/// Alter Preis wenn man eine Aktion setzen möchte für Produkte die 2 Preise benötigen brutto
///
public decimal OldPrice2Gross { get; set; }
///
/// Angewandte Steuer
///
public decimal Tax { get; set; }
///
/// Reihenfolge der Darstellung, danach nach Name
///
public int DisplayOrder { get; set; }
}
}