Baza wiedzy LINKSPOT › Sprzedaż B2B (Business to Business)

Koszt dostawy wyliczany przez Comarch e-Sklep Sync

Sprzedaż B2B (Business to Business) · Opublikowano 2025-02-21

Spis treści

Informacje ogólne o koszcie dostawy wyliczanym przez Comarch e-Sklep Sync

Worker erpDataDeliveryCost

Worker erpDataDeliveryCost2

Informacje ogólne o koszcie dostawy (dostawa o typie 5)

Od wersji Comarch e-Sklep 2020 dodano możliwość* określenia kolejnego sposobu wyliczania kosztów dostawy na podstawie danych przesłanych przez Comarch e-Sklep Sync. Dzięki temu możliwe jest przygotowanie własnej macierzy dostaw obsługującej nawet najbardziej skomplikowane scenariusze wyliczania kosztów dostawy.

Wskazówka

Implementacja indywidualnego kosztu dostawy z wykorzystaniem usługi Comarch e-Sklep Sync* przeznaczona jest dla użytkowników zaawansowanych, obsługujących biegle Microsoft Visual Studio, a przy jej konfiguracji niezbędna jest wiedza programistyczna. Instrukcja wymaga on zbudowania (we własnym zakresie) odpowiedniej biblioteki DLL, skompilowania kodu oraz dopisania w niej nowej procedury. W dalszej kolejności przygotowany plik DLL należy dodać do zainstalowanej usługi.

(*opcja niedostępna w Comarch ERP Optima Chmura Standard)

Na potrzeby pobierania własnych kosztów dostaw w szablonie należy obsłużyć dostawę o typie 5.

Wskazówka

Po dodaniu tego typu dostawy do macierzy kosztów, nie będzie on widoczny na szczegółach towarów w e-Sklepie w sekcji „Dostawa już od”.

Worker erpDataDeliveryCost

Wymaga on wykorzystania workera (w postaci DLL) o nazwie erpDataDeliveryCost.

W tym workerze są przekazywane obiekty z kontrahenta, podobnie jak w przypadku innych standardowych workerów usługi Comarch e-Sklep Sync.

Ten typ dostawy dostępny jest w panelu administracyjnym wówczas, gdy:

Po spełnieniu powyższych warunków w menu Ustawienia > Płatności i dostawy na zakładce Dostawy,po dodaniu nowego sposobu dostawy lub podczas edycji już używanych dostaw, w sekcji Sposób liczenia kosztu dostawy pojawi się piąta opcja: Koszt wyliczany przez eShop.Sync.

Przykładowy worker poniżej:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Comarch.eShop.ISync;
using System.Threading.Tasks;

namespace ExternalDeliveryCost
{
public class Request
{
public Customer Customer;
public Employee Employee;
public int EshopId;
public T Message;
}

public class Employee
{
public int Id;
public int EshopEmployeeId;
public string Email;
}

public class Customer
{
public int Id { get; set; }
public int EshopCustomerId { get; set; }
public string Email { get; set; }
}

public class ExternalDeliveryCostQuery
{
public int[] MethodId; ID sposobu dostawy w sklepie
public string Country; Kraj dostawy
public string City; miasto dostawy
public string ZipCode;

public List Elements;
}

public class ExternalDeliveryCostElementQuery
{
public int Id;
public decimal Quantity; ilość w jednostce podstawowej
}

public class ExternalDeliveryCostCl
{
public int MethodId;
public decimal Cost;
public bool FreePayment;
}

public class Worker : Comarch.eShop.ISync.Worker
{
public override Task Execute(Msg msgOuter)
{
return Task.Factory.StartNew(() =>
{
var req = Newtonsoft.Json.JsonConvert.DeserializeObject(msgOuter.Message);

msgOuter.Response = Newtonsoft.Json.JsonConvert.SerializeObject
(
req.Message.MethodId.Select(z => new ExternalDeliveryCostCl() { MethodId = z, Cost = z, FreePayment = z % 2 == 0 })
);

return msgOuter;
});
}
}
}

Dalsza konfiguracja tego sposobu wyliczania kosztów dostawy w panelu e-Sklepu pozostaje taka sama jak w przypadku pozostałych typów kosztów i została opisana w tym artykule.

Worker erpDataDeliveryCost2

W wersji 2021.5 udostępniono kolejny worker do wyliczania kosztu dostawy przez usługę Comarch e-Sklep Sync.

Ten typ dostawy dostępny jest w panelu administracyjnym wówczas, gdy:

Po spełnieniu powyższych warunków w menu Ustawienia/ Płatności i dostawy na zakładce Dostawy,po dodaniu nowego sposobu dostawy lub podczas edycji już używanych dostaw, w sekcji Sposób liczenia kosztu dostawy pojawi się piąta opcja: Koszt wyliczany przez eShop.Sync.

Worker o kluczu (w pliku config usługi) erpDataDeliveryCost2 ma następującą nową strukturę danych:

BundleId to identyfikator rabatu pakietowego z systemu ERP (parametr będzie dostępny, kiedy Id=-2),

Elements to pozycje przypisane do danego „zestawu”, wówczas dostępne są następujące parametry:

Przykładowy worker poniżej:

namespace DeliveryCost
{
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Comarch.eShop.ISync;

public class ExternalDeliveryCostQuery2
{
public int[] MethodId;
public string Country;
public string City;
public string ZipCode;

public decimal TotalValue;
public decimal SubtotalValue;

public List Sets;
}

public class ExternalDeliveryCostSetQuery2
{
public int Id; // >0 – regular set, 0 – regular product, -2 – bundle, -3 – offer, -4 – Cart/ExternalAdd

public int? BundleId;

public decimal? CustomDeliveryTotalValue;

public List Elements;
}

public class ExternalDeliveryCostElementQuery2
{
public int? Id;
public int EshopProductId;
public decimal Quantity;

public short? MapType;
public string MapForeignId;

public bool? BundleGratis;
public bool? BundleAddHeaderDiscount;

public string ExtId;
}

public class ExternalDeliveryCostCl2
{
public int MethodId;
public decimal Cost;
public bool FreePayment;
public string CalculationId;
}

public class DeliveryCost2 : Worker
{
public override System.Threading.Tasks.Task Execute(Msg msgOuter)
{
var req = Newtonsoft.Json.JsonConvert.DeserializeObject(msgOuter.Message);

var cena = 789 + req.Message.Sets.Where(z => z.CustomDeliveryTotalValue.HasValue).Sum(z => z.CustomDeliveryTotalValue.Value);

return Task.Factory.StartNew(cenaIn =>
{
msgOuter.Response = Newtonsoft.Json.JsonConvert.SerializeObject
(
req.Message.MethodId.Select(z => new ExternalDeliveryCostCl2() { MethodId = z, Cost = (decimal)cenaIn, CalculationId = „foo-bar2” })
);

return msgOuter;
}, cena);

}
}
}

Dalsza konfiguracja tego sposobu wyliczania kosztów dostawy w panelu e-Sklepu pozostaje taka sama jak w przypadku pozostałych typów kosztów i została opisana w tym artykule.

Czy ten artykuł był pomocny?

( 1 )

( 0 )

Wyślij opinie

Inne w kategorii

+ Mam problem z tym tematem Otwórz w portalu bazy wiedzy »