[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')
|
@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
|
||||||
|
|||||||
@@ -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'],
|
||||||
|
|||||||
@@ -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'],
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user