Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: vb6 tarkistenumeron laskeminen

Sivun loppuun

Apuvaaaa [19.10.2010 21:19:34]

#

Moi!
En tiedä kuuluuko tämä nyt oikein tänne, mutta kun vb6:lla rupesin tekemään, niin arvelin kysymyksen kuuluvan tänne. Eli varsinainen ongelma on saada laskutoimituksen mukaan eriytettyä numerojonosta, joka voi olla vaikka kuinka pitkä, kaikki numerot erilleen niin, että voin kertoa ne painoarvoilla. Jakojäännöksestä tulisi saada liitettyä jakojäännös numerosarjan viimeiseksi numeroksi.

Esim: 12345 numerosarja pitäisi saada 1, 2, 3, 4, 5 erillisiksi numeroiksi, jotta voisin laskea ohjelmallisesti kaavan 1*1=a,2*3=b,3*7=c,4*1=d,5*3=e. Ja edelleen jatkaisin laskemista a+b+c+d+e=f. Tulee tulosteeseen: 123457, koska f on 47 ja sen viimeinen merkki hyväksytään.

Tämä ei sinällään aiheuta päänvaivaa ohjelmallisesti, mutta kun tuo luku voi olla vaikkapa 1234567890 l. en voi tietää sen pituutta edeltäkäsin. Tein tällaisen viitetarkistenumerohärpäkän joskus vuonna mummo omaan QB:llä tehtyyn laskutusohjelmaan, eikä se tuottanut vaivaa siksi, että saatoin pitäytyä tietyssä määrässä numeroita ja muistaaakseni olin jo edeltä määrittänyt ne ohjelmaan asiakaskohtaisesti ja siksi ne oli myös muutettu valmiiksi muuttujiin. Nyt ohjelmani valikoi asiakkaan numeron ja laskunnumeron, liittäen ne yhteen. Tälle numerosarjalle tarvitsisi siis saada tarkistenumero.

Kiitokset taas etukäteen vastauksista!

Metabolix [19.10.2010 21:31:24]

#

Selostuksessasi on useampikin virhe. Viitenumeron laskussa käytettävät kertoimet ovat 7, 3 ja 1 oikealta alkaen, eli lauseke on 5 * 7 + 4 * 3 + 3 * 1 + 2 * 7 + 3 * 1 = 67, jolloin tarkistusnumeroksi tulee 3, koska sen verran puuttuu seuraavasta tasakymmenestä (67 + 3 = 70).

Algoritmin voi toteuttaa helposti silmukalla, joka käy merkit läpi lopusta alkuun.

Grez [19.10.2010 21:35:52]

#

Apuvaaaa kirjoitti:

Nyt ohjelmani valikoi asiakkaan numeron ja laskunnumeron, liittäen ne yhteen.

Mä en ole vielä koskaan ymmärtänyt mikä järki tässä on. Siis, tiedän että monet firmat tekee näin, mutta kuitenkin niillä on yksilölliset laskunumerot, eli pelkkä laskunumero yksilöisi suorituksen täydellisesti.

Onko tässä käynyt niin, että joku ääliö on joskus keksinyt idean laittaa myös se asiakasnumero siihen viitteeseen ja sitten muut ääliöt ovat kopioineet "hienon" idean? Tai ehkä joskus kun tietokoneminuutit oli kalliita, niin oli pakko pystyä hakemaan asiakasnumerolla, mutta sitten päästään vaan näihin ääliöihin jotka edelleen jatkavat "perinnettä".

Vaikka viitenumeron maksimipituus on 19 numeroa plus tarkiste, niin ei niitä kaikkia ole pakko käyttää.

Apuvaaaa [19.10.2010 22:31:43]

#

Oops! Kiitos huomautuksesta näinhän tuo viitenumeron laskenta todellakin menee. -> Dementia, varhainen sellainenkin ei näköjään tule yksin. Tarkastin laskentakaavan ja totesin ulkomuistini pettäneen. Onneksi virhe tuli esille jo tässä vaiheessa. Kiitos!

Lähestyin myös ongelmaa nähtävästi aivan väärin, koska hain numerojonon purkamiseen ensin loogista laskentatapaa, jotta voisin ongelman ratkaista ohjelmallisesti. Nyt täytyy ruveta pähkäilemään tuota silmukan toteutusta, ellei joku hyväsydäminen heitä koodinpätkää?

