Datautbyte med Winbas Push-teknik

Winbas hjälp

Avsnittet behandlar teknisk information och vänder sig främst till tredjepartsutvecklare av applikationer mot Winbas.

Om man t.ex. har speciell produktinformation som skall visas varje gång produkten används, kan en specialanpassad informationsbild utvecklas där produkten med speciell information visas varje gång produkten används i Winbas. D.v.s. Winbas fjärrstyr en kundunik produktbild. Denna teknik, som kallas push-tekniken, kan bl.a. användas för utbyte av information om t.ex. kunder, produkter, leverantörer, projekt och order.

För att Winbas ska skicka signaler för utbyte av informationen ska inställningen Tillåt direktkontakt med externa anpassningar för datautbyte vara aktiverad i Systeminställningar.

För ytterligare information om befintliga anpassningar och moduler som finns tillgängliga med avseende på t.ex. olika typer av presentation av statistik eller användande av externa produktregister, kontakta Winbas AB.

Teknisk information on Push-tekniken

Nedan följer tekniska specifikationer för tredjepartsutvecklare som avser att använda Push-tekniken tillsammans med Winbas.

För att datautbyte ska var möjligt måste anpassning stödja funktionerna kring pushtekniken. Kontakten mellan Winbas och anpassningen sker då via XML-baserade strängkommandon som anpassningen tolkar och därefter utför olika typer av hantering baserat på s.k. taggar.

 

Taggarna omsluter själva datan i strängen och anger vilken typ av data som skickas, t.ex. ett kundnummer när en kund har valts i Winbas.

Förteckning över datafält - Befintlig post visas

Starttag

Data

Sluttag

Beskrivning

<kundnr>

Kundnr

</kundnr>

Kundnummer skickas när en kund har valts i Kunder, Offertregistrering, Order / faktura eller Serviceorder.

<levnr>

Levnr

</levnr>

Leverantörsnummer vid val av leverantör i Leverantörer, Leverantörsfakturor eller Beställning.

<prodnr>

Prodnr

</prodnr>

Val av produkt från Produkter, Offertregistrering, Order / faktura, Serviceorder, Beställning, Inleverans eller Beställningsunderlag.

<projnr>

Projnr

</projnr>

Projektnummer skickas till mottagande applikation när ett projekt har valts i Projekt.

<ordnr>

Ordnr

</ordnr>

Ordernummer skickas till mottagande applikation när en befintlig order tas fram i Order / Faktura.

<servnr>

Servnr

</servnr>

Numret på serviceordern skickas till mottagande applikation när en befintlig serviceorder tas fram i Serviceorder.

<offnr>

Offnr

</offnr>

Offertnummer skickas till mottagande applikation när en befintlig offert tas fram i Offertregistrering.

<bestnr>

Bestnr

</bestnr>

Beställningsnummer skickas till mottagande applikation när en befintlig beställning tas fram i rutinen Beställning.

<kundfaktnr>

Kundfaktnr

</kundfaktnr>

Fakturanummer skickas när en faktura väljs i Kunder - Fakturor.

<levfaktnr>

Levfaktnr

</levfaktnr>

Fakturans internnummer skickas när en leverantörsfaktura visas vid Registrering av leverantörsfakturor.

Strängkommandon enligt ovan skickas då ett val görs i rutinerna och en post tas fram genom att använda söklistorna, senast använda post eller genom att skriva in ett nummer. I vissa fall kan även ej befintliga nummer skickas om så önskas, detta kan t.ex. vara fallet när man har en extern produktdatabas och vill få en indikation på att produkten inte finns registrerad i Winbas. Applikationen kan då ge användaren en fråga och eventuellt komplettera Winbas produktregister med nya ej befintliga produkter.

Nedan följer en förteckning över taggar som kan användas för att fånga upp t.ex. produkter som inte finns i Winbas. Taggarna ser likadana ut men med ett utropstecken (!) framför datatypen.

Förteckning över datafält när begreppet inte finns

Starttag

Data

Sluttag

Beskrivning

<!kundnr>

Kundnr

</!kundnr>

Ej befintligt kundnummer skickas när detta har angivits vid Kunder, Offertregistrering, Order / faktura eller Serviceorder.

<!levnr>

Levnr

</!levnr>

