Hoppa till huvudinnehåll

Konfiguration av tillägget

När du konfigurerar ditt Rossum-tillägg finns det några alternativ du kan justera för att anpassa fakturaflödet så att det passar din organisation bättre. Dessa konfigurationsalternativ ställs in i tilläggets inställningar via ditt Rossum-gränssnitt.

Dessa ska skrivas i JSON-format.

info

De flesta parametrarna här är valfria, med undantag för statementDocumentType och erpVersion. Om inga andra parametrar anges använder vi våra standardvärden.

Parameterdefinitioner och användning​

Systeminställningar​

clientId​

string

{ "clientId": "ABC" }

Om detta anges kommer ALLA ERP-frågor att begränsas till detta klient-ID.

Om det inte anges kommer vi att försöka läsa detta per dokument från data i Rossum-gränssnittet. Om det inte anges kommer vi att försöka fastställa klient-ID:t utifrån de tillgängliga inköpsorderuppgifterna.

De flesta efterföljande sökningar kommer att misslyckas om vi inte kan fastställa ett klient-ID och därför rekommenderar vi att detta anges i konfigurationen när det är möjligt eftersom det har stor betydelse för systemets tillförlitlighet.

erpVersion​

'erpx' | 'erp7' | 'erpcr'

{ "erpVersion": "erp7" }

ERP-versionen. Detta är viktigt så att vi vet vilka slutpunkter vi ska använda för att hämta data från och skicka data till.

  • ERPx Unit4:s ERPx-system
  • ERPCR Unit4:s ERP CR-system, du använder troligen detta system om du använder Unit4 Cloud.
  • ERP7 Detta är troligen den version du använder om dina servrar inte hostas av Unit4.

locale​

'en' | 'no' | 'sv' | 'es' | 'fr' | 'cy'

{ "locale": "en" }

Endast exakt dessa strängar accepteras som giltiga språkinställningar. Om inget anges använder vi en

Vissa meddelanden kanske inte översätts, eftersom vi måste avkoda och validera händelsen innan vi kan använda språkinställningen. Om vi misslyckas innan dess kommer felmeddelanden att vara på engelska.

erpHeaders​

Record<string, string="">

{
"erpHeaders": {
"X-ACME-RequestOrigin": "ERP Apps OCR",
"X-ACME-UUID": "0c12f153-36f7-4b76-962c-e97c82a491e8"
}
}

Om detta är inställt vidarebefordrar vi dessa rubriker till ERP-systemet.

Detta kan vara användbart, till exempel om du har ett egenhostat ERP-system till vilket du vill kontrollera åtkomsten.

Du kan använda detta för att ställa in en fördefinierad rubrik som kan användas på en lastbalanserare eller omvänd proxy för att kontrollera åtkomsten till ERP-systemet.

Om en begäran görs till ERP-systemet utan denna rubrik kan den avvisas av lastbalanseraren eller omvänd proxy utan att nå själva servern.

Du kanske också vill använda detta för analys- eller loggningsändamål.

attachMessagesDocument​

none | warning | all

{ "attachMessagesDocument": "all" }

Vilka meddelanden som ska bifogas transaktionen i ERP som ett sekundärt dokument. (Detta bifogas som zzzz_messages....) Dessa är kopior av de meddelanden vi skickar till Rossum UI, så att ERP-användare har långsiktig åtkomst till samma meddelanden.

  • none bifogar aldrig meddelanden.
  • warning bifogar meddelanden på varningsnivå eller högre.
  • all bifogar alla meddelanden inklusive info

Om inget anges är standardinställningen all.

statementDocumentType​

{ "statementDocumentType": "STATREP" }

Den dokumenttyp som rapporten ska skrivas tillbaka till. Måste vara en giltig dokumenttyp kopplad till leverantören.

statementReportFormat​

**pdf | spreadsheet | both **

{ "statementReportFormat": "pdf" }

Det format som rapporten ska skrivas tillbaka i. Om inget anges kommer systemet att ställa in detta till pdf.

Konfiguration av ERP-anslutning​

warning

Observera att dessa anslutningsinställningar nu kan ställas in i tilläggshemligheter (där de tidigare fanns) ELLER här i inställningarna (för bättre översikt).

Om något av dessa värden är inställt på båda ställena kommer det som anges här i inställningarna att ha företräde.

erpConnectionSettings​

