Skocz do zawartości

Eksport do EN (BETA)

Polecane posty

Witam serdecznie,

 

jako początkujący użytkownik Sello mam problem z eksportem do e-nadawacy przesyłki biznesowej (Paczka48), po ustawieniu transformaty i wygenerowaniu pliku XML na stronie poczty wywala mi następujący błąd:

 

Plik jest niezgodny ze schematem (EN:11705)

Element 'Nadawca', attribute 'Guid': [facet 'pattern'] The value '' is not accepted by the pattern '[{][a-zA-Z0-9]{8}[-][a-zA-Z0-9]{4}[-][a-zA-Z0-9]{4}[-][a-zA-Z0-9]{4}[-][a-zA-Z0-9]{12}[}]'. (linia:1) (EN:11706)

Element 'Nadawca', attribute 'Guid': '' is not a valid value of the atomic type 'guid'. (linia:1) (EN:11706)

Przesłano plik nieznanego typu (EN:16719)

 

ktoś już miał podobny problem i próbowałem na wszelkie sposoby, ale nie mogę sobie poradzić.

 

Będę wdzięczny za pomoc, gdyż w transformacie jest gdzieś błąd.

 

Pozdrawiam.

Link to postu

Witam serdecznie,

 

jako początkujący użytkownik Sello mam problem z eksportem do e-nadawacy przesyłki biznesowej (Paczka48), po ustawieniu transformaty i wygenerowaniu pliku XML na stronie poczty wywala mi następujący błąd:

 

Plik jest niezgodny ze schematem (EN:11705)

Element 'Nadawca', attribute 'Guid': [facet 'pattern'] The value '' is not accepted by the pattern '[{][a-zA-Z0-9]{8}[-][a-zA-Z0-9]{4}[-][a-zA-Z0-9]{4}[-][a-zA-Z0-9]{4}[-][a-zA-Z0-9]{12}[}]'. (linia:1) (EN:11706)

Element 'Nadawca', attribute 'Guid': '' is not a valid value of the atomic type 'guid'. (linia:1) (EN:11706)

Przesłano plik nieznanego typu (EN:16719)

 

ktoś już miał podobny problem i próbowałem na wszelkie sposoby, ale nie mogę sobie poradzić.

 

Będę wdzięczny za pomoc, gdyż w transformacie jest gdzieś błąd.

 

Pozdrawiam.

 

