Merge lp:~unifield-team/unifield-wm/UFTP-245 into lp:unifield-wm
- UFTP-245
- Merge into trunk
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
UniField Reviewer Team | Pending | ||
Review via email:
|
Commit message
Description of the change
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
1 | === modified file 'msf_doc_import/account.py' | |||
2 | --- msf_doc_import/account.py 2013-12-10 09:50:13 +0000 | |||
3 | +++ msf_doc_import/account.py 2014-06-02 12:07:57 +0000 | |||
4 | @@ -36,7 +36,7 @@ | |||
5 | 36 | _name = 'msf.doc.import.accounting' | 36 | _name = 'msf.doc.import.accounting' |
6 | 37 | 37 | ||
7 | 38 | _columns = { | 38 | _columns = { |
9 | 39 | 'date': fields.date(string="Migration date", required=True), | 39 | 'date': fields.date(string="Date", required=True), |
10 | 40 | 'file': fields.binary(string="File", filters='*.xml, *.xls', required=True), | 40 | 'file': fields.binary(string="File", filters='*.xml, *.xls', required=True), |
11 | 41 | 'filename': fields.char(string="Imported filename", size=256), | 41 | 'filename': fields.char(string="Imported filename", size=256), |
12 | 42 | 'progression': fields.float(string="Progression", readonly=True), | 42 | 'progression': fields.float(string="Progression", readonly=True), |
13 | @@ -52,7 +52,7 @@ | |||
14 | 52 | 'message': lambda *a: _('Initialization…'), | 52 | 'message': lambda *a: _('Initialization…'), |
15 | 53 | } | 53 | } |
16 | 54 | 54 | ||
18 | 55 | def create_entries(self, cr, uid, ids, context=None): | 55 | def create_entries(self, cr, uid, ids, journal_id, context=None): |
19 | 56 | """ | 56 | """ |
20 | 57 | Create journal entry | 57 | Create journal entry |
21 | 58 | """ | 58 | """ |
22 | @@ -60,10 +60,10 @@ | |||
23 | 60 | if not context: | 60 | if not context: |
24 | 61 | context = {} | 61 | context = {} |
25 | 62 | # Prepare some values | 62 | # Prepare some values |
30 | 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)]) |
31 | 64 | if not journal_ids: | 64 | #if not journal_ids: |
32 | 65 | raise osv.except_osv(_('Warning'), _('No migration journal found!')) | 65 | # raise osv.except_osv(_('Warning'), _('No migration journal found!')) |
33 | 66 | journal_id = journal_ids[0] | 66 | #journal_id = journal_ids[0] |
34 | 67 | # Fetch default funding pool: MSF Private Fund | 67 | # Fetch default funding pool: MSF Private Fund |
35 | 68 | try: | 68 | try: |
36 | 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] |
37 | @@ -191,7 +191,7 @@ | |||
38 | 191 | raise osv.except_osv(_('Warning'), _('No period found!')) | 191 | raise osv.except_osv(_('Warning'), _('No period found!')) |
39 | 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) |
40 | 193 | if not period or period.state in ['created', 'done']: | 193 | if not period or period.state in ['created', 'done']: |
42 | 194 | raise osv.except_osv(_('Warning'), _('Period for migration is not open!')) | 194 | raise osv.except_osv(_('Warning'), _('Period is not open!')) |
43 | 195 | date = wiz.date or False | 195 | date = wiz.date or False |
44 | 196 | 196 | ||
45 | 197 | # Check that a file was given | 197 | # Check that a file was given |
46 | @@ -213,7 +213,7 @@ | |||
47 | 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}) |
48 | 214 | # Use the first row to find which column to use | 214 | # Use the first row to find which column to use |
49 | 215 | cols = {} | 215 | cols = {} |
51 | 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'] |
52 | 217 | for num, r in enumerate(rows): | 217 | for num, r in enumerate(rows): |
53 | 218 | header = [x and x.data for x in r.iter_cells()] | 218 | header = [x and x.data for x in r.iter_cells()] |
54 | 219 | for el in col_names: | 219 | for el in col_names: |
55 | @@ -222,6 +222,10 @@ | |||
56 | 222 | break | 222 | break |
57 | 223 | # Number of line to bypass in line's count | 223 | # Number of line to bypass in line's count |
58 | 224 | base_num = 2 | 224 | base_num = 2 |
59 | 225 | |||
60 | 226 | # global journal code for the file | ||
61 | 227 | file_journal_id = 0 | ||
62 | 228 | aj_obj = self.pool.get('account.journal') | ||
63 | 225 | 229 | ||
64 | 226 | for el in col_names: | 230 | for el in col_names: |
65 | 227 | if not el in cols: | 231 | if not el in cols: |
66 | @@ -289,17 +293,26 @@ | |||
67 | 289 | if line[cols['Booking Credit']]: | 293 | if line[cols['Booking Credit']]: |
68 | 290 | money[line[cols['Booking Currency']]]['credit'] += line[cols['Booking Credit']] | 294 | money[line[cols['Booking Currency']]]['credit'] += line[cols['Booking Credit']] |
69 | 291 | r_credit = line[cols['Booking Credit']] | 295 | r_credit = line[cols['Booking Credit']] |
81 | 292 | # Check document/posting dates | 296 | |
82 | 293 | # UTP-766: Do not use Document date column, but wizard's one | 297 | # Check which journal it is to be posted to: should be of type OD, MIG or INT |
83 | 294 | #if not line[cols['Document Date']]: | 298 | if not line[cols['Journal Code']]: |
84 | 295 | # errors.append(_('Line %s. No document date specified!') % (current_line_num,)) | 299 | errors.append(_('Line %s. No Journal Code specified') % (current_line_num,)) |
85 | 296 | # continue | 300 | continue |
86 | 297 | # UTP-766: Do not use Posting date column, but wizard's one | 301 | else: |
87 | 298 | #if line[cols['Document Date']] > date: | 302 | # check for a valid journal code |
88 | 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] |
89 | 300 | # continue | 304 | if aj_id: |
90 | 301 | # Fetch document date | 305 | if num == 0: # Assume 1st line is the journal code for the entire spreadsheet |
91 | 302 | #r_document_date = line[cols['Document Date']].strftime('%Y-%m-%d') | 306 | file_journal_id = aj_id |
92 | 307 | else: | ||
93 | 308 | if file_journal_id != aj_id: | ||
94 | 309 | errors.append(_('Line %s. Only a single Journal Code can be specified per file') % (current_line_num,)) | ||
95 | 310 | continue | ||
96 | 311 | else: | ||
97 | 312 | errors.append(_('Line %s. Journal Code is not of type OD, INT or MIG') % (current_line_num,)) | ||
98 | 313 | continue | ||
99 | 314 | |||
100 | 315 | print 'journal codes: ', file_journal_id, aj_id | ||
101 | 303 | # Check G/L account | 316 | # Check G/L account |
102 | 304 | if not line[cols['G/L Account']]: | 317 | if not line[cols['G/L Account']]: |
103 | 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,)) |
104 | @@ -399,7 +412,7 @@ | |||
105 | 399 | # Update wizard | 412 | # Update wizard |
106 | 400 | self.write(cr, uid, ids, {'message': _('Writing changes…'), 'progression': 0.0}) | 413 | self.write(cr, uid, ids, {'message': _('Writing changes…'), 'progression': 0.0}) |
107 | 401 | # Create all journal entries | 414 | # Create all journal entries |
109 | 402 | self.create_entries(cr, uid, ids, context) | 415 | self.create_entries(cr, uid, ids, file_journal_id, context) |
110 | 403 | message = _('Import successful.') | 416 | message = _('Import successful.') |
111 | 404 | 417 | ||
112 | 405 | # Update wizard | 418 | # Update wizard |
113 | 406 | 419 | ||
114 | === modified file 'msf_doc_import/view/account_view.xml' | |||
115 | --- msf_doc_import/view/account_view.xml 2013-10-28 12:59:14 +0000 | |||
116 | +++ msf_doc_import/view/account_view.xml 2014-06-02 12:07:57 +0000 | |||
117 | @@ -21,8 +21,8 @@ | |||
118 | 21 | <field name="model">msf.doc.import.accounting</field> | 21 | <field name="model">msf.doc.import.accounting</field> |
119 | 22 | <field name="type">form</field> | 22 | <field name="type">form</field> |
120 | 23 | <field name="arch" type="xml"> | 23 | <field name="arch" type="xml"> |
123 | 24 | <form string="Import Migration Entries"> | 24 | <form string="Import Entries"> |
124 | 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"/> |
125 | 26 | <newline/> | 26 | <newline/> |
126 | 27 | <field name="file" filename="filename" attrs="{'invisible': [('state', '!=', 'draft')]}"/> | 27 | <field name="file" filename="filename" attrs="{'invisible': [('state', '!=', 'draft')]}"/> |
127 | 28 | <field name="filename" invisible="1"/> | 28 | <field name="filename" invisible="1"/> |
128 | @@ -47,7 +47,7 @@ | |||
129 | 47 | --> | 47 | --> |
130 | 48 | 48 | ||
131 | 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"> |
133 | 50 | <field name="name">Import Migration Entries</field> | 50 | <field name="name">Import Entries</field> |
134 | 51 | <field name="res_model">msf.doc.import.accounting</field> | 51 | <field name="res_model">msf.doc.import.accounting</field> |
135 | 52 | <field name="view_type">form</field> | 52 | <field name="view_type">form</field> |
136 | 53 | <field name="view_mode">form</field> | 53 | <field name="view_mode">form</field> |
137 | @@ -55,8 +55,7 @@ | |||
138 | 55 | <field name="target">new</field> | 55 | <field name="target">new</field> |
139 | 56 | </record> | 56 | </record> |
140 | 57 | 57 | ||
143 | 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"/> |
142 | 59 | <menuitem id="menu_finance_migration_accounting" name="Import Migration Entries" parent="menu_finance_migration" sequence="1" action="action_migration_accounting_import_wizard"/> | ||
144 | 60 | 59 | ||
145 | 61 | </data> | 60 | </data> |
146 | 62 | </openerp> | 61 | </openerp> |
147 | 63 | 62 | ||
148 | === modified file 'register_accounting/account_bank_statement.py' | |||
149 | --- register_accounting/account_bank_statement.py 2014-06-02 10:10:09 +0000 | |||
150 | +++ register_accounting/account_bank_statement.py 2014-06-02 12:07:57 +0000 | |||
151 | @@ -969,7 +969,6 @@ | |||
152 | 969 | return list(res) | 969 | return list(res) |
153 | 970 | 970 | ||
154 | 971 | 971 | ||
155 | 972 | |||
156 | 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): |
157 | 974 | """ | 973 | """ |
158 | 975 | Get all analytic lines linked to the given register lines | 974 | Get all analytic lines linked to the given register lines |
159 | @@ -1770,10 +1769,19 @@ | |||
160 | 1770 | distrib_id = values.get('analytic_distribution_id') | 1769 | distrib_id = values.get('analytic_distribution_id') |
161 | 1771 | if not distrib_id: | 1770 | if not distrib_id: |
162 | 1772 | values = self._update_employee_analytic_distribution(cr, uid, values=values) | 1771 | values = self._update_employee_analytic_distribution(cr, uid, values=values) |
163 | 1772 | <<<<<<< TREE | ||
164 | 1773 | if 'cheque_number' in values: | 1773 | if 'cheque_number' in values: |
165 | 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'], )) |
166 | 1775 | for row in cr.dictfetchall(): | 1775 | for row in cr.dictfetchall(): |
167 | 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')) |
168 | 1777 | ======= | ||
169 | 1778 | |||
170 | 1779 | if 'cheque_number' in values: | ||
171 | 1780 | cr.execute('''select id from account_bank_statement_line where cheque_number = '%s' ''' % (values['cheque_number'])) | ||
172 | 1781 | for row in cr.dictfetchall(): | ||
173 | 1782 | raise osv.except_osv(_('Info'),_('This cheque number has already been used')) | ||
174 | 1783 | |||
175 | 1784 | >>>>>>> MERGE-SOURCE | ||
176 | 1777 | # Then create a new bank statement line | 1785 | # Then create a new bank statement line |
177 | 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) |
178 | 1779 | return absl | 1787 | return absl |
179 | @@ -1834,6 +1842,12 @@ | |||
180 | 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'): |
181 | 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): |
182 | 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.')) |
183 | 1845 | |||
184 | 1846 | if 'cheque_number' in values: | ||
185 | 1847 | cr.execute('''select id from account_bank_statement_line where cheque_number = '%s' ''' % (cheque_number)) | ||
186 | 1848 | for row in cr.dictfetchall(): | ||
187 | 1849 | raise osv.except_osv(_('Info'),_('This cheque number has already been used')) | ||
188 | 1850 | |||
189 | 1837 | return res | 1851 | return res |
190 | 1838 | 1852 | ||
191 | 1839 | def copy(self, cr, uid, absl_id, default=None, context=None): | 1853 | def copy(self, cr, uid, absl_id, default=None, context=None): |
192 | @@ -1991,7 +2005,6 @@ | |||
193 | 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 "/" ? |
194 | 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'] |
195 | 1993 | # self.write(cr, uid, [absl.id], {'name': "/"}) | 2007 | # self.write(cr, uid, [absl.id], {'name': "/"}) |
196 | 1994 | |||
197 | 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. |
198 | 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) |
199 | 1997 | 2010 | ||
200 | @@ -2044,7 +2057,7 @@ | |||
201 | 2044 | # do a move that enable a complete supplier follow-up | 2057 | # do a move that enable a complete supplier follow-up |
202 | 2045 | self.do_direct_expense(cr, uid, absl, context=context) | 2058 | self.do_direct_expense(cr, uid, absl, context=context) |
203 | 2046 | if previous_state == 'draft': | 2059 | if previous_state == 'draft': |
205 | 2047 | direct_hard_post = True # UF-2316 | 2060 | direct_hard_post = True # UF-2316 |
206 | 2048 | else: | 2061 | else: |
207 | 2049 | direct_hard_post = False | 2062 | direct_hard_post = False |
208 | 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) |
209 | @@ -2067,7 +2080,7 @@ | |||
210 | 2067 | # get next sequence | 2080 | # get next sequence |
211 | 2068 | domain = [ | 2081 | domain = [ |
212 | 2069 | ('model', '=', model_name), | 2082 | ('model', '=', model_name), |
214 | 2070 | ('res_id', '=', absl.statement_id.id), | 2083 | ('res_id', '=', absl.statement_id.id), |
215 | 2071 | ] | 2084 | ] |
216 | 2072 | if direct_hard_post: | 2085 | if direct_hard_post: |
217 | 2073 | # for a direct hard post, an audit line with Draft 2 Temp is already created | 2086 | # for a direct hard post, an audit line with Draft 2 Temp is already created |
218 | @@ -2155,7 +2168,7 @@ | |||
219 | 2155 | return self.posting(cr, uid, ids, 'temp', context=context) | 2168 | return self.posting(cr, uid, ids, 'temp', context=context) |
220 | 2156 | 2169 | ||
221 | 2157 | def button_analytic_lines(self, cr, uid, ids, context=None): | 2170 | def button_analytic_lines(self, cr, uid, ids, context=None): |
223 | 2158 | """ | 2171 | """ |
224 | 2159 | Give analytic lines linked to the given register lines | 2172 | Give analytic lines linked to the given register lines |
225 | 2160 | """ | 2173 | """ |
226 | 2161 | if not context: | 2174 | if not context: |
227 | @@ -2196,7 +2209,7 @@ | |||
228 | 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.')) |
229 | 2197 | # others verifications | 2210 | # others verifications |
230 | 2198 | for st_line in self.browse(cr, uid, ids, context=context): | 2211 | for st_line in self.browse(cr, uid, ids, context=context): |
232 | 2199 | # verify that the journal id is a cash journal | 2212 | # verify that the journal id is a cash journal |
233 | 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 \ |
234 | 2201 | or st_line.statement_id.journal_id.type != 'cash': | 2214 | or st_line.statement_id.journal_id.type != 'cash': |
235 | 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")) |
236 | 2203 | 2216 | ||
237 | === modified file 'register_accounting/account_view.xml' | |||
238 | --- register_accounting/account_view.xml 2014-05-14 12:59:36 +0000 | |||
239 | +++ register_accounting/account_view.xml 2014-06-02 12:07:57 +0000 | |||
240 | @@ -539,7 +539,7 @@ | |||
241 | 539 | <field name="journal_id"/> | 539 | <field name="journal_id"/> |
242 | 540 | <field name="balance_start"/> | 540 | <field name="balance_start"/> |
243 | 541 | <field name="msf_calculated_balance"/> | 541 | <field name="msf_calculated_balance"/> |
245 | 542 | <field name="balance_end_real"/> | 542 | <field name="balance_end_cash"/> |
246 | 543 | <field name="state"/> | 543 | <field name="state"/> |
247 | 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"/> |
248 | 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"/> |
249 | 546 | 546 | ||
250 | === modified file 'register_accounting/report/liquidity_position_xls.mako' | |||
251 | --- register_accounting/report/liquidity_position_xls.mako 2013-03-06 14:20:39 +0000 | |||
252 | +++ register_accounting/report/liquidity_position_xls.mako 2014-06-02 12:07:57 +0000 | |||
253 | @@ -1,131 +1,108 @@ | |||
255 | 1 | <?xml version="1.0"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
256 | 2 | <?mso-application progid="Excel.Sheet"?> | 2 | <?mso-application progid="Excel.Sheet"?> |
383 | 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"> |
384 | 4 | xmlns:o="urn:schemas-microsoft-com:office:office" | 4 | <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> |
385 | 5 | xmlns:x="urn:schemas-microsoft-com:office:excel" | 5 | <Author>MSFUser</Author> |
386 | 6 | xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" | 6 | <LastAuthor>MSFUser</LastAuthor> |
387 | 7 | xmlns:html="http://www.w3.org/TR/REC-html40"> | 7 | <Created>2012-06-18T15:46:09Z</Created> |
388 | 8 | <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> | 8 | <Company>Medecins Sans Frontieres</Company> |
389 | 9 | <Author>MSFUser</Author> | 9 | <Version>11.9999</Version> |
390 | 10 | <LastAuthor>MSFUser</LastAuthor> | 10 | </DocumentProperties> |
391 | 11 | <Created>2012-06-18T15:46:09Z</Created> | 11 | <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> |
392 | 12 | <Company>Medecins Sans Frontieres</Company> | 12 | <WindowHeight>13170</WindowHeight> |
393 | 13 | <Version>11.9999</Version> | 13 | <WindowWidth>19020</WindowWidth> |
394 | 14 | </DocumentProperties> | 14 | <WindowTopX>120</WindowTopX> |
395 | 15 | <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> | 15 | <WindowTopY>60</WindowTopY> |
396 | 16 | <WindowHeight>13170</WindowHeight> | 16 | <ProtectStructure>False</ProtectStructure> |
397 | 17 | <WindowWidth>19020</WindowWidth> | 17 | <ProtectWindows>False</ProtectWindows> |
398 | 18 | <WindowTopX>120</WindowTopX> | 18 | </ExcelWorkbook> |
399 | 19 | <WindowTopY>60</WindowTopY> | 19 | <Styles> |
400 | 20 | <ProtectStructure>False</ProtectStructure> | 20 | <Style ss:ID="Default" ss:Name="Normal"> |
401 | 21 | <ProtectWindows>False</ProtectWindows> | 21 | <Alignment ss:Vertical="Bottom" /> |
402 | 22 | </ExcelWorkbook> | 22 | <Borders /> |
403 | 23 | 23 | <Font /> | |
404 | 24 | 24 | <NumberFormat /> | |
405 | 25 | <Styles> | 25 | <Protection /> |
406 | 26 | 26 | </Style> | |
407 | 27 | <Style ss:ID="Default" ss:Name="Normal"> | 27 | <Style ss:ID="s16" ss:Name="Comma" /> |
408 | 28 | <Alignment ss:Vertical="Bottom"/> | 28 | <Style ss:ID="header"> |
409 | 29 | <Borders/> | 29 | <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" /> |
410 | 30 | <Font/> | 30 | <Borders> |
411 | 31 | <NumberFormat/> | 31 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> |
412 | 32 | <Protection/> | 32 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> |
413 | 33 | </Style> | 33 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> |
414 | 34 | 34 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> | |
415 | 35 | <Style ss:ID="s16" ss:Name="Comma"> | 35 | </Borders> |
416 | 36 | </Style> | 36 | </Style> |
417 | 37 | 37 | <Style ss:ID="line"> | |
418 | 38 | 38 | <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" /> | |
419 | 39 | <Style ss:ID="header"> | 39 | <Borders> |
420 | 40 | <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/> | 40 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> |
421 | 41 | <Borders> | 41 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> |
422 | 42 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> | 42 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> |
423 | 43 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> | 43 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> |
424 | 44 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> | 44 | </Borders> |
425 | 45 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> | 45 | </Style> |
426 | 46 | </Borders> | 46 | <Style ss:ID="title"> |
427 | 47 | </Style> | 47 | <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" /> |
428 | 48 | 48 | </Style> | |
429 | 49 | <Style ss:ID="line"> | 49 | <Style ss:ID="s22"> |
430 | 50 | <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/> | 50 | <Borders> |
431 | 51 | <Borders> | 51 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> |
432 | 52 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> | 52 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> |
433 | 53 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> | 53 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> |
434 | 54 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> | 54 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> |
435 | 55 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> | 55 | </Borders> |
436 | 56 | </Borders> | 56 | </Style> |
437 | 57 | </Style> | 57 | <Style ss:ID="s23"> |
438 | 58 | 58 | <Borders> | |
439 | 59 | <Style ss:ID="title"> | 59 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> |
440 | 60 | <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/> | 60 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> |
441 | 61 | </Style> | 61 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> |
442 | 62 | 62 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> | |
443 | 63 | <Style ss:ID="s22"> | 63 | </Borders> |
444 | 64 | <Borders> | 64 | <NumberFormat ss:Format="Short Date" /> |
445 | 65 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 65 | </Style> |
446 | 66 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> | 66 | <Style ss:ID="s24"> |
447 | 67 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/> | 67 | <Borders> |
448 | 68 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> | 68 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> |
449 | 69 | </Borders> | 69 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> |
450 | 70 | </Style> | 70 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> |
451 | 71 | <Style ss:ID="s23"> | 71 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> |
452 | 72 | <Borders> | 72 | </Borders> |
453 | 73 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 73 | <NumberFormat ss:Format="mmm\-yy" /> |
454 | 74 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> | 74 | </Style> |
455 | 75 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/> | 75 | <Style ss:ID="short_date"> |
456 | 76 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> | 76 | <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" /> |
457 | 77 | </Borders> | 77 | <Borders> |
458 | 78 | <NumberFormat ss:Format="Short Date"/> | 78 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> |
459 | 79 | </Style> | 79 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> |
460 | 80 | <Style ss:ID="s24"> | 80 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> |
461 | 81 | <Borders> | 81 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> |
462 | 82 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 82 | </Borders> |
463 | 83 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> | 83 | <NumberFormat ss:Format="Short Date" /> |
464 | 84 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/> | 84 | </Style> |
465 | 85 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> | 85 | <Style ss:ID="short_date2"> |
466 | 86 | </Borders> | 86 | <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" /> |
467 | 87 | <NumberFormat ss:Format="mmm\-yy"/> | 87 | <NumberFormat ss:Format="Short Date" /> |
468 | 88 | </Style> | 88 | </Style> |
469 | 89 | 89 | <Style ss:ID="pop"> | |
470 | 90 | <Style ss:ID="short_date"> | 90 | <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" /> |
471 | 91 | <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/> | 91 | </Style> |
472 | 92 | <Borders> | 92 | <Style ss:ID="s25"> |
473 | 93 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 93 | <Borders> |
474 | 94 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> | 94 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> |
475 | 95 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/> | 95 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> |
476 | 96 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> | 96 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> |
477 | 97 | </Borders> | 97 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> |
478 | 98 | <NumberFormat ss:Format="Short Date"/> | 98 | </Borders> |
479 | 99 | </Style> | 99 | <Interior ss:Pattern="Solid" /> |
480 | 100 | 100 | </Style> | |
481 | 101 | <Style ss:ID="short_date2"> | 101 | <Style ss:ID="s25c" /> |
482 | 102 | <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/> | 102 | <Style ss:ID="s25b"> |
483 | 103 | <NumberFormat ss:Format="Short Date"/> | 103 | <Font ss:Bold="1" /> |
484 | 104 | </Style> | 104 | </Style> |
485 | 105 | 105 | <!-- <Style ss:ID="s25"> | |
360 | 106 | <Style ss:ID="pop"> | ||
361 | 107 | <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/> | ||
362 | 108 | </Style> | ||
363 | 109 | |||
364 | 110 | <Style ss:ID="s25"> | ||
365 | 111 | <Borders> | ||
366 | 112 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | ||
367 | 113 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> | ||
368 | 114 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/> | ||
369 | 115 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> | ||
370 | 116 | </Borders> | ||
371 | 117 | <Interior ss:Pattern="Solid"/> | ||
372 | 118 | </Style> | ||
373 | 119 | |||
374 | 120 | |||
375 | 121 | <Style ss:ID="s25c"> | ||
376 | 122 | </Style> | ||
377 | 123 | |||
378 | 124 | <Style ss:ID="s25b"> | ||
379 | 125 | <Font ss:Bold="1"/> | ||
380 | 126 | </Style> | ||
381 | 127 | |||
382 | 128 | <!-- <Style ss:ID="s25"> | ||
486 | 129 | <Borders> | 106 | <Borders> |
487 | 130 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 107 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> |
488 | 131 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> | 108 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> |
489 | @@ -144,339 +121,313 @@ | |||
490 | 144 | <NumberFormat /> | 121 | <NumberFormat /> |
491 | 145 | <NumberFormat ss:Format="Fixed"/> | 122 | <NumberFormat ss:Format="Fixed"/> |
492 | 146 | </Style> --> | 123 | </Style> --> |
829 | 147 | 124 | <Style ss:ID="s26"> | |
830 | 148 | <Style ss:ID="s26" > | 125 | <Borders> |
831 | 149 | <Borders> | 126 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> |
832 | 150 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 127 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> |
833 | 151 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> | 128 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> |
834 | 152 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/> | 129 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> |
835 | 153 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> | 130 | </Borders> |
836 | 154 | </Borders> | 131 | <NumberFormat ss:Format="Fixed" /> |
837 | 155 | <NumberFormat ss:Format="Fixed"/> | 132 | </Style> |
838 | 156 | </Style> | 133 | <Style ss:ID="s32"> |
839 | 157 | 134 | <Alignment ss:Horizontal="Right" ss:Vertical="Bottom" /> | |
840 | 158 | 135 | <Borders> | |
841 | 159 | 136 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> | |
842 | 160 | <Style ss:ID="s32"> | 137 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> |
843 | 161 | <Alignment ss:Horizontal="Right" ss:Vertical="Bottom"/> | 138 | </Borders> |
844 | 162 | <Borders> | 139 | <Font x:Family="Swiss" ss:Bold="1" /> |
845 | 163 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 140 | </Style> |
846 | 164 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> | 141 | <Style ss:ID="s34"> |
847 | 165 | </Borders> | 142 | <Alignment ss:Vertical="Center" ss:WrapText="1" /> |
848 | 166 | <Font x:Family="Swiss" ss:Bold="1"/> | 143 | <Borders> |
849 | 167 | </Style> | 144 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> |
850 | 168 | 145 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> | |
851 | 169 | <Style ss:ID="s34"> | 146 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> |
852 | 170 | <Alignment ss:Vertical="Center" ss:WrapText="1"/> | 147 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> |
853 | 171 | <Borders> | 148 | </Borders> |
854 | 172 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 149 | <Font ss:Bold="1" /> |
855 | 173 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> | 150 | </Style> |
856 | 174 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/> | 151 | <Style ss:ID="s35"> |
857 | 175 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> | 152 | <Alignment ss:Vertical="Center" ss:WrapText="1" /> |
858 | 176 | </Borders> | 153 | </Style> |
859 | 177 | <Font ss:Bold="1"/> | 154 | <Style ss:ID="s38"> |
860 | 178 | </Style> | 155 | <Borders> |
861 | 179 | 156 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> | |
862 | 180 | 157 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> | |
863 | 181 | <Style ss:ID="s35"> | 158 | </Borders> |
864 | 182 | <Alignment ss:Vertical="Center" ss:WrapText="1"/> | 159 | </Style> |
865 | 183 | </Style> | 160 | ( getFuncCur(o) or '')|x |
866 | 184 | 161 | <Style ss:ID="s39"> | |
867 | 185 | 162 | <Borders> | |
868 | 186 | <Style ss:ID="s38"> | 163 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> |
869 | 187 | <Borders> | 164 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> |
870 | 188 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 165 | </Borders> |
871 | 189 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> | 166 | </Style> |
872 | 190 | </Borders> | 167 | <Style ss:ID="s40"> |
873 | 191 | </Style> | 168 | <Borders> |
874 | 192 | 169 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> | |
875 | 193 | 170 | </Borders> | |
876 | 194 | <Style ss:ID="s39" > | 171 | </Style> |
877 | 195 | <Borders> | 172 | <Style ss:ID="s41"> |
878 | 196 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 173 | <Borders> |
879 | 197 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> | 174 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> |
880 | 198 | </Borders> | 175 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> |
881 | 199 | </Style> | 176 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> |
882 | 200 | 177 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> | |
883 | 201 | <Style ss:ID="s40"> | 178 | </Borders> |
884 | 202 | <Borders> | 179 | <Font x:Family="Swiss" ss:Bold="1" /> |
885 | 203 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 180 | </Style> |
886 | 204 | </Borders> | 181 | <Style ss:ID="s42"> |
887 | 205 | </Style> | 182 | <Borders> |
888 | 206 | 183 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> | |
889 | 207 | <Style ss:ID="s41"> | 184 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> |
890 | 208 | <Borders> | 185 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> |
891 | 209 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 186 | </Borders> |
892 | 210 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> | 187 | </Style> |
893 | 211 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/> | 188 | <Style ss:ID="s43"> |
894 | 212 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> | 189 | <Borders> |
895 | 213 | </Borders> | 190 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> |
896 | 214 | <Font x:Family="Swiss" ss:Bold="1"/> | 191 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> |
897 | 215 | </Style> | 192 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> |
898 | 216 | 193 | </Borders> | |
899 | 217 | <Style ss:ID="s42"> | 194 | </Style> |
900 | 218 | <Borders> | 195 | <Style ss:ID="s44"> |
901 | 219 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 196 | <Borders> |
902 | 220 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> | 197 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" /> |
903 | 221 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> | 198 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> |
904 | 222 | </Borders> | 199 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> |
905 | 223 | </Style> | 200 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" /> |
906 | 224 | 201 | </Borders> | |
907 | 225 | <Style ss:ID="s43" > | 202 | <Font x:Family="Swiss" ss:Bold="1" /> |
908 | 226 | <Borders> | 203 | <NumberFormat ss:Format="Fixed" /> |
909 | 227 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 204 | </Style> |
910 | 228 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/> | 205 | <Style ss:ID="s49"> |
911 | 229 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> | 206 | <Alignment ss:Horizontal="Right" ss:Vertical="Bottom" /> |
912 | 230 | </Borders> | 207 | <Borders> |
913 | 231 | </Style> | 208 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2" /> |
914 | 232 | 209 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="2" /> | |
915 | 233 | <Style ss:ID="s44" > | 210 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> |
916 | 234 | <Borders> | 211 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2" /> |
917 | 235 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/> | 212 | </Borders> |
918 | 236 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> | 213 | <Font x:Family="Swiss" ss:Bold="1" /> |
919 | 237 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/> | 214 | </Style> |
920 | 238 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/> | 215 | <Style ss:ID="s50"> |
921 | 239 | </Borders> | 216 | <Borders> |
922 | 240 | <Font x:Family="Swiss" ss:Bold="1"/> | 217 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2" /> |
923 | 241 | <NumberFormat ss:Format="Fixed"/> | 218 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> |
924 | 242 | </Style> | 219 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" /> |
925 | 243 | 220 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2" /> | |
926 | 244 | 221 | </Borders> | |
927 | 245 | <Style ss:ID="s49"> | 222 | <Font x:Family="Swiss" ss:Bold="1" /> |
928 | 246 | <Alignment ss:Horizontal="Right" ss:Vertical="Bottom"/> | 223 | <NumberFormat ss:Format="Fixed" /> |
929 | 247 | <Borders> | 224 | </Style> |
930 | 248 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2"/> | 225 | <Style ss:ID="s51"> |
931 | 249 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="2"/> | 226 | <Borders> |
932 | 250 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/> | 227 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2" /> |
933 | 251 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2"/> | 228 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" /> |
934 | 252 | </Borders> | 229 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="2" /> |
935 | 253 | <Font x:Family="Swiss" ss:Bold="1"/> | 230 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2" /> |
936 | 254 | </Style> | 231 | </Borders> |
937 | 255 | 232 | <Font x:Family="Swiss" ss:Bold="1" /> | |
938 | 256 | <Style ss:ID="s50" > | 233 | </Style> |
939 | 257 | <Borders> | 234 | </Styles> |
940 | 258 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2"/> | 235 | <Worksheet ss:Name="Liquidity position"> |
941 | 259 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> | 236 | <Table> |
942 | 260 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/> | 237 | <Column ss:AutoFitWidth="0" ss:Width="110.5" /> |
943 | 261 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2"/> | 238 | <Column ss:AutoFitWidth="0" ss:Width="102.75" ss:Span="1" /> |
944 | 262 | </Borders> | 239 | <Column ss:AutoFitWidth="0" ss:Width="103.5" ss:Span="1" /> |
945 | 263 | <Font x:Family="Swiss" ss:Bold="1"/> | 240 | <Column ss:AutoFitWidth="0" ss:Width="75.75" /> |
946 | 264 | <NumberFormat ss:Format="Fixed"/> | 241 | <Column ss:AutoFitWidth="0" ss:Width="103.5" ss:Span="1" /> |
947 | 265 | </Style> | 242 | <Column ss:AutoFitWidth="0" ss:Width="70.75" /> |
948 | 266 | 243 | <Row> | |
949 | 267 | <Style ss:ID="s51"> | 244 | <Cell ss:StyleID="s25b"> |
950 | 268 | <Borders> | 245 | <Data ss:Type="String">${_('LIQUIDITY POSITION')}</Data> |
951 | 269 | <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2"/> | 246 | </Cell> |
952 | 270 | <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/> | 247 | </Row> |
953 | 271 | <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="2"/> | 248 | <Row ss:Height="13.5" /> |
954 | 272 | <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2"/> | 249 | <Row> |
955 | 273 | </Borders> | 250 | <Cell> |
956 | 274 | <Font x:Family="Swiss" ss:Bold="1"/> | 251 | <Data ss:Type="String">${_('Report Date:')}</Data> |
957 | 275 | </Style> | 252 | </Cell> |
958 | 276 | </Styles> | 253 | <Cell ss:StyleID="short_date2"> |
959 | 277 | 254 | <Data ss:Type="DateTime">${time.strftime('%Y-%m-%d')|n}T00:00:00.000</Data> | |
960 | 278 | 255 | </Cell> | |
961 | 279 | <Worksheet ss:Name="Liquidity position"> | 256 | </Row> |
962 | 280 | <Table > | 257 | <Row> |
963 | 281 | <Column ss:AutoFitWidth="0" ss:Width="110.5"/> | 258 | <Cell> |
964 | 282 | <Column ss:AutoFitWidth="0" ss:Width="102.75" ss:Span="1"/> | 259 | <Data ss:Type="String">${_('Prop Instance: ')}</Data> |
965 | 283 | <Column ss:AutoFitWidth="0" ss:Width="103.5" ss:Span="1"/> | 260 | </Cell> |
966 | 284 | <Column ss:AutoFitWidth="0" ss:Width="75.75"/> | 261 | <Cell ss:StyleID="pop"> |
967 | 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> |
968 | 286 | <Column ss:AutoFitWidth="0" ss:Width="70.75"/> | 263 | </Cell> |
969 | 287 | 264 | </Row> | |
970 | 288 | <Row> | 265 | <Row ss:Height="13.5" /> |
971 | 289 | <Cell ss:StyleID="s25b" > | 266 | <Row ss:AutoFitHeight="0" ss:Height="25.5" ss:StyleID="s35"> |
972 | 290 | <Data ss:Type="String">${_('LIQUIDITY POSITION')}</Data> | 267 | <Cell ss:StyleID="s34"> |
973 | 291 | </Cell> | 268 | <Data ss:Type="String">${_('Proprietary instance')}</Data> |
974 | 292 | </Row> | 269 | </Cell> |
975 | 293 | <Row ss:Height="13.5"/> | 270 | <Cell ss:StyleID="s34"> |
976 | 294 | <Row > | 271 | <Data ss:Type="String">${_('Journal Code')}</Data> |
977 | 295 | <Cell> | 272 | </Cell> |
978 | 296 | <Data ss:Type="String">${_('Report Date:')}</Data> | 273 | <Cell ss:StyleID="s34"> |
979 | 297 | </Cell> | 274 | <Data ss:Type="String">${_('Journal Name')}</Data> |
980 | 298 | <Cell ss:StyleID="short_date2" > | 275 | </Cell> |
981 | 299 | <Data ss:Type="DateTime">${time.strftime('%Y-%m-%d')|n}T00:00:00.000</Data> | 276 | <Cell ss:StyleID="s34"> |
982 | 300 | </Cell> | 277 | <Data ss:Type="String">${_('Status')}</Data> |
983 | 301 | </Row> | 278 | </Cell> |
984 | 302 | <Row> | 279 | <Cell ss:StyleID="s34"> |
985 | 303 | <Cell> | 280 | <Data ss:Type="String">${_('Period')}</Data> |
986 | 304 | <Data ss:Type="String">${_('Prop Instance: ')}</Data> | 281 | </Cell> |
987 | 305 | </Cell> | 282 | <Cell ss:StyleID="s34"> |
988 | 306 | <Cell ss:StyleID="pop"> | 283 | <Data ss:Type="String">${_('Calculated Balance in register currency')}</Data> |
989 | 307 | <Data ss:Type="String">${( company.instance_id and company.instance_id.code or '')|x}</Data> | 284 | </Cell> |
990 | 308 | </Cell> | 285 | <Cell ss:StyleID="s34"> |
991 | 309 | </Row> | 286 | <Data ss:Type="String">${_('Register Balance in register currency')}</Data> |
992 | 310 | <Row ss:Height="13.5"/> | 287 | </Cell> |
993 | 311 | 288 | <Cell ss:StyleID="s34"> | |
994 | 312 | <Row ss:AutoFitHeight="0" ss:Height="25.5" ss:StyleID="s35"> | 289 | <Data ss:Type="String">${_('Register Currency')}</Data> |
995 | 313 | <Cell ss:StyleID="s34" > | 290 | </Cell> |
996 | 314 | <Data ss:Type="String">${_('Proprietary instance')}</Data> | 291 | <Cell ss:StyleID="s34"> |
997 | 315 | </Cell> | 292 | <Data ss:Type="String">${_('Calculated Balance in functional currency')}</Data> |
998 | 316 | <Cell ss:StyleID="s34" > | 293 | </Cell> |
999 | 317 | <Data ss:Type="String">${_('Journal Code')}</Data> | 294 | <Cell ss:StyleID="s34"> |
1000 | 318 | </Cell> | 295 | <Data ss:Type="String">${_('Register Balance in functional currency')}</Data> |
1001 | 319 | <Cell ss:StyleID="s34" > | 296 | </Cell> |
1002 | 320 | <Data ss:Type="String">${_('Journal Name')}</Data> | 297 | <Cell ss:StyleID="s34"> |
1003 | 321 | </Cell> | 298 | <Data ss:Type="String">${_('Functional Currency')}</Data> |
1004 | 322 | <Cell ss:StyleID="s34" > | 299 | </Cell> |
1005 | 323 | <Data ss:Type="String">${_('Calculated Balance in register currency')}</Data> | 300 | </Row> |
1006 | 324 | </Cell> | 301 | % for reg in getRegister(): |
1007 | 325 | <Cell ss:StyleID="s34" > | 302 | % for o in getRegister2()[reg]: |
1008 | 326 | <Data ss:Type="String">${_('Register Balance in register currency')}</Data> | 303 | <Row> |
1009 | 327 | </Cell> | 304 | <Cell ss:StyleID="s25"> |
1010 | 328 | <Cell ss:StyleID="s34" > | 305 | <Data ss:Type="String">${(o.instance_id and o.instance_id.code or '')|x}</Data> |
1011 | 329 | <Data ss:Type="String">${_('Register Currency')}</Data> | 306 | </Cell> |
1012 | 330 | </Cell> | 307 | <Cell ss:StyleID="s25"> |
1013 | 331 | <Cell ss:StyleID="s34" > | 308 | <Data ss:Type="String">${(o.journal_id and o.journal_id.code or '')|x}</Data> |
1014 | 332 | <Data ss:Type="String">${_('Calculated Balance in functional currency')}</Data> | 309 | </Cell> |
1015 | 333 | </Cell> | 310 | <Cell ss:StyleID="s25"> |
1016 | 334 | <Cell ss:StyleID="s34" > | 311 | <Data ss:Type="String">${(o.journal_id and o.journal_id.name or '')|x}</Data> |
1017 | 335 | <Data ss:Type="String">${_('Register Balance in functional currency')}</Data> | 312 | </Cell> |
1018 | 336 | </Cell> | 313 | <Cell ss:StyleID="s25"> |
1019 | 337 | <Cell ss:StyleID="s34" > | 314 | <Data ss:Type="String">${(o.state or '')|x}</Data> |
1020 | 338 | <Data ss:Type="String">${_('Functional Currency')}</Data> | 315 | </Cell> |
1021 | 339 | </Cell> | 316 | <Cell ss:StyleID="s25"> |
1022 | 340 | </Row> | 317 | <Data ss:Type="String">${(o.period_id.name or '')|x}</Data> |
1023 | 341 | 318 | </Cell> | |
1024 | 342 | % for reg in getRegister(): | 319 | <Cell ss:StyleID="s26"> |
1025 | 343 | % for o in getRegister2()[reg]: | 320 | <Data ss:Type="Number">${(o.msf_calculated_balance or 0.0)|x}</Data> |
1026 | 344 | <Row> | 321 | </Cell> |
1027 | 345 | <Cell ss:StyleID="s25" > | 322 | % if o.journal_id.type == 'cash' : |
1028 | 346 | <Data ss:Type="String">${(o.instance_id and o.instance_id.code or '')|x}</Data> | 323 | <Cell ss:StyleID="s26"> |
1029 | 347 | </Cell> | 324 | <Data ss:Type="Number">${(o.balance_end_cash or 0.0)|x}</Data> |
1030 | 348 | <Cell ss:StyleID="s25" > | 325 | </Cell> |
1031 | 349 | <Data ss:Type="String">${(o.journal_id and o.journal_id.code or '')|x}</Data> | 326 | % endif |
1032 | 350 | </Cell> | 327 | % if o.journal_id.type == 'bank' : |
1033 | 351 | <Cell ss:StyleID="s25" > | 328 | <Cell ss:StyleID="s26"> |
1034 | 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> |
1035 | 353 | </Cell> | 330 | </Cell> |
1036 | 354 | <Cell ss:StyleID="s26" > | 331 | % endif |
1037 | 355 | <Data ss:Type="Number">${(o.msf_calculated_balance or 0.0)|x}</Data> | 332 | <Cell ss:StyleID="s25"> |
1038 | 356 | </Cell> | 333 | <Data ss:Type="String">${( o.journal_id and o.journal_id.currency and o.journal_id.currency.name or '')|x}</Data> |
1039 | 357 | % if o.journal_id.type == 'cash' : | 334 | </Cell> |
1040 | 358 | <Cell ss:StyleID="s26" > | 335 | <Cell ss:StyleID="s26"> |
1041 | 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> |
1042 | 360 | </Cell> | 337 | </Cell> |
1043 | 361 | % endif | 338 | % if o.journal_id.type == 'cash' : |
1044 | 362 | % if o.journal_id.type == 'bank' : | 339 | <Cell ss:StyleID="s26"> |
1045 | 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> |
1046 | 364 | <Data ss:Type="Number">${(o.balance_end_real or 0.0)|x}</Data> | 341 | </Cell> |
1047 | 365 | </Cell> | 342 | % endif |
1048 | 366 | % endif | 343 | % if o.journal_id.type == 'bank' : |
1049 | 367 | <Cell ss:StyleID="s25" > | 344 | <Cell ss:StyleID="s26"> |
1050 | 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> |
1051 | 369 | </Cell> | 346 | </Cell> |
1052 | 370 | <Cell ss:StyleID="s26" > | 347 | % endif |
1053 | 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"> |
1054 | 372 | </Cell> | 349 | <Data ss:Type="String">${( getFuncCur(o) or '')|x}</Data> |
1055 | 373 | 350 | </Cell> | |
1056 | 374 | % if o.journal_id.type == 'cash' : | 351 | </Row> |
1057 | 375 | <Cell ss:StyleID="s26" > | 352 | % endfor |
1058 | 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> |
1059 | 377 | </Cell> | 354 | <Cell ss:StyleID="s42" /> |
1060 | 378 | % endif | 355 | <Cell ss:StyleID="s38"> |
1061 | 379 | % if o.journal_id.type == 'bank' : | 356 | <NamedCell ss:Name="Print_Area" /> |
1062 | 380 | <Cell ss:StyleID="s26" > | 357 | </Cell> |
1063 | 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"> |
1064 | 382 | </Cell> | 359 | <NamedCell ss:Name="Print_Area" /> |
1065 | 383 | % endif | 360 | </Cell> |
1066 | 384 | <Cell ss:StyleID="s25" > | 361 | <Cell ss:StyleID="s39"> |
1067 | 385 | <Data ss:Type="String">${( getFuncCur(o) or '')|x}</Data> | 362 | <NamedCell ss:Name="Print_Area" /> |
1068 | 386 | </Cell> | 363 | </Cell> |
1069 | 387 | </Row> | 364 | <Cell ss:StyleID="s43"> |
1070 | 388 | 365 | <NamedCell ss:Name="Print_Area" /> | |
1071 | 389 | % endfor | 366 | </Cell> |
1072 | 390 | 367 | <Cell ss:StyleID="s32"> | |
1073 | 391 | <Row> | 368 | <Data ss:Type="String">${_('Sub-Total =')}</Data> |
1074 | 392 | <Cell ss:StyleID="s42"/> | 369 | <NamedCell ss:Name="Print_Area" /> |
1075 | 393 | <Cell ss:StyleID="s38"> | 370 | </Cell> |
1076 | 394 | <NamedCell ss:Name="Print_Area"/> | 371 | <Cell ss:StyleID="s44" ss:Formula="=SUM(R[-${getCal()}]C:R[-1]C)"> |
1077 | 395 | </Cell> | 372 | <Data ss:Type="Number" /> |
1078 | 396 | <Cell ss:StyleID="s38"> | 373 | <NamedCell ss:Name="Print_Area" /> |
1079 | 397 | <NamedCell ss:Name="Print_Area"/> | 374 | </Cell> |
1080 | 398 | </Cell> | 375 | <Cell ss:StyleID="s44" ss:Formula="=SUM(R[-${getRes()}]C:R[-1]C)"> |
1081 | 399 | <Cell ss:StyleID="s39"> | 376 | <Data ss:Type="Number" /> |
1082 | 400 | <NamedCell ss:Name="Print_Area"/> | 377 | <NamedCell ss:Name="Print_Area" /> |
1083 | 401 | </Cell> | 378 | </Cell> |
1084 | 402 | <Cell ss:StyleID="s43"> | 379 | <Cell ss:StyleID="s41"> |
1085 | 403 | <NamedCell ss:Name="Print_Area"/> | 380 | <Data ss:Type="String">${( getCurTot() or '')|x}</Data> |
1086 | 404 | </Cell> | 381 | <NamedCell ss:Name="Print_Area" /> |
1087 | 405 | <Cell ss:StyleID="s32"> | 382 | </Cell> |
1088 | 406 | <Data ss:Type="String">${_('Sub-Total =')}</Data> | 383 | </Row> |
1089 | 407 | <NamedCell ss:Name="Print_Area"/> | 384 | <Row ss:Height="13.5" /> |
1090 | 408 | </Cell> | 385 | % endfor |
1091 | 409 | <Cell ss:StyleID="s44" ss:Formula="=SUM(R[-${getCal()}]C:R[-1]C)" > | 386 | <Row ss:Height="13.5"> |
1092 | 410 | <Data ss:Type="Number"></Data> | 387 | <Cell ss:StyleID="s25c" /> |
1093 | 411 | <NamedCell ss:Name="Print_Area"/> | 388 | <Cell ss:StyleID="s25c" /> |
1094 | 412 | </Cell> | 389 | <Cell ss:StyleID="s25c" /> |
1095 | 413 | <Cell ss:StyleID="s44" ss:Formula="=SUM(R[-${getRes()}]C:R[-1]C)" > | 390 | <Cell ss:StyleID="s25c" /> |
1096 | 414 | <Data ss:Type="Number"></Data> | 391 | <Cell ss:StyleID="s25c" /> |
1097 | 415 | <NamedCell ss:Name="Print_Area"/> | 392 | <Cell ss:StyleID="s49"> |
1098 | 416 | </Cell> | 393 | <Data ss:Type="String">${_('Grand Total =')}</Data> |
1099 | 417 | <Cell ss:StyleID="s41"> | 394 | <NamedCell ss:Name="Print_Area" /> |
1100 | 418 | <Data ss:Type="String">${( getCurTot() or '')|x}</Data> | 395 | </Cell> |
1101 | 419 | <NamedCell ss:Name="Print_Area"/> | 396 | <Cell ss:StyleID="s50" ss:Formula="=${getFormula()}+R[-2]C"> |
1102 | 420 | </Cell> | 397 | <Data ss:Type="Number" /> |
1103 | 421 | </Row> | 398 | <NamedCell ss:Name="Print_Area" /> |
1104 | 422 | <Row ss:Height="13.5"/> | 399 | </Cell> |
1105 | 423 | % endfor | 400 | <Cell ss:StyleID="s50" ss:Formula="=${getFormula()}+R[-2]C"> |
1106 | 424 | 401 | <Data ss:Type="Number" /> | |
1107 | 425 | 402 | <NamedCell ss:Name="Print_Area" /> | |
1108 | 426 | <Row ss:Height="13.5"> | 403 | </Cell> |
1109 | 427 | <Cell ss:StyleID="s25c"/> | 404 | <Cell ss:StyleID="s51"> |
1110 | 428 | <Cell ss:StyleID="s25c"/> | 405 | <Data ss:Type="String">${( getCurTot() or '')|x}</Data> |
1111 | 429 | <Cell ss:StyleID="s25c"/> | 406 | <NamedCell ss:Name="Print_Area" /> |
1112 | 430 | <Cell ss:StyleID="s25c"/> | 407 | </Cell> |
1113 | 431 | <Cell ss:StyleID="s25c"/> | 408 | </Row> |
1114 | 432 | 409 | </Table> | |
1115 | 433 | <Cell ss:StyleID="s49"> | 410 | <WorksheetOptions> |
1116 | 434 | <Data ss:Type="String">${_('Grand Total =')}</Data> | 411 | <FitToPage /> |
1117 | 435 | <NamedCell ss:Name="Print_Area"/> | 412 | <Print> |
1118 | 436 | </Cell> | 413 | <ValidPrinterInfo /> |
1119 | 437 | <Cell ss:StyleID="s50" ss:Formula="=${getFormula()}+R[-2]C"> | 414 | <PaperSizeIndex>9</PaperSizeIndex> |
1120 | 438 | <Data ss:Type="Number"></Data> | 415 | <Scale>63</Scale> |
1121 | 439 | <NamedCell ss:Name="Print_Area"/> | 416 | <HorizontalResolution>600</HorizontalResolution> |
1122 | 440 | </Cell> | 417 | <VerticalResolution>0</VerticalResolution> |
1123 | 441 | <Cell ss:StyleID="s50" ss:Formula="=${getFormula()}+R[-2]C"> | 418 | </Print> |
1124 | 442 | <Data ss:Type="Number"></Data> | 419 | <PageBreakZoom>60</PageBreakZoom> |
1125 | 443 | <NamedCell ss:Name="Print_Area"/> | 420 | <Selected /> |
1126 | 444 | </Cell> | 421 | <DoNotDisplayGridlines /> |
1127 | 445 | <Cell ss:StyleID="s51"> | 422 | <Panes> |
1128 | 446 | <Data ss:Type="String">${( getCurTot() or '')|x}</Data> | 423 | <Pane> |
1129 | 447 | <NamedCell ss:Name="Print_Area"/> | 424 | <Number>3</Number> |
1130 | 448 | </Cell> | 425 | <ActiveRow>24</ActiveRow> |
1131 | 449 | </Row> | 426 | <ActiveCol>3</ActiveCol> |
1132 | 450 | 427 | </Pane> | |
1133 | 451 | 428 | </Panes> | |
1134 | 452 | </Table> | 429 | <ProtectObjects>False</ProtectObjects> |
1135 | 453 | 430 | <ProtectScenarios>False</ProtectScenarios> | |
1136 | 454 | 431 | </WorksheetOptions> | |
1137 | 455 | <WorksheetOptions> | 432 | </Worksheet> |
1138 | 456 | <FitToPage/> | 433 | </Workbook> |
803 | 457 | <Print> | ||
804 | 458 | <ValidPrinterInfo/> | ||
805 | 459 | <PaperSizeIndex>9</PaperSizeIndex> | ||
806 | 460 | <Scale>63</Scale> | ||
807 | 461 | <HorizontalResolution>600</HorizontalResolution> | ||
808 | 462 | <VerticalResolution>0</VerticalResolution> | ||
809 | 463 | </Print> | ||
810 | 464 | <PageBreakZoom>60</PageBreakZoom> | ||
811 | 465 | <Selected/> | ||
812 | 466 | <DoNotDisplayGridlines/> | ||
813 | 467 | <Panes> | ||
814 | 468 | <Pane> | ||
815 | 469 | <Number>3</Number> | ||
816 | 470 | <ActiveRow>24</ActiveRow> | ||
817 | 471 | <ActiveCol>3</ActiveCol> | ||
818 | 472 | </Pane> | ||
819 | 473 | </Panes> | ||
820 | 474 | <ProtectObjects>False</ProtectObjects> | ||
821 | 475 | <ProtectScenarios>False</ProtectScenarios> | ||
822 | 476 | </WorksheetOptions> | ||
823 | 477 | |||
824 | 478 | </Worksheet> | ||
825 | 479 | |||
826 | 480 | |||
827 | 481 | |||
828 | 482 | </Workbook> | ||
1139 | 483 | \ No newline at end of file | 434 | \ No newline at end of file |
1140 | 484 | 435 | ||
1141 | === modified file 'register_accounting/report/report_liquidity_position.py' | |||
1142 | --- register_accounting/report/report_liquidity_position.py 2014-03-07 11:05:37 +0000 | |||
1143 | +++ register_accounting/report/report_liquidity_position.py 2014-06-02 12:07:57 +0000 | |||
1144 | @@ -83,12 +83,17 @@ | |||
1145 | 83 | pool = pooler.get_pool(self.cr.dbname) | 83 | pool = pooler.get_pool(self.cr.dbname) |
1146 | 84 | 84 | ||
1147 | 85 | sql_register_ids = """ | 85 | sql_register_ids = """ |
1154 | 86 | SELECT abs.id FROM account_bank_statement abs | 86 | SELECT abs.id |
1155 | 87 | LEFT JOIN account_journal aj ON abs.journal_id = aj.id | 87 | FROM account_bank_statement abs |
1156 | 88 | WHERE | 88 | LEFT JOIN account_journal aj ON abs.journal_id = aj.id |
1157 | 89 | aj.type != 'cheque' AND abs.state != 'draft' AND abs.id not in ( | 89 | WHERE aj.type != 'cheque' |
1158 | 90 | SELECT prev_reg_id FROM account_bank_statement WHERE prev_reg_id is not null AND state != 'draft' | 90 | AND abs.state != 'draft' |
1159 | 91 | ) | 91 | AND abs.period_number = (SELECT max(abs2.period_number) |
1160 | 92 | FROM account_bank_statement abs2 | ||
1161 | 93 | LEFT JOIN account_journal aj2 ON abs2.journal_id = aj2.id | ||
1162 | 94 | WHERE aj2.type != 'cheque' AND abs2.state != 'draft' | ||
1163 | 95 | AND abs2.instance_id = abs.instance_id | ||
1164 | 96 | AND abs2.journal_id = abs.journal_id) | ||
1165 | 92 | """ | 97 | """ |
1166 | 93 | 98 | ||
1167 | 94 | self.cr.execute(sql_register_ids) | 99 | self.cr.execute(sql_register_ids) |