eBiss 3

Hilfe & Dokumentation

User Tools

Site Tools


Sidebar

en:howtos:partnererkennung

Partner recognition

To ensure that the partners involved in a message can be unambiguously identified in a defined process, corresponding identifications must exist in the messages. Exceptions are Channels with established partners.

The identification of these partner identifications depends on the message type. With EDIFACT, AnsiX12 or other (standardized) messages, it is clearly defined by the corresponding data elements

Note: For correct partner recognition, valid settings for Analysator and Recognition component 1) of the Repositorium are necessary.

EDIFACT

In the EDIFACT UNB 2) segment, sender and recipient of the message are defined.
As a rule, the GLN / ILN is used for this purpose in Germany and is indicated with the qualifier 14 . Example:

 UNB + UNOB: 2 + 4399901889996: 14 + 4032055000007: 14 + 170404: 0920 + 37108006 '

The Analysatoren is set here at Partner recognition = By Interchange address and in the Recognition component at recognizer type = eBiss.ClassLib.Analyzers.EdifactTypeRecognizer .

Alternatives to the GLN are possible and can be determined with the corresponding Quailifieren.

Examples

  • eGate Participant number with qualifier 53
  • Telephone number with qualifier 12
  • own ID with qualifier ZZZ

That means, these IDs must be created as Edifact UNB Communication addresses in the system, or trading partner.

Your own message formats

In the case of customer-specific objects, this is preferably set in the Object definitions with corresponding Data type attributes3).

Example C # Code for partner recognition for data elements embedded in the structure.

In the following example, the headquarter GLN is used in the path EDI_InvList / CustInvoiceJour / CustTableInvoice / EDI_GLN .

using System;
using System.ComponentModel;
using System.Collections;
using System.Collections.Generic;
using eBiss.Api;
using System.Linq;
 
namespace Axd.SInvList
{
    public class EDI_SInvList : IMapObjectRoot
    {
        [MapFrameDocumentRecipient, MapIgnore(MapIgnoreScope.OnRead)]
        public string RecipientGLN
        {
            get
            {
                string returnValue = String.Empty;
                if (EDI_InvoiceList != null)
                {
                    EDI_InvoiceList firstEDI_InvoiceList = EDI_InvoiceList.FirstOrDefault();
                    if (firstEDI_InvoiceList != null)
                    {
                        CustInvoiceJour firstCustINvoiceJour = firstEDI_InvoiceList.CustInvoiceJour.FirstOrDefault();
                        if (firstCustINvoiceJour != null)
                        {
                            CustTableInvoice firstCustTableInvoice = firstCustINvoiceJour.CustTableInvoice.FirstOrDefault();
                            if (firstCustTableInvoice != null)
                            {
                                returnValue = firstCustTableInvoice.EDI_GLN;
                            }
                        }
                    }
                }
                return returnValue;
            }
        }
        ...
 
    public class EDI_InvoiceList : IMapObjectItem
    {
        [MapSize(50)]
        public String CurrencyCode;
        [MapSize(20)]
        public String ExternalInvoiceListId;
        [MapSize(15)]
        public String GLNNumber;
        [MapSize(20)]
        public String InvoiceListId;
        public List<CustInvoiceJour> CustInvoiceJour;
        [MapExternalName("class"), MapXmlHandlingAttribute(MapXmlHandlingAttribute.HandlingType.AsAttribute)]
        public String _class;
        [MapXmlHandlingAttribute(MapXmlHandlingAttribute.HandlingType.AsAttribute)]
        public String action;
    }
 
    public class CustInvoiceJour : IMapObjectItem
    {
        public String CashDisc;
        [MapSize(50)]
        public String CurrencyCode;
        [MapSize(10)]
        public String CustGroup;
        public DefaultDimension DefaultDimension;
        public String EndDisc;
        [MapSize(50)]
        public String InvoiceAccount;
        public String InvoiceAmount;
        public String InvoiceDate;
        [MapSize(20)]
        public String InvoiceId;
        [MapSize(7)]
        public String LanguageId;
        public String NetAmount;
        [MapSize(50)]
        public String OrderAccount;
        public String SumMarkup;
        public String SumTax;
        [MapListType(typeof(CustInvoiceTrans))]
        public ArrayList CustInvoiceTrans;
        [MapListType(typeof(TaxTrans))]
        public ArrayList TaxTrans;
        [MapListType(typeof(FormLetterRemarks))]
        public ArrayList FormLetterRemarks;
        public List<CompanyInfo> CompanyInfo;
        public List<CustTableOrder> CustTableOrder;
        public List<CustTableInvoice> CustTableInvoice;
        [MapListType(typeof(LogisticsPostalAddress))]
        public ArrayList LogisticsPostalAddress;
        [MapListType(typeof(PackingSlips))]
        public ArrayList PackingSlips;
        [MapExternalName("class"), MapXmlHandlingAttribute(MapXmlHandlingAttribute.HandlingType.AsAttribute)]
        public String _class;
        [MapXmlHandlingAttribute(MapXmlHandlingAttribute.HandlingType.AsAttribute)]
        public String action;
    }       
 
    public class CustTableInvoice : IMapObjectItem
    {
        [MapSize(10)]
        public String CustGroup;
        public DefaultDimension DefaultDimension;
        [MapSize(15)]
        public String EDI_GLN;
        [MapExternalName("class"), MapXmlHandlingAttribute(MapXmlHandlingAttribute.HandlingType.AsAttribute)]
        public String _class;
        [MapXmlHandlingAttribute(MapXmlHandlingAttribute.HandlingType.AsAttribute)]
        public String action;
    }

Note: Instead of using the data element attributeMapListType(typeof(…))] the LIST class is used, since it allows to read the first element with the method FirstOrDefault ()

Note: The Setting Recognition component is very flexble and allows for all possible identification features, which are saved under Backend-Reference, GLN, TNr or Communication addresses 4).

Fixed setting via communication channel

For this variant, detection within the message can be dispensed with. However, then a corresponding channel is dedicated only for a combination transmitter-receiver possible.

1)
Important is the direction of messages!
2)
Interchange Header
3)
MapFrameDocumentSender and MapFrameDocumentReceiver
en/howtos/partnererkennung.txt · Last modified: 2024/02/20 08:15 by 127.0.0.1