{ unit4ApiUrl?: string, unit4SoapUrl?: string, erpxHost?: string, erpIdsHost?: string

{
"erpConnectionSettings" :{
"unit4ApiUrl": "https://example.unit4cloud.com",
"unit4SoapUrl": "https://example.unit4cloud.com",
"erpxHost": "https://example.unit4cloud.com",
"erpIdsHost": "https://example.unit4cloud.com"
}
}

unit4ApiUrl och unit4SoapUrl krävs för ERP7-/ERPCR-system.

erpxHost krävs på ett ERPx-system

erpIdsHost krävs på alla system som använder IDS för autentisering.

Dokumenthantering​

elevateWarnings​

string[]

{ "elevateWarnings": ["ACL_003","SU_007"] }

En array med koder som vanligtvis genererar varningar, men som organisationen vill uppgradera till fel.

Om du lägger till poster här kommer schemafältet override_warnings att ge ett fel om det finns varningsmeddelanden som finns med i listan över uppgraderade varningar. För mer information, se dokumentationen om varningar

Se listan över varningar som kan uppgraderas

Matchningskonfiguration​

Matchningskonfigurationen är de regler enligt vilka raderna från redovisningen kan matchas mot leverantörstransaktionerna

Reglerna definieras som matchCodes och matchCodes definieras sedan i en matchSequence

Detta gör att du kan skapa en hierarki av matchningsalternativ från mest kontrollerade till minst kontrollerade för att försöka få en matchning.

Matchsekvenser kan också tillämpas på ett specifikt apar-id i fall en viss leverantör/kund behöver någon specifik matchningslogik

Det finns ett par inställningar på systemnivå som kan vara användbara för att minska mängden data som systemet måste hämta:

maxHistoricalDays​

number

{ "maxHistoricalDays": 180 }

Hur många dagar som ska hämtas från historiska fakturor matchedSupplierInvoices (status C) baserat på invoiceDate från API:et. Observera att fakturor av typen registeredItems (status A) och unmatchedSupplierInvoices (status B) alltid hämtas.

Om detta värde inte anges blir standardvärdet 180.

ignoreTransactionTypes​

string[]

{ "ignoreTransactionTypes": ["MM","SM"] }

Dessa transaktionstyper kommer att uteslutas från API-förfrågan. Här ska du ange alla transaktionstyper som du inte vill matcha mot kontoutdragsraderna.

validSupplierStatus​

string[]

{ "validSupplierStatus": ["N","P","C","T"] }

Om denna inställning inte anges i konfigurationen kommer vårt standardfilter status = N att tillämpas

Vissa kunder har begärt att icke-aktiva leverantörer ska matchas i OCR, men att ett fel ska genereras om så är fallet. De vill till exempel veta att leverantören finns och var den bästa matchningen, men att den är stängd.

För att undvika att ändra vårt ursprungliga beteende låter denna nya status dig ställa in en giltig status för leverantörer som kommer att användas när leverantörer hämtas från ERP-API:et.

Du kan få felet SU_017 om leverantören inte har status N eller P och varningen SU_018 om leverantören har status P. SU_018 kan också uppgraderas till ett fel.

matchFirstFoundSupplier​

boolean

{ "matchFirstFoundSupplier": false }

Om denna inställning inte anges i konfigurationen är standardvärdet true, vilket var det ursprungliga beteendet och avsåg att möjliggöra högre automatiseringsgrad.

När vi söker efter en leverantör söker vi i ERP-systemet utifrån flera kriterier: leverantörens namn, momsregistreringsnummer, organisationsnummer och bankuppgifter. Ibland har flera leverantörsposter samma värde för ett av dessa kriterier, vilket innebär att ett enda sökkriterium ger två eller flera träffar.

Med inställningen true väljer vi den första leverantören som hittas.

Ställ in den på false så väljer vi inte mellan dem. Matchningen sker genom att leverantörsstatusarna går igenom i tur och ordning: först aktiva (N), sedan parkerade (P) och därefter alla övriga som sökningen gav; och tvetydighet bedöms endast inom den kontroll som granskas. Ett matchningskriterium som delas av en N-leverantör och en P-leverantör är därför inte tvetydigt: vid den punkten är den aktiva leverantören det enda alternativet, och den matchas. Om två eller fler leverantörer i samma kontroll delar samma värde, hoppas det kriteriet över till förmån för nästa, vilket fortfarande kan identifiera en enda leverantör. Om inget kriterium identifierar en unik leverantör lämnas dokumentet omatchet med felet SU_016, och alla kandidater som sökningen gav tillbaka erbjuds i leverantörsmenyn för användaren att välja mellan.

Detta påverkar inte en leverantör som hämtas från en inköpsorder eller en som användaren har valt manuellt, eftersom båda identifierar en leverantör via dess ID.

Observera att defaultSupplierId, där det är konfigurerat, fortfarande gäller. Ett dokument som vi avstår från att gissa på dirigeras till den leverantören istället för att lämnas omatchat, eftersom de två inställningarna besvarar olika frågor: den här frågar om man ska välja mellan kandidater, medan defaultSupplierId frågar vad man ska göra när ingen kandidat alls har identifierats.

matchCodes​

{ "matchCodeId" : "CODE1",
"description" : "Valfri beskrivning",
"amountTolerance" : 1,
"invNo" : "withinAny",
"transDate" : "either",
"toleranceDays" : 7,
"historicDays" : 180,
"cleanText" : "SIN-|INV|INV #|A/R Invoices -|SI[rx]^00"}

Dessa är reglerna enligt vilka raderna från kontoutdraget kan matchas mot leverantörstransaktionerna

De består av följande egenskaper

matchCodeId​

string

{ "matchCodeId" : "CODE1"}

En unik kod för matchningen. Denna MÅSTE vara unik i din konfiguration, och systemet kommer att generera ett QSET_006-fel om så inte är fallet.

description​

string | null

{ "description" : "Valfri beskrivning"}

Fri textbeskrivning som hjälper till att dokumentera vad koden är till för.

amountTolerance​

number

{ "amountTolerance" : 0.01}

Den absoluta tillåtna skillnaden mellan kontoutdragets belopp och transaktionsbeloppet. Detta kontrolleras mot transaktionens valutabelopp.

Om detta inte anges blir standardvärdet 0,01.

invNo​

off | withinAny | exactAny | withinInvoiceNumber | exactInvoiceNumber

{ "invNo" : "off"}

Används för att styra hur referenser till fakturor i kontoutdraget matchas mot referenser till fakturor i transaktioner. Möjliga alternativ är:

  • off: Ignorera: använd endast datum och belopp
  • withinAny: ERP-fakturanummer (ext inv ref) måste finnas INOM något fält (Int / Trans-nummer, beskrivning, referens)
  • exactAny: Matcha ERP-fakturanummer (ext inv ref) mot något kontoutdragsfält (Int / Trans-nummer, beskrivning, referens)
  • withinInvoiceNumber: Kontoutdrags-/transaktionsnummer måste finnas INOM ERP-fakturanummer (ext inv ref)
  • exactInvoiceNumber: Kontoutdragsfaktura-/transaktionsnummer måste matcha ERP-fakturanummer (ext inv ref)

Om detta inte anges blir standardvärdet off

transDate​

either | voucherDate | transDate

{ "transDate" : "either"}

Används för att definiera vilket ERP-fält som kontoutdragets transaktionsdatum ska matchas mot.

Möjliga alternativ är:

  • either: Prova något av datumen
  • voucherDate: Använd verifikatdatum
  • transDate: Använd transaktionsdatum

Om detta inte anges blir standardvärdet either

toleranceDays​

number

{ "toleranceDays" : 7}

Kopplat till transaktionsdatumet, definierar hur många dagars skillnad det får vara mellan kontoutdragsdatumet från fältet och det eller de datumfält som definieras av inställningen Transaktionsdatum ovan.

Om detta inte anges blir standardvärdet 0

historicDays​

number

{ "historicDays" : 180}

Antalet dagar för vilka matchedSupplierInvoices (transaktioner med status C) ska laddas. Observera att om detta fält är inställt på 0 kommer kövärdet maxhistoricaldays att användas. Alla andra värden åsidosätter systemets inställningsvärde.

cleanText​

sträng | null

{ "cleanText" : "SIN-|INV|INV #|A/R Invoices -|SI|[rx]^00"}

Detta fungerar i kombination med inställningen Inv No ovan.

Dessa kan användas för att rensa bort specifik text från kontoutdragsfält (fakturanummer, referens, beskrivning) för att förbättra matchningen mot transaktioner.

Till exempel kan en leverantör lägga till specifik text till ett fakturanummer på kontoutdraget men inte på den ursprungliga fakturan. Detta bör vara en lista med värden separerade med vertikalstreck och du kan även använda reguljära uttryck i detta fält, vilka bör föregås av [rx] så att vi vet att det är ett reguljärt uttryck.

Observera att reguljära uttryck ”förbehandlas” av säkerhetsskäl. Om du upptäcker ett visst mönster som inte fungerar ber vi dig att meddela oss via de vanliga supportkanalerna.

Reguljära uttryck får inte heller innehålla vertikalt streck (|), eftersom detta är avgränsningstecknet för listan. Om du behöver använda detta ber vi dig att meddela oss via de vanliga supportkanalerna.

I det givna exemplet, om vårt kontoutdragsfakturanummer hade något av följande format:

  • SIN-1234599A
  • INV1234599A
  • 1234599AINV
  • INV #1234599A
  • A/R-fakturor -1234599A
  • SI1234599A
  • 001234599A

skulle det matchas mot ERP-transaktionen med (fakturanummer, referens, beskrivning) inställt på 1234599A

matchSequences​

Dessa används för att gruppera matchningskoder och ange för systemet i vilken ordning de ska köras.

Detta gör det möjligt att skapa en hierarki av matchningsalternativ från mest kontrollerade till minst kontrollerade för att försöka få en matchning.

{ "matchSequenceId" : "RUN1",
"description" : "Valfri beskrivning",
"supplierId" : null,
"matchingConfiguration": [
{
"matchOrder": 1,
"matchCodeId": "CODE1"
},
{
"matchOrder": 2,
"matchCodeId": "CODE2"
}
]
}

matchSequenceId​

string

{ "matchSequenceId" : "RUN1"}

En unik kod för sekvensen. Denna MÅSTE vara unik i din konfiguration, annars kommer systemet att generera ett QSET_007-fel.

beskrivning​

string | null

{ "description" : "Valfri beskrivning"}

Fri textbeskrivning som hjälper till att dokumentera vad koden är till för.

supplierId​

string

{ "supplierId" : "12399"}

Om detta anges kommer matchningssekvensen endast att köras när uttalandet matchar det angivna leverantörs-id:t.

Om detta inte anges kommer matchningssekvensen att köras mot alla leverantörer.

matchingConfiguration​

{ "matchingConfiguration": [
{
"matchOrder": 1,
"matchCodeId": "CODE1"
},
{
"matchOrder": 2,
"matchCodeId": "CODE2"
}
]
}

Är en array av objekt där varje objekt innehåller:

matchOrder​

number

{ "matchOrder" : "12399"}

Den ordning i vilken den inkluderade matchningskoden ska köras i sekvensen.

matchCodeId​

string

{ "matchCodeId" : "12399"}

Ett giltigt matchkod-id som ska användas. Systemet kommer att generera ett QSET_010-fel om den inkluderade matchkoden inte har definierats i inställningarna för matchkoder.

Cachelagring​

cacheTime​

tal

{ "cacheTime": 3600 }

Om inget värde anges kommer standardvärdet 3600 sekunder (en timme) att tillämpas.

Den tid (i sekunder) som data (såsom leverantörer, inköpsorder, bokföringsinformation) från Unit4 kommer att lagras i cachen. Ju längre tid detta är, desto färre API-förfrågningar behöver göras och desto snabbare kommer tjänsten att köras. Nackdelen med en längre cachtid är att det tar längre tid för data att "dyka upp" i OCR-systemet.

cacheSuffix​

sträng

{ "cacheSuffix": "custom-suffix" }

En slumpmässig sträng som kan läggas till i slutet av cache-nycklarna i systemet. Om inget värde anges används default. Du kanske vill ange ett värde här för att tvinga fram en cacheuppdatering i systemet tidigare än din cacheTime. Varje gång detta värde ändras kommer gamla cachade värden inte längre att användas och data hämtas på nytt. Det bör inte vara nödvändigt att göra detta regelbundet, eftersom det kan tyda på att din cacheTime är för lång.

testExtensionSettings​

Se dokumentationen för testtillägget

Exempel på konfiguration​

Eftersom JSON-syntaxen och typdefinitionerna som används ovan kanske inte är bekanta för alla, följer här ett exempel på en konfiguration.

warning

Detta MÅSTE redigeras / reduceras till endast de nycklar och alternativ som du behöver.


{
"clientId": "ABC",
"erpVersion": "erp7",
"locale": "en",
"attachMessagesDocument": "all",
"erpConnectionSettings" :{
"unit4ApiUrl": "https://example.unit4cloud.com",
"unit4SoapUrl": "https://example.unit4cloud.com",
"erpxHost": "https://example.unit4cloud.com",
"erpIdsHost": "https://example.unit4cloud.com"
},
"statementDocumentType": "STATREP",
"statementReportFormat": "pdf",
"elevateWarnings": ["SM_004"],
"maxHistoricalDays": 180,
"ignoreTransactionTypes": ["MM","SM"],
"validSupplierStatus": ["N","P","C","T"],
"matchFirstFoundSupplier": false,
"matchCodes" : [
{ "matchCodeId" : "CODE1",
"description" : "Optional Description",
"amountTolerance" : 1,
"invNo" : "off",
"transDate" : "either",
"toleranceDays" : 7,
"historicDays" : 180,
"cleanText" : "SIN-|INV|INV #|A/R Invoices -|SI[rx]^00"
}
],

"matchSequences" : [{ "matchSequenceId" : "RUN1",
"description" : "Optional Description",
"supplierId" : null,
"matchingConfiguration": [
{
"matchOrder": 1,
"matchCodeId": "CODE1"
}
]
}
],

"cacheTime": 3600,
"cacheSuffix": "custom-suffix"
}