Oslo, 6. februar 2021
Endret 2. juli 2023
Lagertelling med antallsomregning
Jeg har skrevet om antallsomregning tidligere, men i uka som gikk kom jeg over en problemstilling som jeg ikke har sett før – og som jeg tenker at jeg burde ha fått øye på tidligere. Jeg pleier å styre unna problemstillinger om hvem som burde ha gjort hva; det fører sjelden frem til noe konstruktivt. Det hender jeg sier at «burde» er et moralspørsmål. Det tar jeg stilling til på søndager. Resten av uka forholder jeg meg til verden slik den er. Men siden det er søndag; tenker jeg at jeg burde ha fått øye på dette tidligere…
En av mine kunder fortalte at han hadde noen varepartier med beholdning nær null, både positive og negative, f.eks. 0,000001 eller -0,000001. Og da han forsøkte å telle disse til null, svarte VBus med følgende melding:
Dette er en melding som normalt betyr nettopp det det står. Har du en beholdning på 0,000001 og denne er reservert til noen, så må reservasjonen trekkes tilbake før beholdningen kan reduseres til null. Men VBus svarte på samme måte da det var et negativt parti som skulle telles til null – og dette er en økning av beholdningen (fra noe negativt til null). Så da henger det ikke på greip.
Det viste seg at dette var et parti hvor det var produsert 1 D-pak á 110 stk. På produktet var det angitt at Stand. enhet er D-pak og at Antall pr. enhet er 110. Ved produksjon av 1 D-pak gikk det altså 110 stk. inn på lager. Så ble det solgt ved ulike anledninger til sammen 96 stk, slik at det var 14 igjen på lager. Ved lagertelling ble disse telt til null.
Litt senere ble lagersaldo regenerert og da dukket partiet opp med -0,00003 i beholdning. Da denne ble forsøkt telt bort, svarte VBus med at 1 lagersaldo(er) kunne ikke reduseres til mindre enn reservert kvantum:
Årsaken er at når VBus lager korreksjonstransaksjonen fra tellingen, så beregner VBus Antall i Stand. enhet. Det er helt ulogisk for Tellbart antall, Telt antall og Telledifferanse er i grunnenhet. Når Telledifferanse er 14 og Antall pr. enhet er 110 må Antall i Stand. enhet bli 14/100=0,127283. VBus vil altså i sin ufattelige visdom, redusere beholdningen med 0,127283 D-pak. Og så blir det å beregne hvilken Lagerbevegelse (og Antall i grunnenhet) dette blir – og VBus beregner dette til 0,124283x110=14,00003. Beholdningen reduseres med 14 både på vareparti og lagersaldo. Det er først ved regenerering av lagersaldo at feilen dukker opp.
Når VBus skal gjenta suksessen og telle bort de siste -0,00003 beregnes Antall i Stand. enhet til 0,00003/110=0,00000027. Det er mindre enn det er «plass» til i et desimaltall med seks siffer.
Det er helt meningsløst av VBus å bruke antallsomregning på transaksjonen fra tellerutinen. Siden det er søndag, skriver jeg som det er: VBus bør sette Antall pr. enhet til 1 og Lagerbevegelse (og Antall i grunnenhet) lik Telledifferanse (med korrekt fortegn selvfølgelig).
Litt beskjemmet over ikke å ha fått øye på dette tidligere – jeg har tross alt jobbet med VBus i 20 år; fortrinnsvis med logistikk og gitt råd om antallsomregning til mange – meldte jeg dette til Visma for en uke siden. Dette er løst i versjon 18.
For ordens skyld: Dette er ikke nytt i versjon 16. Jeg sjekket versjon 9.10 (tidligere versjoner enn det, har jeg for tiden ikke installert på min maskin). Dette har nok vært slik siden antallsomregning ble introdusert i VBus – en gang i forrige århundre.
Det er ikke alltid det blir feil. Du kan bruke tellerutinen på produkter med Antall pr. enhet når denne er 1, 2, 4, 5, 8, 10, 16, 20, 25, 32, 40, 50, 64, 80, 100, 125, 160, 200, 250, 320, 400, 500, 625, 800, 1.000, 1.250, 1.600, 2.000, 2.500, 3.125, 4.000, 5.000, 6.250, 8.000, 10.000, ... og når Telledifferanse er et multiplum av Antall pr. enhet.
Så spørsmålet blir da hvordan bli kvitt disse fjollete partiene: Enten må man sette Antall pr. enhet på produktet til 1 før beholdning skal korrigeres (og sette tilbake til opprinnelig etterpå) eller ganske enkelt bruke en korreksjonsordre og sette Antall pr. enhet på ordrelinjen til 1, selv om VBus foreslår noe annet. Det siste er nok det enkleste, for med litt nennsom plassering av kolonner, utfyllingsregel for Antall pr. enhet og et gjennomtenkt utvalg av varepartier, er det lett å kopiere fra vareparti til ordrelinje. Før ferdigmelding må Varepartistatus endres manuelt, for de varepartiene som er Under lagertelling:
Resten av min blogg kan du lese her: frode.antun.no/VBus/blogg