Merge lp:~unifield-team/unifield-wm/UFTP-245 into lp:unifield-wm

Proposed by jftempo
Status: Merged
Merged at revision: 2210
Proposed branch: lp:~unifield-team/unifield-wm/UFTP-245
Merge into: lp:unifield-wm
Diff against target: 1167 lines (+482/-501) (has conflicts)
6 files modified
msf_doc_import/account.py (+33/-20)
msf_doc_import/view/account_view.xml (+4/-5)
register_accounting/account_bank_statement.py (+19/-6)
register_accounting/account_view.xml (+1/-1)
register_accounting/report/liquidity_position_xls.mako (+414/-463)
register_accounting/report/report_liquidity_position.py (+11/-6)
Text conflict in register_accounting/account_bank_statement.py
To merge this branch: bzr merge lp:~unifield-team/unifield-wm/UFTP-245
Reviewer Review Type Date Requested Status
UniField Reviewer Team Pending
Review via email: mp+221720@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'msf_doc_import/account.py'
--- msf_doc_import/account.py 2013-12-10 09:50:13 +0000
+++ msf_doc_import/account.py 2014-06-02 12:07:57 +0000
@@ -36,7 +36,7 @@
36 _name = 'msf.doc.import.accounting'36 _name = 'msf.doc.import.accounting'
3737
38 _columns = {38 _columns = {
39 'date': fields.date(string="Migration date", required=True),39 'date': fields.date(string="Date", required=True),
40 'file': fields.binary(string="File", filters='*.xml, *.xls', required=True),40 'file': fields.binary(string="File", filters='*.xml, *.xls', required=True),
41 'filename': fields.char(string="Imported filename", size=256),41 'filename': fields.char(string="Imported filename", size=256),
42 'progression': fields.float(string="Progression", readonly=True),42 'progression': fields.float(string="Progression", readonly=True),
@@ -52,7 +52,7 @@
52 'message': lambda *a: _('Initialization…'),52 'message': lambda *a: _('Initialization…'),
53 }53 }
5454
55 def create_entries(self, cr, uid, ids, context=None):55 def create_entries(self, cr, uid, ids, journal_id, context=None):
56 """56 """
57 Create journal entry 57 Create journal entry
58 """58 """
@@ -60,10 +60,10 @@
60 if not context:60 if not context:
61 context = {}61 context = {}
62 # Prepare some values62 # Prepare some values
63 journal_ids = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'migration'), ('is_current_instance', '=', True)])63 #journal_ids = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'migration'), ('is_current_instance', '=', True)])
64 if not journal_ids:64 #if not journal_ids:
65 raise osv.except_osv(_('Warning'), _('No migration journal found!'))65 # raise osv.except_osv(_('Warning'), _('No migration journal found!'))
66 journal_id = journal_ids[0]66 #journal_id = journal_ids[0]
67 # Fetch default funding pool: MSF Private Fund67 # Fetch default funding pool: MSF Private Fund
68 try: 68 try:
69 msf_fp_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'analytic_distribution', 'analytic_account_msf_private_funds')[1]69 msf_fp_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'analytic_distribution', 'analytic_account_msf_private_funds')[1]
@@ -191,7 +191,7 @@
191 raise osv.except_osv(_('Warning'), _('No period found!'))191 raise osv.except_osv(_('Warning'), _('No period found!'))
192 period = self.pool.get('account.period').browse(cr, uid, wiz_period_ids[0], context)192 period = self.pool.get('account.period').browse(cr, uid, wiz_period_ids[0], context)
193 if not period or period.state in ['created', 'done']:193 if not period or period.state in ['created', 'done']:
194 raise osv.except_osv(_('Warning'), _('Period for migration is not open!'))194 raise osv.except_osv(_('Warning'), _('Period is not open!'))
195 date = wiz.date or False195 date = wiz.date or False
196196
197 # Check that a file was given197 # Check that a file was given
@@ -213,7 +213,7 @@
213 self.write(cr, uid, [wiz.id], {'message': _('Reading headers…'), 'progression': 5.00})213 self.write(cr, uid, [wiz.id], {'message': _('Reading headers…'), 'progression': 5.00})
214 # Use the first row to find which column to use214 # Use the first row to find which column to use
215 cols = {}215 cols = {}
216 col_names = ['Description', 'Reference', 'Document Date', 'Posting Date', 'G/L Account', 'Third party', 'Destination', 'Cost Centre', 'Booking Debit', 'Booking Credit', 'Booking Currency']216 col_names = ['Journal Code', 'Description', 'Reference', 'Document Date', 'Posting Date', 'G/L Account', 'Third party', 'Destination', 'Cost Centre', 'Booking Debit', 'Booking Credit', 'Booking Currency']
217 for num, r in enumerate(rows):217 for num, r in enumerate(rows):
218 header = [x and x.data for x in r.iter_cells()]218 header = [x and x.data for x in r.iter_cells()]
219 for el in col_names:219 for el in col_names:
@@ -222,6 +222,10 @@
222 break222 break
223 # Number of line to bypass in line's count223 # Number of line to bypass in line's count
224 base_num = 2224 base_num = 2
225
226 # global journal code for the file
227 file_journal_id = 0
228 aj_obj = self.pool.get('account.journal')
225229
226 for el in col_names:230 for el in col_names:
227 if not el in cols:231 if not el in cols:
@@ -289,17 +293,26 @@
289 if line[cols['Booking Credit']]:293 if line[cols['Booking Credit']]:
290 money[line[cols['Booking Currency']]]['credit'] += line[cols['Booking Credit']]294 money[line[cols['Booking Currency']]]['credit'] += line[cols['Booking Credit']]
291 r_credit = line[cols['Booking Credit']]295 r_credit = line[cols['Booking Credit']]
292 # Check document/posting dates296
293 # UTP-766: Do not use Document date column, but wizard's one297 # Check which journal it is to be posted to: should be of type OD, MIG or INT
294 #if not line[cols['Document Date']]:298 if not line[cols['Journal Code']]:
295 # errors.append(_('Line %s. No document date specified!') % (current_line_num,))299 errors.append(_('Line %s. No Journal Code specified') % (current_line_num,))
296 # continue300 continue
297 # UTP-766: Do not use Posting date column, but wizard's one301 else:
298 #if line[cols['Document Date']] > date:302 # check for a valid journal code
299 # errors.append(_("Line %s. Document date '%s' should be inferior or equal to given Posting date '%s'.") % (current_line_num, line[cols['Document Date']], date,))303 aj_id = aj_obj.search(cr, uid, [('type','in',['intermission','migration','correction']),('code','=',line[cols['Journal Code']])])[0]
300 # continue304 if aj_id:
301 # Fetch document date305 if num == 0: # Assume 1st line is the journal code for the entire spreadsheet
302 #r_document_date = line[cols['Document Date']].strftime('%Y-%m-%d')306 file_journal_id = aj_id
307 else:
308 if file_journal_id != aj_id:
309 errors.append(_('Line %s. Only a single Journal Code can be specified per file') % (current_line_num,))
310 continue
311 else:
312 errors.append(_('Line %s. Journal Code is not of type OD, INT or MIG') % (current_line_num,))
313 continue
314
315 print 'journal codes: ', file_journal_id, aj_id
303 # Check G/L account316 # Check G/L account
304 if not line[cols['G/L Account']]:317 if not line[cols['G/L Account']]:
305 errors.append(_('Line %s. No G/L account specified!') % (current_line_num,))318 errors.append(_('Line %s. No G/L account specified!') % (current_line_num,))
@@ -399,7 +412,7 @@
399 # Update wizard412 # Update wizard
400 self.write(cr, uid, ids, {'message': _('Writing changes…'), 'progression': 0.0})413 self.write(cr, uid, ids, {'message': _('Writing changes…'), 'progression': 0.0})
401 # Create all journal entries414 # Create all journal entries
402 self.create_entries(cr, uid, ids, context)415 self.create_entries(cr, uid, ids, file_journal_id, context)
403 message = _('Import successful.')416 message = _('Import successful.')
404417
405 # Update wizard418 # Update wizard
406419
=== modified file 'msf_doc_import/view/account_view.xml'
--- msf_doc_import/view/account_view.xml 2013-10-28 12:59:14 +0000
+++ msf_doc_import/view/account_view.xml 2014-06-02 12:07:57 +0000
@@ -21,8 +21,8 @@
21 <field name="model">msf.doc.import.accounting</field>21 <field name="model">msf.doc.import.accounting</field>
22 <field name="type">form</field>22 <field name="type">form</field>
23 <field name="arch" type="xml">23 <field name="arch" type="xml">
24 <form string="Import Migration Entries">24 <form string="Import Entries">
25 <label string="This will import Migration Entries from a XML file." colspan="4"/>25 <label string="This will import Entries from a XML file." colspan="4"/>
26 <newline/>26 <newline/>
27 <field name="file" filename="filename" attrs="{'invisible': [('state', '!=', 'draft')]}"/>27 <field name="file" filename="filename" attrs="{'invisible': [('state', '!=', 'draft')]}"/>
28 <field name="filename" invisible="1"/>28 <field name="filename" invisible="1"/>
@@ -47,7 +47,7 @@
47 -->47 -->
4848
49 <record id="action_migration_accounting_import_wizard" model="ir.actions.act_window">49 <record id="action_migration_accounting_import_wizard" model="ir.actions.act_window">
50 <field name="name">Import Migration Entries</field>50 <field name="name">Import Entries</field>
51 <field name="res_model">msf.doc.import.accounting</field>51 <field name="res_model">msf.doc.import.accounting</field>
52 <field name="view_type">form</field>52 <field name="view_type">form</field>
53 <field name="view_mode">form</field>53 <field name="view_mode">form</field>
@@ -55,8 +55,7 @@
55 <field name="target">new</field>55 <field name="target">new</field>
56 </record>56 </record>
5757
58 <menuitem id="menu_finance_migration" name="Migration" parent="account.menu_finance_configuration" sequence="40"/>58 <menuitem id="menu_finance_migration_accounting" name="Import Entries" parent="account.menu_finance_entries" sequence="39" action="action_migration_accounting_import_wizard"/>
59 <menuitem id="menu_finance_migration_accounting" name="Import Migration Entries" parent="menu_finance_migration" sequence="1" action="action_migration_accounting_import_wizard"/>
6059
61 </data>60 </data>
62</openerp>61</openerp>
6362
=== modified file 'register_accounting/account_bank_statement.py'
--- register_accounting/account_bank_statement.py 2014-06-02 10:10:09 +0000
+++ register_accounting/account_bank_statement.py 2014-06-02 12:07:57 +0000
@@ -969,7 +969,6 @@
969 return list(res)969 return list(res)
970970
971971
972
973 def _get_fp_analytic_lines(self, cr, uid, ids, field_name=None, args=None, context=None):972 def _get_fp_analytic_lines(self, cr, uid, ids, field_name=None, args=None, context=None):
974 """973 """
975 Get all analytic lines linked to the given register lines974 Get all analytic lines linked to the given register lines
@@ -1770,10 +1769,19 @@
1770 distrib_id = values.get('analytic_distribution_id')1769 distrib_id = values.get('analytic_distribution_id')
1771 if not distrib_id:1770 if not distrib_id:
1772 values = self._update_employee_analytic_distribution(cr, uid, values=values)1771 values = self._update_employee_analytic_distribution(cr, uid, values=values)
1772<<<<<<< TREE
1773 if 'cheque_number' in values:1773 if 'cheque_number' in values:
1774 cr.execute('''select id from account_bank_statement_line where cheque_number = %s ''', (values['cheque_number'], ))1774 cr.execute('''select id from account_bank_statement_line where cheque_number = %s ''', (values['cheque_number'], ))
1775 for row in cr.dictfetchall():1775 for row in cr.dictfetchall():
1776 raise osv.except_osv(_('Info'),_('This cheque number has already been used'))1776 raise osv.except_osv(_('Info'),_('This cheque number has already been used'))
1777=======
1778
1779 if 'cheque_number' in values:
1780 cr.execute('''select id from account_bank_statement_line where cheque_number = '%s' ''' % (values['cheque_number']))
1781 for row in cr.dictfetchall():
1782 raise osv.except_osv(_('Info'),_('This cheque number has already been used'))
1783
1784>>>>>>> MERGE-SOURCE
1777 # Then create a new bank statement line1785 # Then create a new bank statement line
1778 absl = super(account_bank_statement_line, self).create(cr, uid, values, context=context)1786 absl = super(account_bank_statement_line, self).create(cr, uid, values, context=context)
1779 return absl1787 return absl
@@ -1834,6 +1842,12 @@
1834 if line.get('is_down_payment', False) and line.get('down_payment_id'):1842 if line.get('is_down_payment', False) and line.get('down_payment_id'):
1835 if not self.pool.get('wizard.down.payment').check_register_line_and_po(cr, uid, line.get('id'), line.get('down_payment_id')[0], context=context):1843 if not self.pool.get('wizard.down.payment').check_register_line_and_po(cr, uid, line.get('id'), line.get('down_payment_id')[0], context=context):
1836 raise osv.except_osv(_('Warning'), _('An error occured on down_payment check. Please contact an administrator to resolve this problem.'))1844 raise osv.except_osv(_('Warning'), _('An error occured on down_payment check. Please contact an administrator to resolve this problem.'))
1845
1846 if 'cheque_number' in values:
1847 cr.execute('''select id from account_bank_statement_line where cheque_number = '%s' ''' % (cheque_number))
1848 for row in cr.dictfetchall():
1849 raise osv.except_osv(_('Info'),_('This cheque number has already been used'))
1850
1837 return res1851 return res
18381852
1839 def copy(self, cr, uid, absl_id, default=None, context=None):1853 def copy(self, cr, uid, absl_id, default=None, context=None):
@@ -1991,7 +2005,6 @@
1991 # update the invoice 'name' (ref) TODO - does this need to be set to "/" ?2005 # update the invoice 'name' (ref) TODO - does this need to be set to "/" ?
1992 self.pool.get('account.invoice').read(cr, uid, absl.invoice_id.id, ['number'])['number']2006 self.pool.get('account.invoice').read(cr, uid, absl.invoice_id.id, ['number'])['number']
1993 # self.write(cr, uid, [absl.id], {'name': "/"})2007 # self.write(cr, uid, [absl.id], {'name': "/"})
1994
1995 # Optimization: Do check=True and update_check=True because it was out from previous lines.2008 # Optimization: Do check=True and update_check=True because it was out from previous lines.
1996 account_move_line.write(cr, uid, account_move_line_ids, {'state': 'draft'}, context=context, check=True, update_check=True)2009 account_move_line.write(cr, uid, account_move_line_ids, {'state': 'draft'}, context=context, check=True, update_check=True)
19972010
@@ -2044,7 +2057,7 @@
2044 # do a move that enable a complete supplier follow-up2057 # do a move that enable a complete supplier follow-up
2045 self.do_direct_expense(cr, uid, absl, context=context)2058 self.do_direct_expense(cr, uid, absl, context=context)
2046 if previous_state == 'draft':2059 if previous_state == 'draft':
2047 direct_hard_post = True # UF-23162060 direct_hard_post = True # UF-2316
2048 else:2061 else:
2049 direct_hard_post = False2062 direct_hard_post = False
2050 self._set_register_line_audittrail_post_hard_state_log(cr, uid, absl, direct_hard_post, context=context)2063 self._set_register_line_audittrail_post_hard_state_log(cr, uid, absl, direct_hard_post, context=context)
@@ -2067,7 +2080,7 @@
2067 # get next sequence2080 # get next sequence
2068 domain = [2081 domain = [
2069 ('model', '=', model_name),2082 ('model', '=', model_name),
2070 ('res_id', '=', absl.statement_id.id),2083 ('res_id', '=', absl.statement_id.id),
2071 ]2084 ]
2072 if direct_hard_post:2085 if direct_hard_post:
2073 # for a direct hard post, an audit line with Draft 2 Temp is already created2086 # for a direct hard post, an audit line with Draft 2 Temp is already created
@@ -2155,7 +2168,7 @@
2155 return self.posting(cr, uid, ids, 'temp', context=context)2168 return self.posting(cr, uid, ids, 'temp', context=context)
21562169
2157 def button_analytic_lines(self, cr, uid, ids, context=None):2170 def button_analytic_lines(self, cr, uid, ids, context=None):
2158 """2171 """
2159 Give analytic lines linked to the given register lines2172 Give analytic lines linked to the given register lines
2160 """2173 """
2161 if not context:2174 if not context:
@@ -2196,7 +2209,7 @@
2196 raise osv.except_osv(_('Error'), _('This wizard only accept ONE advance line.'))2209 raise osv.except_osv(_('Error'), _('This wizard only accept ONE advance line.'))
2197 # others verifications2210 # others verifications
2198 for st_line in self.browse(cr, uid, ids, context=context):2211 for st_line in self.browse(cr, uid, ids, context=context):
2199 # verify that the journal id is a cash journal2212 # verify that the journal id is a cash journal
2200 if not st_line.statement_id or not st_line.statement_id.journal_id or not st_line.statement_id.journal_id.type \2213 if not st_line.statement_id or not st_line.statement_id.journal_id or not st_line.statement_id.journal_id.type \
2201 or st_line.statement_id.journal_id.type != 'cash':2214 or st_line.statement_id.journal_id.type != 'cash':
2202 raise osv.except_osv(_('Error'), _("The attached journal is not a Cash Journal"))2215 raise osv.except_osv(_('Error'), _("The attached journal is not a Cash Journal"))
22032216
=== modified file 'register_accounting/account_view.xml'
--- register_accounting/account_view.xml 2014-05-14 12:59:36 +0000
+++ register_accounting/account_view.xml 2014-06-02 12:07:57 +0000
@@ -539,7 +539,7 @@
539 <field name="journal_id"/>539 <field name="journal_id"/>
540 <field name="balance_start"/>540 <field name="balance_start"/>
541 <field name="msf_calculated_balance"/>541 <field name="msf_calculated_balance"/>
542 <field name="balance_end_real"/>542 <field name="balance_end_cash"/>
543 <field name="state"/>543 <field name="state"/>
544 <button type="object" string="Open" name="button_open_cash" states="draft" icon="terp-gtk-go-back-rtl"/>544 <button type="object" string="Open" name="button_open_cash" states="draft" icon="terp-gtk-go-back-rtl"/>
545 <button type="object" string="Close Register" name="button_confirm_cash" states="open" icon="terp-camera_test"/>545 <button type="object" string="Close Register" name="button_confirm_cash" states="open" icon="terp-camera_test"/>
546546
=== modified file 'register_accounting/report/liquidity_position_xls.mako'
--- register_accounting/report/liquidity_position_xls.mako 2013-03-06 14:20:39 +0000
+++ register_accounting/report/liquidity_position_xls.mako 2014-06-02 12:07:57 +0000
@@ -1,131 +1,108 @@
1<?xml version="1.0"?>1<?xml version="1.0" encoding="UTF-8"?>
2<?mso-application progid="Excel.Sheet"?>2<?mso-application progid="Excel.Sheet"?>
3<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"3<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel">
4 xmlns:o="urn:schemas-microsoft-com:office:office"4 <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
5 xmlns:x="urn:schemas-microsoft-com:office:excel"5 <Author>MSFUser</Author>
6 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"6 <LastAuthor>MSFUser</LastAuthor>
7 xmlns:html="http://www.w3.org/TR/REC-html40">7 <Created>2012-06-18T15:46:09Z</Created>
8 <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">8 <Company>Medecins Sans Frontieres</Company>
9 <Author>MSFUser</Author>9 <Version>11.9999</Version>
10 <LastAuthor>MSFUser</LastAuthor>10 </DocumentProperties>
11 <Created>2012-06-18T15:46:09Z</Created>11 <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
12 <Company>Medecins Sans Frontieres</Company>12 <WindowHeight>13170</WindowHeight>
13 <Version>11.9999</Version>13 <WindowWidth>19020</WindowWidth>
14 </DocumentProperties>14 <WindowTopX>120</WindowTopX>
15 <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">15 <WindowTopY>60</WindowTopY>
16 <WindowHeight>13170</WindowHeight>16 <ProtectStructure>False</ProtectStructure>
17 <WindowWidth>19020</WindowWidth>17 <ProtectWindows>False</ProtectWindows>
18 <WindowTopX>120</WindowTopX>18 </ExcelWorkbook>
19 <WindowTopY>60</WindowTopY>19 <Styles>
20 <ProtectStructure>False</ProtectStructure>20 <Style ss:ID="Default" ss:Name="Normal">
21 <ProtectWindows>False</ProtectWindows>21 <Alignment ss:Vertical="Bottom" />
22 </ExcelWorkbook>22 <Borders />
2323 <Font />
2424 <NumberFormat />
25<Styles>25 <Protection />
2626 </Style>
27<Style ss:ID="Default" ss:Name="Normal">27 <Style ss:ID="s16" ss:Name="Comma" />
28<Alignment ss:Vertical="Bottom"/>28 <Style ss:ID="header">
29<Borders/>29 <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" />
30<Font/>30 <Borders>
31<NumberFormat/>31 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
32<Protection/>32 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
33</Style>33 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
3434 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
35<Style ss:ID="s16" ss:Name="Comma">35 </Borders>
36</Style>36 </Style>
3737 <Style ss:ID="line">
3838 <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" />
39<Style ss:ID="header">39 <Borders>
40<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>40 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
41<Borders>41 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
42<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />42 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
43<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />43 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
44<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />44 </Borders>
45<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />45 </Style>
46</Borders>46 <Style ss:ID="title">
47</Style>47 <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" />
4848 </Style>
49<Style ss:ID="line">49 <Style ss:ID="s22">
50<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>50 <Borders>
51<Borders>51 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
52<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />52 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
53<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />53 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
54<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />54 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
55<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />55 </Borders>
56</Borders>56 </Style>
57</Style>57 <Style ss:ID="s23">
5858 <Borders>
59<Style ss:ID="title">59 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
60<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>60 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
61</Style>61 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
6262 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
63<Style ss:ID="s22">63 </Borders>
64<Borders>64 <NumberFormat ss:Format="Short Date" />
65<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>65 </Style>
66<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>66 <Style ss:ID="s24">
67<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>67 <Borders>
68<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>68 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
69</Borders>69 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
70</Style>70 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
71<Style ss:ID="s23">71 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
72<Borders>72 </Borders>
73<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>73 <NumberFormat ss:Format="mmm\-yy" />
74<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>74 </Style>
75<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>75 <Style ss:ID="short_date">
76<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>76 <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" />
77</Borders>77 <Borders>
78<NumberFormat ss:Format="Short Date"/>78 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
79</Style>79 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
80<Style ss:ID="s24">80 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
81<Borders>81 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
82<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>82 </Borders>
83<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>83 <NumberFormat ss:Format="Short Date" />
84<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>84 </Style>
85<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>85 <Style ss:ID="short_date2">
86</Borders>86 <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" />
87<NumberFormat ss:Format="mmm\-yy"/>87 <NumberFormat ss:Format="Short Date" />
88</Style>88 </Style>
8989 <Style ss:ID="pop">
90<Style ss:ID="short_date">90 <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" />
91<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>91 </Style>
92<Borders>92 <Style ss:ID="s25">
93<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>93 <Borders>
94<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>94 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
95<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>95 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
96<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>96 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
97</Borders>97 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
98<NumberFormat ss:Format="Short Date"/>98 </Borders>
99</Style>99 <Interior ss:Pattern="Solid" />
100100 </Style>
101<Style ss:ID="short_date2">101 <Style ss:ID="s25c" />
102<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>102 <Style ss:ID="s25b">
103<NumberFormat ss:Format="Short Date"/>103 <Font ss:Bold="1" />
104</Style>104 </Style>
105105 <!-- <Style ss:ID="s25">
106<Style ss:ID="pop">
107<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
108</Style>
109
110<Style ss:ID="s25">
111<Borders>
112<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
113<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
114<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
115<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
116</Borders>
117<Interior ss:Pattern="Solid"/>
118</Style>
119
120
121<Style ss:ID="s25c">
122</Style>
123
124<Style ss:ID="s25b">
125<Font ss:Bold="1"/>
126</Style>
127
128<!-- <Style ss:ID="s25">
129<Borders>106<Borders>
130<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>107<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
131<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>108<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
@@ -144,339 +121,313 @@
144<NumberFormat />121<NumberFormat />
145<NumberFormat ss:Format="Fixed"/>122<NumberFormat ss:Format="Fixed"/>
146</Style> -->123</Style> -->
147124 <Style ss:ID="s26">
148<Style ss:ID="s26" >125 <Borders>
149<Borders>126 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
150<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>127 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
151<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>128 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
152<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>129 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
153<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>130 </Borders>
154</Borders>131 <NumberFormat ss:Format="Fixed" />
155<NumberFormat ss:Format="Fixed"/>132 </Style>
156</Style>133 <Style ss:ID="s32">
157134 <Alignment ss:Horizontal="Right" ss:Vertical="Bottom" />
158135 <Borders>
159136 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
160<Style ss:ID="s32">137 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
161<Alignment ss:Horizontal="Right" ss:Vertical="Bottom"/>138 </Borders>
162<Borders>139 <Font x:Family="Swiss" ss:Bold="1" />
163<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>140 </Style>
164<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>141 <Style ss:ID="s34">
165</Borders>142 <Alignment ss:Vertical="Center" ss:WrapText="1" />
166<Font x:Family="Swiss" ss:Bold="1"/>143 <Borders>
167</Style>144 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
168145 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
169<Style ss:ID="s34">146 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
170<Alignment ss:Vertical="Center" ss:WrapText="1"/>147 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
171<Borders>148 </Borders>
172<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>149 <Font ss:Bold="1" />
173<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>150 </Style>
174<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>151 <Style ss:ID="s35">
175<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>152 <Alignment ss:Vertical="Center" ss:WrapText="1" />
176</Borders>153 </Style>
177<Font ss:Bold="1"/>154 <Style ss:ID="s38">
178</Style>155 <Borders>
179156 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
180157 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
181<Style ss:ID="s35">158 </Borders>
182<Alignment ss:Vertical="Center" ss:WrapText="1"/>159 </Style>
183</Style>160 ( getFuncCur(o) or '')|x
184161 <Style ss:ID="s39">
185162 <Borders>
186<Style ss:ID="s38">163 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
187<Borders>164 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
188<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>165 </Borders>
189<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>166 </Style>
190</Borders>167 <Style ss:ID="s40">
191</Style>168 <Borders>
192169 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
193170 </Borders>
194<Style ss:ID="s39" >171 </Style>
195<Borders>172 <Style ss:ID="s41">
196<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>173 <Borders>
197<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>174 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
198</Borders>175 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
199</Style>176 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
200177 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
201<Style ss:ID="s40">178 </Borders>
202<Borders>179 <Font x:Family="Swiss" ss:Bold="1" />
203<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>180 </Style>
204</Borders>181 <Style ss:ID="s42">
205</Style>182 <Borders>
206183 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
207<Style ss:ID="s41">184 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
208<Borders>185 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
209<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>186 </Borders>
210<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>187 </Style>
211<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>188 <Style ss:ID="s43">
212<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>189 <Borders>
213</Borders>190 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
214<Font x:Family="Swiss" ss:Bold="1"/>191 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
215</Style>192 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
216193 </Borders>
217<Style ss:ID="s42">194 </Style>
218<Borders>195 <Style ss:ID="s44">
219<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>196 <Borders>
220<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>197 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
221<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>198 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
222</Borders>199 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
223</Style>200 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
224201 </Borders>
225<Style ss:ID="s43" >202 <Font x:Family="Swiss" ss:Bold="1" />
226<Borders>203 <NumberFormat ss:Format="Fixed" />
227<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>204 </Style>
228<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>205 <Style ss:ID="s49">
229<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>206 <Alignment ss:Horizontal="Right" ss:Vertical="Bottom" />
230</Borders>207 <Borders>
231</Style>208 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2" />
232209 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="2" />
233<Style ss:ID="s44" >210 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
234<Borders>211 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2" />
235<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>212 </Borders>
236<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>213 <Font x:Family="Swiss" ss:Bold="1" />
237<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>214 </Style>
238<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>215 <Style ss:ID="s50">
239</Borders>216 <Borders>
240<Font x:Family="Swiss" ss:Bold="1"/>217 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2" />
241<NumberFormat ss:Format="Fixed"/>218 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
242</Style>219 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
243220 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2" />
244221 </Borders>
245<Style ss:ID="s49">222 <Font x:Family="Swiss" ss:Bold="1" />
246<Alignment ss:Horizontal="Right" ss:Vertical="Bottom"/>223 <NumberFormat ss:Format="Fixed" />
247<Borders>224 </Style>
248<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2"/>225 <Style ss:ID="s51">
249<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="2"/>226 <Borders>
250<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>227 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2" />
251<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2"/>228 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
252</Borders>229 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="2" />
253<Font x:Family="Swiss" ss:Bold="1"/>230 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2" />
254</Style>231 </Borders>
255232 <Font x:Family="Swiss" ss:Bold="1" />
256<Style ss:ID="s50" >233 </Style>
257<Borders>234 </Styles>
258<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2"/>235 <Worksheet ss:Name="Liquidity position">
259<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>236 <Table>
260<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>237 <Column ss:AutoFitWidth="0" ss:Width="110.5" />
261<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2"/>238 <Column ss:AutoFitWidth="0" ss:Width="102.75" ss:Span="1" />
262</Borders>239 <Column ss:AutoFitWidth="0" ss:Width="103.5" ss:Span="1" />
263<Font x:Family="Swiss" ss:Bold="1"/>240 <Column ss:AutoFitWidth="0" ss:Width="75.75" />
264<NumberFormat ss:Format="Fixed"/>241 <Column ss:AutoFitWidth="0" ss:Width="103.5" ss:Span="1" />
265</Style>242 <Column ss:AutoFitWidth="0" ss:Width="70.75" />
266243 <Row>
267<Style ss:ID="s51">244 <Cell ss:StyleID="s25b">
268<Borders>245 <Data ss:Type="String">${_('LIQUIDITY POSITION')}</Data>
269<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2"/>246 </Cell>
270<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>247 </Row>
271<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="2"/>248 <Row ss:Height="13.5" />
272<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2"/>249 <Row>
273</Borders>250 <Cell>
274<Font x:Family="Swiss" ss:Bold="1"/>251 <Data ss:Type="String">${_('Report Date:')}</Data>
275</Style>252 </Cell>
276</Styles>253 <Cell ss:StyleID="short_date2">
277254 <Data ss:Type="DateTime">${time.strftime('%Y-%m-%d')|n}T00:00:00.000</Data>
278255 </Cell>
279<Worksheet ss:Name="Liquidity position">256 </Row>
280<Table >257 <Row>
281<Column ss:AutoFitWidth="0" ss:Width="110.5"/>258 <Cell>
282<Column ss:AutoFitWidth="0" ss:Width="102.75" ss:Span="1"/>259 <Data ss:Type="String">${_('Prop Instance: ')}</Data>
283<Column ss:AutoFitWidth="0" ss:Width="103.5" ss:Span="1"/>260 </Cell>
284<Column ss:AutoFitWidth="0" ss:Width="75.75"/>261 <Cell ss:StyleID="pop">
285<Column ss:AutoFitWidth="0" ss:Width="103.5" ss:Span="1"/>262 <Data ss:Type="String">${( company.instance_id and company.instance_id.code or '')|x}</Data>
286<Column ss:AutoFitWidth="0" ss:Width="70.75"/>263 </Cell>
287264 </Row>
288<Row>265 <Row ss:Height="13.5" />
289<Cell ss:StyleID="s25b" >266 <Row ss:AutoFitHeight="0" ss:Height="25.5" ss:StyleID="s35">
290<Data ss:Type="String">${_('LIQUIDITY POSITION')}</Data>267 <Cell ss:StyleID="s34">
291</Cell>268 <Data ss:Type="String">${_('Proprietary instance')}</Data>
292</Row>269 </Cell>
293<Row ss:Height="13.5"/>270 <Cell ss:StyleID="s34">
294<Row >271 <Data ss:Type="String">${_('Journal Code')}</Data>
295<Cell>272 </Cell>
296<Data ss:Type="String">${_('Report Date:')}</Data>273 <Cell ss:StyleID="s34">
297</Cell>274 <Data ss:Type="String">${_('Journal Name')}</Data>
298<Cell ss:StyleID="short_date2" >275 </Cell>
299<Data ss:Type="DateTime">${time.strftime('%Y-%m-%d')|n}T00:00:00.000</Data>276 <Cell ss:StyleID="s34">
300</Cell>277 <Data ss:Type="String">${_('Status')}</Data>
301</Row>278 </Cell>
302<Row>279 <Cell ss:StyleID="s34">
303<Cell>280 <Data ss:Type="String">${_('Period')}</Data>
304<Data ss:Type="String">${_('Prop Instance: ')}</Data>281 </Cell>
305</Cell>282 <Cell ss:StyleID="s34">
306<Cell ss:StyleID="pop">283 <Data ss:Type="String">${_('Calculated Balance in register currency')}</Data>
307<Data ss:Type="String">${( company.instance_id and company.instance_id.code or '')|x}</Data>284 </Cell>
308</Cell>285 <Cell ss:StyleID="s34">
309</Row>286 <Data ss:Type="String">${_('Register Balance in register currency')}</Data>
310<Row ss:Height="13.5"/>287 </Cell>
311288 <Cell ss:StyleID="s34">
312<Row ss:AutoFitHeight="0" ss:Height="25.5" ss:StyleID="s35">289 <Data ss:Type="String">${_('Register Currency')}</Data>
313 <Cell ss:StyleID="s34" >290 </Cell>
314<Data ss:Type="String">${_('Proprietary instance')}</Data>291 <Cell ss:StyleID="s34">
315</Cell>292 <Data ss:Type="String">${_('Calculated Balance in functional currency')}</Data>
316 <Cell ss:StyleID="s34" >293 </Cell>
317<Data ss:Type="String">${_('Journal Code')}</Data>294 <Cell ss:StyleID="s34">
318</Cell>295 <Data ss:Type="String">${_('Register Balance in functional currency')}</Data>
319 <Cell ss:StyleID="s34" >296 </Cell>
320<Data ss:Type="String">${_('Journal Name')}</Data>297 <Cell ss:StyleID="s34">
321</Cell>298 <Data ss:Type="String">${_('Functional Currency')}</Data>
322 <Cell ss:StyleID="s34" >299 </Cell>
323<Data ss:Type="String">${_('Calculated Balance in register currency')}</Data>300 </Row>
324</Cell>301 % for reg in getRegister():
325 <Cell ss:StyleID="s34" >302 % for o in getRegister2()[reg]:
326<Data ss:Type="String">${_('Register Balance in register currency')}</Data>303 <Row>
327</Cell>304 <Cell ss:StyleID="s25">
328 <Cell ss:StyleID="s34" >305 <Data ss:Type="String">${(o.instance_id and o.instance_id.code or '')|x}</Data>
329<Data ss:Type="String">${_('Register Currency')}</Data>306 </Cell>
330</Cell>307 <Cell ss:StyleID="s25">
331 <Cell ss:StyleID="s34" >308 <Data ss:Type="String">${(o.journal_id and o.journal_id.code or '')|x}</Data>
332<Data ss:Type="String">${_('Calculated Balance in functional currency')}</Data>309 </Cell>
333</Cell>310 <Cell ss:StyleID="s25">
334 <Cell ss:StyleID="s34" >311 <Data ss:Type="String">${(o.journal_id and o.journal_id.name or '')|x}</Data>
335<Data ss:Type="String">${_('Register Balance in functional currency')}</Data>312 </Cell>
336</Cell>313 <Cell ss:StyleID="s25">
337 <Cell ss:StyleID="s34" >314 <Data ss:Type="String">${(o.state or '')|x}</Data>
338<Data ss:Type="String">${_('Functional Currency')}</Data>315 </Cell>
339</Cell>316 <Cell ss:StyleID="s25">
340</Row>317 <Data ss:Type="String">${(o.period_id.name or '')|x}</Data>
341318 </Cell>
342% for reg in getRegister():319 <Cell ss:StyleID="s26">
343 % for o in getRegister2()[reg]:320 <Data ss:Type="Number">${(o.msf_calculated_balance or 0.0)|x}</Data>
344 <Row>321 </Cell>
345 <Cell ss:StyleID="s25" >322 % if o.journal_id.type == 'cash' :
346<Data ss:Type="String">${(o.instance_id and o.instance_id.code or '')|x}</Data>323 <Cell ss:StyleID="s26">
347</Cell>324 <Data ss:Type="Number">${(o.balance_end_cash or 0.0)|x}</Data>
348 <Cell ss:StyleID="s25" >325 </Cell>
349<Data ss:Type="String">${(o.journal_id and o.journal_id.code or '')|x}</Data>326 % endif
350</Cell>327 % if o.journal_id.type == 'bank' :
351 <Cell ss:StyleID="s25" >328 <Cell ss:StyleID="s26">
352<Data ss:Type="String">${(o.journal_id and o.journal_id.name or '')|x}</Data>329 <Data ss:Type="Number">${(o.balance_end_real or 0.0)|x}</Data>
353</Cell>330 </Cell>
354 <Cell ss:StyleID="s26" >331 % endif
355<Data ss:Type="Number">${(o.msf_calculated_balance or 0.0)|x}</Data>332 <Cell ss:StyleID="s25">
356</Cell>333 <Data ss:Type="String">${( o.journal_id and o.journal_id.currency and o.journal_id.currency.name or '')|x}</Data>
357 % if o.journal_id.type == 'cash' :334 </Cell>
358 <Cell ss:StyleID="s26" >335 <Cell ss:StyleID="s26">
359<Data ss:Type="Number">${(o.balance_end_cash or 0.0)|x}</Data>336 <Data ss:Type="Number">${( getConvert(o.journal_id.currency,o.journal_id.company_id.currency_id,o.msf_calculated_balance, 'cal') or 0.0 )|x}</Data>
360</Cell>337 </Cell>
361 % endif338 % if o.journal_id.type == 'cash' :
362 % if o.journal_id.type == 'bank' :339 <Cell ss:StyleID="s26">
363 <Cell ss:StyleID="s26" >340 <Data ss:Type="Number">${( getConvert(o.journal_id.currency,o.journal_id.company_id.currency_id,o.balance_end_cash,'reg') or 0.0 )|x}</Data>
364<Data ss:Type="Number">${(o.balance_end_real or 0.0)|x}</Data>341 </Cell>
365</Cell>342 % endif
366 % endif343 % if o.journal_id.type == 'bank' :
367 <Cell ss:StyleID="s25" >344 <Cell ss:StyleID="s26">
368<Data ss:Type="String">${( o.journal_id and o.journal_id.currency and o.journal_id.currency.name or '')|x}</Data>345 <Data ss:Type="Number">${( getConvert(o.journal_id.currency,o.journal_id.company_id.currency_id,o.balance_end_real,'reg') or 0.0 )|x}</Data>
369</Cell>346 </Cell>
370 <Cell ss:StyleID="s26" >347 % endif
371<Data ss:Type="Number">${( getConvert(o.journal_id.currency,o.journal_id.company_id.currency_id,o.msf_calculated_balance, 'cal') or 0.0 )|x}</Data>348 <Cell ss:StyleID="s25">
372</Cell>349 <Data ss:Type="String">${( getFuncCur(o) or '')|x}</Data>
373350 </Cell>
374 % if o.journal_id.type == 'cash' :351 </Row>
375 <Cell ss:StyleID="s26" >352 % endfor
376<Data ss:Type="Number">${( getConvert(o.journal_id.currency,o.journal_id.company_id.currency_id,o.balance_end_cash,'reg') or 0.0 )|x}</Data>353 <Row>
377</Cell>354 <Cell ss:StyleID="s42" />
378 % endif355 <Cell ss:StyleID="s38">
379 % if o.journal_id.type == 'bank' :356 <NamedCell ss:Name="Print_Area" />
380 <Cell ss:StyleID="s26" >357 </Cell>
381<Data ss:Type="Number">${( getConvert(o.journal_id.currency,o.journal_id.company_id.currency_id,o.balance_end_real,'reg') or 0.0 )|x}</Data>358 <Cell ss:StyleID="s38">
382</Cell>359 <NamedCell ss:Name="Print_Area" />
383 % endif360 </Cell>
384 <Cell ss:StyleID="s25" >361 <Cell ss:StyleID="s39">
385<Data ss:Type="String">${( getFuncCur(o) or '')|x}</Data>362 <NamedCell ss:Name="Print_Area" />
386</Cell>363 </Cell>
387 </Row>364 <Cell ss:StyleID="s43">
388365 <NamedCell ss:Name="Print_Area" />
389% endfor366 </Cell>
390367 <Cell ss:StyleID="s32">
391<Row>368 <Data ss:Type="String">${_('Sub-Total =')}</Data>
392 <Cell ss:StyleID="s42"/>369 <NamedCell ss:Name="Print_Area" />
393 <Cell ss:StyleID="s38">370 </Cell>
394 <NamedCell ss:Name="Print_Area"/>371 <Cell ss:StyleID="s44" ss:Formula="=SUM(R[-${getCal()}]C:R[-1]C)">
395 </Cell>372 <Data ss:Type="Number" />
396 <Cell ss:StyleID="s38">373 <NamedCell ss:Name="Print_Area" />
397 <NamedCell ss:Name="Print_Area"/>374 </Cell>
398 </Cell>375 <Cell ss:StyleID="s44" ss:Formula="=SUM(R[-${getRes()}]C:R[-1]C)">
399 <Cell ss:StyleID="s39">376 <Data ss:Type="Number" />
400 <NamedCell ss:Name="Print_Area"/>377 <NamedCell ss:Name="Print_Area" />
401 </Cell>378 </Cell>
402 <Cell ss:StyleID="s43">379 <Cell ss:StyleID="s41">
403 <NamedCell ss:Name="Print_Area"/>380 <Data ss:Type="String">${( getCurTot() or '')|x}</Data>
404 </Cell>381 <NamedCell ss:Name="Print_Area" />
405 <Cell ss:StyleID="s32">382 </Cell>
406 <Data ss:Type="String">${_('Sub-Total =')}</Data>383 </Row>
407 <NamedCell ss:Name="Print_Area"/>384 <Row ss:Height="13.5" />
408 </Cell>385 % endfor
409 <Cell ss:StyleID="s44" ss:Formula="=SUM(R[-${getCal()}]C:R[-1]C)" >386 <Row ss:Height="13.5">
410 <Data ss:Type="Number"></Data>387 <Cell ss:StyleID="s25c" />
411 <NamedCell ss:Name="Print_Area"/>388 <Cell ss:StyleID="s25c" />
412 </Cell>389 <Cell ss:StyleID="s25c" />
413 <Cell ss:StyleID="s44" ss:Formula="=SUM(R[-${getRes()}]C:R[-1]C)" >390 <Cell ss:StyleID="s25c" />
414 <Data ss:Type="Number"></Data>391 <Cell ss:StyleID="s25c" />
415 <NamedCell ss:Name="Print_Area"/>392 <Cell ss:StyleID="s49">
416 </Cell>393 <Data ss:Type="String">${_('Grand Total =')}</Data>
417 <Cell ss:StyleID="s41">394 <NamedCell ss:Name="Print_Area" />
418 <Data ss:Type="String">${( getCurTot() or '')|x}</Data>395 </Cell>
419 <NamedCell ss:Name="Print_Area"/>396 <Cell ss:StyleID="s50" ss:Formula="=${getFormula()}+R[-2]C">
420 </Cell>397 <Data ss:Type="Number" />
421</Row>398 <NamedCell ss:Name="Print_Area" />
422<Row ss:Height="13.5"/>399 </Cell>
423% endfor400 <Cell ss:StyleID="s50" ss:Formula="=${getFormula()}+R[-2]C">
424401 <Data ss:Type="Number" />
425402 <NamedCell ss:Name="Print_Area" />
426<Row ss:Height="13.5">403 </Cell>
427 <Cell ss:StyleID="s25c"/>404 <Cell ss:StyleID="s51">
428 <Cell ss:StyleID="s25c"/>405 <Data ss:Type="String">${( getCurTot() or '')|x}</Data>
429 <Cell ss:StyleID="s25c"/>406 <NamedCell ss:Name="Print_Area" />
430 <Cell ss:StyleID="s25c"/>407 </Cell>
431 <Cell ss:StyleID="s25c"/>408 </Row>
432409 </Table>
433 <Cell ss:StyleID="s49">410 <WorksheetOptions>
434 <Data ss:Type="String">${_('Grand Total =')}</Data>411 <FitToPage />
435 <NamedCell ss:Name="Print_Area"/>412 <Print>
436 </Cell>413 <ValidPrinterInfo />
437 <Cell ss:StyleID="s50" ss:Formula="=${getFormula()}+R[-2]C">414 <PaperSizeIndex>9</PaperSizeIndex>
438 <Data ss:Type="Number"></Data>415 <Scale>63</Scale>
439 <NamedCell ss:Name="Print_Area"/>416 <HorizontalResolution>600</HorizontalResolution>
440 </Cell>417 <VerticalResolution>0</VerticalResolution>
441 <Cell ss:StyleID="s50" ss:Formula="=${getFormula()}+R[-2]C">418 </Print>
442 <Data ss:Type="Number"></Data>419 <PageBreakZoom>60</PageBreakZoom>
443 <NamedCell ss:Name="Print_Area"/>420 <Selected />
444 </Cell>421 <DoNotDisplayGridlines />
445 <Cell ss:StyleID="s51">422 <Panes>
446 <Data ss:Type="String">${( getCurTot() or '')|x}</Data>423 <Pane>
447 <NamedCell ss:Name="Print_Area"/>424 <Number>3</Number>
448 </Cell>425 <ActiveRow>24</ActiveRow>
449</Row>426 <ActiveCol>3</ActiveCol>
450427 </Pane>
451428 </Panes>
452</Table>429 <ProtectObjects>False</ProtectObjects>
453430 <ProtectScenarios>False</ProtectScenarios>
454431 </WorksheetOptions>
455<WorksheetOptions>432 </Worksheet>
456<FitToPage/>433</Workbook>
457<Print>
458<ValidPrinterInfo/>
459<PaperSizeIndex>9</PaperSizeIndex>
460<Scale>63</Scale>
461<HorizontalResolution>600</HorizontalResolution>
462<VerticalResolution>0</VerticalResolution>
463</Print>
464<PageBreakZoom>60</PageBreakZoom>
465<Selected/>
466<DoNotDisplayGridlines/>
467<Panes>
468<Pane>
469<Number>3</Number>
470<ActiveRow>24</ActiveRow>
471<ActiveCol>3</ActiveCol>
472</Pane>
473</Panes>
474<ProtectObjects>False</ProtectObjects>
475<ProtectScenarios>False</ProtectScenarios>
476</WorksheetOptions>
477
478</Worksheet>
479
480
481
482</Workbook>
483\ No newline at end of file434\ No newline at end of file
484435
=== modified file 'register_accounting/report/report_liquidity_position.py'
--- register_accounting/report/report_liquidity_position.py 2014-03-07 11:05:37 +0000
+++ register_accounting/report/report_liquidity_position.py 2014-06-02 12:07:57 +0000
@@ -83,12 +83,17 @@
83 pool = pooler.get_pool(self.cr.dbname)83 pool = pooler.get_pool(self.cr.dbname)
8484
85 sql_register_ids = """85 sql_register_ids = """
86 SELECT abs.id FROM account_bank_statement abs86 SELECT abs.id
87 LEFT JOIN account_journal aj ON abs.journal_id = aj.id87 FROM account_bank_statement abs
88 WHERE88 LEFT JOIN account_journal aj ON abs.journal_id = aj.id
89 aj.type != 'cheque' AND abs.state != 'draft' AND abs.id not in (89 WHERE aj.type != 'cheque'
90 SELECT prev_reg_id FROM account_bank_statement WHERE prev_reg_id is not null AND state != 'draft'90 AND abs.state != 'draft'
91 )91 AND abs.period_number = (SELECT max(abs2.period_number)
92 FROM account_bank_statement abs2
93 LEFT JOIN account_journal aj2 ON abs2.journal_id = aj2.id
94 WHERE aj2.type != 'cheque' AND abs2.state != 'draft'
95 AND abs2.instance_id = abs.instance_id
96 AND abs2.journal_id = abs.journal_id)
92 """97 """
9398
94 self.cr.execute(sql_register_ids)99 self.cr.execute(sql_register_ids)

Subscribers

People subscribed via source and target branches