Ej befintligt leverantörsnummer har skrivits in vid val av leverantör i Leverantörer, Leverantörsfakturor eller Beställning.

<!prodnr>

Prodnr

</!prodnr>

Ej befintlig produkt har angivits i Produkter, Offertregistrering, Order / faktura, Serviceorder, Beställning, Inleverans eller Beställningsunderlag.

Förteckning över datafält - Ny post skapas

Följande strängkommandon används när nya poster skapas i respektive register.

Starttag

Data

Sluttag

Beskrivning

<nykund>

Kundnr

</nykund>

Kundnummer skickas när en ny kund har registrerats i Kunder.

<nylev>

Levnr

</nylev>

Leverantörsnummer vid sparande av ny leverantör i Leverantörer.

<nyprod>

Prodnr

</nyprod>

Ny produkt har sparats i Produkter

<nyproj>

Projnr

</nyproj>

Projektnummer skickas till mottagande applikation när ett nytt projekt har skapats i Projekt.

<nyord>

Ordnr

</nyord>

Ordernummer skickas till mottagande applikation när en ny kundorder skapas i Order / Faktura eller Kassa.

<nyserv>

Servnr

</nyserv>

Numret på serviceordern skickas till mottagande applikation när en ny serviceorder skapas i Serviceorder.

<nyoff>

Offnr

</nyoff>

Offertnummer skickas till mottagande applikation när en ny offert skapas i Offertregistrering.

<nybest>

Bestnr

</nybest>

Beställningsnummer skickas till mottagande applikation när en ny beställning skapas i rutinen Beställning.

<nylevfakt>

Levfaktnr

</nylevfakt>

Fakturans internnummer skickas när en ny leverantörsfaktura sparas vid Registrering av leverantörsfakturor.

 

Exempel ny order:
Så här ser taggarna ut som omsluter själva ordernumret i strängen och anger att ny order skickas till den mottagande applikationen.

Det är upp till applikationen att bestämma vilka företag eller andra databaser som ska användas av anpassningen för att utföra sina uppgifter.

Exempel

Nedan följer ett exempel i Visual Basic på hur man hanterar mottagande av befintlig data samt exempel några fält som kan användas vid implementering i t.ex. VB, Access eller Excel.

Börja med att initiera objektet obConnector.cConnector vid tillfället då applikationen startas. Detta ska även stängas när programmet avslutas.

Programkoden nedan processar ALLA taggar med avseende på visning av befintlig post när den får data, då det teoretiskt sett kan finns mer än en instruktion i inkommande data. Applikationen behöver dock enbart svara på de taggar som är intressanta i det enskilda fallet. Vid mottagning av anropet skall subrutinen Push_cmd användas, som då tar emot data av typen Variant.

Option Explicit
  Dim obConnect As Object

Private Sub Form_Load()
  'Initiera objektet när applikationen startar
  Set obConnect = CreateObject("obConnector.cConnector")
  obConnect.Init Me
End Sub

Private Sub Form_Unload(Cancel As Integer)
  'Avsluta objektet när applikation stängs
  obConnect.Done
  Set obConnect = Nothing
End Sub

Public Sub Push_cmd(vData As Variant)
  Dim sTemp As String

  sTemp = RetData(CStr(vData), "levnr"): If sTemp <> "" Then SendData "Leverantör", sTemp
  sTemp = RetData(CStr(vData), "kundnr"): If sTemp <> "" Then SendData "Kund", sTemp
  sTemp = RetData(CStr(vData), "prodnr"): If sTemp <> "" Then SendData "Produkt", sTemp
  sTemp = RetData(CStr(vData), "projnr"): If sTemp <> "" Then SendData "Projekt", sTemp
  sTemp = RetData(CStr(vData), "ordnr"): If sTemp <> "" Then SendData "Order", sTemp
  sTemp = RetData(CStr(vData), "bestnr"): If sTemp <> "" Then SendData "Beställning", sTemp
  sTemp = RetData(CStr(vData), "offnr"): If sTemp <> "" Then SendData "Offert", sTemp

End Sub

Private Sub SendData(sField As String, sData As String)

  'Hantera data i denna rutin, t.ex. visa
  'statistik för en produkt eller liknande.

End Sub

Private Function RetData(sData As String, _
  Datafield As String) As String
 
  Dim lStart As Long
  Dim lEnd As Long

  Dim sStag As String
  Dim sEtag As String

  sStag = "<" & Datafield & ">"
  sEtag = "</" & Datafield & ">"

  lStart = InStr(sData, sStag)

  If lStart > 0 Then 

  lStart = lStart + Len(Datafield) + 2
  lEnd = InStr(sData, sEtag)
  RetData = Mid(sData, lStart, lEnd - lStart)

  Else

  RetData = ""

  End If

End Function

Direktutskrift av blanketter

I de fall man använder externa rapporteringsfunktioner när en blankett skrivs ut via direktutskrift i t.ex. Order / faktura, kan en anpassning automatiskt ta emot meddelandet om att blankettens skrivs ut. Bestäm i det enskilda fallet om både blanketten från Winbas och den externa rapporten ska skrivas ut, eller om bara den externa rapporten ska användas genom att t.ex. ställa in utskrift till bildskärm eller rikta om skrivarinställningen för den aktuella blanketten. Ett exempel på användningsområde kan vara när en fraktsedel skrivs ut och man samtidigt önskar specifika fraktdokument

Förteckning över datafält - Direktutskrift av blanketter

Starttag

Data

Sluttag

Beskrivning

<dirutsoff>

Offertnr

</dirutsoff>

Offertnummer skickas när en offert skrivs ut direkt från Offertregistrering.

<dirutsord>

Ordernr

</dirutsord>

Ordernummer när en direktutskrift av ett ordererkännande sker från Order / faktura eller Kassa.

<dirutsfsl>

Ordernr

</dirutsfsl>

Följesedel skrivs ut från Order / faktura eller Kassa.

<dirutsfra>

Ordernr

</dirutsfra>

Fraktsedel skrivs ut från Order / faktura.

<dirutspls>

Ordernr

</dirutspls>

Plocksedel skrivs ut från Order / faktura.

<dirutsfakt>

Fakt.nr

</dirutsfakt>

Faktura skrivs från Order / faktura och fakturanumret skickas.

<dirutsbest>

Bestnr

</dirutsbest>

Beställningsnummer skickas till mottagande applikation när en beställning skrivs ut i rutinen Beställning.

Notera ovanstående meddelanden gäller ej kontantnotor och serviceorder.

Säljstöd

Som ett komplement till att kunna öppna organisationer och kontakter Winbas Säljstöd genom att skicka OrganisationsID respektive KontaktID till Säljstöd enligt beskrivning nedan, kan anpassningen även lyssna på signaler från Säljstöd när en Organisation eller Kontakt öppnas i Säljstöd.

Starttag

Data

Sluttag

Beskrivning

<orgid>

Orgid

</orgid>

Organisationens ID-begrepp skickas till mottagande applikation när en befintlig organisation tas fram i Organisationer.

<kontid>

Kontid

</kontid>

Kontaktens ID-begrepp skickas när kontakten visas i Säljstödets Kontakter.

Vidare kan externa program även tolka följande strängkommandon som används när nya poster skapas i respektive register.

<nyorg>

Orgid

</nyorg>

Organisationens ID-begrepp skickas när en ny organisation har registrerats.

<nykont>

Kontid

</nykont>

Kontaktens ID-begrepp vid sparande av ny kontakt i Säljstöd.

Tillåt andra program att styra Winbas

Externa program kan också styra Winbas i vissa avseenden, d.v.s. en omvänd trafik där anpassningen istället styr Winbas. T.ex. kan en kund, produkt eller kundorder visas automatiskt, eller ny kundorder skapas med automatiskt föreslagen kund ifylld på skärmen. För att Winbas ska lyssna på signaler och reagera på kommandon från andra program krävs att inställningen Tillåt andra program att styra Winbas ska vara aktiverad i Systeminställningar.

Återrapportering från andra program styrs alltid av datafält med prefixet wb, dessa taggar är reserverade för att skicka data till Winbas. Det externa programmet får alltså aldrig lyssna på dessa strängkommandon.

Förteckning över datafält - Data skickas till Winbas

Starttag

Data

Sluttag

Beskrivning

<wbkundnr>

Kundnr

</wbkundnr>

Kundnummer skickas och kunden visas i Winbas Kunder.

