Opzoeken en tellen van Offertes.

Ophalen van offertes kan via de functie GetStamtabelRecords

Door het tellen van OFFKOP.BEDRTOT  kom je aan het totaal openstaande offerte bedrag.  Omdat niet alle offertes ook daad werkelijk geteld moet worden volgt hieronder de selectie van de offertes.

  • IMFIN.OFFKOP.GEPROMOVEERD = “N”
  • IMFIN.OFFKOP.VERLORENOFFERTE = “N”
  • IMFIN.OFFKOP.BLOK = “N”

Als er gebruik wordt gemaakt van offerte revisies (BASVK.GEBROFFVERSIE) dan kunnen er van offertes meerdere revisies in omloop zijn. Hierbij wordt telkens als een offerte wordt aangepast nadat de revisie was afgedrukt/gemaild een kopie gemaakt van de OUDE versie.
Het openstaande offerte bedrag is dan uiteraard wat lastiger te bepalen. Na het promoveren van een van de revisies (de klant beslist uiteindelijk welke versie definitief wordt.) worden de andere revisies gemarkeerd.
Omdat het mogelijk is om later met een oudere versie door te gaan is er naast een VERSIENR ook een ACTVERSIENR.

Eerst zoeken we de “Laatste” offertes. Dit zijn de offertes waarbij de velden NR en ORGOFFNR gelijk zijn. Hierbij halen ook direct we de velden VERSIENR en ACTVERSIENR op.

Om dat het standaard niet mogelijk is om in 1x alle offertes op te halen waarbij  NR gelijk is aan ORGOFFNR in hetzelfde record is hiervoor is een speciale optie  in de cloud-switch aanwezig waarbij WHEREFIELD wordt gemarkeerd met een & en de WHEREVALUE  de naam van het 2de veld is. In dit geval dus: ORGOFFNR.

  •  Zodra VERSIENR en ACTVERSIENR gelijk zijn hebben we de juiste offerte gevonden en kunnen we het BEDRTOT tellen.
  • Zodra deze NIET gelijk zijn moeten we opnieuw zoeken. We zoeken dan de offerte waarbij  ORGOFFNR gelijk is aan NR en VERSIE gelijk aan het bij eerste zoekactie gevonden ACTVERSIENR.

<SELECTFIELDS>NR ORGOFFNR VERSIENR ACTVERSIENR BEDRTOT</SELECTFIELDS>

<WHEREFIELDS>           &NR                     </WHEREFIELDS>
<WHEREOPERATORS> =                            </WHEREOPERATORS>
<WHEREVALUES>         ORGOFFNR         </WHEREVALUES>

 

In mijn voorbeeld geeft dit als restultaat:

DATA>
<NR>201600009</NR>
<ORGOFFNR>201600009</ORGOFFNR>
<VERSIENR>2</VERSIENR>
<ACTVERSIENR>3</ACTVERSIENR>
<BEDRTOT>2355</BEDRTOT>
</DATA>

Op basis van deze informatie zoeken we dan de juiste (actuele offerte) Dit is de offerte waarbij ORGOFFNR = 201600009 en VERSIENR = 3, dat geeft in mijn voorbeeld het resultaat:

DATA>
<NR>201601788</NR>
<ORGOFFNR>201600009</ORGOFFNR>
<VERSIENR>3</VERSIENR>
<ACTVERSIENR>3</ACTVERSIENR>
<BEDRTOT>1853</BEDRTOT>
</DATA>

Zoals je kunt zien is het bedrag op dat moment 1853.

Door daarna een totaaltelling te maken van BEDRTOT is het totaal openstaande offertebedrag bekend. Voorwaarde hierbij is wel dat het allemaal offertes zijn in dezelfde valuta (VAL).  Is dit niet het geval dan moet BEDRTOT worden omgerekend op basis van de koers in VALUTA of DAGKOERS