Thursday, June 9, 2016

Miscellaneous

I fixed two Internal Server Error tracebacks which arrived from Die Eiche:

RelatedObjectDoesNotExist
Enrolment has no pupil.
in request POST /api/courses/EnrolmentsByCourse
lino_voga/lib/courses/models.py in pupil_info
          txt = self.pupil.get_full_name(nominative=True)

AttributeError
'BankStatementItem' object has no attribute 'match_changed'
in request PUT /api/finan/ItemsByBankStatement/1554
lino_cosi/lib/finan/mixins.py,  in guess_amount, line 286

Handling partial payments

Alexa and I discovered yet another series of optimizations for Lino Voga. Mostly about handling partial payments.

New table lino_xl.lib.trading.models.DueInvoices. I started to write content for The lino_voga.lib.trading plugin.

New virtual fields balance_before and balance_to_pay.

New parameter field cleared for lino_xl.lib.ledger.ui.PartnerVouchers.

They want a new voucher state cancelled.

lino_xl.lib.finan.fixtures.demo_bookings now generates a more realistic situation. Until now it was rather utopic: all customers paid their invoices as suggested and in time. where not all most payments are arriving as suggested, i.e. the customer pays the full ammount. But there are exceptions: 5% discount taken at payment, partly payments, not paying at all, or (very accidentally) paying 2% too much.