2016-05-11 4 views
1

Ich verwende Hotcakes Commerce und die E-Commerce-Plattform auf meiner DNN-Website. Ich habe die serverseitige API für Hotcakes verwendet, um Produktinformationen von einer Installation von Hotcakes zu einer sauberen Installation von Hotcakes zu übertragen. Lange Rede, kurzer Sinn, eine meiner Datenbanktabellen wurde irgendwie modifiziert, und da ich nicht wusste, wie sich die Plattform in Zukunft auswirken wird, musste ich alle Produktdaten auf eine saubere Installation der Plattform verschieben. Ich habe das meiste von dem, was ich brauchte, durch den Aufbau einer Konsolenanwendung und die Verwendung der serverseitigen API erreicht.DNN Hotcakes Server Side API zum Erstellen einer einzelnen Variante

Das letzte Stück, das ich brauche, ist, die Varianteninformationen für jedes Produkt zu erstellen. Die einzigen Methoden, die ich in der serverseitigen API gesehen habe, ist ProductOptionsGenerateAllVariants().

Gibt es eine Möglichkeit, eine einzelne Variante mithilfe der serverseitigen API zu erstellen?

Antwort

0

Dies ist etwas einfach zu tun, vorausgesetzt, dass Sie Entscheidungen/Optionen und Varianten verstehen - sowie die Unterschiede zwischen den beiden.

Für die Uneingeweihten ... Eine Auswahl oder Option ermöglicht einem Kunden, eine andere Version des gleichen Produkts anzugeben, nicht mehr. Ein Beispiel dafür könnte eine T-Shirt-Farbe von Blau zu Grau ändern. Nichts anderes ändert sich, außer der Farbe.

Eine Variante ist immer noch eine Wahl im Kern, aber es ist eine zusätzliche Sache, die möglicherweise die SKU und/oder Preisgestaltung zu ändern. Ein Beispiel hierfür wäre die Wahl der Bildschirmgröße beim Kauf eines Laptops. Der 17-Zoll-Bildschirm ist teurer als der 15-Zoll-Bildschirm, das Inventar kann unterschiedlich beeinflusst werden und möglicherweise eine andere Artikelnummer/Modellnummer.

Wenn Sie eine einzelne Variante erstellen, benötigen Sie die richtigen Informationen, um die Auswahl zu treffen, wobei die Eigenschaft variant auf true festgelegt ist und Sie diese dann dem Produkt zuordnen müssen. In einigen Geschäften könnte es sogar Millionen möglicher Varianten für ein einzelnes Produkt geben. Daher ist der Code nicht so sauber, wie es jeder gerne hätte, aber ein Beispiel ist unten.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using Hotcakes.Commerce.Catalog; 
using Hotcakes.Commerce.Extensions; 

// get an instance of the application 
var HccApp = HccAppHelper.InitHccApp(); 

// get an instance of the product which you'd like to add a variant to 
var product = HccApp.CatalogServices.Products.FindBySku("SAMPLE003"); 

// get a list of the options that can become variants 
var variantOptions = product.Options.VariantsOnly(); 

// we'll fill this list with choices that we wish to make variants below 
var selections = new List<OptionSelection>(); 

// repeat this line of code for each choice in the product that makes up this variant 
// replace both of the parameters when adding the new OptionSelection, based on your use case 
selections.Add(new OptionSelection(variantOptions[0].Bvin, "REPLACE THIS WITH THE INDIVIDUAL CHOICE BVIN")); 

// create a new variant object 
var newVariant = new Variant() 
{ 
    ProductId = product.Bvin 
}; 

// specify the choices that make up this variant 
newVariant.Selections.AddRange(selections); 

// get the unique key to use to compare below 
var variantKey = newVariant.UniqueKey(); 

// check to see if the variant already exists first 
if (!product.Variants.Any(v => v.UniqueKey() == variantKey)) 
{ 
    // create the single variant 
    HccApp.CatalogServices.ProductVariants.Create(newVariant); 
}