zebraf1 / Kassa

Private inventory system
GNU General Public License v2.0
0 stars 0 forks source link

Tasaarveldused ja konvendi põhine krediit #87

Closed tanelk closed 6 years ago

tanelk commented 6 years ago

Probleem:

Konvendite õllekassade rahamajandus on eraldiseisev. Kuna lubame ülekandeid (krediidi lisamisi) ja oste teha suvalistes kassades, läheb rahamajandus sassi.

Lahendus:

1) Igal kasutajal on krediit konvedi põhine (nt: Minul on Tartus 15€ ja Tallinnas -3€). Tegelikult kasutajad näevad alati krediidi summat üle kõigi konventide (12€). Vaatasin, et siin on koodi muutusi vaja teha vaid paari koha peal.

2) Tasaarveldused Uus andmebaasi tabel "tasaarveldused" (kõige suurem probleem - kuidas seda inglise keeles nimetada??) Väljad:

Kood, mis arvutab tasaarvelduse, mida tõmmatakse cron-i abil perioodiliselt käima (iga kuu algus?). Tasaarvelduse käigus liigutame kõigi kasutajate krediidi tema kodukonventi (mujal 0) ning liidame iga konvendi jaoks krediidi liikumised kokku. Kui see number on kõigi konventide jaoks 0, siis on raha liikumised tasakaalus, vastasel juhul teevad majanduse eestseisjad pangaülekande, mis ajab rahad paika.

Adminitele tuleb UI alla leht "Tasaarveldused", kus nad näevad tasaarvelduste tulemuseid. Kui on plussis, siis teeb pangaülekande teisele kassale ja märgib ära, et on tehtud. Teine ME kinnitab ka seda.

Mõtteid?

zebraf1 commented 6 years ago

Ok, tundub mõistlik lahendus minuarust. Ma pakuks tabeli nimeks näiteks credit_netting. Netting - tasaarveldus, võlgnevus.

Äkki peaks olema seal 2 konvendi ID - võlas oleva konvendi oma ja kellele võlgu ollakse. Siis on selge. Teoorias võib tulla mängu ka teisi konvente, kuigi hetkel ainult 2.

Näiteks debtor_convent_id (võlgnik) ja creditor_convent_id (laenuandja). nettinguid näeb siis kasutaja kel on majanduseestseisja ROLE ning valitud convent_id kattub ühega neist convent_id'dest.

tanelk commented 6 years ago

Hakkab valmis saama, homme õhtul lisan veel testid.

Jooksutamiseks "app/console app:credit-netting".

Üks murekohta andmebaasi migratsiooniga - kui päris andmebaasi peal teha, siis olemasolevate ostude konvent peaks olema Tallinn, praegu läheb default 0, kuidas seda parandada?

zebraf1 commented 6 years ago

Migratsioonis võib teha UPDATE table SET convent_id = 6 (või 5 vms). Päris baasis migratsioonid lasen käsitsi käima, kopeerin migra failist need muudatused.

tanelk commented 6 years ago

Väike arusaamatus testidega:

CreditNettingControllerTest -> testList();

Kui jooksutan selle testi siis esimest korda õnnestub kõik aga uuesti testi käivitades on eelmisel korral genereeritud tasaarveldused ikka andmebaasis alles. Sain aru, et iga test case järel kirjutatakse admebaas üle.

tanelk commented 6 years ago

Sain lahenduse, fixtures.yml failis peab vähemalt tühi väli olema, et üle kirjutaks.

zebraf1 commented 6 years ago

A ok