Kursen er sat, men er den rigtig?

Ind imellem støder man på at C5 ikke er helt så fejltollerant, som man kunne ønske sig. Et eksempel er i valutakartoteket, hvor der altid skal være mindst en kurs på hver valuta.

C5 applikationen sørger ganske vist for at der “altid” er det, men alligevel ser vi ind imellem fejl hos kunderne, hvor kurs 100 på DKK pludselig er væk (mistanke om databasefejl eller databasemanipulation der er gået skævt).
Man kan lede “huller i jorden” efter sådan en fejl (tro mig – vi har gjort det 🙂 ), så derfor dette blogindlæg…

Defaultposten på valutakartoteket på DKK er magen til den post, der SKAL være der (kurs 100 uden datoer), så kan man faktisk kun se fejlen i valutaformen, ved at tilføje løbenummerfeltet til billedet – løbenummeret vil være 0 hvis posten ikke er der.

Konsekvenserne af fejlen er store – valutakoden lige før DKK vil få kursen 100 (fx har jeg oplevet at CZK – der alfabetisk sorteres lige før DKK – opsat med kurs 29, bogføres med kurs 100 i C5 (fordi regnestykket når der skal omregnes til DKK er (Kurs på valuta)/(Kurs på DKK)*100. DKK ser umiddelbart fin ud (kurs 100), mens andre valutaer fx. EUR også bliver helt forkerte…
Er der bogført meget med disse forkerte valutakurser i længere tid, er det noget af en opgave at få ryddet op i missæren.

Intollerancen mht. de forkerte data i C5 skyldes, at man i C5 standard applikationen bruger opslaget ExchRate[CurrencyIdx<=(valutakode), (opslagsdato)]. Opslaget forudsætter at der ALTID er et match på den valutakode man laver opslaget med (fordi der jo SKAL være en post med tom dato).
I det øjeblik der ikke findes mindst en post med dato mindre end opslagsdatoen, vil opslaget finde nyeste (datomæssige) kurs frem på FOREGÅENDE valuta jf. indexet – og det er jo katastrofalt forkert.

Et oplagt fix ville være hvis C5 løbende checkede at man faktisk fik fundet en korrekt kurs på den pågældende valuta… Omvendt kan man jo diskutere om det direkte er en bug i C5, når applikationen faktisk forsøger at sikre, at der altid er en valid startkurs (en uden dato) på alle valutaer.

Morale – oplever du mærkelige “kurs-ting” – fx. at det ser ud til at C5 håndtere en anden valuta end den du har opsat, som standardvaluta (kurs 100 selvom du har angivet anden kurs). Eller oplever du at kurser på andre valutaer ikke stemmer overens med dem du har opsat i valutakartoteket, så check om der er løbenummer på din kurs-100 post på den opsatte standardvaluta (normalt DKK).

Er der ikke det – så ret kursen (100) til “100” og tryk F3. Når du åbner billedet igen vil posten have fået løbenummer og alting virker. Tilbage kan så være et næsten uoverkommeligt arbejde med at rydde op i posteringer med en helt forkerte kurs…

NB: Vi HAR indrapporteret et ønske om forbedring af C5 så applikationen fanger fejlen omkring den manglende valutapost, og håber at Microsoft efterkommer ønsket i en fremtidig udgave af C5.