summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Ledoux <dle@odoo.com>2015-04-30 10:50:51 +0200
committerDenis Ledoux <dle@odoo.com>2015-04-30 10:50:51 +0200
commit2c3c2b57db8fcdaaa9ebbbf1a88675c996d6c556 (patch)
treef6ad18fe05322cf24d5f222e4c6fe9995661a10d
parent09b277c0087b43bb26e028daee6936785d1d5b2c (diff)
parentf2f4391e8bc0a135f0b1c4afe93e272cb27407b6 (diff)
[MERGE] forward port of branch 7.0 up to f2f4391
-rw-r--r--addons/account/account.py39
-rw-r--r--addons/account/report/account_tax_report.py7
-rw-r--r--addons/account_followup/account_followup.py2
-rw-r--r--addons/account_followup/report/account_followup_print.py2
-rw-r--r--addons/delivery/sale.py7
-rw-r--r--addons/note/note.py2
6 files changed, 37 insertions, 22 deletions
diff --git a/addons/account/account.py b/addons/account/account.py
index ddd6d95ca0a..bebcfc0383a 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -223,30 +223,37 @@ class account_account(osv.osv):
_description = "Account"
_parent_store = True
- def search(self, cr, uid, args, offset=0, limit=None, order=None,
- context=None, count=False):
- if context is None:
- context = {}
+ def _where_calc(self, cr, uid, domain, active_test=True, context=None):
+ """ Convert domains to allow easier filtering:
+ code: force case insensitive and right side matching search
+ journal_id: restrict to the accounts sharing the same account.account.type
+ """
pos = 0
-
- while pos < len(args):
-
- if args[pos][0] == 'code' and args[pos][1] in ('like', 'ilike') and args[pos][2]:
- args[pos] = ('code', '=like', tools.ustr(args[pos][2].replace('%', ''))+'%')
- if args[pos][0] == 'journal_id':
- if not args[pos][2]:
- del args[pos]
+ while pos < len(domain):
+ if domain[pos][0] == 'code' and domain[pos][1] in ('like', 'ilike') and domain[pos][2]:
+ domain[pos] = ('code', '=like', tools.ustr(domain[pos][2].replace('%', '')) + '%')
+ if domain[pos][0] == 'journal_id':
+ if not domain[pos][2]:
+ del domain[pos]
continue
- jour = self.pool.get('account.journal').browse(cr, uid, args[pos][2], context=context)
- if (not (jour.account_control_ids or jour.type_control_ids)) or not args[pos][2]:
- args[pos] = ('type','not in',('consolidation','view'))
+ jour = self.pool.get('account.journal').browse(cr, uid, domain[pos][2], context=context)
+ if (not (jour.account_control_ids or jour.type_control_ids)) or not domain[pos][2]:
+ domain[pos] = ('type', 'not in', ('consolidation', 'view'))
continue
ids3 = map(lambda x: x.id, jour.type_control_ids)
ids1 = super(account_account, self).search(cr, uid, [('user_type', 'in', ids3)])
ids1 += map(lambda x: x.id, jour.account_control_ids)
- args[pos] = ('id', 'in', ids1)
+ domain[pos] = ('id', 'in', ids1)
pos += 1
+ return super(account_account, self)._where_calc(cr, uid, domain, active_test, context)
+
+ def search(self, cr, uid, args, offset=0, limit=None, order=None,
+ context=None, count=False):
+ """ Check presence of key 'consolidate_children' in context to include also the Consolidated Children
+ of found accounts into the result of the search
+ """
+
if context and context.has_key('consolidate_children'): #add consolidated children of accounts
ids = super(account_account, self).search(cr, uid, args, offset, limit,
order, context=context, count=count)
diff --git a/addons/account/report/account_tax_report.py b/addons/account/report/account_tax_report.py
index b3cbcb441bf..91b1514ba2a 100644
--- a/addons/account/report/account_tax_report.py
+++ b/addons/account/report/account_tax_report.py
@@ -143,15 +143,18 @@ class tax_report(report_sxw.rml_parse, common_report_header):
account.name AS name, \
account.code AS code \
FROM account_move_line AS line, \
- account_account AS account \
+ account_account AS account, \
+ account_move as move \
WHERE line.state <> %s \
+ AND line.move_id = move.id \
AND line.tax_code_id = %s \
AND line.account_id = account.id \
AND account.company_id = %s \
AND line.period_id IN %s\
AND account.active \
+ AND move.state <> %s \
GROUP BY account.id,account.name,account.code', ('draft', tax_code_id,
- company_id, periods_ids,))
+ company_id, periods_ids, 'draft',))
res = self.cr.dictfetchall()
i = 0
diff --git a/addons/account_followup/account_followup.py b/addons/account_followup/account_followup.py
index 3eda1c45c85..57ed96d32a4 100644
--- a/addons/account_followup/account_followup.py
+++ b/addons/account_followup/account_followup.py
@@ -315,7 +315,7 @@ class res_partner(osv.osv):
('reconcile_id', '=', False),
('state', '!=', 'draft'),
('company_id', '=', company_id),
- ('date_maturity', '<=', fields.date.context_today(self,cr,uid)),
+ '|', ('date_maturity', '=', False), ('date_maturity', '<=', fields.date.context_today(self, cr, uid)),
], context=context):
raise osv.except_osv(_('Error!'),_("The partner does not have any accounting entries to print in the overdue report for the current company."))
self.message_post(cr, uid, [ids[0]], body=_('Printed overdue payments report'), context=context)
diff --git a/addons/account_followup/report/account_followup_print.py b/addons/account_followup/report/account_followup_print.py
index ffd96bd7c50..e9daf8284d7 100644
--- a/addons/account_followup/report/account_followup_print.py
+++ b/addons/account_followup/report/account_followup_print.py
@@ -55,7 +55,7 @@ class report_rappel(report_sxw.rml_parse):
('reconcile_id', '=', False),
('state', '!=', 'draft'),
('company_id', '=', company_id),
- ('date_maturity', '<=', fields.date.context_today(self,self.cr,self.uid)),
+ '|', ('date_maturity', '=', False), ('date_maturity', '<=', fields.date.context_today(self, self.cr, self.uid)),
])
# lines_per_currency = {currency: [line data, ...], ...}
diff --git a/addons/delivery/sale.py b/addons/delivery/sale.py
index 93072b3d02d..35b11e027a4 100644
--- a/addons/delivery/sale.py
+++ b/addons/delivery/sale.py
@@ -69,6 +69,7 @@ class sale_order(osv.Model):
carrier_obj = self.pool.get('delivery.carrier')
acc_fp_obj = self.pool.get('account.fiscal.position')
self._delivery_unset(cr, uid, ids, context=context)
+ currency_obj = self.pool.get('res.currency')
for order in self.browse(cr, uid, ids, context=context):
grid_id = carrier_obj.grid_get(cr, uid, [order.carrier_id.id], order.partner_shipping_id.id)
if not grid_id:
@@ -82,6 +83,10 @@ class sale_order(osv.Model):
taxes = grid.carrier_id.product_id.taxes_id
fpos = order.fiscal_position or False
taxes_ids = acc_fp_obj.map_tax(cr, uid, fpos, taxes)
+ price_unit = grid_obj.get_price(cr, uid, grid.id, order, time.strftime('%Y-%m-%d'), context)
+ if order.company_id.currency_id.id != order.pricelist_id.currency_id.id:
+ price_unit = currency_obj.compute(cr, uid, order.company_id.currency_id.id, order.pricelist_id.currency_id.id,
+ price_unit, context=dict(context or {}, date=order.date_order))
#create the sale order line
line_obj.create(cr, uid, {
'order_id': order.id,
@@ -89,7 +94,7 @@ class sale_order(osv.Model):
'product_uom_qty': 1,
'product_uom': grid.carrier_id.product_id.uom_id.id,
'product_id': grid.carrier_id.product_id.id,
- 'price_unit': grid_obj.get_price(cr, uid, grid.id, order, time.strftime('%Y-%m-%d'), context),
+ 'price_unit': price_unit,
'tax_id': [(6, 0, taxes_ids)],
'type': 'make_to_stock',
'is_delivery': True
diff --git a/addons/note/note.py b/addons/note/note.py
index 3e419888c28..ee8d6bb139a 100644
--- a/addons/note/note.py
+++ b/addons/note/note.py
@@ -173,7 +173,7 @@ class note_note(osv.osv):
return result
else:
- return super(note_note, self).read_group(self, cr, uid, domain, fields, groupby,
+ return super(note_note, self).read_group(cr, uid, domain, fields, groupby,
offset=offset, limit=limit, context=context, orderby=orderby)