U mnie przechodzi bez problemu. Taki kod do eksportu wpisz (ja mam wpisany domyślny XXL):

 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.sello.pl/export">

  <!--Przesyłka biznesowa-->

  <!--Oznaczenie umowy na podstawie, której nadawane są przesyłki pocztowe (idUmowyMRUMC).-->

  <xsl:variable name="NrUmowy"></xsl:variable>

  <!--Oznaczenie Karty na podstawie, której nadawane są przesyłki pocztowe (idKartyMRUMR).-->

  <xsl:variable name="KartaUmowy"></xsl:variable>

  <!--Dotyczy gabarytu przesyłki biznesowej:

  XS – gabaryt XS

  S – gabaryt S

  M – gabaryt M

  L – gabaryt L

  XXL – gabaryt XXL-->

  <xsl:variable name="Gabaryt">XXL</xsl:variable>

  <!--Tytuł przelewu dla danej paczki-->

  <xsl:template name="TytulPrzelewu">

    <xsl:variable name="trans" select="s:ParentTransaction/s:Name"/>

    <xsl:variable name="trans2" select="substring-before(substring-after(substring($trans,string-length($trans)-16),'('),')')"/>

    <xsl:variable name="nick" select="s:Customer/s:Nick"/>

    <xsl:choose>

      <xsl:when test="$trans2!=''">

        <xsl:value-of select="substring(concat($nick,' ',$trans2),1,30)"/>

      </xsl:when>

      <xsl:otherwise>

        <xsl:value-of select="substring(concat($nick,' ',$trans),1,30)"/>

      </xsl:otherwise>

    </xsl:choose>

  </xsl:template>

  <!--Opis dla danej paczki. Pole z dowolną zawartością nie przekraczającą długości 40 znaków-->

  <xsl:template name="Opis"><xsl:value-of select="s:Customer/s:Nick"/></xsl:template>

 

  <xsl:param name="Year"/>

  <xsl:param name="Month"/>

  <xsl:param name="Day"/>

  <xsl:param name="Hour"/>

  <xsl:param name="Minute"/>

  <xsl:param name="Second"/>

  <xsl:template match="s:ExportData">

    <xsl:element name="Nadawca">

      <xsl:attribute name="Struktura">1.6</xsl:attribute>

      <xsl:attribute name="Nazwa">

        <xsl:value-of select="s:Company/s:Address/s:Company"/>

      </xsl:attribute>

      <xsl:attribute name="NazwaSkrocona">

        <xsl:variable name="companyName" select="s:Company/s:Address/s:Company"/>

        <xsl:value-of select="substring($companyName,0,10)"/>

      </xsl:attribute>

      <xsl:attribute name="Ulica">

        <xsl:value-of select="s:Company/s:Address/s:Street"/>

      </xsl:attribute>

      <xsl:attribute name="Dom">

        <xsl:value-of select="s:Company/s:Address/s:HouseNumber"/>

      </xsl:attribute>

      <xsl:attribute name="Lokal">

        <xsl:value-of select="s:Company/s:Address/s:FlatNumber"/>

      </xsl:attribute>

      <xsl:attribute name="Miejscowosc">

        <xsl:value-of select="s:Company/s:Address/s:City"/>

      </xsl:attribute>

      <xsl:attribute name="Kod">

        <xsl:value-of select="translate(s:Company/s:Address/s:ZipCode,'- ','')"/>

      </xsl:attribute>

      <xsl:attribute name="NIP">

        <xsl:value-of select="translate(s:Company/s:Address/s:NIP,'- ','')"/>

      </xsl:attribute>

      <xsl:attribute name="Zrodlo">NADAWCA</xsl:attribute>

      <xsl:attribute name="Guid">

        <xsl:value-of select="s:Company/s:GUID"/>

      </xsl:attribute>

      <xsl:element name="Zbior">

        <xsl:attribute name="Nazwa">

          <xsl:value-of select="concat(format-number($Day,'00'),'-',format-number($Month,'00'),'-',$Year,'\1')"/>

        </xsl:attribute>

        <xsl:attribute name="DataUtworzenia">

          <xsl:value-of select="concat($Year,'-',format-number($Month,'00'),'-',format-number($Day,'00'),'T',format-number($Hour,'00'),':',format-number($Minute,'00'),':',format-number($Second,'00'))"/>

        </xsl:attribute>

        <xsl:attribute name="Opis">Jakis dowolny opis</xsl:attribute>

        <xsl:attribute name="IloscPrzesylek">

          <xsl:value-of select="count(s:Package)"/>

        </xsl:attribute>

        <xsl:attribute name="Guid">

          <xsl:value-of select="s:GUID"/>

        </xsl:attribute>

        <xsl:apply-templates select="s:Package"/>

      </xsl:element>

    </xsl:element>

  </xsl:template>

  <xsl:template match="s:Package">

    <xsl:element name="Przesylka">

      <xsl:attribute name="Guid">

        <xsl:value-of select="s:GUID"/>

      </xsl:attribute>

      <xsl:element name="Atrybut">

        <xsl:attribute name="Typ">Adresat</xsl:attribute>

        <xsl:attribute name="Nazwa">Nazwa</xsl:attribute>

        <xsl:choose>

          <xsl:when test="s:DeliveryAddress/s:Company!=''">

            <xsl:value-of select="s:DeliveryAddress/s:Company"/>

          </xsl:when>

          <xsl:otherwise>

            <xsl:value-of select="s:DeliveryAddress/s:Name"/>

          </xsl:otherwise>

        </xsl:choose>

      </xsl:element>

      <xsl:if test="s:DeliveryAddress/s:Company!='' and s:DeliveryAddress/s:Name!=''">

        <xsl:element name="Atrybut">

          <xsl:attribute name="Typ">Adresat</xsl:attribute>

          <xsl:attribute name="Nazwa">NazwaII</xsl:attribute>

          <xsl:value-of select="s:DeliveryAddress/s:Name"/>

        </xsl:element>

      </xsl:if>

      <xsl:element name="Atrybut">

        <xsl:attribute name="Typ">Adresat</xsl:attribute>

        <xsl:attribute name="Nazwa">Ulica</xsl:attribute>

        <xsl:value-of select="s:DeliveryAddress/s:Street"/>

      </xsl:element>

      <xsl:element name="Atrybut">

        <xsl:attribute name="Typ">Adresat</xsl:attribute>

        <xsl:attribute name="Nazwa">Dom</xsl:attribute>

        <xsl:value-of select="s:DeliveryAddress/s:HouseNumber"/>

      </xsl:element>

      <xsl:element name="Atrybut">

        <xsl:attribute name="Typ">Adresat</xsl:attribute>

        <xsl:attribute name="Nazwa">Lokal</xsl:attribute>

        <xsl:value-of select="s:DeliveryAddress/s:FlatNumber"/>

      </xsl:element>

      <xsl:element name="Atrybut">

        <xsl:attribute name="Typ">Adresat</xsl:attribute>

        <xsl:attribute name="Nazwa">Miejscowosc</xsl:attribute>

        <xsl:value-of select="s:DeliveryAddress/s:City"/>

      </xsl:element>

      <xsl:element name="Atrybut">

        <xsl:attribute name="Typ">Adresat</xsl:attribute>

        <xsl:attribute name="Nazwa">Kod</xsl:attribute>

        <xsl:value-of select="translate(s:DeliveryAddress/s:ZipCode,'- ','')"/>

      </xsl:element>

      <xsl:element name="Atrybut">

        <xsl:attribute name="Typ">Adresat</xsl:attribute>

        <xsl:attribute name="Nazwa">Kraj</xsl:attribute>

        <xsl:choose>

          <xsl:when test="s:DeliveryAddress/s:Country=''">Polska</xsl:when>

          <xsl:otherwise>

            <xsl:value-of select="s:DeliveryAddress/s:Country"/>

          </xsl:otherwise>

        </xsl:choose>

      </xsl:element>

      <!--Atrybuty specyficzne dla przesyłki 852-->

      <xsl:element name="Atrybut">

        <xsl:attribute name="Typ"/>

        <xsl:attribute name="Nazwa">Symbol</xsl:attribute>852</xsl:element>

      <xsl:if test="$NrUmowy!=''">

        <xsl:element name="Atrybut">

          <xsl:attribute name="Typ"/>

          <xsl:attribute name="Nazwa">Umowa</xsl:attribute>

          <xsl:value-of select="$NrUmowy"/>

        </xsl:element>

      </xsl:if>

      <xsl:if test="$KartaUmowy!=''">

        <xsl:element name="Atrybut">

          <xsl:attribute name="Typ"/>

          <xsl:attribute name="Nazwa">KartaUmowy</xsl:attribute>

          <xsl:value-of select="$KartaUmowy"/>

        </xsl:element>

      </xsl:if>

      <xsl:element name="Atrybut">

        <xsl:attribute name="Typ"/>

        <xsl:attribute name="Nazwa">SposobPobrania</xsl:attribute>

        <xsl:choose>

          <xsl:when test="s:DeliveryMethod/s:IsPayOnDelivery=1">S</xsl:when>

          <xsl:otherwise>T</xsl:otherwise>

        </xsl:choose>

      </xsl:element>

      <xsl:if test="s:Charge">

        <xsl:element name="Atrybut">

          <xsl:attribute name="Typ"/>

          <xsl:attribute name="Nazwa">KwotaPobrania</xsl:attribute>

          <xsl:value-of select="round(number(s:Charge)*100)"/>

        </xsl:element>

      </xsl:if>

      <xsl:if test="s:Weight">

        <xsl:element name="Atrybut">

          <xsl:attribute name="Typ"/>

          <xsl:attribute name="Nazwa">Masa</xsl:attribute>

          <xsl:value-of select="round(number(s:Weight)*1000)"/>

        </xsl:element>

      </xsl:if>

      <xsl:element name="Atrybut">

        <xsl:attribute name="Typ"/>

        <xsl:attribute name="Nazwa">Strefa</xsl:attribute>

        <xsl:value-of select="$Gabaryt"/>

      </xsl:element>

      <xsl:element name="Atrybut">

        <xsl:attribute name="Typ"/>

        <xsl:attribute name="Nazwa">Ilosc</xsl:attribute>1</xsl:element>

      <xsl:if test="s:SendingNumber!=''">

        <xsl:element name="Atrybut">

          <xsl:attribute name="Typ"/>

          <xsl:attribute name="Nazwa">NrNadania</xsl:attribute>

          <xsl:value-of select="translate(s:SendingNumber,'- ','')"/>

        </xsl:element>

      </xsl:if>

      <xsl:variable name="phone" select="translate(s:DeliveryAddress/s:PhoneNumber,'- ()/','')"/>

      <xsl:variable name="phone2" select="format-number(substring($phone,string-length($phone)-8,9),'000000000')"/>

      <xsl:if test="starts-with($phone2,'5') or starts-with($phone2,'6') or starts-with($phone2,'7') or starts-with($phone2,'8')">

        <xsl:element name="Atrybut">

          <xsl:attribute name="Typ"/>

          <xsl:attribute name="Nazwa">KontaktAdresata</xsl:attribute>

          <xsl:value-of select="$phone2"/>

        </xsl:element>

      </xsl:if>

      <xsl:variable name="title">

        <xsl:call-template name="TytulPrzelewu"/>

      </xsl:variable>

      <xsl:if test="$title!='' and s:DeliveryMethod/s:IsPayOnDelivery=1">

        <xsl:element name="Atrybut">

          <xsl:attribute name="Typ"/>

          <xsl:attribute name="Nazwa">PrzelewTytul</xsl:attribute>

          <xsl:value-of select="$title"/>

        </xsl:element>

      </xsl:if>

      <xsl:element name="Atrybut">

        <xsl:attribute name="Typ"/>

        <xsl:attribute name="Nazwa">Wersja</xsl:attribute>1</xsl:element>

      <xsl:variable name="description">

        <xsl:call-template name="Opis"/>

      </xsl:variable>

      <xsl:if test="$description!=''">

        <xsl:element name="Atrybut">

          <xsl:attribute name="Typ"/>

          <xsl:attribute name="Nazwa">Uwagi</xsl:attribute>

          <xsl:value-of select="$description"/>

        </xsl:element>

      </xsl:if>

    </xsl:element>

  </xsl:template>

