|
@@ -0,0 +1,134 @@
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+##############################################################################
|
|
|
+#
|
|
|
+# OpenERP, Open Source Management Solution
|
|
|
+# Copyright (C) 2004-today OpenERP SA (<http://www.openerp.com>)
|
|
|
+#
|
|
|
+# This program is free software: you can redistribute it and/or modify
|
|
|
+# it under the terms of the GNU Affero General Public License as
|
|
|
+# published by the Free Software Foundation, either version 3 of the
|
|
|
+# License, or (at your option) any later version.
|
|
|
+#
|
|
|
+# This program is distributed in the hope that it will be useful,
|
|
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
+# GNU Affero General Public License for more details.
|
|
|
+#
|
|
|
+# You should have received a copy of the GNU Affero General Public License
|
|
|
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
+#
|
|
|
+##############################################################################
|
|
|
+
|
|
|
+from datetime import datetime
|
|
|
+from openerp.osv import fields, osv
|
|
|
+from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
|
|
|
+from openerp.tools.translate import _
|
|
|
+
|
|
|
+class crm_mensaje(osv.osv):
|
|
|
+ """ Model for CRM Mensajes """
|
|
|
+ _name = "crm.mensaje"
|
|
|
+ _description = "Mensaje"
|
|
|
+ _order = "id desc"
|
|
|
+
|
|
|
+ _columns = {
|
|
|
+ 'date_action_last': fields.datetime('Accion Anterior', readonly=1),
|
|
|
+ 'date_action_next': fields.datetime('Fecha Prox. Accion', readonly=True),
|
|
|
+ 'action_next': fields.char('Prox. Accion'),
|
|
|
+ 'create_date': fields.datetime('Fecha Creado' , readonly=True),
|
|
|
+ 'user_id': fields.many2one('res.users', 'Responsable'),
|
|
|
+ 'partner_id': fields.many2one('res.partner', 'Cliente'),
|
|
|
+ 'company_id': fields.many2one('res.company', 'Compania'),
|
|
|
+ 'description': fields.text('Descripcion'),
|
|
|
+ 'state': fields.selection(
|
|
|
+ [('open', 'Abierto'),
|
|
|
+ ('cancel', 'Cancelado'),
|
|
|
+ ('pending', 'Pendiente'),
|
|
|
+ ('done', 'Realizado')
|
|
|
+ ], string='Estado', readonly=True, track_visibility='onchange',
|
|
|
+ help='El estado se establece en Abierto, cuando se crea un caso.\n'
|
|
|
+ 'Cuando la convesacion termina, el estado se establece en Realizada.\n'
|
|
|
+ 'Si las llamadas no es aplicable más, el estado se puede configurar para Cancelado.'),
|
|
|
+ 'date_open': fields.datetime('Fecha Abierto', readonly=True),
|
|
|
+ # phonecall fields
|
|
|
+ 'name': fields.char('Resumen del mensaje', required=True),
|
|
|
+ 'active': fields.boolean('Activo', required=False),
|
|
|
+ 'partner_phone': fields.char('Celular1'),
|
|
|
+ 'partner_mobile': fields.char('Celular2'),
|
|
|
+ 'priority': fields.selection([('0','P'), ('1','Poco'),('2','Normal'), ('3','Alto')], 'Prioridad'),
|
|
|
+ 'date_closed': fields.datetime('Cerrado', readonly=True),
|
|
|
+ 'opportunity_id': fields.many2one ('crm.lead', 'Iniciativa/Oportunidad'),
|
|
|
+ 'date': fields.datetime('Fecha'),
|
|
|
+ }
|
|
|
+
|
|
|
+ def _get_default_state(self, cr, uid, context=None):
|
|
|
+ if context and context.get('default_state'):
|
|
|
+ return context.get('default_state')
|
|
|
+ return 'open'
|
|
|
+
|
|
|
+ _defaults = {
|
|
|
+ 'date': fields.datetime.now,
|
|
|
+ 'date_action_next': fields.datetime.now,
|
|
|
+ 'priority': '1',
|
|
|
+ 'state': _get_default_state,
|
|
|
+ 'user_id': lambda self, cr, uid, ctx: uid,
|
|
|
+ 'active': 1
|
|
|
+ }
|
|
|
+
|
|
|
+ def on_change_partner_id(self, cr, uid, ids, partner_id, context=None):
|
|
|
+ values = {}
|
|
|
+ if partner_id:
|
|
|
+ partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
|
|
|
+ values = {
|
|
|
+ 'partner_phone': partner.phone,
|
|
|
+ 'partner_mobile': partner.mobile,
|
|
|
+ }
|
|
|
+ return {'value': values}
|
|
|
+
|
|
|
+ def write(self, cr, uid, ids, values, context=None):
|
|
|
+ """ Override to add case management: open/close dates """
|
|
|
+ if values.get('state'):
|
|
|
+ if values.get('state') == 'done':
|
|
|
+ values['date_closed'] = fields.datetime.now()
|
|
|
+ elif values.get('state') == 'open':
|
|
|
+ values['date_open'] = fields.datetime.now()
|
|
|
+ return super(crm_mensaje, self).write(cr, uid, ids, values, context=context)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ def _call_create_partner(self, cr, uid, mensaje, context=None):
|
|
|
+ partner = self.pool.get('res.partner')
|
|
|
+ partner_id = partner.create(cr, uid, {
|
|
|
+ 'name': mensaje.name,
|
|
|
+ 'user_id': mensaje.user_id.id,
|
|
|
+ 'comment': mensaje.description,
|
|
|
+ 'address': []
|
|
|
+ })
|
|
|
+ return partner_id
|
|
|
+
|
|
|
+
|
|
|
+ def _call_set_partner(self, cr, uid, ids, partner_id, context=None):
|
|
|
+ write_res = self.write(cr, uid, ids, {'partner_id' : partner_id}, context=context)
|
|
|
+ self._call_set_partner_send_note(cr, uid, ids, context)
|
|
|
+ return write_res
|
|
|
+
|
|
|
+ def _call_create_partner_address(self, cr, uid, mensaje, partner_id, context=None):
|
|
|
+ address = self.pool.get('res.partner')
|
|
|
+ return address.create(cr, uid, {
|
|
|
+ 'parent_id': partner_id,
|
|
|
+ 'name': mensaje.name,
|
|
|
+ 'phone': mensaje.partner_phone,})
|
|
|
+
|
|
|
+
|
|
|
+class res_partner(osv.osv):
|
|
|
+ _inherit = 'res.partner'
|
|
|
+ def _mensaje_count(self, cr, uid, ids, field_name, arg, context=None):
|
|
|
+ Claim_mensaje = self.pool['crm.mensaje']
|
|
|
+ return {
|
|
|
+ partner_id: Claim_mensaje.search_count(cr,uid, [('partner_id', '=', partner_id)], context=context)
|
|
|
+ for partner_id in ids
|
|
|
+ }
|
|
|
+
|
|
|
+ _columns = {
|
|
|
+ 'mensaje_count': fields.function(_mensaje_count, string='# Contador Mensaje', type='integer'),
|
|
|
+ }
|
|
|
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|