# HG changeset patch # User Sylvain Thénault <sylvain.thenault@logilab.fr> # Date 1265719546 -3600 # Tue Feb 09 13:45:46 2010 +0100 # Node ID 989f05cf876ea5d373ac1bd99d81d12f7b0ff575 # Parent 1ee82b460998ac393f5dbbe324fe12bad2f9bc37 fix xml accounting views so they pass tests diff --git a/views/accounting.py b/views/accounting.py --- a/views/accounting.py +++ b/views/accounting.py @@ -1,7 +1,7 @@ """accounting views for fresh template :organization: Logilab -:copyright: 2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved. +:copyright: 2008-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved. :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr """ __docformat__ = "restructuredtext en" @@ -21,9 +21,20 @@ templatable = False content_type = 'text/xml' + def call(self): + """display a list of entities by calling their <item_vid> view + """ + self.w(u'<?xml version="1.0" encoding="%s"?>\n' % self._cw.encoding) + self.w(u'<ecritures>\n') + for i in xrange(self.cw_rset.rowcount): + self.cell_call(i, 0) + self.w(u'</ecritures>\n') + def cell_call(self, row, col): entity = self.cw_rset.get_entity(row, col) - self.wview('accentry', entity.related('has_lines')) + rset = entity.related('has_lines') + for i in xrange(len(rset)): + self.wview('accentry', rset, row=i, col=0) class ExpenseLineAccountingEntryXmlView(EntityView): @@ -49,8 +60,9 @@ self.w(u' <libelle>%s</libelle>\n' % xml_escape(entity.dc_long_title())) amount = round(entity.euro_amount(), 2) taxes = round(entity.taxes, 2) - self.w(u' <credit compte="%s" montant="%.2f" />\n' % ( - entity.paid_by[0].account, amount)) + account = entity.paid_by[0].account and xml_escape(entity.paid_by[0].account) or u'' + self.w(u' <credit compte="%s" montant="%.2f" />\n' + % ( account, amount)) if entity.taxes: # XXX hardcoded account for VAT self.w(u' <debit compte="44566" montant="%.2f" />\n' % entity.taxes) @@ -64,9 +76,10 @@ debit_remainder -= 1 else: debit = debit_quotient / 100.0 - self.w(u' <debit compte="%s" montant="%.2f" />\n' % - (account.account, debit)) + account = account.account and xml_escape(account.account) or u'' + self.w(u' <debit compte="%s" montant="%.2f" />\n' + % (account, debit)) if entity.workcase: - self.w(u' <groupe>%s</groupe>\n' % entity.workcase) + self.w(u' <groupe>%s</groupe>\n' % xml_escape(entity.workcase)) self.w(u' </ecriture>\n')