diff --git a/views/accounting.py b/views/accounting.py
index 1ee82b460998ac393f5dbbe324fe12bad2f9bc37_dmlld3MvYWNjb3VudGluZy5weQ==..989f05cf876ea5d373ac1bd99d81d12f7b0ff575_dmlld3MvYWNjb3VudGluZy5weQ== 100644
--- 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,5 +21,14 @@
     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)
@@ -24,6 +33,8 @@
     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,6 +76,7 @@
                 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:
@@ -69,4 +82,4 @@
         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')