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.

<levfaktnr>

Levfaktnr

</levfaktnr>

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

Strängkommandona 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 nu 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.

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.

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.

Säljstöd

Dessutom kan organisationer och kontakter ö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>

Kundnr

</ssorgid>

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

<sskontid>

Levnr

</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.

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