</xsl:stylesheet>

Link to postu

Dziękuje za wiadomość. Dla pewności skopiowałem i także nie działa. Ktoś wcześniej pisał o pustym polu GUID w wygenerowanym pliku (u mnie również jest puste), być może tu jest problem...

 

UPDATE:

 

W wynikowy plik XML, w polu GUId wpisałem wygenerowany kod i plik został zaimportowany bez problemu do e-nadawcy. Tylko wpisywać go za każdym razem do wygenerowanego XML to trochę bez sensu... Proszę o informację, gdzie mogę go wpisać na stałe.

Link to postu

To nie błąd transformaty, tylko Sello.

Nie uzupełnia GUID, a przecież jeśli ten parametr jest niezbędny, to możnaby sprawdzić, czy się wygenerował, czy nie i jeśli nie - wpisać go ponownie.

 

Wieczorem podam Ci sposób jak to naprawić, jeśli do tego czasu ktoś inny tego nie zrobi (teraz nie mam dostępu do odpowiedniego narzędzia).

Link to postu

Czy na potrzeby poczty firmowej zespół sello móglby podac wyrażenie waranukowe do transformaty, które bedzie sprawdzało 2 pierwsze cyfry kodu pocztowowego i na podstawie wyniku wstawiało T lub N do pola

 

