TK-IT / web

TÅGEKAMMERETs hjemmeside i Django. Både offentlig og intern
https://TAAGEKAMMERET.dk
Other
1 stars 3 forks source link

BalancePrint regner sum af betalinger og "andet" forkert #227

Open Mortal opened 6 years ago

Mortal commented 6 years ago

Pt. indeholder BalancePrint følgende stump kode:

transaction_qs = Transaction.objects.all()
period_start_date, = (
    Sheet.objects.filter(period=period).aggregate(Min('start_date')).values())
period_start_time = timezone.get_current_timezone().localize(
    datetime.datetime.combine(period_start_date, datetime.time()))
transaction_qs = transaction_qs.filter(time__gte=period_start_time)

Koden gør at alle betalinger medtages der har en time som er efter den tidligste start_date på en krydsliste i det pågældende GF-år. Det giver følgende problem: Hvis man opretter en krydsliste i det nuværende GF-år, men med en start-dato tilbage i fortiden (f.eks. 2001-01-01 for at teste noget), så vil regningens "betalt"-søjle indeholde betalinger fra før det nuværende GF-år.

En umiddelbar løsning er at erstatte ovenstående kode med:

transaction_qs = Transaction.objects.filter(period=period)

...eller:

transaction_qs = Transaction.objects.filter(session__period=period)

... men det skal testes. BalancePrint blev implementeret i 7669340 ("Add PDF output", 2016-12-02) før Transaction.period blev tilføjet i 06674e2 ("Add Transaction.period", 2017-02-26), så det er formentlig bare mig der har overset at opdatere BalancePrint efter Transaction.period blev tilføjet.

Mortal commented 5 years ago

Som @OEHC har påpeget over for mig, er summen af betalinger rent faktisk forkert på den udskrevne regning, da man sagtens kan have første krydsliste i år N+1 til at have startdato den samme dag som man laver den sidste opgørelse for år N. I dette tilfælde vil time for Transaction i år N være større end period_start_time for år N+1.