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: 
Dennis7
NY MEDLEM

Hämta ut alla obetalda fakturor genom API - Integration

(uppdaterad av Tinna Gunnarsson MODERATOR ‎2020-01-27 16:03 )

Hejsan

Jag var tidigare i veckan i kontakt med er telefonsupport ang detta problem jag har. Tänkte bara hör med er här på forumet om ni kan ge något tips som faktiskt fungerar.

Det handlar om att hämta ut alla obetalda fakturor i databasen med ett förfallodatum innan specat datum, som visade sig vara svårare än vad jag trodde.

Allt började med att jag hittade sorteringsordningen "eInvoiceNotPayedDate" som tillåter att filtrera på "ADK_OOI_HEAD_DOCUMENT_DATE2", som är förfallodatum. Men det är nog inte riktigt vad jag söker.

Den sorteringen ger mig rätt fakturor men endast framåt i tiden samt att det måste finnas minst en faktura på det datumet jag anger. Annars får jag svaret "ADKE_NOT_FOUND"...

Då fick jag förslaget att lokalisera första obetalda fakturan för att utgå från dess datum och ta alla där efter. Detta tar dock orimligt väldigt lång tid...

Något förslag?
mvh

2 SVAR 2
Roald Osbakk
ANSTÄLLD

Re: Hämta ut alla obetalda fakturor genom API - Integration

Kanske funkar att räkna upp datumet en dag och försöka med en ny sökning igen tills man får en träff?
Har man inte fått träff när man nått slutdatum i det intervall man är intresserad av finns det inga obetalda fakturor i intervallet.
Om det i snitt är fler än 1 faktura per dag lär denna strategi vara bättre än att loopa tills man hittar den man sökte.
BennyO
NY MEDLEM

Re: Hämta ut alla obetalda fakturor genom API - Integration

Hej Dennis, 

Eftersom jag såg att du även ställde frågor relaterade till en webbapplikation så gissar jag på att denna är relaterad till det. 

Det du vill uppnå är fullt möjligt att få ihop men den typen av operationer bör du inte mer än undantagsvis göra direkt mot Visma-databasen/Api'et då Vismas databaslösning inte lämpar sig för prestandaintensiva operationer eller att flera användare/program samtidigt arbetar med den. 

Det jag hade rekommenderat dig att göra - helt baserat på egen erfarenhet av flera liknande situationer - är att använda Api'et för att på ett schema läsa över alla förändrade poster till en SQL-databas för att därefter ställa de tunga frågorna mot den istället. 

Antingen så kan du använda Vismas eget api för att läsa ut datan eller så har företaget jag representerar ett alternativt API som, om du jobbar med ett .Net-språk som t.ex. C#, gör din tillvaro betydligt mycket enklare. Med det hade du kunnat göra följande:

var invoices = InvoiceStore.FindByTimestamp(lastCheckTimestamp);
foreach(var invoice in invoices){
   SaveToDb(invoice);
} lastCheckTimestamp = DateTime.Now();
Den koden hade gett dig alla fakturor som förändrats sen förra gången körningen och eftersom alla Visma-objekten i vårt API är "normala" .Net-objekt så kan du använda valfritt ORM-ramverk (t.ex. Entity Framework eller motsv.) för att spara ner objekten till en databas som du alltså sedan kan ställa frågor mot och snabbt och enkelt få ut det du vill ha fram - t.ex. alla fakturor med förfallodatum innan ett visst datum. 

SELECT * FROM [Invoices] WHERE [Date2] <= '" + TheDate + "'"

Vill du ha mer information om vårt api så bara hojta till. 

Lycka till!