Veierland, palmesøndag 2024

Dekningsgrad-kontroll i Visma Business

I Bedriftsopplysninger finnes det et felt som heter Min. dekn.grad. Dersom du legger noe inn her, dukker det opp en melding når salgsordre lagres hvis Dekn.grad er lavere. Meldingen dukker opp på venstre side i den blå statuslinjen nederst. I Brukerpref. (i Bruker-tabellen) kan du velge hvilke brukere som skal få meldingen som en popup-boks (eller dialog som det egentlig heter) ved å krysse av for Vis kreditt­kontroll­meldinger som dialog. Det kan være praktisk at selgere som faktisk bestemmer prisen på ordrelinjene, får slik melding på en mer dominerende måte enn andre.

I Produkt-tabellen finnes et felt som heter Ønsket dekn.grad. Det kommer ikke noe varsel om det registreres en ordrelinje med Dekn.grad lavere enn ønsket (hvis ikke ordren får en samlet Dekn.grad under minimum). En kunde ønsket dette, og vi svarte at dette er det BIG er skapt for. Men helt rett frem er det ikke i BIG heller. En sak er det brukeren gjør med Pris og/eller Rabatt % - dét er det enkelt å ha kontroll på. Men Dekn.grad kan endres i andre sammenhenger; f.eks. ved reservasjon. Kostpris (kr) hentes (på lagerhåndterte ordrelinjer) i utgangspunktet fra Gj.snittlig kostprisLagersaldo, men om det i Ordrebehandling (i Bedriftsopplysninger) er krysset av for Beregn gjennomsn. Kostpris på ordrelinje (og det håper jeg at det er hos deg) så kan Kostpris endres ved utskrift av plukkliste. Og om du fra salgsordren har generert innkjøpsordre, vil Kostpris (kr) på salgsordrelinjene endres i takt med endringer på innkjøpsordrelinjene. Vær allikevel oppmerksom på en feil i denne sammenheng: Om du endrer Valutakurs på innkjøpsordren (altså i hodet) så vil Kostpris (kr) på innkjøpsordrelinjene endres ved lagring (gitt at det i Ordrebehandling er krysset av for Redupliser fra hode til linje ved lagring – og det håper jeg også det er hos deg) – men Kostpris (kr) på salgsordrelinjene følger ikke med. Dette er meldt til Visma, som har bekreftet feilen. Kostprisen på salgsordrelinjene blir allikevel oppdatert ved varemottak og om nødvendig på nytt ved fakturamottak. Nok om det.

Dekningsgrad-kontroll på ordrelinje med BIG har altså noen svakheter. Så jeg foreslo et overvåkningspunkt i stedet. Kunden er på versjon 16.10 og ville ha en illustrasjon. I utvalget måtte vi bl.a. ha:

Dekn.grad < Produkt.Ønsket dekn.grad.

Men Dekn.grad er ikke et database-felt; det beregnes av VBus som 100 x Dekn.bidrag / Beløp (kr). Dekn.bidrag er heller ikke et databasefelt; det beregnes som Beløp (kr) - Pål. kostn. (kr). Utvalget måtte da bli:

     100 x (Beløp (kr) - Pål. kostn. (kr)) / Beløp (kr) < Produkt.Ønsket dekn.grad.

Problemet her er at Beløp er null på mange ordrelinjer og da får vi divisjon på null. Så jeg tenkte at om vi legger til et bitte lite tall i nevneren, så bør det løse seg:

     100 x (Beløp (kr) - Pål. kostn. (kr)) / (Beløp (kr) + 0,000001) < Produkt.Ønsket dekn.grad.

I prinsippet er utvalget feil, men i praksis er det rett. Da jeg lagret vinduet og åpnet det på nytt litt senere, var problemet med divisjon på null tilbake igjen. Årsaken er at konstantleddet i nevneren var lagret som 0,000000. VBus avrunder konstantleddet til nærmeste øre! Så det måtte bli slik:

     100 x (Beløp (kr) - Pål. kostn. (kr)) / (Beløp (kr) + 0,01) < Produkt.Ønsket dekn.grad.

Og feilen er så liten at dette i praksis fungerer etter hensikten. Det hører med til historien at du kan endre konstantlegget til 0,000001 direkte i databasen med f.eks. SQL Mgmt Studio.

Jeg tenkte (og tenker fremdeles) at dette er en feil i VBus og begynte å skrive en sak om feilen. Da jeg kom til siden Dekn.grad ikke kan brukes i utvalg, slo ryggmargsrefleksen til: Jeg sjekket i versjon 18.10. Og her er det mulig!

Dette er en udokumentert perle i 18.10. Jeg har ikke funnet det omtalt i nyheter og forbedringer. Og det er ikke slik i versjon 18.00. Dette gjelder ikke bare Dekn.grad. Det gjelder så langt jeg kan se alle felt (dog ikke Beregnede kolonner). Standard-kolonnene som nå kan brukes i utvalg, kan i versjon 18.10 også brukes til sortering.

De som har forsøkt å sette opp et utvalg på lagersaldo som viser Beh. inkl. endr. < Min.beh. i versjoner før 18.10, har sett at det ikke er mulig fordi uttrykket ganske enkelt blir for langt. Vel, det er mulig om du bruker SQL-navn, men plundrete er det. Helt til du har oppgradert til versjon 18.10.

 

Resten av min blogg kan du lese her: frode.antun.no/VBus/blogg 

 

frode@antun.no