<!--Informuje o tym, czy jest przesyłką „miejscową”:

  T – tak

  N – nie-->

  <xsl:variable name="Miejscowa">N</xsl:variable>

 

 

 

cos w stylu:

 

if (pierwsze 2 litery kodu==xx)

{

  <xsl:variable name="Miejscowa">T</xsl:variable>

 

}

else

{

<xsl:variable name="Miejscowa">N</xsl:variable>

}

 

 

Dziękuje!

Link to postu

Aby ustawić sobie NOWY GUID należy:

 

1. uruchomić program serwisowy do Sello

2. Najechać na bazę w której chcemy dokonać zmian (baza naszego podmiotu)

3. Wybrać polecenie Baza -> Zapytanie SQL...

 

W okienku wpisać:

 

update pd__Podmiot set pd_GUID=NEWID();

select pd_GUID from pd__Podmiot;

 

 

Wykonaj.

 

jeśli wszystko poszło dobrze, a wierzę, że tak, w dolnym okienku pojawi nam się nasz nowy numer.

Zamykamy wszystko, tzn. program serwisowy.

Gotowe.

Link to postu

mac wg mnie wystarczy że w EN w Ustawienia "zaptaszkujesz" "Automatycznie rozpoznaj przesyłke miejscową" - ja wysyłam wszystkie jako 'miejscowe' a EN sobie i tak ustawia po swojemu.

 

Ja robię tak samo i działa.

Poczta jest zbyt pazerna aby nie zadbać o automatyczne ustawianie przesyłek jako nie miejscowe, nawet jak Ty sobie ustawisz je jako miejscowe :P

Link to postu

Jaki jest symbol do przesyłki nierejestrowanej i nierejestrowanej poleconej (nie zbiorczy)?

Kiedy przesyłam do EN, z symbolem 840 wykrywa mi jak przesyłki zbiorcze i wszystko się wysypuje.

 

Ze strony EN ściągnij sobie specyfikację i w niej masz wszystko opisane - niezbędne jak chcesz coś zmieniać w transformatach:

https://e-nadawca.poczta-polska.pl/przesylki/

 

Zakładka czym jest "E-nadawca"

