-
+
oe_kanban_text_red
@@ -606,6 +609,7 @@
+
diff --git a/addons/project/static/src/css/project.css b/addons/project/static/src/css/project.css
index 616c8625cd4..3572c45a9fe 100644
--- a/addons/project/static/src/css/project.css
+++ b/addons/project/static/src/css/project.css
@@ -70,3 +70,18 @@
position: relative;
}
+.openerp .oe_kanban_view .oe_kanban_project_task_spark {
+ /* Customize width and height of kanban according bootstrap3 */
+ width: 265px;
+ min-height: 120px;
+ /* End of customize */
+ cursor: default;
+}
+
+.openerp .oe_kanban_view .oe_sparkline_bar {
+ height: 20px;
+ width: 30px;
+ display: inline;
+
+}
+
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py
index 747485d64ce..76e1766c181 100644
--- a/addons/project_issue/project_issue.py
+++ b/addons/project_issue/project_issue.py
@@ -19,8 +19,11 @@
#
##############################################################################
-from datetime import datetime
-
+import calendar
+from datetime import datetime,date
+from dateutil import relativedelta
+import json
+import time
from openerp import api
from openerp import SUPERUSER_ID
from openerp import tools
@@ -480,13 +483,25 @@ class project(osv.Model):
project_id: Issue.search_count(cr,uid, [('project_id', '=', project_id), ('stage_id.fold', '=', False)], context=context)
for project_id in ids
}
+ def _get_project_issue_data(self, cr, uid, ids, field_name, arg, context=None):
+ obj = self.pool['project.issue']
+ month_begin = date.today().replace(day=1)
+ date_begin = (month_begin - relativedelta.relativedelta(months=self._period_number - 1)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
+ date_end = month_begin.replace(day=calendar.monthrange(month_begin.year, month_begin.month)[1]).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
+ res = {}
+ for id in ids:
+ created_domain = [('project_id', '=', id), ('date_closed', '>=', date_begin ), ('date_closed', '<=', date_end )]
+ res[id] = json.dumps(self.__get_bar_values(cr, uid, obj, created_domain, [ 'date_closed'], 'date_closed_count', 'date_closed', context=context))
+ return res
_columns = {
'project_escalation_id': fields.many2one('project.project', 'Project Escalation',
help='If any issue is escalated from the current Project, it will be listed under the project selected here.',
states={'close': [('readonly', True)], 'cancelled': [('readonly', True)]}),
'issue_count': fields.function(_issue_count, type='integer', string="Issues",),
'issue_ids': fields.one2many('project.issue', 'project_id',
- domain=[('stage_id.fold', '=', False)])
+ domain=[('date_closed', '!=', False)]),
+ 'monthly_issues': fields.function(_get_project_issue_data, type='char', readonly=True,
+ string='Project Issue By Month')
}
def _check_escalation(self, cr, uid, ids, context=None):
diff --git a/addons/project_issue/project_issue_demo.xml b/addons/project_issue/project_issue_demo.xml
index 7da36f1d4c6..d55dd648aa9 100644
--- a/addons/project_issue/project_issue_demo.xml
+++ b/addons/project_issue/project_issue_demo.xml
@@ -44,7 +44,7 @@
Bug in Accounts module
agr@agrolait.com
-
+
@@ -59,7 +59,7 @@
Program not giving proper output
-
+
@@ -71,7 +71,7 @@
Output incorrect
-
+
@@ -87,7 +87,7 @@
Problem loading page
-
+
@@ -100,7 +100,7 @@
Page not Found
-
+
@@ -113,7 +113,7 @@
Programming Error
-
+
@@ -129,7 +129,7 @@
Logical Error in Program
-
+
@@ -142,7 +142,7 @@
Constraint Error
-
+
@@ -154,7 +154,7 @@
Error in Program
-
+
@@ -167,7 +167,7 @@
Patches Error in Program
-
+
@@ -180,7 +180,7 @@
New Features To Be Added
-
+
@@ -208,7 +208,7 @@
Include Attendance sheet in Project
contact@tecsas.fr
-
+
@@ -221,7 +221,7 @@
Create new object
-
+
@@ -234,7 +234,7 @@
Improve Reports in HRMS
-
+
@@ -247,7 +247,7 @@
Improve Reports in PMS
-
+
diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml
index 2dd50de04a9..236aea7a7eb 100644
--- a/addons/project_issue/project_issue_view.xml
+++ b/addons/project_issue/project_issue_view.xml
@@ -331,9 +331,12 @@
-
Issues
+
+ Closed Issues
+
diff --git a/addons/sale_service/demo/sale_service_demo.xml b/addons/sale_service/demo/sale_service_demo.xml
index e4622866891..7f9401430fc 100644
--- a/addons/sale_service/demo/sale_service_demo.xml
+++ b/addons/sale_service/demo/sale_service_demo.xml
@@ -12,7 +12,7 @@
5.0
-
+
diff --git a/addons/sale_service/test/project_task_procurement.yml b/addons/sale_service/test/project_task_procurement.yml
index ed996465673..f3105370ba0 100644
--- a/addons/sale_service/test/project_task_procurement.yml
+++ b/addons/sale_service/test/project_task_procurement.yml
@@ -61,7 +61,7 @@
!python {model: project.task}: |
task_ids = self.search(cr, uid, [('sale_line_id', '=', ref('service_line'))])
assert task_ids, "Task is not generated for Service Order Line."
- self.write(cr, uid, task_ids, {'stage_id': ref('project.project_tt_deployment')}, context=context)
+ self.write(cr, uid, task_ids, {'stage_id': ref('project.project_stage_2')}, context=context)
-
I check procurement of Service Order Line after closed task.
-
diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css
index 50a9e54d7be..782a9fba26a 100644
--- a/addons/web_kanban/static/src/css/kanban.css
+++ b/addons/web_kanban/static/src/css/kanban.css
@@ -9,7 +9,7 @@
.openerp .oe_kanban_view .oe_view_nocontent {
position: relative;
max-width: none;
- height: 100%;
+ height: auto;
}
.openerp .oe_kanban_view .oe_view_nocontent .oe_view_nocontent_content {
margin-left: 90px;
diff --git a/addons/web_kanban/static/src/css/kanban.sass b/addons/web_kanban/static/src/css/kanban.sass
index d5f2bfcdbd8..98247d7602f 100644
--- a/addons/web_kanban/static/src/css/kanban.sass
+++ b/addons/web_kanban/static/src/css/kanban.sass
@@ -56,7 +56,7 @@
.oe_view_nocontent
position: relative
max-width: none
- height: 100%
+ height: auto
.oe_view_nocontent_content
margin-left: 90px
margin-top: 5px