Wie werden die Lieferkosten durch Comarch e-Sklep Sync berechnet?

Allgemeine Informationen zu den Lieferkosten (Lieferung des Typs 5)

Ab der Version Comarch Webshop 2020 wurde die Möglichkeit hinzugefügt, eine weitere Methode zur Berechnung der Lieferkosten basierend auf den von Comarch e-Sklep Sync übermittelten Daten festzulegen. Dadurch ist es möglich, eine eigene Liefermatrix zu erstellen, die selbst die komplexesten Szenarien zur Berechnung der Lieferkosten unterstützt.

Tipp
Die Implementierung individueller Lieferkosten unter Verwendung des Comarch e-Sklep Sync-Dienstes ist für fortgeschrittene Benutzer gedacht, die Microsoft Visual Studio gut beherrschen. Für die Konfiguration sind Programmierkenntnisse erforderlich. Die Anleitung erfordert den Aufbau einer entsprechenden DLL-Bibliothek, das Kompilieren des Codes und das Hinzufügen einer neuen Prozedur. Anschließend muss die erstellte DLL-Datei zum installierten Dienst hinzugefügt werden.

Um die eigenen Lieferkosten zu beziehen, muss in der Vorlage eine Lieferung des Typs 5 berücksichtigt werden.

Tipp
Nach dem Hinzufügen dieses Lieferetyps zur Kostenmatrix wird er nicht in den Artikeldetails im Webshop unter der Rubrik „Lieferung bereits ab“ angezeigt.

Worker erpDataDeliveryCost

Es erfordert die Verwendung eines Workers (in Form einer DLL) mit dem Namen erpDataDeliveryCost. In diesem Worker werden Objekte vom Kunden übermittelt, ähnlich wie bei anderen Standard-Workern des Comarch e-Sklep Sync-Dienstes.

Dieser Lieferetyp ist im Administrationspanel verfügbar, wenn:

  • Comarch Webshop in der B2B-Version vorliegt,
  • der Comarch e-Sklep Sync-Dienst konfiguriert und aktiviert ist,
  • der Worker erpDataDeliveryCost verwendet wird.

Wenn die oben genannten Bedingungen erfüllt sind, erscheint im Menü Einstellungen Zahlungen und Lieferungen auf der Registerkarte Lieferungen nach dem Hinzufügen einer neuen Liefermethode oder bei der Bearbeitung bereits verwendeter Liefermethoden in der Rubrik „Methode zur Berechnung der Lieferkosten“ die fünfte Option: Kosten berechnet durch eShop.Sync.

Beispiel-Worker unten:

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<Request>(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;
});
}
}
}

Die weitere Konfiguration dieser Methode zur Berechnung der Lieferkosten im Administrationspanel bleibt wie bei den anderen Kostenarten unverändert und ist in diesem Artikel beschrieben.

Worker erpDataDeliveryCost2

In der Version 2021.5 wurde ein weiterer Worker zur Berechnung der Lieferkosten durch den Comarch e-Sklep Sync-Dienst bereitgestellt.

Dieser Liefertyp ist im Administrationspanel verfügbar, wenn:

  • Comarch Webshop in der B2B-Version vorliegt,
  • der Comarch e-Sklep Sync-Dienst konfiguriert und aktiviert ist,
  • im Administrationspanel unter Menü Einstellungen Webshop Einstellungen Allgemein  Comarch e-Sklep Sync die Option „Neue Version der Berechnung der Lieferkosten“ aktiviert ist,
  • der Worker erpDataDeliveryCost2 verwendet wird.

Wenn die oben genannten Bedingungen erfüllt sind, erscheint im Menü Einstellungen Zahlungen und Lieferungen auf der Registerkarte Lieferungen nach dem Hinzufügen einer neuen Liefermethode oder bei der Bearbeitung bereits verwendeter Liefermethoden in der Rubrik „Methode zur Berechnung der Lieferkosten“ die fünfte Option: Kosten berechnet durch eShop.Sync.

Der Worker mit dem Schlüssel (in der Konfigurationsdatei des Dienstes) erpDataDeliveryCost2 hat die folgende neue Datenstruktur:

  • SubtotalValue und TotalValue sind die Warenwerte, immer in der Standardwährung des Webshops,
  • Elements (aus erpDataDeliveryCost) wird hier durch Sets ersetzt (dies sind „Sets“ im Warenkorb),
  • Set:
    • Id=0 bedeutet gewöhnliche Ware,
    • Id>0 bedeutet ein Shop-Set,
    • Id=-2 bedeutet Paket-Rabatt (bei Comarch ERP Altum),
    • Id=-3 bedeutet Angebot (wobei Angebote, die bereits einen Preis im Administrationspanel des Webshops haben, nicht übertragen werden),
    • Id=-4 bedeutet ein „Set“ von Waren, das aus der Aktion Cart/ExternalAdd stammt.
  • BundleId ist die Identifikationsnummer des Paket-Rabatts im ERP-System (dieser Parameter ist verfügbar, wenn Id=-2),
  • Elements sind die Positionen, die dem jeweiligen „Set“ zugeordnet sind. Verfügbare Parameter:
    • BundleGratis - handelt es sich um ein Gratis-Produkt aus dem Paket-Rabatt,
    • ExtId - externer Identifikator der Position, wenn die Position aus der Aktion Cart/ExternalAdd stammt.
  • CustomDeliveryTotalValue ist der Lieferkostenbetrag (festgelegt im Angebot oder aus der Aktion ExternalAdd stammend). Wenn keine Lieferkosten vorhanden sind, gibt der Worker „null“ zurück (der Wert kann verwendet oder ignoriert werden).
  • CalculationId ist die ID der Berechnung, auf deren Grundlage die Lieferkosten ermittelt wurden. Die Berechnung kann Informationen zum Ausgangspreis, gewährten Rabatten, Transportkosten, Beladekosten und anderen Elementen enthalten, die die Lieferkosten beeinflussen. Die Berechnung muss in der eigenen Infrastruktur gespeichert werden (z.B. in einer Datenbank oder als XML-Datei auf der Festplatte). Die Berechnungs-ID ist auch im Bestellobjekt verfügbar. Im Warenkorb kann die Berechnung abgerufen und die notwendigen Elemente im Interface angezeigt werden.

Beispiel-Worker unten:

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<Request>(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);

}
}
}

Die weitere Konfiguration dieser Methode zur Berechnung der Lieferkosten im Administrationspanel bleibt wie bei den anderen Kostenarten unverändert und ist in diesem Artikel beschrieben.

Czy ten artykuł był pomocny?