[MERGE] forward port branch saas-14 up to 92e5da6b8f
This commit is contained in:
@@ -117,7 +117,7 @@ class StockMove(models.Model):
|
||||
@api.depends('move_lot_ids', 'move_lot_ids.quantity_done', 'quantity_done_store')
|
||||
def _qty_done_compute(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?
|
||||
else:
|
||||
move.quantity_done = move.quantity_done_store
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from datetime import datetime
|
||||
import pytz
|
||||
|
||||
|
||||
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.
|
||||
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':
|
||||
result = []
|
||||
if self.dashboard_graph_group_pos == 'pos':
|
||||
order_data = self.env['report.pos.order'].read_group(
|
||||
domain=[
|
||||
('date', '>=', fields.Date.to_string(start_date)),
|
||||
('date', '<=', fields.Datetime.to_string(datetime.combine(end_date, datetime.max.time()))),
|
||||
('date', '>=', min_date),
|
||||
('date', '<=', max_date),
|
||||
('config_id', 'in', self.pos_config_ids.ids),
|
||||
('state', 'in', ['paid', 'done', 'invoiced'])],
|
||||
fields=['config_id', 'price_total'],
|
||||
@@ -63,8 +67,8 @@ class CrmTeam(models.Model):
|
||||
elif self.dashboard_graph_group_pos == 'user':
|
||||
order_data = self.env['report.pos.order'].read_group(
|
||||
domain=[
|
||||
('date', '>=', fields.Date.to_string(start_date)),
|
||||
('date', '<=', fields.Datetime.to_string(datetime.combine(end_date, datetime.max.time()))),
|
||||
('date', '>=', min_date),
|
||||
('date', '<=', max_date),
|
||||
('config_id', 'in', self.pos_config_ids.ids),
|
||||
('state', 'in', ['paid', 'done', 'invoiced'])],
|
||||
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
|
||||
order_data = self.env['report.pos.order'].with_context(lang='en_GB').read_group(
|
||||
domain=[
|
||||
('date', '>=', fields.Date.to_string(start_date)),
|
||||
('date', '<=', fields.Datetime.to_string(datetime.combine(end_date, datetime.max.time()))),
|
||||
('date', '>=', min_date),
|
||||
('date', '<=', max_date),
|
||||
('config_id', 'in', self.pos_config_ids.ids),
|
||||
('state', 'in', ['paid', 'done', 'invoiced'])],
|
||||
fields=['date', 'price_total'],
|
||||
|
||||
@@ -36,7 +36,6 @@ Dashboard / Reports for Project Management will include:
|
||||
'data': [
|
||||
'security/project_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'data/project_data.xml',
|
||||
'report/project_report_views.xml',
|
||||
'views/project_views.xml',
|
||||
'views/res_partner_views.xml',
|
||||
@@ -46,6 +45,7 @@ Dashboard / Reports for Project Management will include:
|
||||
'data/web_planner_data.xml',
|
||||
'data/project_mail_template_data.xml',
|
||||
'wizard/project_task_merge_wizard_views.xml',
|
||||
'data/project_data.xml',
|
||||
],
|
||||
'qweb': ['static/src/xml/project.xml'],
|
||||
'demo': ['data/project_demo.xml'],
|
||||
|
||||
@@ -177,7 +177,7 @@ class CrmTeam(models.Model):
|
||||
|
||||
self.ensure_one()
|
||||
values = []
|
||||
today = date.today()
|
||||
today = fields.Date.from_string(fields.Date.context_today(self))
|
||||
start_date, end_date = self._graph_get_dates(today)
|
||||
graph_data = self._graph_data(start_date, end_date)
|
||||
|
||||
|
||||
@@ -405,6 +405,12 @@ actual arch.
|
||||
self.clear_caches()
|
||||
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
|
||||
def toggle(self):
|
||||
""" Switches between enabled and disabled statuses
|
||||
|
||||
+13
-4
@@ -123,7 +123,17 @@ def load_module_graph(cr, graph, status=None, perform_checks=True,
|
||||
continue
|
||||
|
||||
_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)
|
||||
|
||||
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)
|
||||
|
||||
loaded_modules.append(package.name)
|
||||
if (hasattr(package, 'init') or hasattr(package, 'update')
|
||||
or package.state in ('to install', 'to upgrade')):
|
||||
if needs_update:
|
||||
models_updated |= set(model_names)
|
||||
models_to_check -= set(model_names)
|
||||
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':
|
||||
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, {})
|
||||
# Can't put this line out of the loop: ir.module.module will be
|
||||
# registered by init_models() above.
|
||||
|
||||
Reference in New Issue
Block a user