Datautbyte med Winbas Push-teknik

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.

<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 utroppstecken (!) 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.

<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