Sz@rk Biznes posiada wbudowany profesjonalny arkusz kalkulacyjny obsługujący pliki Excel. Wiemy już, że bezpośrednio z arkusza możemy
otwierać i edytować produkty ze sklepu internetowego Shoper.
W tym dokumencie zademonstrujemy nowy sposób wykorzystania Sz@rk API i WebApi z poziomu arkusza kalkulacyjnego. Wykonamy arkusz z dynamiczną analizą sklepu internetowego za pomocą własnych funkcji dodanych do arkusza!
Arkusz dostępny jest w zakładce Narzędzia/Arkusz kalkulacyjny
W zakładce Plik wybieramy opcję Funkcje C#. Program otwiera edytor z kodem C# z domyślną definicją klasy.
W Edytorze definiujemy dowolną liczbę własnych funkcji, które następnie można wykorzystać w komórkach arkusza kalkulacyjnego analogicznie do funkcji standardowych. Funkcje użytkownika dają nam dostęp do baz SQL oraz sklepów internetowych Shoper za pośrednictwem Sz@rk API.
Z dokumentu Shoper -
statystyki (Dashboard) wiemy jak otrzymać podstawowe informacje udostępnione przez webapi shoper. Teraz zaprezentujemy opcję budowania własnych statystyk bezpośrednio w Arkuszu kalkulacyjnym, który do tego idealnie się nadaje.
Na zdjęciu widać obliczenia z zamówień Shoper dla podanego statusu zamówienia. W dwóch komórkach arkusza użyto funkcji UDF("OrdersCount"; x) zwracającej ilość zamówień, w dwóch kolejnych funkcji UDF("OrdersTotal"; x) zwracających wartość TOTAL zamówień.
Podczas bieżącej pracy z arkuszem, nie ma potrzeby otwierania zakładki z edytorem i kodem C#. Program ładuje zapisany skrypt automatycznie.
Poniżej prezentujemy pełny kod C# do wykonania tych obliczeń:
using System;
using System.Data;
using System.Drawing;
using TGSoft.UI;
using TGSoft.Data;
using TGSoft.Utils;
namespace Szark
{
public class CustomFunctions
{
private TGSoft.Data.Shoper.Order orders;
public CustomFunctions(SSController sender)
{
var iApi = TGSoft.Data.Shoper.ApiManager.GetApi(1);
orders = new TGSoft.Data.Shoper.Order() { Engine = iApi.Api };
}
public int OrdersCount(object status_id)
{
orders.OpenFilter(new string[] { "status_id" }, new object[] { status_id });
return orders.RecordCount;
}
public double OrdersTotal(object status_id)
{
orders.OpenFilter(new string[] { "status_id" }, new object[] { status_id });
return orders.SUM("total");
}
}
}
Uwaga! Parametrem metody GetAPi(id) jest id rekordu definicji sklepu internetowego. Zastosowana w przykładzie metoda SUM() będzie dostępna w kolejnej aktualizacji programu.
Wynik obliczeń w arkuszu kalkulacyjnym
Dla sprawdzenia, widok zamówień zgrupowanych wg statusu, odczytanych w zakładce Shoper/Zamówienia. Kolorem żółtym podświetlono sumy obliczone w arkuszu kalkulacyjnym.
To tylko mały przykład. W rzeczywistości arkusz może posiadać wiele obliczeń zarówno ze sklepów internetowych jak i baz SQL. W jednym arkuszu możemy jednocześnie analizować kilka sklepów Shoper i wykonywać raporty porównawcze pomiędzy sklepami a danymi zapisanymi w różnych bazach danych.
W zastosowanym przykładzie, funkcje pobierają dane bezpośrednio ze sklepu internetowego. Aby odświeżyć widok z aktualnymi danymi sklepu, wystarczy nacisnąć przycisk [Oblicz] lub klawisze CTRL+F9.
Dynamiczne arkusze z zastosowaniem własnych funkcji może nam przygotować dowolny informatyk znający podstawy składni C# lub posiadający intuicję w kopiowaniu gotowych przykładów :)