Grez. Nykyään laskun numerot on määriteltävä numerojärjestyksessä 1...~. Uusi kirjanpitolaki - yhtään laskunnumeroa ei saa jäädä välistä pois. Pienyritykset haluavat, varsinkin jos manuaalisesti tarkistavat laskuja, niissä näkyvän myös asiakasnumeron.

Metabolix [19.10.2010 22:40:56]

#

Jotenkin tähän malliin:

kerroin = 7
summa = 0
For i = Len(viite) To 1
    merkki = Mid(viite, i, 1)
    summa = summa + kerroin * CInt(merkki)
    Select kerroin
        Case 7
            kerroin = 3
        Case 3
            kerroin = 1
        Case 1
            kerroin = 7
    End Select
Next i
numero = (10 - (summa Mod 10)) Mod 10

Sinä se meistä VB-koodari olet, joten korjaa loput.

Apuvaaaa kirjoitti:

Grez. Nykyään laskun numerot on määriteltävä numerojärjestyksessä 1...~. Uusi kirjanpitolaki - yhtään laskunnumeroa ei saa jäädä välistä pois.

Eihän kukaan ole muuta väittänytkään. Pointti oli, että viitteenä voisi käyttää suoraan laskun numeroa (plus tarkistusmerkki). Tietokone löytää kyllä laskun.

Apuvaaaa kirjoitti:

Pienyritykset haluavat, varsinkin jos manuaalisesti tarkistavat laskuja, niissä näkyvän myös asiakasnumeron.

Mutta miksi haluavat? Eivät he varmaan ulkoa muista asiakkaiden numeroita kuitenkaan. Koodaisivat kunnon softan, joka osaa laskun numeron perusteella näyttää kaikki tiedot.

Tuossa asiakasnumeron ja laskun numeron yhdistämisessä on muuten eräs ongelma: viitenumerot voivat törmätä. Kuvittelepa vaikka, että asiakas 12 saa laskun 34 ja asiakas 1 saa laskun 234 – mitenkä sitten suu pannaan?

Apuvaaaa [19.10.2010 23:22:37]

#

Ensinnäkin suuret kiitokset helpistä - koodi etc.

Satun tietämään tästä meidän alueelta heti tuhannen yritystä, jotka ei käytä minkäänlaista ohjelmistoa laskujensa tarkistamiseen. -> Yksikin yritys, jolle tarjosin autojen huolto-ohjelmaa, millä saisi asiakkaalle tulostettua kaikki huolot ja tarvikkeet töitä huomioimatta - koko auton historian ajalta - ja tällä menettelyllä saisi asiakkaan tulemaan uudelleen, ei onnistunut, koska Boss ei halunnut käyttää tietokonetta. No jatkavat samaan tyyliin.

Asiakasnumerot he joko muistavat ulkoa tai katsovat tarkastaessaan listasta. Outoa kyllä - koska olen kanssasi varsin samaa mieltä - että ohjelmallisesti tilanne ja muutenkin elämä helpottuisi. Valitettavasti osa yritysten johdosta on vain niin kaavoihinsa kangistuneita henkilöitä, että aiheuttavat jopa omalla toiminnallaan itselleen sellaista stressiä, että loppu lääkärin kautta on tiedossa.

tv. anabolix

Grez [19.10.2010 23:33:27]

#

Metabolix kirjoitti:

Tuossa asiakasnumeron ja laskun numeron yhdistämisessä on muuten eräs ongelma: viitenumerot voivat törmätä. Kuvittelepa vaikka, että asiakas 12 saa laskun 34 ja asiakas 1 saa laskun 234 – mitenkä sitten suu pannaan?

Normaalistihan käytetään välinollia, niin että laskun numero on aina esimerkiksi 6 numerolla. Tosin olen tosiaan törmännyt tuollaisen kuvaamaasi viritykseenkin, jossa juuri kuvailemasi kollisiomahdollisuus on olemassa.

Apuvaaaa kirjoitti:

Pienyritykset haluavat, varsinkin jos manuaalisesti tarkistavat laskuja, niissä näkyvän myös asiakasnumeron.

Mitenkäs lyhyempi viitenumero estää laittamasta asiakasnumeron laskulle näkyviin?

Apuvaaaa kirjoitti:

ei onnistunut, koska Boss ei halunnut käyttää tietokonetta. No jatkavat samaan tyyliin.

Siis jos tämä oli peruste sille, miksi laskulla täytyy olla viitteessä asiakasnumero mukana, niin mahtaa olla hitsin kivaa tuolla firmassa laskea käsin ne pitkien viitteiden tarkistusnumerot.

