Konfiguracja dostarczania multi-channel

Konfiguracja wielu kanałów dostarczania: Peppol, DICO, inne sieci procurement, fallback e-mail i priorytety.

Jedną z najpotężniejszych cech PSB jest dostarczanie multi-channel: przez jedną integrację API dociera się do odbiorców na Peppol, inne sieci procurement i przez e-mail. PSB automatycznie wybiera najlepszy kanał, ale routing można też sterować ręcznie.

Jak działa multi-channel?

Domyślnie PSB routuje wszystkie faktury przez Peppol. System sprawdza, czy odbiorca jest zarejestrowany na Peppol i wysyła fakturę przez sieć Peppol. Jeśli odbiorca nie jest na Peppol, uruchamia się fallback.

Konfigurując wiele hooków z topikami Send*, można aktywować dodatkowe kanały:

KanałKonfiguracjaZastosowaniePeppolDomyślny, zawsze aktywnyGłówna trasa dla wszystkich uczestników PeppolDICOHook z topikiem DICOFaktury sektora budowlanego przez standard łańcucha DICOInne sieciHook z konfiguracją sieciOrganizacje odbierające przez inne sieci procurement, takie jak Coupa lub AribaFallback e-mailHook z topikiem emailOdbiorcy nieosiągalni przez siećSFTPHook z konfiguracją SFTPSystemy on-premise z wymianą plikówHTTPSHook z konfiguracją HTTPSSystemy enterprise z bezpośrednim odbiorem APICollabrrHook z konfiguracją CollabrrDokumenty do/z platformy Collabrr; może zawierać instrukcję wysyłki w tym samym wywołaniu (np. «wyślij przez Peppol»). Używa ID Collabrr (-0003:XC...) jako identyfikatora
Automatyczny wybór kanału

PSB wybiera kanał na podstawie kolejności priorytetów:

  1. Hooki na poziomie PartyId mają pierwszeństwo przed hookami na poziomie environment; jeśli dla konkretnego odbiorcy skonfigurowano kanał, zawsze używany jest ten kanał
  2. Specyficzne topiki mają pierwszeństwo przed wildcardami; hook dla InvoiceSent ma pierwszeństwo przed hookiem wildcard
  3. Gdy wiele hooków z filtrami odpowiada temu samemu topikowi: wygrywa najdłuższy filtr (liczony w znakach) -- na przykład filtr z dodatkową klauzulą && wygrywa z krótszym filtrem bez tej klauzuli
  4. Przy równym priorytecie: hook-id jako kryterium rozstrzygające (alfanumerycznie -- ID całkowite są przed tekstem, np.: 1 < 02 < 10 < dico < peppol)

Przed wysłaniem faktury można sprawdzić przez queryRecipientParty, jaki kanał zostanie użyty przez PSB. Istnieją dwa endpointy, jeden na typ dokumentu:

POST /api/v1/{partyId}/salesInvoice/queryRecipientParty
POST /api/v1/{partyId}/purchaseOrder/queryRecipientParty

Ciało przyjmuje prosty array ["0106:12345678"] lub obiekt z meta atrybutami { "partyIds": [...], "metaAttributes": {...} }. Opcjonalne parametry zapytania: ?preferredDocumentTypeId, ?includeOptions, ?documentFamily (tylko w wariancie purchaseOrder).

Odpowiedź pokazuje wybrany kanał i dostępne alternatywy. Reguła walidacji: w tym samym wywołaniu queryRecipientParty może być zawarty co najwyżej jeden identyfikator na schemat/kod agencji (np. 0106, 0190, 0208, 9944). Wiele identyfikatorów w różnych schematach w tym samym wywołaniu jest dozwolonych. Przy naruszeniu reguły PSB odpowiada EConnect.Psb.Models.EConnectException: 'Duplicate id agencies {code} requested.' gdzie {code} to kod agencji bez zera wiodącego (schemat 0208208). Aby przetestować wielu kandydatów w tym samym schemacie, wykonaj oddzielne wywołania API -- jedno na kandydata. Do zaawansowanych wyszukiwań włącznie z URL Access Pointu i certyfikatem służy endpoint Peppol: GET /api/v1/peppol/deliveryOption?partyIds=...&documentFamily=...&isCredit=...&documentTypeIds=...&preferredDocumentTypeId=... Odpowiedź zawiera partyId, documentTypeId, processId, protocol (As2/As4), url i certificate.

Wymuszenie kanału

W niektórych przypadkach chce się nadpisać automatyczny wybór kanału. Jest to możliwe za pomocą parametru query ?channel={hookId} w endpointach wysyłki:

POST /api/v1/{partyId}/salesInvoice/send?channel=hook-123-abc

To wymusza na PSB użycie określonego kanału (hooka), niezależnie od automatycznego wyboru.

Peppol z fallbackiem e-mail jako osobny kanał

Często stosowaną kombinacją jest hook Peppol z hookiem e-mail jako fallback. Przez conditional output topics hook Peppol przy błędach dostarczania (HTTP 400, 404 lub 500) publikuje topic Send*Fallback, na który nasłuchuje hook e-mail. Gdy ten sam hook e-mail nasłuchuje również jawnie na Send* (oprócz Send*Fallback), pojawia się automatycznie jako kanał peppol-fallback w odpowiedzi queryRecipientParty. Pozwala to kodowi wywołującemu jawnie wybrać kanał przez ?channel=peppol-fallback na endpointach wysyłki, co jest przydatne w scenariuszach, w których Peppol jest celowo pomijany.

Konfiguracja Coupa i Ariba
Coupa

eConnect automatycznie transformuje faktury UBL do formatu cXML oczekiwanego przez Coupa. Połączenie wymaga:

  1. Klient tworzy konta w środowisku testowym i produkcyjnym Coupa CSP
  2. Strona odbierająca tworzy Shared Secret
  3. TechSupport konfiguruje połączenie w PSB
Ariba (SAP Business Network)

Połączenie Ariba działa z relacjami handlowymi 1-do-1, w odróżnieniu od otwartej sieci Peppol:

  1. Dostawca udostępnia swoje AN-ID kupującemu
  2. SAP może wymagać płatnej subskrypcji przy wyższym wolumenie
  3. Środowisko testowe używa AN-ID z sufiksem "-T"
Onboarding cXML przez eConnect

eConnect transformuje fakturę UBL do cXML i dostarcza ją do odbiorcy Ariba, w taki sam sposób jak w przypadku transformacji Coupa opisanej powyżej. Proces onboardingu przebiega następująco:

  1. Rejestrujesz się w SAP Business Network.
  2. Ustalasz z odbiorcą, w jaki sposób chce otrzymywać cXML, i na tej podstawie wypełniasz formularz onboardingowy eConnect.
  3. Na podstawie formularza eConnect nawiązuje połączenie z odbiorcą, najpierw przez sieć testową, a następnie produkcyjną.

Próg subskrypcji SAP: dla zautomatyzowanego wysyłania/odbierania cXML przez własny system ERP (za pośrednictwem eConnect) wymagany jest co najmniej poziom subskrypcji SAP Silver (Enterprise). Ten poziom obejmuje wolumeny od 25 do 99 dokumentów rocznie.

Transformacja XML

PSB automatycznie konwertuje między wszystkimi powszechnymi formatami e-faktur. Jeśli wysyła się fakturę w formacie NLCIUS, ale odbiorca oczekuje XRechnung, PSB automatycznie transformuje dokument. Działa to dla wszystkich obsługiwanych standardów: BIS Billing, NLCIUS, PINT, XRechnung, Svefaktura, ebInterface, DICO, SETU i innych.

Transformacja jest dostępna od pakietu 10K.

SI 2.0 i SALES005

PSB obsługuje transformację w obu kierunkach między SI 2.0 i SALES005:

  • SI 2.0 → SALES005
  • SALES005 → SI 2.0

Ważne: faktury SALES005 nie mogą być wysyłane przez Peppol. Wysyłanie SALES005 wymaga połączenia e-mailowego. Multi-channel delivery obsługuje to: wysyłasz głównie przez Peppol, z automatycznym fallbackiem na e-mail w razie potrzeby.

Format docelowy na wszystkich kanałach prócz Peppola

Przy wysyłaniu przez e-mail, SFTP lub endpoint HTTPS można podać targetFormat. PSB transformuje wtedy fakturę w locie do wymaganego formatu. Klient, który chce skonwertować fakturę UBL do SALES005, podaje targetDocumentTypeId przy pobieraniu lub wysyłaniu -- faktura jest wtedy automatycznie transformowana.

Peppol nie obsługuje targetFormat (SALES005 nie jest dozwolony przez Peppol). Na wszystkich pozostałych kanałach -- e-mail, SFTP, HTTPS -- targetFormat jest dostępny.

Dostępność

Multi-channel delivery nie jest domyślnie wliczone w podstawową usługę i musi być zamówione oddzielnie jako samodzielna usługa/konfiguracja. Skontaktuj się z TechSupport, aby poznać opcje dostępne w Twojej sytuacji.

Scenariusz praktyczny

Duża firma wysyła faktury do:

  • Klientów holenderskich: Peppol (automatycznie)
  • Firm sektora budowlanego: DICO (specyficzny hook na partyId)
  • Międzynarodowej korporacji w innej sieci: specyficzny hook dla sieci
  • Małych dostawców bez sieci: fallback e-mail

Wszystkie faktury są wysyłane przez to samo API (POST /api/v1/{partyId}/salesInvoice/send). PSB zapewnia dla każdej faktury właściwy routing, właściwy format i właściwy kanał.

Często zadawane pytania
Jak PSB określa, który kanał ma być użyty dla faktury?

PSB wybiera kanał na podstawie kolejności priorytetów. Hooki na poziomie PartyId mają pierwszeństwo przed hookami na poziomie środowiska, a konkretne topiki mają pierwszeństwo przed wildcardami. Domyślnie PSB kieruje przez Peppol. Jeśli odbiorca nie jest na Peppol, uruchamiany jest skonfigurowany fallback (np. DICO, Coupa lub e-mail).

Czy mogę zastąpić automatycznie wybrany kanał?

Tak, parametr zapytania ?channel={hookId} na endpointach wysyłki wymusza określony kanał. Zastępuje to automatyczny wybór kanału. Możesz wcześniej sprawdzić przez queryRecipientParty, który kanał wybrałaby PSB i na tej podstawie zdecydować, czy chcesz go zastąpić.

Czy multi-channel obsługuje inne typy dokumentów niż faktury?

Tak, routing multi-channel działa dla wszystkich typów dokumentów obsługiwanych przez PSB, takich jak faktury korygujące, zamówienia i odpowiedzi na zamówienia. Wszystkie dokumenty są wysyłane przez to samo API, a PSB zapewnia prawidłowy routing, format i kanał dla każdego dokumentu.


Potrzebna pomoc przy konfiguracji dostarczania multi-channel? Kontakt z TechSupport.

Otwórz referencję API