53 lines
2.1 KiB
Python
53 lines
2.1 KiB
Python
|
import datetime
|
||
|
from sqlalchemy.orm import joinedload_all
|
||
|
|
||
|
from pyramid.view import view_config
|
||
|
from brewman.helpers import Literal
|
||
|
|
||
|
from brewman.models.voucher import Voucher, Journal, VoucherType
|
||
|
from brewman.views.transactions import get_edit_url
|
||
|
|
||
|
@view_config(request_method='GET', route_name='unposted', renderer='brewman:templates/reports/unposted.pt')
|
||
|
def unposted(request):
|
||
|
body = Literal(build_report(request))
|
||
|
|
||
|
return {'title': 'Day Book - Hops n Grains',
|
||
|
'pageclass': "page-blogpost page-sidebar-right",
|
||
|
'pagecontentclass': "page-content grid_12",
|
||
|
'page_header': '',
|
||
|
'body': body}
|
||
|
|
||
|
|
||
|
def build_report(request):
|
||
|
editUrl = ''
|
||
|
body = ''
|
||
|
|
||
|
query = Voucher.query().options(joinedload_all(Voucher.journals, Journal.ledger, innerjoin=True))\
|
||
|
.filter(Voucher.posted == False)\
|
||
|
.filter(Voucher.type != VoucherType.by_name('Issue').id)\
|
||
|
.order_by(Voucher.date).order_by(Voucher.last_edit_date).all()
|
||
|
|
||
|
for voucher in query:
|
||
|
debit = 0
|
||
|
credit = 0
|
||
|
nameDebit = ""
|
||
|
nameCredit = ""
|
||
|
for journal in voucher.journals:
|
||
|
if journal.debit == 1:
|
||
|
debit += journal.amount
|
||
|
nameDebit += "{0} / ".format(journal.ledger.name)
|
||
|
else:
|
||
|
credit += journal.amount
|
||
|
nameCredit += "{0} / ".format(journal.ledger.name)
|
||
|
nameDebit = nameDebit[:-3]
|
||
|
nameCredit = nameCredit[:-3]
|
||
|
|
||
|
nameDebit = '<a href="' + get_edit_url(request, voucher) + '">' + nameDebit + '</a>'
|
||
|
nameCredit = '<a href="' + get_edit_url(request, voucher) + '">' + nameCredit + '</a>'
|
||
|
|
||
|
body += '<tr class="Voucher" id="{0}"><td class="Date">{1}</td><td class="VoucherType">{2}</td>'\
|
||
|
'<td class="NameDebit">{3}</td><td class="Debit right">\u20B9 {4:.2f}</td><td class="NameCredit">{5}'\
|
||
|
'</td><td class="Credit right">\u20B9 {6:.2f}</td><td class="Narration">{7}</td></tr>'.format(
|
||
|
str(voucher.id), voucher.date.strftime('%d-%b-%Y'), VoucherType.by_id(voucher.type).name, nameDebit, debit,
|
||
|
nameCredit, credit, voucher.narration)
|
||
|
return body
|