Apuvaaaa [20.10.2010 00:18:45]

#

Grez Moi!
1. Tarkoitin, että manuaalisesti laskuja, siis ihmisen lukemana, yrityksen työntekijällä on helpompi tarkastaa tiliotteesta maksanut yritys, kun siinä näkyy asiakkaan numero. Oli tuo numero sitten haetttu ohjelmallisesti yrityksen ostamasta ohjelmasta tai manuaalisesti luettu jostain listasta. Ja kuten Metabolix ehdotti: ohjelmallinen ratkaisu olisi paras. Monet yritykset säästävät????? ohjelmallisista ratkaisuista, maksamalla vuositasolla suuria summia siitä, että joku tekee työn manuaalisesti. No se on heidän valintansa.

2. No mahtaa olla hitsin kivaa lukea ko. firmassa yhtään mitään. Siellä tarkastus on toteutettu juurikin em. tavalla. -> kaikkea kivaa niille. Tosin tämän yrityksen omistaja ei halunnut juuri tätä autohuolto-ohjelmaa, mikä olisi tuonut rahaa yritykseen laillisesti, vaan Hän jatkaa toimintaansa toimien ko. kunnan yrittäjien puheenjohtajana, teetättäen pimeällä työvoimalla 90% työstä. Hyvän esimerkin havaittuani kohdistin myyntipuheeni toisaalle. Grez, Taidat tietää tämän yrityksen naapurikunnastasi?

Olen teidän kummankin kanssa samaa mieltä ohjelmallisten ratkaisujen toteutumisen suhteen. Vain ne vapauttaisivat useita turhia työtunteja ja vapauttaisivat useita käsiä tuottavaan työhön.

Grez [20.10.2010 00:36:57]

#

No se, että suomessa on 1 tai 5 yritystä, joissa on idiootteja ei vielä selitä sitä täysin käsittämätöntä käytäntöä, että laskujen pankkiviitteissä on sekä asiakas- että laskun numero.

Tällainen käytäntö on ainakin ollut esimerkiksi Soneralla. Olen jokseenkin 100% varma, että siellä niitä maksettuja laskuja ei kaiveta tiliotteellta käsipelillä ja siellä ei myyntireskontranhoitajakaan todennäköisesti muista jokaista 2 miljoonaa asiakasta sen asiakasnumeron perusteella.

Ja toisaalta miksi suunnittelet tekeväsi ohjelmaasi tuollaisen hölmön ominaisuuden jos se sitä ominaisuutta tarvitseva hölmö asiakas kerran ei halua ohjelmaasi ostaa?

Apuvaaaa [20.10.2010 00:43:34]

#

3. Ei se sitä edes saa, mutta muita on toivottavasti jonossa. Tiedätkö muuten tuon yrityksen?

Grez [20.10.2010 00:47:11]

#

En tiedä.

Apuvaaaa [20.10.2010 00:48:00]

#

Ylöjärvi?

Grez [20.10.2010 00:49:54]

#

No jos kerran olet tässä threadissa kertonut, että omistaja on Ylöjärven Yrittäjien puheenjohtaja ja omistaa autohuoltofirman, niin kai minä voisin sen vaikka Googlettaa, jos haluaisin. Ennestään en kyllä tunne.

Itse en pitäisi muuten hirveän fiksuna levitellä yksilöityjä tietoja yrityksistä, joiden kanssa on hieronut kauppaa vaikkei olisi saanut klousattua.

Apuvaaaa [20.10.2010 00:52:48]

#

Jos et ennestään tiedä on turha vaiva Googlettaa.

Grez [20.10.2010 00:55:24]

#

No jos olisin sen ennestään tiennyt niin olisin sen varmasti tiennyt jo ennen tuota Ylöjärvi-tarkennustasi. Mitä tarkoitit että turha vaiva googlettaa? Helpostihan tuo löytyi että Ylöjärven Yrittäjien PJ on Valto Koivula ja sitten löytyy Autohuolto ja kolarikorjaamo Valto Koivula Oy.

Toivottavasti väitteellesi 90% työn teettämisestä pimeästi löytyy todisteet tai muuten Valto voi innostua tekemään tutkintapyynnön kunnianloukkauksesta yms.

Apuvaaaa [20.10.2010 01:03:40]

#

No joo... Tulipahan vahingossa ilmaistua, mutta jospa tällä nyt saisi jotain lakisääteistä tai sen suomaa suojaa myös siellä toimiville henkilöille, olisi viesti sitten mennyt perille.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta