Najczęściej wykonywaną czynnością w obsłudze sklepu internetowego, poza realizacją zamówień, jest aktualizacja listy oferowanych produktów.
Sz@rk Biznes ma w tym zakresie wbudowane mechanizmy opisane już na naszych stronach:
Ostatni dokument opisuje sposób bezpośredniego ładowania wybranej kategorii produktów wprost do arkusza kalkulacyjnego, a po zmianie cen produktów, automatyczną aktualizację w sklepie. Metoda taka, będzie jednak nadal wymagała ładowania i szukania kolejnych kartotek, jeżeli chcemy zaktualizować produkty wg "określonego klucza", tzn. tylko niektóre kartoteki muszą być zmienione.
Spotykamy się też często z arkuszami Excel lub plikami CSV otrzymywanymi od naszych dostawców, których produkty oferujemy w swoich sklepach. Arkusze takie mogą zawierać nowe dane, które należy wprowadzić w sklepie. Taką czynność możemy wykonać tylko ręcznie, albo za pomocą specjalistycznego oprogramowania.
W tym dokumencie przedstawimy sposób zautomatyzowania wybiórczej aktualizacji z wykorzystaniem właśnie arkusza kalkulacyjnego. Proszę zapoznać się wcześniej z
pierwszą częścią tego dokumentu.
Zakładka [C# code] zawiera kod do aktualizacji cen w sklepie.
Lista produktów Shoper. Kolorem żółtym zaznaczono pozycje, które będą zmienione.
Ładujemy do arkusza dokument zawierający niezbędne dane.
W naszym przykładzie w pierwszej kolumnie znajduje się ID produktu, w drugiej nowa cena. Wykonujemy własny skrypt C#. W trakcie aktualizacji program wpisze do kolumny „D” cenę która obowiązywała przed zmianą.
Widok arkusza po wykonaniu zadania. W ostatniej kolumnie program wpisał starą cenę pobraną bezpośrednio ze sklepu.
Widok listy produktów sklepu po odświeżeniu listy. Tylko wybrane ceny zostały zmienione.
Widok tych samych produktów w panelu administratora sklepu.
W rzeczywistych warunkach możemy dodatkowo aktualizować inne kolumny, a układ danych w arkuszu może być w odmiennym formacie. Zawsze jednak wykonywany skrypt musi być odpowiednio dopasowany do właściwego arkusza. Zmiana nie powinna być trudna nawet dla początkującego programisty. Proszę zapoznać się z załączonym poniżej przykładowym kodem.
W przykładzie dodaliśmy tylko jeden przycisk do MENU. Użytkownik może jednak definiować więcej akcji i przycisków dostosowanych do własnych potrzeb.
namespace Szark
{
using System;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.Spreadsheet;
using TGSoft.UI;
using TGSoft.Utils;
public partial class Form1 : DevExpress.XtraEditors.XtraForm
{
private SSController controller;
public Form1(SSController sender)
{
this.InitializeComponent();
controller = sender;
simpleButton1.Click += simpleButton1_click;
}
public void Main()
{
this.ShowDialog();
}
private void simpleButton1_click(object sender, EventArgs e)
{
var iApi = TGSoft.Data.Shoper.ApiManager.GetApi(1);
var product = new TGSoft.Data.Shoper.Products()
{
Engine = iApi.Api,
AutoUpdateOnPost = true
};
Worksheet ws = controller.ActiveWorksheet;
Range r = ws.GetUsedRange();
double id, price;
controller.BeginUpdate();
for (int i = 1; i < r.RowCount; i++)
{
if (r[i, 0].Value.IsEmpty)
return;
id = r[i, 0].Value.NumericValue;
product.Open(id);
if (product.RecordCount == 1)
{
// stara cena
price = product.FieldByName("price").ToDouble();
r[i, 3].SetValue(price);
// nowa cena
price = r[i, 1].Value.NumericValue;
product.Edit();
product.FieldByName("price", price);
product.Post();
}
}
controller.EndUpdate();
Close();
}
}
}