====== 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 [[en:kommunikation:kanal:start]] 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 {{:images:sign_warning.png?nolink|}}** Note: ** For correct partner recognition, valid settings for [[prozessdefinition:repositorien:analysator:start|Analysator]] and [[en:prozessdefinition:repositorien:erkennungskomponenten:start|]] ((Important is the direction of messages! )) of the [[en:prozessdefinition:repositorien:start|Repositorium]] are necessary. ===== EDIFACT ===== In the [[http://www.gefeg.com/jswg/v4/se/sed.htm|EDIFACT UNB]] ((Interchange Header)) 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 [[prozessdefinition:repositorien:analysator:anlegen|Analysatoren]] is set here at ** Partner recognition = By Interchange address ** and in the [[en:prozessdefinition:repositorien:erkennungskomponenten:start]] at ** recognizer type = eBiss.ClassLib.Analyzers.EdifactTypeRecognizer **. Alternatives to the GLN are possible and can be determined with the corresponding [[http://www.gefeg.com/jswg/cl/v4/40007/cl3.htm|Quailifieren]].\\ ** Examples ** * ** [[http://egate.pranke.com| 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 [[en:partnerverwaltung:kommunikation:start]] in the system, or trading partner. ===== Your own message formats ===== In the case of customer-specific objects, this is preferably set in the [[en:transformation:mappings:objektdefinition:start]] with corresponding [[en:transformation:mappings:objektdefinition:attribute]]((**MapFrameDocumentSender** and **MapFrameDocumentReceiver**)). ===== 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; [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; public List CustTableOrder; public List 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; } {{:images:sign_warning.png?nolink|}}** Note: ** Instead of using the data element attribute[[[en:transformation:mappings:objektdefinition:attribute|MapListType]](typeof(...))] the ** LIST ** class is used, since it allows to read the first element with the method ** FirstOrDefault () ** {{:images:sign_warning.png?nolink|}}** Note: ** The Setting [[en:prozessdefinition:repositorien:erkennungskomponenten:start]] is very flexble and allows for all possible identification features, which are saved under **Backend-Reference**, **GLN**, **TNr** or [[en:partnerverwaltung:kommunikation:start]] ((See also [[en:prozessdefinition:repositorien:analysator:anlegen|]].)). ===== 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.