Hoe kan je via de SDK betalingsinformatie ophalen uit Venice? Via dit artikel proberen we hier een antwoord op te geven.
Allereerst is het nuttig om na te gaan welke informatie er precies gevraagd wordt. Als het volstaat om te weten als een factuur betaald is of niet, dan kan dit relatief eenvoudig opgevraagd worden. Moet u echter ook de datum van de betaling(en) weten, via welk document de afpunting gebeurde, dan wordt het een stuk ingewikkelder.
Sowieso handelt dit artikel over informatie die uit Venice boekhouding gehaald wordt, en niet uit Venice Facturatie & Stock of Venice Lite (de SDK is niet compatibel met Venice Lite). En als een factuur nog niet doorgeboekt werd naar de boekhouding, zal u er ook geen informatie over kunnen opvragen.
Enkel opvragen als een factuur betaald is of niet
Hierbij volstaat het om de property pIsTicked uit te lezen (uit het Purch object voor aankopen, uit het Sales object voor verkopen).
- False = het document staat nog open (er kan wel al een gedeelte van betaald zijn, maar er is nog altijd een stuk dat openstaand is).
- True = het document is volledig afgepunt
Als u in 1 oogopslag wil zien als er al een deelbetaling gedaan werd of niet, vraag dan de property pOpenDocC (open bedrag in documentmunt) op, en vergelijk met de waarde van pTotalDocC (totaal bedrag documentmunt). Een verschil tussen de waarde van beide properties betekent dat er al een gedeeltelijke betaling genoteerd werd. Pas als pOpenDocC de waarde 0 heeft, zal ook pIsTicked de waarde True krijgen.
Overgedragen documenten
Een document kan ook overgedragen zijn en in het nieuwe boekjaar afgepunt zijn.
Stel dat u een verkoopfactuur hebt die dateert uit 2013, en die overgedragen werd en pas in 2014 betaald werd. Dan zal u de waarde van pIsTicked (of de andere hierboven vermelde properties) van het document moeten opvragen in de context van het boekjaar 2014, en niet in de context van boekjaar 2013. Deze informatie wordt immers niet retroactief doorgegeven!
Hoe zoekt u op als een document overgedragen werd of niet? Dat doet u via de method Year::GetTrnStat
Stel dat u wil controleren tot en met welk aankoopdocument er reeds overgedragen werd, dan moet u als parameter ttSupl meegeven. Het resultaat is het systeemnummer van het meest recente aankoopdocument dat al overgedragen werd. Indien het systeemnummer van het aankoopdocument dat u onderzoekt (pSysNum) hoger is dan het systeemnummer dat u terugkrijgt via GetTrnStat, dan betekent dit dat u niet in recentere boekjaren moet zoeken, omdat het document nog niet overgedragen werd.
Gedetailleerde betalingsinformatie opvragen
De eerste methode laat u toe om een actuele stand van zaken te krijgen met betrekking tot uw aan- of verkopen. Ze laat echter niet toe om een overzicht te krijgen van wanneer, en in hoeveel keer een factuur vereffend werd. Hiervoor moeten we wat dieper ingaan op het afpunten van documenten via de SDK.
Het Entry object
De boekingslijnen van een willekeurig boekhoudkundig document worden in de SDK weergegeven via het Entry object.
Elke boekingslijn van een boekhouddocument kan dus als een Entry object opgevraagd worden. Specifieke voor het afpunten van aan- en verkoopdocumenten geldt dat het steeds op de eerste boekingslijn van dergelijk document is, dat de afpunting gebeurt (de eerste boekingslijn is de boeking op resp. leverancier of klant).
De eerste boekingslijn op vragen van een verkoopdocument doet u als volgt (in VB .Net):
If oEntry.SeekByDocNum(smEqual, btSales, "FAC", 17, 0) Then
Als het resultaat waar is, dan bestaat het document in de actieve boekjaarcontext. In het voorbeeld hierboven wordt er gezocht naar een verkoopdocument in dagboek FAC met documentnummer 17.
Als het document overgedragen werd (hogerop wordt beschreven hoe u dat kan nagaan), dan kan u ook van een overgedragen document het Entry object bepalen:
If oEntry.SeekByDocNumOrg(smEqual, btSales, "FAC", 2013, 17) Then
Hiermee zoekt u in het actieve boekjaar de eerste boekingslijn (in datzelfde boekjaar dus) van een document (documentnummer 17 in dagboek FAC) dat in een eerder boekjaar (in dit geval 2013) aangemaakt werd.
Eenmaal u een Entry object gevonden hebt, kan u het systeemnummer ervan opzoeken (pSysNum). Datzelfde systeemnummer kan u ook afbeelden in Venice zelf: u kan het via het werkblad Details (via tabblad Consultatie, groep Boekhouding) toevoegen via het kolommenbeheer.
Met dit object kan u nu aan de slag gaan.
Afpuntingen uitlezen via het Entry object
Er zijn 2 methodes die u kan toepassen op het Entry object:
Eerst moet u met GetLastTickInfo de meest recente afpunting opvragen uit dat boekjaar, en vervolgens kan u via GetPrevTickInfo-iteraties de eerdere afpuntingen opvragen uit dat boekjaar, totdat deze methode de waarde False terugkeert.
Zowel GetLastTickInfo als GetPrevTickInfo keert een array terug met de lijst van systeemnummers (die dus verwijzen naar afpuntboekingslijnen) waarmee het betrokken document afgepunt werd. U moet dus door deze array loopen. Per systeemnummer dat u terugkrijgt kan u dan opvragen over welk bedrag het ging (oEntry.pAmountDocC), via welk dagboek de afpunting gebeurde (oEntry.pBook), …
Overzicht
Om een volledig overzicht van de betalingen overheen de boekjaren te verkijgen, moet u dus het volgende doen:
- in het boekjaar waarin het document aangemaakt werd kijkt u eerst als er al een betaling genoteerd werd (pOpenDocC <> pTotalDocC)
- Zo ja, dan zoekt u de eerste boekingslijn op (SeekByDocNum) en vraagt u de afpuntingen op via GetLastTickinfo/GetPrevTickInfo
- Indien in stap 1 pOpenDocC 0 was, dan hoeft u niet meer te kijken in volgende boekjaren, aangezien het document in het oorspronkelijke boekjaar al volledig betaald was.
- indien in stap 1 er nog een openstaand saldo was, dan gaat u naar het volgende boekjaar, en zoekt u via SeekByDocNumOrg de boekingslijn voor dat document in dat volgende boekjaar.
- Vervolgens controleert u opnieuw via GetLastTickInfo/GetPrevTickInfo de afpuntingen in dit boekjaar.
- Als het openstaand saldo in dit boekjaar 0 was, dan hoeft u ook niet meer verder te zoeken. Als er nog steeds een openstaand saldo is, dan herhaalt u deze werkwijze verder totdat u uiteindelijk in het laatste boekjaar aangekomen bent.
Vragen?
Indien bepaalde zaken niet duidelijk zijn, laat dan gerust commentaar na, zodat we dit artikel kunnen aanvullen indien nodig.