diff --git a/mail_wall_custom/README.rst b/mail_wall_custom/README.rst new file mode 100644 index 0000000..d9aad6e --- /dev/null +++ b/mail_wall_custom/README.rst @@ -0,0 +1,4 @@ +Custom mail wall +================ + +Tested on Odoo 8.0 ab7b5d7732a7c222a0aea45bd173742acd47242d diff --git a/mail_wall_custom/__init__.py b/mail_wall_custom/__init__.py new file mode 100644 index 0000000..bff786c --- /dev/null +++ b/mail_wall_custom/__init__.py @@ -0,0 +1 @@ +import models diff --git a/mail_wall_custom/__openerp__.py b/mail_wall_custom/__openerp__.py new file mode 100644 index 0000000..98b7224 --- /dev/null +++ b/mail_wall_custom/__openerp__.py @@ -0,0 +1,25 @@ +{ + 'name' : 'Custom mail wall', + 'version' : '1.0.0', + 'author' : 'IT-Projects LLC, Ivan Yelizariev', + 'license': 'LGPL-3', + 'category' : 'Custom', + 'website' : 'https://yelizariev.github.io', + 'depends' : ['gamification', + 'gamification_extra', + 'hr', + 'sale', + 'sales_team', + 'crm', + 'calendar', + 'project', + 'mail_wall_widgets', + 'sale_mediation_custom', + 'access_custom', + ], + 'data':[ + 'views.xml', + 'data.xml', + ], + 'installable': False, +} diff --git a/mail_wall_custom/data.xml b/mail_wall_custom/data.xml new file mode 100644 index 0000000..c6878f0 --- /dev/null +++ b/mail_wall_custom/data.xml @@ -0,0 +1,402 @@ + + + + + Average payment time + + + days + avg + progress + + + + lower + [('user_id','=', user.id),('state','in', ['done'])] + + + Average payment time [ALL] + + + days + avg + progress + + + + lower + [('state','in', ['done'])] + + + Average deal time + + + days + avg + progress + + + + lower + [('user_id','=', user.id), ('sales_funnel_type', 'in', ['won']), ('date_closed', '!=', False)] + + + Average deal time [ALL] + + + days + avg + progress + + + + lower + [('sales_funnel_type', 'in', ['won']), ('date_closed', '!=', False)] + + + Oldest lead + + + days + max + progress + lower + [('user_id','=', user.id), ('sales_funnel_type', '=', 'lead')] + + + + + Oldest lead [ALL] + + + days + max + progress + lower + [('sales_funnel_type', '=', 'lead')] + + + + + Oldest Opportunity + + + days + max + progress + lower + [('user_id','=', user.id), '|', ('sales_funnel_type', '=', 'quotation'),('sales_funnel_type', '=', 'negotiation')] + + + + + Oldest Opportunity [ALL] + + + days + max + progress + lower + ['|', ('sales_funnel_type', '=', 'quotation'),('sales_funnel_type', '=', 'negotiation')] + + + + + + Personal comission + + + python + progress + higher + [('state','!=','cancel'),('user_id','=',user.id),('type','=','out_invoice')] + + + + +personal_comission = object.user_id.employee_ids and object.user_id.employee_ids[0].personal_comission or 0.0 +result = object.sum * personal_comission / 100.0 + + + + + Team bonus + Monthly team bonus + + python + progress + higher + [('state','!=','cancel'),('section_id','=',user.default_section_id.id),('type','=','out_invoice')] + + + + + + + + + + dashboard_accountant + + Shows dashboard to accountant + + + dashboard_sales_managment + + Shows sales management dashboard + + + dashboard_managment + + Shows management dashboard. It includes: sales management + accountant dashboard + EXTRA + + + + + dashboard_sales_person + + Shows dashboard to salesperson + + + + dashboard_admin + + Shows admin dashboard + + + + Outstanding sale orders + + [('user_id', '=', user.id),('state', 'in', ['progress', 'manual'])] + + + ${record.partner_id.name}, ${record.date_order}]]> + + list + 10 + + + + + Outstanding sale orders [ALL] + + [('state', 'in', ['progress', 'manual'])] + + + ${record.partner_id.name}, ${record.date_order}]]> + + list + 10 + + + + + Sent invoices [ALL] + + [('type', 'in', ['out_invoice']),('state','in',['open'])] + + + ${record.partner_id.name}, ${record.date_invoice}]]> + + list + 10 + + + + + Received invoices [ALL] + + [('type', 'in', ['in_invoice']),('state','in',['open'])] + + + ${record.partner_id.name}, ${record.date_invoice}]]> + + list + 10 + + + + + Task deadlines + + [('user_id', '=', user.id),('date_deadline','!=',False)] + ${record.project_id and record.project_id.name or 'NO PROJECT'}, ${record.date_deadline}]]> + + + + list + 10 + priority DESC + + + + Task deadlines [ALL] + + [('date_deadline','!=',False)] + ${record.project_id and record.project_id.name or 'NO PROJECT'}, ${record.date_deadline}]]> + + + + list + 10 + priority DESC + + + + + + Next action + + [('user_id', '=', user.id), '|',('date_action','!=',False),('title_action', '!=', False)] + ${record.date_action} - ${record.title_action}]]> + + + + + + list + 10 + priority DESC,probability DESC,planned_revenue DESC + + + + Next action [ALL] + + ['|',('date_action','!=',False),('title_action', '!=', False)] + ${record.date_action} - ${record.title_action}]]> + + + + + + list + 10 + priority DESC,probability DESC,planned_revenue DESC + + + + + Calls + + [('user_id', '=', user.id),('state', 'not in', ['cancel'])] + ${record.partner_id.name}, ${record.date}]]> + + + + list + 10 + date DESC + + + + Calls [ALL] + + [('state', 'not in', ['cancel'])] + ${record.partner_id.name}, ${record.date}]]> + + + + list + 10 + date DESC + + + + + Meetings + + [('partner_ids', 'in', [user.partner_id.id])] + + + + + list + 10 + start_datetime DESC + + + + + Meetings [ALL] + + [] + + + + + + + list + 10 + start_datetime DESC + + + + + Conversion Rate + + [('user_id','=', user.id), ('sales_funnel_type', 'in', ['won', 'lost'])] + + funnel + + + + [('sales_funnel_type', 'in', ['won'])] + + + + Conversion Rate [ALL] + + [('sales_funnel_type', 'in', ['won', 'lost'])] + + funnel + + + + [('sales_funnel_type', 'in', ['won'])] + + + + + Sales contributed + + [('state', 'in', ['done'])] + [('user_id','=', user.id), ('state', 'in', ['done'])] + + slice + + + + + + + + + diff --git a/mail_wall_custom/models.py b/mail_wall_custom/models.py new file mode 100644 index 0000000..0d8b14f --- /dev/null +++ b/mail_wall_custom/models.py @@ -0,0 +1,13 @@ +from openerp import api,models,fields +from openerp.osv import fields as old_fields + +class hr_employee(models.Model): + _inherit = 'hr.employee' + + default_section_id = fields.Many2one('crm.case.section', 'Default Sales Team', related='user_id.default_section_id') + + personal_comission = fields.Float('Personal comission', help='Personal comission for sales. Value 1.0 is equal 1%') + + team_bonus = fields.Float('Team bonus', help='Maximum team bonus (per year). Value 1.0 is equal 1%') + + company_bonus = fields.Float('Company bonus', help='Maximum team bonus (per year). Value 1.0 is equal 1%') diff --git a/mail_wall_custom/static/description/icon.png b/mail_wall_custom/static/description/icon.png new file mode 100644 index 0000000..79f7d8f Binary files /dev/null and b/mail_wall_custom/static/description/icon.png differ diff --git a/mail_wall_custom/views.xml b/mail_wall_custom/views.xml new file mode 100644 index 0000000..3cee23b --- /dev/null +++ b/mail_wall_custom/views.xml @@ -0,0 +1,20 @@ + + + + + hr.employee.form + hr.employee + + + + + + + + + + + + + +