[MERGE] forward port branch saas-14 up to 92e5da6b8f

This commit is contained in:
Christophe Simonis
2018-07-05 15:35:24 +02:00
6 changed files with 32 additions and 13 deletions
+1 -1
View File
@@ -117,7 +117,7 @@ class StockMove(models.Model):
@api.depends('move_lot_ids', 'move_lot_ids.quantity_done', 'quantity_done_store') @api.depends('move_lot_ids', 'move_lot_ids.quantity_done', 'quantity_done_store')
def _qty_done_compute(self): def _qty_done_compute(self):
for move in self: for move in self:
if move.has_tracking != 'none': if move.has_tracking != 'none' or move.sudo().move_lot_ids.mapped('lot_id'):
move.quantity_done = sum(move.move_lot_ids.filtered(lambda x: x.done_wo).mapped('quantity_done')) #TODO: change with active_move_lot_ids? move.quantity_done = sum(move.move_lot_ids.filtered(lambda x: x.done_wo).mapped('quantity_done')) #TODO: change with active_move_lot_ids?
else: else:
move.quantity_done = move.quantity_done_store move.quantity_done = move.quantity_done_store
+10 -6
View File
@@ -3,6 +3,7 @@
from odoo import api, fields, models, _ from odoo import api, fields, models, _
from datetime import datetime from datetime import datetime
import pytz
class CrmTeam(models.Model): class CrmTeam(models.Model):
@@ -41,13 +42,16 @@ class CrmTeam(models.Model):
""" If the type of the sales team is point of sale ('pos'), the graph will display the sales data. """ If the type of the sales team is point of sale ('pos'), the graph will display the sales data.
The override here is to get data from pos.order instead of sale.order. The override here is to get data from pos.order instead of sale.order.
""" """
offset = datetime.now(pytz.timezone(self.env.user.tz or 'UTC')).utcoffset()
min_date = fields.Datetime.to_string(datetime.combine(start_date, datetime.min.time()) - offset)
max_date = fields.Datetime.to_string(datetime.combine(end_date, datetime.max.time()) - offset)
if self.team_type == 'pos': if self.team_type == 'pos':
result = [] result = []
if self.dashboard_graph_group_pos == 'pos': if self.dashboard_graph_group_pos == 'pos':
order_data = self.env['report.pos.order'].read_group( order_data = self.env['report.pos.order'].read_group(
domain=[ domain=[
('date', '>=', fields.Date.to_string(start_date)), ('date', '>=', min_date),
('date', '<=', fields.Datetime.to_string(datetime.combine(end_date, datetime.max.time()))), ('date', '<=', max_date),
('config_id', 'in', self.pos_config_ids.ids), ('config_id', 'in', self.pos_config_ids.ids),
('state', 'in', ['paid', 'done', 'invoiced'])], ('state', 'in', ['paid', 'done', 'invoiced'])],
fields=['config_id', 'price_total'], fields=['config_id', 'price_total'],
@@ -63,8 +67,8 @@ class CrmTeam(models.Model):
elif self.dashboard_graph_group_pos == 'user': elif self.dashboard_graph_group_pos == 'user':
order_data = self.env['report.pos.order'].read_group( order_data = self.env['report.pos.order'].read_group(
domain=[ domain=[
('date', '>=', fields.Date.to_string(start_date)), ('date', '>=', min_date),
('date', '<=', fields.Datetime.to_string(datetime.combine(end_date, datetime.max.time()))), ('date', '<=', max_date),
('config_id', 'in', self.pos_config_ids.ids), ('config_id', 'in', self.pos_config_ids.ids),
('state', 'in', ['paid', 'done', 'invoiced'])], ('state', 'in', ['paid', 'done', 'invoiced'])],
fields=['user_id', 'price_total'], fields=['user_id', 'price_total'],
@@ -78,8 +82,8 @@ class CrmTeam(models.Model):
# /!\ do not use en_US as it's not ISO-standard and does not match datetime's library # /!\ do not use en_US as it's not ISO-standard and does not match datetime's library
order_data = self.env['report.pos.order'].with_context(lang='en_GB').read_group( order_data = self.env['report.pos.order'].with_context(lang='en_GB').read_group(
domain=[ domain=[
('date', '>=', fields.Date.to_string(start_date)), ('date', '>=', min_date),
('date', '<=', fields.Datetime.to_string(datetime.combine(end_date, datetime.max.time()))), ('date', '<=', max_date),
('config_id', 'in', self.pos_config_ids.ids), ('config_id', 'in', self.pos_config_ids.ids),
('state', 'in', ['paid', 'done', 'invoiced'])], ('state', 'in', ['paid', 'done', 'invoiced'])],
fields=['date', 'price_total'], fields=['date', 'price_total'],
+1 -1
View File
@@ -36,7 +36,6 @@ Dashboard / Reports for Project Management will include:
'data': [ 'data': [
'security/project_security.xml', 'security/project_security.xml',
'security/ir.model.access.csv', 'security/ir.model.access.csv',
'data/project_data.xml',
'report/project_report_views.xml', 'report/project_report_views.xml',
'views/project_views.xml', 'views/project_views.xml',
'views/res_partner_views.xml', 'views/res_partner_views.xml',
@@ -46,6 +45,7 @@ Dashboard / Reports for Project Management will include:
'data/web_planner_data.xml', 'data/web_planner_data.xml',
'data/project_mail_template_data.xml', 'data/project_mail_template_data.xml',
'wizard/project_task_merge_wizard_views.xml', 'wizard/project_task_merge_wizard_views.xml',
'data/project_data.xml',
], ],
'qweb': ['static/src/xml/project.xml'], 'qweb': ['static/src/xml/project.xml'],
'demo': ['data/project_demo.xml'], 'demo': ['data/project_demo.xml'],
+1 -1
View File
@@ -177,7 +177,7 @@ class CrmTeam(models.Model):
self.ensure_one() self.ensure_one()
values = [] values = []
today = date.today() today = fields.Date.from_string(fields.Date.context_today(self))
start_date, end_date = self._graph_get_dates(today) start_date, end_date = self._graph_get_dates(today)
graph_data = self._graph_data(start_date, end_date) graph_data = self._graph_data(start_date, end_date)
+6
View File
@@ -405,6 +405,12 @@ actual arch.
self.clear_caches() self.clear_caches()
return super(View, self).write(self._compute_defaults(vals)) return super(View, self).write(self._compute_defaults(vals))
def unlink(self):
# if in uninstall mode and has children views, emulate an ondelete cascade
if self.env.context.get('_force_unlink', False) and self.mapped('inherit_children_ids'):
self.mapped('inherit_children_ids').unlink()
super(View, self).unlink()
@api.multi @api.multi
def toggle(self): def toggle(self):
""" Switches between enabled and disabled statuses """ Switches between enabled and disabled statuses
+13 -4
View File
@@ -123,7 +123,17 @@ def load_module_graph(cr, graph, status=None, perform_checks=True,
continue continue
_logger.debug('loading module %s (%d/%d)', module_name, index, module_count) _logger.debug('loading module %s (%d/%d)', module_name, index, module_count)
migrations.migrate_module(package, 'pre')
needs_update = (
hasattr(package, "init")
or hasattr(package, "update")
or package.state in ("to install", "to upgrade")
)
if needs_update:
if package.name != 'base':
registry.setup_models(cr, partial=True)
migrations.migrate_module(package, 'pre')
load_openerp_module(package.name) load_openerp_module(package.name)
new_install = package.state == 'to install' new_install = package.state == 'to install'
@@ -136,8 +146,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True,
model_names = registry.load(cr, package) model_names = registry.load(cr, package)
loaded_modules.append(package.name) loaded_modules.append(package.name)
if (hasattr(package, 'init') or hasattr(package, 'update') if needs_update:
or package.state in ('to install', 'to upgrade')):
models_updated |= set(model_names) models_updated |= set(model_names)
models_to_check -= set(model_names) models_to_check -= set(model_names)
registry.setup_models(cr, partial=True) registry.setup_models(cr, partial=True)
@@ -157,7 +166,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True,
if hasattr(package, 'init') or package.state == 'to install': if hasattr(package, 'init') or package.state == 'to install':
mode = 'init' mode = 'init'
if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'): if needs_update:
env = api.Environment(cr, SUPERUSER_ID, {}) env = api.Environment(cr, SUPERUSER_ID, {})
# Can't put this line out of the loop: ir.module.module will be # Can't put this line out of the loop: ir.module.module will be
# registered by init_models() above. # registered by init_models() above.