<wblevnr>

Levnr

</wblevnr>

Leverantören visas i Winbas.

<wbprodnr>

Prodnr

</wbprodnr>

Produkten visas i Winbas.

<wbordnr>

Ordnr

</wbordnr>

Ordernummer skickas och visas i Order / Faktura.

<wbservnr>

Servnr

</wbservnr>

Numret på serviceordern skickas och serviceordern visas i Winbas Serviceorder.

<wboffnr>

Offnr

</wboffnr>

Offertnummer skickas och visas i Offertregistrering.

<wbbestnr>

Bestnr

</wbbestnr>

Beställningen visas i rutinen Beställning.

<wbnyord>

Kundnr

</wbnyord>

Ny kundorder till angiven kund.

<wbnyoff>

Kundnr

</wbnyoff>

Ny offert till angiven kund.

<wbnybest>

Levnr

</wbnybest>

Ny beställning till angiven leverantör.

Utskrift av blanketter från andra program

Utskrift. När ett försystem behöver skriva ut blanketter från Winbas kan t.ex. ordernummer skickas till Winbas för att generera en utskrift av blanketten direkt från Winbas. Utskriften kan då användas där en anpassning för t.ex. handdator eller liknande bearbetar färdigplockade order som synkas in och följesedlar ska skrivas ut per automatik.

E-mail. Utskriften kommer då att fungera på samma sätt som en direktutskrift från Winbas, och eventuellt generera dialog för att skicka blanketten via e-mail enligt inställda regler för e-blanketter.

Arkivering. Blanketterna kommer vid utskrift från det externa programmet då även automatiskt att arkiveras i de fall då Blankettarkivet används.

Förteckning över datafält - Utskrift av blanketter

Starttag

Data

Sluttag

Beskrivning

<wbprnoff>

Offertnr

</wbprnoff>

Offertnummer skickas och offerten skrivs ut från Winbas.

<wbprnord>

Ordernr

</wbprnord>

Ordernummer skickas och utskrift av ordererkännande sker från Winbas.

<wbprnfsl>

Ordernr

</wbprnfsl>

Följesedel skrivs ut baserat på ordernummer.

<wbprnfra>

Ordernr

</wbprnfra>

Fraktsedel skrivs ut baserat på ordernummer.

<wbprnpls>

Ordernr

</wbprnpls>

Plocksedel skrivs ut baserat på ordernummer.

<wbprnfakt>

Fakt.nr

</wbprnfakt>

Faktura skrivs ut baserat på fakturanummer.

<wbprnbest>

Bestnr

</wbprnbest>

Beställningsnummer skickas och beställningen skrivs ut från Winbas.

Granska på bildskärm. Med motsvarande uppsättning kommandon kan det anropande programmet också visa blanketterna för granskning på bildskärm, där användaren sedan kan skriva ut dem eller spara som PDF-fil eller liknande efter förhandsgranskning.

Förteckning över datafält - Granska blanketter på bildskärm

Starttag

Data

Sluttag

Beskrivning

<wbscroff>

Offertnr

</wbscroff>

Offertnummer skickas och offerten visas på bildskärm i Winbas.

<wbscrord>

Ordernr

</wbscrord>

Ordernummer skickas och granskning av ordererkännande sker i Winbas.

<wbscrfsl>

Ordernr

</wbscrfsl>

Följesedel visas på bildskärm baserat på ordernummer.

<wbscrfra>

Ordernr

</wbscrfra>

Fraktsedel visas baserat på ordernummer.

<wbscrpls>

Ordernr

</wbscrpls>

Plocksedel visas baserat på ordernummer.

<wbscrfakt>

Fakt.nr

</wbscrfakt>

Faktura visas baserat på fakturanummer.

<wbscrbest>

Bestnr

</wbscrbest>

Beställningsnummer skickas och beställningen visas på bildskärm i Winbas.

Skillnaden i taggarna vid utskrift till skrivare respektive bildskärm är i detta fall alltså prn (printer) och scr (screen).

Kassa

Winbas har utvecklat externa drivrutiner för tredjepartsleverantörer som önskar skapa en kassaorder från ett externt försystem, som sedan visas som en parkerad kassaorder i kassan. Kassaordern kan därefter bli föremål för kontant betalning, fakturering eller vanlig kundorder för vidare bearbetning i systemet. För att ytterligare automatisering kan då följande datafält användas för att direkt visa kassaordern och kanske även själva betalningsdialogen direkt:

