123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- # -*- 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:
|