qdp (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-addons/trunk-bug-744789-qdp into 
lp:openobject-addons.

Requested reviews:
  Purnendu Singh (OpenERP) (psi-tinyerp)
  Olivier Dony (OpenERP) (odo)
Related bugs:
  Bug #744789 in OpenERP Addons: "[V6] Third party ledger : Initial Balance"
  https://bugs.launchpad.net/openobject-addons/+bug/744789

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-744789-qdp/+merge/58334

in the query_get() of account.move.line, if we don't give any other criteria in 
the context than the fiscalyear when computing an initial balance then it 
simply means that the entries returned will be exactly the same as without 
initial balance, which lead to count the entries twice...

this hack is a little nasty (not so say "a lot nasty"), but i can't think to 
something else.
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-744789-qdp/+merge/58334
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/trunk-bug-744789-qdp.
=== modified file 'account/account_move_line.py'
--- account/account_move_line.py	2011-04-25 06:11:14 +0000
+++ account/account_move_line.py	2011-04-28 07:25:56 +0000
@@ -82,17 +82,25 @@
                 period_ids = fiscalperiod_obj.search(cr, uid, [('id', 'in', context['periods'])], order='date_start', limit=1)
                 if period_ids and period_ids[0]:
                     first_period = fiscalperiod_obj.browse(cr, uid, period_ids[0], context=context)
+                    where_move_lines_by_date = " AND " +obj+".move_id IN (SELECT id FROM account_move WHERE date < '" +first_period.date_start+"')"
                     # Find the old periods where date start of those periods less then Start period
                     periods = fiscalperiod_obj.search(cr, uid, [('date_start', '<', first_period.date_start)])
                     periods = ','.join([str(x) for x in periods])
                     if periods:
                         query = obj+".state <> 'draft' AND "+obj+".period_id IN (SELECT id FROM account_period WHERE fiscalyear_id IN (%s) AND id IN (%s)) %s %s" % (fiscalyear_clause, periods, where_move_state, where_move_lines_by_date)
+                    else:
+                        query = obj+".state <> 'draft' AND "+obj+".period_id IN (SELECT id FROM account_period WHERE fiscalyear_id IN (%s)) %s %s" % (fiscalyear_clause, where_move_state, where_move_lines_by_date)
             else:
                 ids = ','.join([str(x) for x in context['periods']])
                 query = obj+".state <> 'draft' AND "+obj+".period_id IN (SELECT id FROM account_period WHERE fiscalyear_id IN (%s) AND id IN (%s)) %s %s" % (fiscalyear_clause, ids, where_move_state, where_move_lines_by_date)
         else:
             query = obj+".state <> 'draft' AND "+obj+".period_id IN (SELECT id FROM account_period WHERE fiscalyear_id IN (%s)) %s %s" % (fiscalyear_clause, where_move_state, where_move_lines_by_date)
 
+        if initial_bal and not context.get('periods', False) and not where_move_lines_by_date:
+            #we didn't pass any filter in the context, and the initial balance can't be computed using only the fiscalyear otherwise entries will be summed twice
+            #so we have to invalidate this query
+            raise osv.except_osv(_('Warning !'),_("You haven't supplied enough argument to compute the initial balance"))
+
         if context.get('journal_ids', False):
             query += ' AND '+obj+'.journal_id IN (%s)' % ','.join(map(str, context['journal_ids']))
 

=== modified file 'account/report/account_partner_ledger.py'
--- account/report/account_partner_ledger.py	2011-01-14 00:11:01 +0000
+++ account/report/account_partner_ledger.py	2011-04-28 07:25:56 +0000
@@ -58,10 +58,11 @@
         obj_partner = self.pool.get('res.partner')
         self.query = obj_move._query_get(self.cr, self.uid, obj='l', context=data['form'].get('used_context', {}))
         ctx2 = data['form'].get('used_context',{}).copy()
-        ctx2.update({'initial_bal': True})
+        self.initial_balance = data['form'].get('initial_balance', True)
+        if self.initial_balance:
+            ctx2.update({'initial_bal': True})
         self.init_query = obj_move._query_get(self.cr, self.uid, obj='l', context=ctx2)
         self.reconcil = data['form'].get('reconcil', True)
-        self.initial_balance = data['form'].get('initial_balance', True)
         self.result_selection = data['form'].get('result_selection', 'customer')
         self.amount_currency = data['form'].get('amount_currency', False)
         self.target_move = data['form'].get('target_move', 'all')

=== modified file 'account/wizard/account_report_partner_ledger.py'
--- account/wizard/account_report_partner_ledger.py	2011-04-15 10:09:01 +0000
+++ account/wizard/account_report_partner_ledger.py	2011-04-28 07:25:56 +0000
@@ -39,9 +39,22 @@
     }
     _defaults = {
        'reconcil': True,
-       'initial_balance': True,
+       'initial_balance': False,
        'page_split': False,
     }
+    def onchange_initial_balance(self, cr, uid, ids, initial_balance=False, reconcil=False, context=None):
+        res = {'value': {}}
+        if initial_balance:
+            res['value'] = {
+                  'reconcil': False
+            }
+        return res
+
+    def onchange_filter(self, cr, uid, ids, filter='filter_no', fiscalyear_id=False, context=None):
+        res = super(account_partner_ledger, self).onchange_filter(cr, uid, ids, filter=filter, fiscalyear_id=fiscalyear_id, context=context)
+        if filter == 'filter_no':
+            res['value'].update({'initial_balance': False})
+        return res
 
     def _print_report(self, cr, uid, ids, data, context=None):
         if context is None:

=== modified file 'account/wizard/account_report_partner_ledger_view.xml'
--- account/wizard/account_report_partner_ledger_view.xml	2011-01-14 00:11:01 +0000
+++ account/wizard/account_report_partner_ledger_view.xml	2011-04-28 07:25:56 +0000
@@ -15,12 +15,15 @@
             </xpath>
             <xpath expr="//field[@name='target_move']" position="after">
                 <field name="result_selection"/>
-                <field name="initial_balance"/>
-                <field name="reconcil"/>
+                <field name="initial_balance" attrs="{'readonly':[('filter', '=', 'filter_no')]}" on_change="onchange_initial_balance(initial_balance, reconcil)"/>
+                <field name="reconcil" attrs="{'readonly':[('initial_balance', '=', True)]}" on_change="onchange_initial_balance(initial_balance, reconcil)"/>
                 <field name="amount_currency"/>
                 <field name="page_split"/>
                 <newline/>
             </xpath>
+            <xpath expr="//field[@name='filter']" position="replace">
+                <field name="filter" strint="replaced" on_change="onchange_filter(filter, fiscalyear_id)" colspan="4"/>
+            </xpath>
             </data>
             </field>
         </record>

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-web
Post to     : openerp-dev-web@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openerp-dev-web
More help   : https://help.launchpad.net/ListHelp

Reply via email to