Mariusz Kownacki 105 Napisano 17 Stycznia 2020 Udostępnij Napisano 17 Stycznia 2020 w Transformata RUCH Witam, Potrzebowałbym Państwa pomocy w sprawie transformaty paczek do Kiosku RUCH, pewnie innym tez się przyda. Aktualnie używamy takiej transformaty: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.sello.pl/export"> <xsl:output method="text" encoding="utf-8"/> <xsl:strip-space elements="*" /> <xsl:variable name="comma">;</xsl:variable> <!-- Paczka w Ruchu --> <!-- Wersja rozwojowa 1.5 --> <!--Adres email - jeśli ma być wstawiony adres e-mail z adresu wysyłkowego (tylko FOD) wpisz FOD, pozostaw puste jeśli ma być pobierany domyślny adres e-mail kontrachenta--> <xsl:variable name="email">FOD</xsl:variable> <xsl:template name="Opis"> <xsl:value-of select="//s:Transaction[s:Packages/s:Package[s:PackageID = current()/@PackageID]]/s:DoneDocNumber"/> </xsl:template> <!-- WŁAŚCIWA CZĘŚĆ --> <!-- Poniżej nagłówki od Sendit'a do których będą dopasowywane wartości --> <xsl:template match="/"> <xsl:text>OrderID;DestinationCode;PSD;EMail;FirstName;LastName;CompanyName;StreetName;BuildingNumber;FlatNumber;City;PostCode;PhoneNumber;CashOnDelivery;CashOnDeliveryValue;TransferDescription;Insurance;InsuranceValue</xsl:text> <xsl:text>
</xsl:text> <xsl:apply-templates select="s:ExportData/s:Package" /> </xsl:template> <xsl:template match="s:Package"> <!--OrderID--> <!--Generowany na podstawie Id paczki w bazie Sello--> <xsl:value-of select="s:Symbol"/> <xsl:value-of select="$comma"/> <!--DestinationCode--> <!--Punk odbioru pobierany z notatki dodawanej przez FOD--> <xsl:value-of select="substring(substring-after(s:Notes/s:Note/s:Content, 'PACZKA w RUCHu: '), 1, 15)"/> <xsl:value-of select="$comma"/> <!--PSD--> <!--Alternatywna metoda identyfikacji punktu odbioru, zostawiamy puste--> <xsl:value-of select="$comma"/> <!--EMail--> <xsl:choose> <xsl:when test="$email = 'FOD'"> <xsl:value-of select="s:DeliveryAddress/s:Email"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="../s:Customer[@CustomerID = current()/s:Customer/@CustomerID]/s:EmailAddress[@IsDefault = 1]"/> </xsl:otherwise> </xsl:choose> <xsl:value-of select="$comma"/> <!--FirstName pierwsza część pola Imię i nazwisko w adresie dostawy --> <xsl:value-of select="substring-before(s:DeliveryAddress/s:Name, ' ')"/> <xsl:value-of select="$comma"/> <!-- LastName druga część pola Imię i nazwisko UWAGA - sprawdzić jak zachowa się w przypadku 3-członowych nazwisk --> <xsl:value-of select="substring-after(s:DeliveryAddress/s:Name, ' ')"/> <xsl:value-of select="$comma"/> <!--CompanyName--> <!-- Nazwa firmy skracana do 32 znaków, jeśli nie podane w adresie wysyłkowym zostaje puste --> <xsl:choose> <xsl:when test="s:DeliveryAddress/s:Company != '' "> <xsl:value-of select="substring(translate(s:DeliveryAddress/s:Company,',;','..'), 1, 32)"/> </xsl:when> </xsl:choose> <xsl:value-of select="$comma"/> <!--StreetName--> <!-- Ulica odbiorcy - teoretycznie zbędna, na etykiecie i tak brana jest pod uwagę ulica punktu --> <xsl:value-of select="s:DeliveryAddress/s:Street"/> <xsl:value-of select="$comma"/> <!--BuildingNumber--> <!-- Numer budynku --> <xsl:value-of select="/s:DeliveryAddress/s:HouseNumber"/> <xsl:value-of select="$comma"/> <!--FlatNumber --> <!-- Numer mieszkania/lokalu, nadal zbędne--> <xsl:value-of select="s:DeliveryAddress/s:FlatNumber"/> <xsl:value-of select="$comma"/> <!--City--> <!-- Miasto odbiorcy, j.w.--> <xsl:value-of select="s:DeliveryAddress/s:City"/> <xsl:value-of select="$comma"/> <!-- PostCode --> <!-- Kod pocztowy--> <xsl:value-of select="s:DeliveryAddress/s:ZipCode"/> <xsl:value-of select="$comma"/> <!-- PhoneNumber --> <!-- Telefon odbiorcy "oczyszczony" z niepotrzebnych znaków--> <xsl:value-of select="translate(s:DeliveryAddress/s:PhoneNumber,' +-(),;','')"/> <xsl:value-of select="$comma"/> <!-- CashOnDelivery --> <!-- Czy za pobraniem, wstawia "1", w pliku przykładowym było słowo "TAK" ale z "1" też działa --> <xsl:choose> <xsl:when test="s:IsPayOnDelivery = 1"> <xsl:text>TAK</xsl:text> </xsl:when> </xsl:choose> <xsl:value-of select="$comma"/> <!-- CashOnDeliveryValue --> <!-- Wartość kwoty za pobraniem - w xml-u w formacie money, w csv testowym liczba w groszach(zł*100)--> <xsl:choose> <xsl:when test="s:IsPayOnDelivery = 1"> <xsl:value-of select="round(number(s:Charge)*100)"/> </xsl:when> </xsl:choose> <xsl:value-of select="$comma"/> <!-- TransferDescription --> <!-- Tytuł przelewu za pobranie--> <xsl:variable name="description"> <xsl:call-template name="Opis"/> </xsl:variable> <xsl:choose> <xsl:when test="s:IsPayOnDelivery = 1"> <xsl:value-of select="translate($description, '/',' ')"/> </xsl:when> </xsl:choose> <xsl:value-of select="$comma"/> <!-- Insurance --> <!-- Ubezpieczenie, domyślnie włączone dla pobrań na kwotę pobrania--> <xsl:choose> <xsl:when test="s:IsPayOnDelivery = 1"> <xsl:text>TAK</xsl:text> </xsl:when> </xsl:choose> <xsl:value-of select="$comma"/> <!-- InsuranceValue --> <!-- Kwota ubezpieczenia, dla pobrań ustawiona na wartość pobrania--> <xsl:choose> <xsl:when test="s:IsPayOnDelivery = 1"> <xsl:value-of select="round(number(s:Charge)*100)"/> </xsl:when> </xsl:choose> <xsl:text>
</xsl:text> </xsl:template> </xsl:stylesheet> Jak zamienić polecenie: <!--DestinationCode--> <!--Punk odbioru pobierany z notatki dodawanej przez FOD--> <xsl:value-of select="substring(substring-after(s:Notes/s:Note/s:Content, 'PACZKA w RUCHu: '), 1, 15)"/> <xsl:value-of select="$comma"/> tak aby punkt odbioru był pobierany z danych adresowych bez nawiasu, a nie z notatki? Sello Team jeszcze zostawiło te dane w notatce, ale przy najbliższej aktualizacji, już ich nie będzie i tu pojawia się problem. Niestety na programowaniu jestem totalnie zielony albo i jeszcze gorzej i nie umiem sobie z tym poradzić. Za wszelką pomoc będę bardzo wdzięczny. Pozdrawiam Cytuj Link to postu
Mariusz Kownacki 105 Napisano 22 Stycznia 2020 Autor Udostępnij Napisano 22 Stycznia 2020 w Transformata RUCH Ok, udało się metodą prób i błędów. Wklejam tu aktualną transformatę dla przesyłek w Ruchu. Może się komuś przyda. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.sello.pl/export"> <xsl:output method="text" encoding="UTF-8"/> <xsl:strip-space elements="*" /> <xsl:variable name="comma">;</xsl:variable> <!-- Paczka w Ruchu --> <!-- Wersja rozwojowa 1.5 --> <!--Adres email - jeśli ma być wstawiony adres e-mail z adresu wysyłkowego (tylko FOD) wpisz FOD, pozostaw puste jeśli ma być pobierany domyślny adres e-mail kontrachenta--> <xsl:variable name="email">FOD</xsl:variable> <xsl:template name="Opis"> <xsl:value-of select="//s:Transaction[s:Packages/s:Package[s:PackageID = current()/@PackageID]]/s:DoneDocNumber"/> </xsl:template> <!-- WŁAŚCIWA CZĘŚĆ --> <!-- Poniżej nagłówki od Sendit'a do których będą dopasowywane wartości --> <xsl:template match="/"> <xsl:text>OrderID;DestinationCode;PSD;EMail;FirstName;LastName;CompanyName;StreetName;BuildingNumber;FlatNumber;City;PostCode;PhoneNumber;CashOnDelivery;CashOnDeliveryValue;TransferDescription;Insurance;InsuranceValue</xsl:text> <xsl:text>
</xsl:text> <xsl:apply-templates select="s:ExportData/s:Package" /> </xsl:template> <xsl:template match="s:Package"> <!--OrderID--> <!--Generowany na podstawie Id paczki w bazie Sello--> <xsl:value-of select="s:Symbol"/> <xsl:value-of select="$comma"/> <!--DestinationCode--> <!--Punk odbioru pobierany z adresu do wysylki--> <xsl:value-of select="substring(substring-after(s:DeliveryAddress/s:Name, 'PACZKA w RUCHu: '), 1, 15)"/> <xsl:value-of select="$comma"/> <!--PSD--> <!--Alternatywna metoda identyfikacji punktu odbioru, zostawiamy puste--> <xsl:value-of select="$comma"/> <!--EMail--> <xsl:choose> <xsl:when test="$email = 'FOD'"> <xsl:value-of select="s:DeliveryAddress/s:Email"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="../s:Customer[@CustomerID = current()/s:Customer/@CustomerID]/s:EmailAddress[@IsDefault = 1]"/> </xsl:otherwise> </xsl:choose> <xsl:value-of select="$comma"/> <!--FirstName pierwsza część pola Imię i nazwisko w adresie dostawy --> <xsl:value-of select="substring-before(s:DeliveryAddress/s:Name, ' ')"/> <xsl:value-of select="$comma"/> <!-- LastName druga część pola Imię i nazwisko UWAGA - sprawdzić jak zachowa się w przypadku 3-członowych nazwisk --> <xsl:value-of select="substring-after(s:DeliveryAddress/s:Name, ' ')"/> <xsl:value-of select="$comma"/> <!--CompanyName--> <!-- Nazwa firmy skracana do 32 znaków, jeśli nie podane w adresie wysyłkowym zostaje puste --> <xsl:choose> <xsl:when test="s:DeliveryAddress/s:Company != '' "> <xsl:value-of select="substring(translate(s:DeliveryAddress/s:Company,',;','..'), 1, 32)"/> </xsl:when> </xsl:choose> <xsl:value-of select="$comma"/> <!--StreetName--> <!-- Ulica odbiorcy - teoretycznie zbędna, na etykiecie i tak brana jest pod uwagę ulica punktu --> <xsl:value-of select="s:DeliveryAddress/s:Street"/> <xsl:value-of select="$comma"/> <!--BuildingNumber--> <!-- Numer budynku --> <xsl:value-of select="/s:DeliveryAddress/s:HouseNumber"/> <xsl:value-of select="$comma"/> <!--FlatNumber --> <!-- Numer mieszkania/lokalu, nadal zbędne--> <xsl:value-of select="s:DeliveryAddress/s:FlatNumber"/> <xsl:value-of select="$comma"/> <!--City--> <!-- Miasto odbiorcy, j.w.--> <xsl:value-of select="s:DeliveryAddress/s:City"/> <xsl:value-of select="$comma"/> <!-- PostCode --> <!-- Kod pocztowy--> <xsl:value-of select="s:DeliveryAddress/s:ZipCode"/> <xsl:value-of select="$comma"/> <!-- PhoneNumber --> <!-- Telefon odbiorcy "oczyszczony" z niepotrzebnych znaków--> <xsl:value-of select="translate(s:DeliveryAddress/s:PhoneNumber,' +-(),;','')"/> <xsl:value-of select="$comma"/> <!-- CashOnDelivery --> <!-- Czy za pobraniem, wstawia "1", w pliku przykładowym było słowo "TAK" ale z "1" też działa --> <xsl:choose> <xsl:when test="s:IsPayOnDelivery = 1"> <xsl:text>TAK</xsl:text> </xsl:when> </xsl:choose> <xsl:value-of select="$comma"/> <!-- CashOnDeliveryValue --> <!-- Wartość kwoty za pobraniem - w xml-u w formacie money, w csv testowym liczba w groszach(zł*100)--> <xsl:choose> <xsl:when test="s:IsPayOnDelivery = 1"> <xsl:value-of select="round(number(s:Charge)*100)"/> </xsl:when> </xsl:choose> <xsl:value-of select="$comma"/> <!-- TransferDescription --> <!-- Tytuł przelewu za pobranie--> <xsl:variable name="description"> <xsl:call-template name="Opis"/> </xsl:variable> <xsl:choose> <xsl:when test="s:IsPayOnDelivery = 1"> <xsl:value-of select="translate($description, '/',' ')"/> </xsl:when> </xsl:choose> <xsl:value-of select="$comma"/> <!-- Insurance --> <!-- Ubezpieczenie, domyślnie włączone dla pobrań na kwotę pobrania--> <xsl:choose> <xsl:when test="s:IsPayOnDelivery = 1"> <xsl:text>TAK</xsl:text> </xsl:when> </xsl:choose> <xsl:value-of select="$comma"/> <!-- InsuranceValue --> <!-- Kwota ubezpieczenia, dla pobrań ustawiona na wartość pobrania--> <xsl:choose> <xsl:when test="s:IsPayOnDelivery = 1"> <xsl:value-of select="round(number(s:Charge)*100)"/> </xsl:when> </xsl:choose> <xsl:text>
</xsl:text> </xsl:template> </xsl:stylesheet> Cytuj Link to postu
MARCIN e-kupowanie.pl 1 010 Napisano 22 Stycznia 2020 Udostępnij Napisano 22 Stycznia 2020 w Transformata RUCH @Mariusz Kownacki czy ten kod rozróżnia czy to jest paczka mini czy zwykła? Na swojej umowie mini (czyli lżejsze) mam taniej... Czy może to jest kod dla ALLEGRO RUCH? Cytuj Link to postu
Mariusz Kownacki 105 Napisano 22 Stycznia 2020 Autor Udostępnij Napisano 22 Stycznia 2020 w Transformata RUCH Niestety nie, ponieważ Allegro nie ma podziału na Ruch Mini i Ruch Standard. Na Allegro mamy to rozbite według cen. Jeżeli w Sello pojawi się transakcja z droższą przesyłką, wtedy taką paczkę przerzucamy na dostawę standard. Podczas exportu paczek mini na stronie RUCH zaznaczamy, że to są paczki mini, a gdy exportujemy z dostawy standard, nie zaznaczmy tego. Co do Allegro Ruch jest taka sama sytuacja. Dostawy z Allegro jako Paczka w Ruchu oraz Allegro paczka w Ruchu mamy powiązane w Sello pod jedną dostawę RUCH. 1 Cytuj Link to postu
Polecane posty
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.