Starttag

Data

Sluttag

Beskrivning

<wbkassanr>

Ordnr

</wbkassanr>

Kassaorden aktiveras direkt i Kassa och eventuell tidigare pågående order parkeras.

<wbkassabet>

Ordnr

</wbkassabet>

Kassaorden och även betalningsdialogen aktiveras.

<wbnykassa>

Kundnr

</wbnykassa>

Ny kassaorder till angiven kund.

Det sista kommandot innebär alltså att en ny kassaorder skapas på en angiven kund, och att eventuell redan öppen kassaorder parkeras.

Visa kundorder i Kassa

Kommandot för att visa en kassaorder i Kassa gäller även för vanlig kundorder. D.v.s. om ett ordernummer som skickas tillhör en kundorder från Order / faktura, kommer också ordern att visas i kassan för vidare bearbetning. Detta gäller då också kommandot <wbkassabet> som innebär att även betalningsdialogen aktiveras.

På samma sätt kommer också en Serviceorder att visas och eventuellt betalas i kassan om ordernumret ligger i intervallet för serviceorder.

Uppdatera inleveranser

När ett försystem har bearbetat beställningar och skapat inleveranser kan ett kommando skickas till Winbas för automatisk uppdatering av inleveranserna. Detta kan t.ex. gälla program för lagerplock och applikationer på server där Winbas klient då är igång. Uppdateringen följer då de inställningar som har gjorts på klienten gällande signatur och om eventuell rapport också ska skapas.

Starttag

Data

Sluttag

Beskrivning

<wbinlev>

U

</wbinlev>

Kommandot skickas och uppdatering av inleveranser utförs från Winbas.

Funktionen fungerar alltså på samma sätt som om man manuellt går in i Inleveranser och väljer att uppdatera inleveranser när funktionen avslutas.

Genom att lägga till nyckelordet Exp= plus en giltig signatur, kan anpassningen automatiskt sätta begreppet Expedierad av i statistiken. Om anpassningen utelämnar Expedierad av, kommer istället den inloggade signaturen att användas.

Datafältet blir då enligt följande:

Starttag

Data

Sluttag

Beskrivning

<wbinlev>

U, Exp=MC

</wbinlev>

Uppdatering av inleveranser utförs av Winbas och registrerar att MC har utfört inleveransen.

Fakturering i batch

När en anpassning sköter schemaläggningen externt mot Winbas via Push för olika typer av batcher, kan kommandon för olika typer av körningar användas. Programmet kan då t.ex. ligga på en server mot en Winbas-instans och vid olika tidpunkter nattetid skicka kommandon.

Följande kommandon återfinns för att utföra denna typer av körningar:

Starttag

Data

Sluttag

Beskrivning

<wbfakt>

SQL

<wbfakt>

Startar processen Fakturering.

Fakturering i batch där SQL är ett eventuellt urval i SQL-formatets WHERE klausul, som t.ex.:

Följesedelutskriven = TRUE AND Fakturakod BETWEEN '' AND '1'

Eller vid fakturering av en enstaka order:

Nummer = 10001

Starttag

Data

Sluttag

Beskrivning

<wbsamfakt>

SQL

<wbsamfakt>

Startar Samfakturering.

Körning av Samfakturering med order märkta för samfakturering, där t.ex.:

Faktureras = TRUE

- innebär att enbart order med krysset 'Samfaktureras" satt kommer att ingå.

Ytterligare urval i SQL parametern skulle då t.ex. kunna vara liknande:

Kundnummer = 'XXX'

Fakturering av enbart en kund.

Ordertyp = '1'

Fakturering av en viss ordertyp.

Orderdatum <= #2017-12-31#

Fram till ett angivet orderdatum.

Leveranstid <= 20171231

T.o.m. en leveranstid.

Då Push-tekniken normalt kräver en parameter för att utföra körningen, ska parametern * användas då inga ytterligare urval görs i anropet.

Starttag

Data

Sluttag

Beskrivning

<wbfakt>

*

<wbfakt>

Alla order som uppfyller övriga kriterier kommer att faktureras.