Link to postu

Przestudiowałem specyfikacje, nic tam na ten temat nie ma, jest po prostu symbol 840 i nie ma rozgraniczenia na przesyłki nierejestrowane i przesyłki nierejestrowane(zbiorcze).

 

Sprawdziłem - dla 840 jest pole - ilość - "Informuje o ilości przesyłek; domyślną wartością jest „1”" - pokombinuj z tym polem.

 

Ewentualnie w EN po podpisaniu umowy w zakładce "start" masz podany kontakt do osoby,  która zajmuje się EN'em i te osoby mają wiedzę na temat EN'a.

 

Jak coś chciałem uzgodnić to się z nimi kontaktowałem.

 

Link to postu

Jednak nie ma opcji zaimportować listów nierejestrowanych do EN, stąd muszę kombinować aby ustawić w transformacie wybieranie miejscowej i zamiejscowej.

 

Nie mam pojęcia jak zastąpić w XML dowolny znak. Poniżej kod:

 

<xsl:choose>
<xsl:when test="translate(s:DeliveryAddress/s:ZipCode,'- ','')=341** or 346**">T</xsl:when>
<xsl:otherwise>N</xsl:otherwise>
</xsl:choose>

 

jak to wyrażenie powinno poprawnie wyglądać?

 

EDIT:

 

Udało mi sie to rozwiązać, kod powinien wyglądać tak:

<xsl:when test="starts-with(s:DeliveryAddress/s:ZipCode, '34-1') or starts-with(s:DeliveryAddress/s:ZipCode, '34-2') ">T</xsl:when>

 

 

Zmagam się natomiast teraz z gabarytami, chciałbym również aby się automatycznie ustawiały, znam symbole towarów, które powinny iść w gabarycie B, jednak nie wiem jak to zaimplementować kiedy jest więcej towarów w przesyłce niż jeden.

 

Próbowałem coś kombinować z foreach:

   <xsl:template name="Gabaryty">
     <xsl:for-each select="s:Items/s:Item">
	   <xsl:choose>
               <xsl:when test="s:Symbol='073' or s:Symbol='078'">B</xsl:when>
               <xsl:otherwise>A</xsl:otherwise>
          </xsl:choose>
</xsl:for-each>
  </xsl:template>

 

Problem tutaj taki, że w przypadku kilku przedmiotów wynik jest przykładowo: "AABA", bo w końcu to pętla, jak można uzyskać to czego oczekuję?

Link to postu
Zmagam się natomiast teraz z gabarytami, chciałbym również aby się automatycznie ustawiały, znam symbole towarów, które powinny iść w gabarycie B, jednak nie wiem jak to zaimplementować kiedy jest więcej towarów w przesyłce niż jeden.

 

Próbowałem coś kombinować z foreach:

   <xsl:template name="Gabaryty">
     <xsl:for-each select="s:Items/s:Item">
	   <xsl:choose>
               <xsl:when test="s:Symbol='073' or s:Symbol='078'">B</xsl:when>
               <xsl:otherwise>A</xsl:otherwise>
          </xsl:choose>
</xsl:for-each>
  </xsl:template>

 

Problem tutaj taki, że w przypadku kilku przedmiotów wynik jest przykładowo: "AABA", bo w końcu to pętla, jak można uzyskać to czego oczekuję?

 

Ten sposób powinien działać

 <xsl:template name="Gabaryty">
    <xsl:choose>
      <xsl:when test="count(s:Items/s:Item[s:Symbol='073' or s:Symbol='078'])=0">A</xsl:when>
      <xsl:otherwise>B</xsl:otherwise>
    </xsl:choose>
  </xsl:template>

Link to postu

Mam pytanie, czy poczta firmowa i list polecony mogą być w jednym imporcie? czy muszą być osobno importownae przez En?

Jeśli mogły by być na jednej liście to można by wykorzystać tego if'a do celu odpowiedniego oznaczania przesyłek (boo wydruki te same) i tym samym pozbyć się rozbijania listów na 2 listy wysyłkowe w sello.

Link to postu

Witam,

wczoraj, właśnie coś takiego stworzyłem. Za jednym razem exportujesz list firmowy zwykły, przesyłkę firmowa polecaną oraz przesyłkę poleconą priorytetową.

 

Transformata troszkę przerobiona pod swoje zastosowanie, miedzy innymi automatyczne zliczanie wagi przez zewnętrzny program, wpisywanie automatycznie gabarytów w zależności od sprzedanego towary oraz wybieranie miejscowej zamiejscowej dla przesyłki nierejestrowanej.

 

main.zip

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ę...