Source code for stoqlib.reporting.loanreceipt
# -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4
##
## Copyright (C) 2010 Async Open Source <http://www.async.com.br>
## All rights reserved
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU Lesser General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU Lesser General Public License for more details.
##
## You should have received a copy of the GNU Lesser General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., or visit: http://www.gnu.org/.
##
##
## Author(s): Stoq Team <stoq-devel@async.com.br>
##
##
import datetime
from kiwi.python import Settable
from stoqlib.api import api
from stoqlib.lib.translation import stoqlib_gettext
from stoqlib.reporting.report import HTMLReport
_ = stoqlib_gettext
[docs]class LoanReceipt(HTMLReport):
title = _("Loan")
template_filename = "loan/loan.html"
def __init__(self, filename, loan):
self.loan = loan
super(LoanReceipt, self).__init__(filename)
#
# Private
#
def _get_person_document(self, person):
if person.individual:
return person.individual.cpf
if person.company:
return person.company.cnpj
return ''
def _get_person_address(self, person):
address = person.get_main_address()
location = address.city_location
return (address.get_address_string(),
'%s / %s' % (location.city, location.state))
#
# HTMLReport
#
[docs] def get_namespace(self):
store = self.loan.store
order_identifier = unicode(self.loan.identifier)
print_promissory_note = api.sysparam.get_bool('PRINT_PROMISSORY_NOTE_ON_LOAN')
branch = api.get_current_branch(store)
drawer_person = self.loan.branch.person
drawee_person = self.loan.client.person
emission_address = branch.person.get_main_address()
emission_location = emission_address.city_location
promissory_data = Settable(
order_identifier=order_identifier,
payment_number=None,
drawee=drawee_person.name,
drawer=branch.get_description(),
drawee_document=self._get_person_document(drawee_person),
drawer_document=self._get_person_document(drawer_person),
drawee_address=self._get_person_address(drawee_person),
drawer_address=self._get_person_address(drawer_person),
due_date=self.loan.expire_date,
value=self.loan.get_total_amount(),
emission_city=emission_location.city,
emission_date=datetime.date.today(),
)
return dict(
subtitle=_("Loan number: %s") % order_identifier,
loan=self.loan,
print_promissory_note=print_promissory_note,
promissory_data=promissory_data,
notice=api.sysparam.get_string('LOAN_NOTICE')
)
[docs] def adjust_for_test(self):
# today is mocked on test
date = datetime.date.today()
self.loan.expire_date = date
self.loan.open_date = date
self.loan.identifier = 666
self.logo_data = 'logo.png'
if __name__ == '__main__': # pragma nocover
from stoqlib.domain.loan import Loan
import sys
creator = api.prepare_test()
loan_ = creator.trans.find(Loan, id=int(sys.argv[-1])).one()
r = LoanReceipt('test.pdf', loan_)
r.save_html('test.html')
r.save()