Manipulacja stanem magazynowym przesyłanym przez SubSync do sklepu internetowego

Treść poniższego artykułu skierowana jest do Partnerów i profesjonalistów znających składnię języka SQL.

Błędna konfiguracja może doprowadzić do nieprawidłowości w działaniu integratora.

Nie udzielamy wsparcia w zakresie działania tej funkcji ani w zakresie poleceń SQL.

W bardziej nietypowych scenariuszach może być wymagane „oszukanie” wartości stanu magazynowego jaką integrator SubSync przesyła do sklepu. Na przykład:

  • zwiększenie/zmniejszenie ilości o określoną wartość,
  • wskazanie zupełnie innej wartości niż domyślna.

Obydwa cele można osiągnąć poprzez wskazanie własnego polecenia SQL pobierającego dostępną ilość towaru z bazy Subiekta.

Polecenie to musi być typu SELECT i zawsze musi zwracać wartość rzeczywistą (nie powinno w żadnym wypadku zwrócić NULL). SELECT może odwoływać się zarówno do tabeli (table) jak i do widoku (view). Wartość ta zostanie – w zależności od składni polecenia:

  • dodana do wartości odczytanej standardowym mechanizmem integratora
  • zamieni wartość odczytaną przez integrator. W takim wypadku w poleceniu SQL musi znaleźć się fraza INSTEAD_OF_SM (patrz przykłady poniżej).

Polecenie SQL musi zawierać znacznik {0}. W jego miejsce podstawiony zostanie identyfikator towaru z bazy Subiekta (GT/Navireo: [tw__Id] z tabeli [dbo].[tw__Towar]. NEXO PRO: Id z tabeli [ModelDanychContainer].[Asortymenty]).

Zapytanie należy umieścić w ustawieniu StanyMagAddQuery w konfiguracji zaawansowanej integratora. Okno konfiguracji zaawansowanej można otworzyć poprzez kombinację klawiszy: Shift + F9 w głównym oknie integratora.

Uwaga: Zmiany w innych ustawieniach konfiguracji zaawansowanej mogą być dokonywane wyłącznie w konsultacji z producentem integratora!

Przykłady

Subiekt GT i Navireo

Pobierz ilość z pola własnego 1 towaru i dodaj ją do ilości dostępnej w magazynie:

SELECT COALESCE(TRY_CAST((CASE WHEN tw_Pole1 IS NULL OR tw_Pole1 = ” THEN '0′ ELSE tw_Pole1 END) AS DECIMAL(10,4)), 0) FROM [dbo].[tw__Towar] WHERE [tw_Id] = '{0}’

Pobierz ilość z pola własnego 1 towaru i prześlij ją zamiast ilości dostępnej w magazynie:

SELECT COALESCE(TRY_CAST((CASE WHEN tw_Pole1 IS NULL OR tw_Pole1 = ” THEN '0′ ELSE tw_Pole1 END) AS DECIMAL(10,4)), 0) AS INSTEAD_OF_SM FROM [dbo].[tw__Towar] WHERE [tw_Id] = '{0}’

Subiekt NEXO PRO

Pobierz ilość z pola zaawansowanego towaru i dodaj ją do ilości dostępnej w magazynie:

SELECT COALESCE ([D1], 0) FROM [ModelDanychContainer].[Asortymenty_PolaWlasneAsortyment_Adv2] WHERE [Id] = '{0}’

Pobierz ilość z pola zaawansowanego towaru i prześlij ją zamiast ilości dostępnej w magazynie:

SELECT COALESCE ([D1], 0) AS INSTEAD_OF_SM FROM [ModelDanychContainer].[Asortymenty_PolaWlasneAsortyment_Adv2] WHERE [Id] = '{0}’