Skocz do zawartości

Transformata RUCH

Polecane posty

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>&#xa;</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>&#xa;</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

Link to postu

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>&#xa;</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>&#xa;</xsl:text>
    </xsl:template>
</xsl:stylesheet>

 

Link to postu

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.

  • Dziękuję 1
Link to postu

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.

Użytkownik forum
Odpowiedz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...