Statistik

För körningar med avseende på statistik kan följande kommandon användas av det anropande programmet.

Starttag

Data

Sluttag

Beskrivning

<wbstatistik>

Y

</wbstatistik>

Återskapa statistik utförs för innevarande år (Y) eller annat specificerat år.

<wbkontroll>

K,L,P

</wbkontroll>

Kontroll av Kunder, Leverantörer & Produkter, eller t.ex. bara kontroll av kund om parametern enbart innehåller enbart innehåller K.

Säljstöd

Organisationer och kontakter kan öppnas i Winbas Säljstöd genom att skicka OrganisationsID respektive KontaktID till Säljstöd.

Förteckning över datafält - Data skickas till Winbas Säljstöd

Starttag

Data

Sluttag

Beskrivning

<ssorgid>

Orgid

</ssorgid>

OrganisationsID skickas och organisationen visas i Säljstöd.

<sskontid>

Kontid

</sskontid>

KontaktID skickas och kontakten öppnas i Säljstöd.

Exempel för att skicka data till Winbas

Nedan visas exempel i VBA hur man kan deklarera Push för att skicka data till Winbas. För att t.ex. visa en kund i Winbas med kundnummer 1010 görs följande anrop enligt exemplet nedan:

WBPushCommand "wbkundnr", "1010"

Option Explicit
  Private obPush As Object

Public Sub SetPushObject()
  'Initiera återrapportering till Winbas t.ex. vid programstart
  On Local Error Resume Next

  Err.Clear
  Set obPush = GetObject(, "class.cMain")

  If Err <> 0 Then

  Set obPush = CreateObject("class.cMain")

  End If

End Sub

Public Sub WBPushCommand(StrTyp As String, StrNr As String)
  'Utför rapportering till Winbas
  Dim StrXMLCommand As String

  'Konkaternera anropet
  StrXMLCommand = "<" & StrTyp & ">" & StrNr & "</" & StrTyp & ">"

  'Utför anrop mot Winbas
  obPush.Push_cmd StrXMLCommand

End Sub

Public Sub KillPushObject()
  'Avsluta återrapportering till Winbas t.ex. vid programavslut
  Set obPush = Nothing

End Sub

Windows-registret och uppgifter om Winbas

Aktivt företag

Genom att läsa nyckeln Företag hämtas databasnamnet för det aktiva företaget i Winbas. Om flera företag används kan utvecklare som använder Push-tekniken läsa av det aktiva företaget för att avgöra hur informationen ska hanteras. Vissa företag kanske ska exkluderas i hanteringen och andra hanteras på ett annat sätt t.ex. när sidodatabaser med företagsunik information användes.

Applikationen kan då hämta databasnamnet till företaget genom t.ex. funktionen:
GetSetting("Winbas", "Start", "Företag", "")

Eller med den fullständiga sökvägen:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Winbas\Start\Företag

När man använder nyckeln Företag bör inte systeminställningen Tillåt flera instanser av Winbas vara påslagen eftersom nyckeln då enbart kommer visa t.ex. ändrat företag i den instans där man t.ex. ändrade företaget.

Aktiv användare

Genom att läsa nyckeln User för aktiv användare hämtas signaturen för den aktiva användaren i Winbas. Nyckeln kan då användas av anpassningen för att läsa av vem som är den inloggade användaren.

Applikationen kan då hämta signaturen genom t.ex. funktionen:
GetSetting("Winbas", "Start", "User", "")

Eller med den fullständiga sökvägen:

HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Winbas\Start\User

Version av Winbas

Utvecklare av tredjepartsapplikationer kan även låta applikationen läsa av versionen av Winbas i Windows-registret. Detta innebär att man slipper öppna interna styrfiler eller annat för att ta reda på den gällande version, i de fall versionen är relevant för anpassningen.

Applikationen kan då hämta versionen genom t.ex. funktionen:
GetSetting("Winbas", "Program", "Version", "")

Eller med den fullständiga sökvägen:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Winbas\Program\Version

Andra användbara nycklar

Nyckel

Uppgift

Winbas\Sökvägar\Klient

Mappen för den lokala klienten.

Winbas\Sökvägar\Server

Den delade servermappen.

Winbas\Start\Lang

Användarens språk.


Se även: