Mina produkter

Logga in för att följa kategorier och för att få genvägar i denna meny
Visma Administration, Fakturering & Förening
avbryt
Visar resultat för 
Sök istället efter 
Menade du: 
Highlighted
NY MEDLEM

Access - Visma Integration utvecklarpaketet

(uppdaterad av Tinna Gunnarsson MODERATOR ‎2020-03-31 14:04 )

Finns det någon som har en enkel kod att dela med sig för att hämta från en accessdatabas och skicka vidare till visma? (C#, C++) Eftersom detta är något som kommer göras då och då behöver vi skapa ett program i visual studio till detta. Jag hade väldigt svårt att greppa helheten i de kodsnuttar som fanns i dokumentationen till utvecklarpaketet.

9 SVAR 9
Highlighted
CONTENT PRODUCER

Re: Access - Visma Integration utvecklarpaketet

Hej!

Vad är det för delar i dokumentationen som du fastnar på? Kanske kan vi hjälpa till att förtydliga någon del?
Anna Svensson
~Content producer, Visma lönefamilj~
Highlighted
NY MEDLEM

Re: Access - Visma Integration utvecklarpaketet

Vi försöker tex skapa en faktura. När vi har hjort headern och vill fylla på med fakturarader så kan vi inte klura ut hur vi ska fylla på fakturarader till headern vi just skapat. Vi vet ju inte vilket nummer headern fick samt hur man anger vilken header man skriver till när vi ska posta fakturarader.
Highlighted
FD ANSTÄLLD

Re: Access - Visma Integration utvecklarpaketet

Hej!

Skapandet av rader till en faktura sker med funktionen AdkCreateDataRow. För att sedan koppla raderna till huvudet används funktionen AdkSetData. Om du vill skapa fakturahuvudet och raderna i samma add så behöver du inte veta fakturanumret utan de skapas i samma veva. Just denna bit beskrivs närmare på sidan 60 i referensmanualen.

I exempelprojektet som följer med utvecklarpaketet skapas fakturor, ta gärna en titt i hur den koden ser ut om du inte gjort det.

Att hämta ut fakturanumret på fakturan man nyss skapat går också. Det kan man göra med funktionen AdkGetStr i datastrukturen som man skapat fakturan ifrån.

Hjälper det dig på vägen?
Highlighted
NY MEDLEM

Re: Access - Visma Integration utvecklarpaketet

Det hjälpte mig på vägen och jag lyckades skapa en faktura, dock så körde jag fast helt på att:

error = AdkNetWrapper.Api.AdkSetStr(pTempData, AdkNetWrapper.Api.ADK_OOI_ROW_ARTICLE_NUMBER, ref artNr);

nu ger mig:

Det gjordes ett försök att läsa eller skriva till skyddat minne. Detta indikerar ofta att annat minne är skadat.

Sedan jag bytte till den "riktiga" databasen
Highlighted
NY MEDLEM

Re: Access - Visma Integration utvecklarpaketet

Det löste sig, tack för hjälpen!
Highlighted
NY MEDLEM

Re: Access - Visma Integration utvecklarpaketet

Förresten, tror ni har fel i er manual,

pTempRow = AdkGetDataRow(pRowData, 2);
error = AdkSetStr(pTempRow, ADK_OOI_ROW_TYPE_OF_ROW, "T");

ger: Error 1 The best overloaded method match for 'AdkNetWrapper.Api.AdkSetStr(int, int, ref string)' has some invalid arguments
Highlighted
ANSTÄLLD

Re: Access - Visma Integration utvecklarpaketet

Detta är ett utslag av lite språkförbistring 😉 Exemplen är skrivna i native C++, där man kan göra på detta sätt. Vill man testa koden får man översätta lite själv.
Nåt i stil med:
string tempString = "T";
error = AdkNetWrapper.Api.AdkSetStr(pTempRow, AdkNetWrapper.Api.ADK_OOI_ROW_TYPE_OF_ROW, ref tempString);

(sätt using AdkNetWrapper, så blir det inte så mycket att skriva)

I utvecklarpaketet finns exempelprojekt i C# som du kan titta på.
NY MEDLEM

Re: Access - Visma Integration utvecklarpaketet

Jag har gjort en egen wrapper i NET som man enkelt kan plocka upp i Viisual studio.
Sen kör man klart enklare typ

i VB:
Dim MyInvoice As invoice = New invoice
Dim nyrad As invoicerow
MyInvoice.CustomerNumber = NyttNamn.Text
For i = 0 to antalraderduhar
nyrad = new invoicerow
nyrad.ArticleNumber = id1.Text
nyrad.ProfitCentre = Nothing
nyrad.Quantity2 = antal1.Text
MyInvoice.invoicerows.Add(nyrad)
Next
MyInvoice.Addinvoice()

I C#
invoice MyInvoice = new invoice();
invoicerow nyrad = default(invoicerow);
MyInvoice.CustomerNumber = NyttNamn.Text;
for (i = 0; i <= antalraderduhar; i++) {
nyrad = new invoicerow();
nyrad.ArticleNumber = id1.Text;
nyrad.ProfitCentre = null;
nyrad.Quantity2 = antal1.Text;
MyInvoice.invoicerows.Add(nyrad);
}
MyInvoice.Addinvoice();

Det underllättar så mycket att ha en mer korrekt NET-wrapper för oss som e vana med Visual studio.
Kontakta mig om ni önskar köpa wrappern.
Highlighted
NY MEDLEM

Re: Access - Visma Integration utvecklarpaketet

Hej, 

Precis som SeaPelle så har även vi byggt en .Net wapper som täcker hela Vismas API. Att skapa en ny faktura, oavsett var rådatan kommer ifrån, är inte svårare än:

var invoice = new Invoice();invoice.CustomerNumber = myCustomerNumber;
for (var i=0;i<antalFakturarader;i++) {
  var row = new Invoice.Row();
  row.ArticleNumber = myRows[i].ArtNr;
  row.Quantity1 = myRows[i].Quantity;
  row.Quantity2 = myRows[i].Quantity;
  invoice.Rows.Add(row);
}
invoice.Save();

Svårare än så är det inte - och borde inte behöva vara.