Merge with Trunk Addons
bzr revid: vir@tinyerp.com-20100205085323-txuyggcqh5hmoyzc
This commit is contained in:
@@ -327,7 +327,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Invoice">
|
||||
<group col="10" colspan="4">
|
||||
<filter icon="terp-account" string="Draft" domain="[('state','=','draft')]" help="Draft Invoices"/>
|
||||
<filter icon="terp-account" string="Draft" domain="[('state','=','draft')]" help="Draft Invoices"/>
|
||||
<filter icon="terp-account" string="Proforma" domain="[('state','=','proforma2')]" help="Proforma Invoices"/>
|
||||
<filter icon="terp-account" string="Unpaid" domain="[('state','in',('open','cancel'))]" help="Unpaid Invoices"/>
|
||||
<separator orientation="vertical"/>
|
||||
@@ -335,7 +335,12 @@
|
||||
<field name="partner_id" select='1'/>
|
||||
<field name="amount_total" string="Price" select='1'/>
|
||||
<field name="origin" select='1'/>
|
||||
</group>
|
||||
</group>
|
||||
<group expand="context.get('report',False)" string="Group By..." colspan="4" col="10">
|
||||
<filter string="By Partner" icon="terp-account" domain="[]" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="By State" icon="terp-account" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Date Invoice" icon="terp-account" domain="[]" context="{'group_by':'date_invoice'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -873,7 +873,7 @@
|
||||
<field name="partner_id" invisible="1" select="1"/>
|
||||
<field name="amount" invisible="1" select="1"/>
|
||||
|
||||
<field colspan="4" name="line_id" nolabel="1" widget="one2many_list" default_get="{'lines':line_id ,'journal':journal_id }">
|
||||
<field colspan="4" height="250" name="line_id" nolabel="1" widget="one2many_list" default_get="{'lines':line_id ,'journal':journal_id }">
|
||||
<form string="Account Entry Line">
|
||||
<separator colspan="4" string="General Information"/>
|
||||
<field name="name" select="1"/>
|
||||
|
||||
@@ -7,13 +7,13 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.0\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2010-01-29 14:02+0000\n"
|
||||
"Last-Translator: Carlo <Unknown>\n"
|
||||
"PO-Revision-Date: 2010-02-03 19:01+0000\n"
|
||||
"Last-Translator: Davide Corio <davide.corio@domsense.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-01-30 04:39+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account
|
||||
@@ -288,6 +288,11 @@ msgid ""
|
||||
"date empty, it means direct payment. The payment term may compute several "
|
||||
"due dates, for example 50% now, 50% in one month."
|
||||
msgstr ""
|
||||
"Se vengono utilizzati i termini di pagamento, la data di scadenza verrà "
|
||||
"calcolata automaticamente alla generazione dei movimenti contabili. Se i "
|
||||
"termini di pagamento e la data di scadenza non vengono valorizzati, equivale "
|
||||
"al pagamento diretto. Il termine di pagamento può essere calcolato a fronte "
|
||||
"di diverse scadenze, per esempio 50% subito e 50% dopo un mese."
|
||||
|
||||
#. module: account
|
||||
#: selection:account.tax,type:0
|
||||
@@ -321,7 +326,7 @@ msgstr "Origine"
|
||||
#. module: account
|
||||
#: rml:account.analytic.account.journal:0
|
||||
msgid "Move Name"
|
||||
msgstr ""
|
||||
msgstr "Nome Movimento"
|
||||
|
||||
#. module: account
|
||||
#: xsl:account.transfer:0
|
||||
@@ -353,7 +358,7 @@ msgstr "Tassa"
|
||||
#. module: account
|
||||
#: rml:account.general.journal:0
|
||||
msgid "Debit Trans."
|
||||
msgstr ""
|
||||
msgstr "Debito Trans."
|
||||
|
||||
#. module: account
|
||||
#: field:account.analytic.line,account_id:0
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management"/>
|
||||
<menuitem id="next_id_71" name="Financial Project Management" parent="base.menu_main_pm" groups="account.group_account_invoice" sequence="20"/>
|
||||
<menuitem id="menu_invoicing" name="Invoicing" parent="next_id_71" sequence="20"/>
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-02 04:48+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
|
||||
@@ -14,7 +14,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-03 04:47+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-02 04:48+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_followup
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-03 04:47+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_reporting
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-02 04:48+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: auction
|
||||
|
||||
@@ -30,9 +30,14 @@ import pooler
|
||||
import pytz
|
||||
import re
|
||||
import tools
|
||||
import vobject
|
||||
import time
|
||||
|
||||
|
||||
try:
|
||||
import vobject
|
||||
except ImportError:
|
||||
raise osv.except_osv('vobject Import Error!','Please install python-vobject from http://vobject.skyhouseconsulting.com/')
|
||||
|
||||
# O-1 Optional and can come only once
|
||||
# O-n Optional and can come more than once
|
||||
# R-1 Required and can come only once
|
||||
@@ -66,33 +71,33 @@ def openobjectid2uid(cr, uidval, oomodel):
|
||||
return value
|
||||
|
||||
def get_attribute_mapping(cr, uid, calname, context={}):
|
||||
if not context:
|
||||
context = {}
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
field_obj = pool.get('basic.calendar.fields')
|
||||
type_obj = pool.get('basic.calendar.lines')
|
||||
domain = [('object_id.model', '=', context.get('model'))]
|
||||
if context.get('calendar_id'):
|
||||
domain.append(('calendar_id', '=', context.get('calendar_id')))
|
||||
type_id = type_obj.search(cr, uid, domain)
|
||||
fids = field_obj.search(cr, uid, [('type_id', '=', type_id[0])])
|
||||
res = {}
|
||||
for field in field_obj.browse(cr, uid, fids):
|
||||
attr = field.name.name
|
||||
res[attr] = {}
|
||||
res[attr]['field'] = field.field_id.name
|
||||
res[attr]['type'] = field.field_id.ttype
|
||||
if field.fn == 'hours':
|
||||
res[attr]['type'] = "timedelta"
|
||||
if res[attr]['type'] in ('one2many', 'many2many', 'many2one'):
|
||||
res[attr]['object'] = field.field_id.relation
|
||||
elif res[attr]['type'] in ('selection') and field.mapping:
|
||||
res[attr]['mapping'] = eval(field.mapping)
|
||||
if not res.get('uid', None):
|
||||
res['uid'] = {}
|
||||
res['uid']['field'] = 'id'
|
||||
res['uid']['type'] = "integer"
|
||||
return res
|
||||
if not context:
|
||||
context = {}
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
field_obj = pool.get('basic.calendar.fields')
|
||||
type_obj = pool.get('basic.calendar.lines')
|
||||
domain = [('object_id.model', '=', context.get('model'))]
|
||||
if context.get('calendar_id'):
|
||||
domain.append(('calendar_id', '=', context.get('calendar_id')))
|
||||
type_id = type_obj.search(cr, uid, domain)
|
||||
fids = field_obj.search(cr, uid, [('type_id', '=', type_id[0])])
|
||||
res = {}
|
||||
for field in field_obj.browse(cr, uid, fids):
|
||||
attr = field.name.name
|
||||
res[attr] = {}
|
||||
res[attr]['field'] = field.field_id.name
|
||||
res[attr]['type'] = field.field_id.ttype
|
||||
if field.fn == 'hours':
|
||||
res[attr]['type'] = "timedelta"
|
||||
if res[attr]['type'] in ('one2many', 'many2many', 'many2one'):
|
||||
res[attr]['object'] = field.field_id.relation
|
||||
elif res[attr]['type'] in ('selection') and field.mapping:
|
||||
res[attr]['mapping'] = eval(field.mapping)
|
||||
if not res.get('uid', None):
|
||||
res['uid'] = {}
|
||||
res['uid']['field'] = 'id'
|
||||
res['uid']['type'] = "integer"
|
||||
return res
|
||||
|
||||
def map_data(cr, uid, obj):
|
||||
vals = {}
|
||||
@@ -345,13 +350,13 @@ class Calendar(CalDAV, osv.osv):
|
||||
_columns = {
|
||||
'name': fields.char("Name", size=64),
|
||||
'line_ids': fields.one2many('basic.calendar.lines', 'calendar_id', 'Calendar Lines'),
|
||||
'active': fields.boolean('Active'),
|
||||
'active': fields.boolean('Active'),
|
||||
'create_date': fields.datetime('Created Date'),
|
||||
'write_date': fields.datetime('Modifided Date'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'active': lambda *a: True,
|
||||
'active': lambda *a: True,
|
||||
}
|
||||
|
||||
def export_cal(self, cr, uid, ids, vobj='vevent', context={}):
|
||||
@@ -413,7 +418,7 @@ class basic_calendar_line(osv.osv):
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'domain': lambda *a: '[]',
|
||||
'domain': lambda *a: '[]',
|
||||
}
|
||||
|
||||
basic_calendar_line()
|
||||
@@ -422,11 +427,11 @@ class basic_calendar_attribute(osv.osv):
|
||||
_name = 'basic.calendar.attributes'
|
||||
_description = 'Calendar attributes'
|
||||
_columns = {
|
||||
'name': fields.char("Name", size=64, required=True),
|
||||
'name': fields.char("Name", size=64, required=True),
|
||||
'type': fields.selection([('vevent', 'Event'), ('vtodo', 'TODO'), \
|
||||
('alarm', 'Alarm'), \
|
||||
('attendee', 'Attendee')], \
|
||||
string="Type", size=64, required=True),
|
||||
string="Type", size=64, required=True),
|
||||
}
|
||||
|
||||
basic_calendar_attribute()
|
||||
@@ -436,20 +441,20 @@ class basic_calendar_fields(osv.osv):
|
||||
_description = 'Calendar fields'
|
||||
|
||||
_columns = {
|
||||
'field_id': fields.many2one('ir.model.fields', 'OpenObject Field'),
|
||||
'name': fields.many2one('basic.calendar.attributes', 'Name', required=True),
|
||||
'field_id': fields.many2one('ir.model.fields', 'OpenObject Field'),
|
||||
'name': fields.many2one('basic.calendar.attributes', 'Name', required=True),
|
||||
'type_id': fields.many2one('basic.calendar.lines', 'Type', \
|
||||
required=True, ondelete='cascade'),
|
||||
'expr': fields.char("Expression", size=64),
|
||||
'fn': fields.selection( [('field', 'Use the field'),
|
||||
('const', 'Expression as constant'),
|
||||
('hours', 'Interval in hours'),
|
||||
],'Function'),
|
||||
required=True, ondelete='cascade'),
|
||||
'expr': fields.char("Expression", size=64),
|
||||
'fn': fields.selection([('field', 'Use the field'),
|
||||
('const', 'Expression as constant'),
|
||||
('hours', 'Interval in hours'),
|
||||
], 'Function'),
|
||||
'mapping': fields.text('Mapping'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'fn': lambda *a: 'field',
|
||||
'fn': lambda *a: 'field',
|
||||
}
|
||||
|
||||
def check_line(self, cr, uid, vals, name, context=None):
|
||||
@@ -471,7 +476,7 @@ class basic_calendar_fields(osv.osv):
|
||||
name = cr.fetchone()
|
||||
name = name[0]
|
||||
if name in ('valarm', 'attendee'):
|
||||
self.check_line(cr, uid, vals, name, context=context)
|
||||
self.check_line(cr, uid, vals, name, context=context)
|
||||
cr.execute("Select count(id) from basic_calendar_fields \
|
||||
where name=%s and type_id=%s" % (vals.get('name'), vals.get('type_id')))
|
||||
res = cr.fetchone()
|
||||
@@ -487,7 +492,7 @@ class basic_calendar_fields(osv.osv):
|
||||
field = self.browse(cr, uid, id, context=context)
|
||||
name = field.name.name
|
||||
if name in ('valarm', 'attendee'):
|
||||
self.check_line(cr, uid, vals, name, context=context)
|
||||
self.check_line(cr, uid, vals, name, context=context)
|
||||
qry = "Select count(id) from basic_calendar_fields \
|
||||
where name=%s and type_id=%s" % (field.name.id, field.type_id.id)
|
||||
cr.execute(qry)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
<data noupdate="1">
|
||||
|
||||
|
||||
<!-- Event attributes-->
|
||||
@@ -54,7 +54,12 @@
|
||||
<field name="name">valarm</field>
|
||||
<field name="type">vevent</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_event_vtimezone">
|
||||
<field name="name">vtimezone</field>
|
||||
<field name="type">vevent</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_event_priority">
|
||||
<field name="name">priority</field>
|
||||
<field name="type">vevent</field>
|
||||
@@ -172,7 +177,12 @@
|
||||
<field name="name">seq</field>
|
||||
<field name="type">vtodo</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_todo_vtimezone">
|
||||
<field name="name">vtimezone</field>
|
||||
<field name="type">vtodo</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_todo_url">
|
||||
<field name="name">url</field>
|
||||
<field name="type">vtodo</field>
|
||||
|
||||
@@ -419,6 +419,15 @@
|
||||
res_model="res.partner.job"
|
||||
src_model="res.partner"
|
||||
/>
|
||||
|
||||
<!-- Act window defining a shorcut on partner address to open all his jobs -->
|
||||
<act_window
|
||||
id="act_res_partner_jobs" name="Open Jobs"
|
||||
domain="[('address_id', '=', active_id)]"
|
||||
res_model="res.partner.job"
|
||||
src_model="res.partner.address"
|
||||
/>
|
||||
|
||||
<menuitem icon="terp-purchase" id="base.menu_purchase_root" name="Procurement Management"/>
|
||||
<menuitem id="base.menu_procurement_management_supplier" name="Suppliers"
|
||||
parent="base.menu_purchase_root" sequence="3"/>
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-02 04:48+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: base_contact
|
||||
|
||||
@@ -7,13 +7,13 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2009-11-17 06:51+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-02-03 23:27+0000\n"
|
||||
"Last-Translator: Artyom Packhomov <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2009-12-16 05:26+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-05 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: base_module_merge
|
||||
@@ -60,7 +60,7 @@ msgstr "Версия"
|
||||
#: wizard_view:base_module_merge.module_merge,info:0
|
||||
#: wizard_view:base_module_merge.module_merge,save:0
|
||||
msgid "Module Recording"
|
||||
msgstr ""
|
||||
msgstr "Запись модуля"
|
||||
|
||||
#. module: base_module_merge
|
||||
#: wizard_view:base_module_merge.module_merge,save:0
|
||||
|
||||
@@ -8,13 +8,13 @@ msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2009-12-07 16:08+0000\n"
|
||||
"Last-Translator: Pedro_Maschio <pedro.bicudo@tgtconsult.com.br>\n"
|
||||
"PO-Revision-Date: 2010-02-04 10:26+0000\n"
|
||||
"Last-Translator: Holverat Bortolossi <holverat@gmail.com>\n"
|
||||
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2009-12-16 05:26+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-05 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: base_module_quality
|
||||
@@ -27,18 +27,18 @@ msgstr "Pontuação Final (%)"
|
||||
msgid ""
|
||||
"The Object name must start with x_ and not contain any special character !"
|
||||
msgstr ""
|
||||
"O nome do objeto precisa iniciar com x_ e não conter nenhum caracter "
|
||||
"O nome do Objeto deve começar com x_ e não deve conter nenhum caracter "
|
||||
"especial!"
|
||||
|
||||
#. module: base_module_quality
|
||||
#: model:ir.module.module,shortdesc:base_module_quality.module_meta_information
|
||||
msgid "Base module quality"
|
||||
msgstr "Qualidade do módulo base"
|
||||
msgstr "Módulo base da qualidade"
|
||||
|
||||
#. module: base_module_quality
|
||||
#: field:module.quality.check,name:0
|
||||
msgid "Rated Module"
|
||||
msgstr "Nota do Módulo"
|
||||
msgstr "Módulo Avaliado"
|
||||
|
||||
#. module: base_module_quality
|
||||
#: view:module.quality.detail:0
|
||||
@@ -53,7 +53,7 @@ msgstr "Nota"
|
||||
#. module: base_module_quality
|
||||
#: field:module.quality.detail,state:0
|
||||
msgid "State"
|
||||
msgstr "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
#. module: base_module_quality
|
||||
#: field:module.quality.detail,detail:0
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-03 04:47+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: base_module_quality
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-03 04:47+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: base_report_creator
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-03 04:47+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: base_setup
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-03 04:47+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: base_vat
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-03 04:47+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: board_crm_configuration
|
||||
|
||||
@@ -37,6 +37,5 @@ This module implements a dashboard for human resource management that includes:
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -55,9 +55,9 @@
|
||||
<child1>
|
||||
<!-- <action colspan="4" height="220" name="%(act_my_project)d" string="My projects" width="510"/>-->
|
||||
|
||||
<action colspan="4" height="150" name="%(act_my_account)d" string="My accounts to invoice"/>
|
||||
<action colspan="4" height="150" name="%(act_my_account)d" string="My accounts to invoice" width="510"/>
|
||||
|
||||
<action colspan="4" height="150" name="%(act_hr_timesheet_sheet)d" string="User's timesheets"/>
|
||||
<action colspan="4" height="150" name="%(act_hr_timesheet_sheet)d" string="User's timesheets" width="510"/>
|
||||
|
||||
</child1>
|
||||
<child2>
|
||||
|
||||
@@ -92,11 +92,12 @@
|
||||
<hpaned>
|
||||
<child1>
|
||||
<action colspan="4" height="220" name="%(action_view_task_tree)d" string="My Open Tasks" width="510"/>
|
||||
<action colspan="4" height="150" name="%(action_view_project_member_tree)d" string="Members list of project"/>
|
||||
<action colspan="4" name="%(crm_project.crm_case_categ_act0)d" string="Issues"/>
|
||||
|
||||
</child1>
|
||||
<child2>
|
||||
<action colspan="4" height="150" name="%(action_view_project_member_tree)d" string="Members list of project"/>
|
||||
<action colspan="4" name="%(action_view_project_editable_messages_tree)d" string="Messages"/>
|
||||
<action colspan="4" name="%(crm_project.crm_case_categ_act0)d" string="Issues"/>
|
||||
</child2>
|
||||
</hpaned>
|
||||
</form>
|
||||
|
||||
+152
-62
@@ -67,52 +67,110 @@ def _links_get(self, cr, uid, context={}):
|
||||
return [(r['object'], r['name']) for r in res]
|
||||
|
||||
html_invitation = """
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
|
||||
<title>%(name)s</title>
|
||||
</head>
|
||||
<div>
|
||||
<table cellspacing="0" cellpadding="0" border=3D "1" summary=3D"">
|
||||
<tr align="center">
|
||||
<body>
|
||||
<table border="0" cellspacing="10" cellpadding="0" width="100%%"
|
||||
style="font-family: Arial, Sans-serif; font-size: 14">
|
||||
<tr>
|
||||
<td width="100%%">Hello,</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%%">You are invited for <i>%(company)s</i> Event.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%%">Below are the details of event:</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="5" border="0" summary=""
|
||||
style="width: 90%%; font-family: Arial, Sans-serif; border: 1px Solid #ccc; background-color: #f6f6f6">
|
||||
<tr valign="center" align="center">
|
||||
<td bgcolor="DFDFDF">
|
||||
<h3>%(name)s</h3>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table cellpadding="8" cellspacing="0" border=3D "0" summary=3D
|
||||
"Eventdetails" bgcolor="f6f6f6">
|
||||
<table cellpadding="8" cellspacing="0" border="0"
|
||||
style="font-size: 14" summary="Eventdetails" bgcolor="f6f6f6"
|
||||
width="90%%">
|
||||
<tr>
|
||||
<td>
|
||||
<div><b><i>Start Date</i></b></div>
|
||||
<td width="21%%">
|
||||
<div><b>Start Date</b></div>
|
||||
</td>
|
||||
<td><b>:</b></td>
|
||||
<td>%(start_date)s</td>
|
||||
<td>
|
||||
<div><b><i>End Date</i></b></div>
|
||||
<td width="15%%">
|
||||
<div><b>End Date</b></div>
|
||||
</td>
|
||||
<td>%(end_date)s</td>
|
||||
<td><b>:</b></td>
|
||||
<td width="25%%">%(end_date)s</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b><i>Description</i></b></td>
|
||||
<tr valign="top">
|
||||
<td><b>Description</b></td>
|
||||
<td><b>:</b></td>
|
||||
<td colspan="3">%(description)s</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<div><b><i>Location</i></b></div>
|
||||
<div><b>Location</b></div>
|
||||
</td>
|
||||
<td><b>:</b></td>
|
||||
<td colspan="3">%(location)s</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<div><b><i>Event Attendees</i></b></div>
|
||||
<div><b>Event Attendees</b></div>
|
||||
</td>
|
||||
<td><b>:</b></td>
|
||||
<td colspan="3">
|
||||
<div>
|
||||
<div>%(attendees)s</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>"""
|
||||
<tr valign="top">
|
||||
<td><b>Are you coming?</b></td>
|
||||
<td><b>:</b></td>
|
||||
<td colspan="3">
|
||||
<UL>
|
||||
<LI>YES</LI>
|
||||
<LI>NO</LI>
|
||||
<LI>MAYBE</LI>
|
||||
</UL>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table border="0" cellspacing="10" cellpadding="0" width="100%%"
|
||||
style="font-family: Arial, Sans-serif; font-size: 14">
|
||||
<tr>
|
||||
<td width="100%%"><b>Note:</b> If you are interested please reply this
|
||||
mail and keep only your response from options <i>YES, NO</i>
|
||||
and <i>MAYBE</i>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%%">From:</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%%">%(user)s</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td width="100%%">-<font color="a7a7a7">-------------------------</font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="100%%"> <font color="a7a7a7">%(sign)s</font></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
"""
|
||||
|
||||
class calendar_attendee(osv.osv):
|
||||
_name = 'calendar.attendee'
|
||||
@@ -130,13 +188,6 @@ class calendar_attendee(osv.osv):
|
||||
name = name[0]
|
||||
result = {}
|
||||
|
||||
def get_delegate_data(user):
|
||||
if not user.address_id.email:
|
||||
raise osv.except_osv(_('Error!'), \
|
||||
("User does not have an email Address"))
|
||||
email = (user.address_id and ('MAILTO:' + user.address_id.email)) or ''
|
||||
return email
|
||||
|
||||
for attdata in self.browse(cr, uid, ids, context=context):
|
||||
id = attdata.id
|
||||
result[id] = {}
|
||||
@@ -155,13 +206,10 @@ class calendar_attendee(osv.osv):
|
||||
else:
|
||||
result[id][name] = self._get_address(None, attdata.email)
|
||||
if name == 'delegated_to':
|
||||
user_obj = self.pool.get('res.users')
|
||||
todata = map(get_delegate_data, attdata.del_to_user_ids)
|
||||
todata = map(lambda x:('MAILTO:' + x.email) or '', attdata.del_to_user_ids)
|
||||
result[id][name] = ', '.join(todata)
|
||||
if name == 'delegated_from':
|
||||
dstring = []
|
||||
user_obj = self.pool.get('res.users')
|
||||
fromdata = map(get_delegate_data, attdata.del_from_user_ids)
|
||||
fromdata = map(lambda x:('MAILTO:' + x.email) or '', attdata.del_from_user_ids)
|
||||
result[id][name] = ', '.join(fromdata)
|
||||
if name == 'event_date':
|
||||
if attdata.ref:
|
||||
@@ -189,7 +237,7 @@ class calendar_attendee(osv.osv):
|
||||
result[id][name] = uid
|
||||
if name == 'language':
|
||||
user_obj = self.pool.get('res.users')
|
||||
lang = user_obj.read(cr, uid, uid, ['context_lang']) ['context_lang']
|
||||
lang = user_obj.read(cr, uid, uid, ['context_lang'])['context_lang']
|
||||
result[id][name] = lang.replace('_', '-')
|
||||
return result
|
||||
|
||||
@@ -230,17 +278,17 @@ class calendar_attendee(osv.osv):
|
||||
string='Delegated To', type="char", size=124, store=True, \
|
||||
multi='delegated_to', help="The users that the original \
|
||||
request was delegated to"),
|
||||
'del_to_user_ids': fields.many2many('res.users', 'att_del_to_user_rel',
|
||||
'del_to_user_ids': fields.many2many('calendar.attendee', 'att_del_to_user_rel',
|
||||
'attendee_id', 'user_id', 'Users'),
|
||||
'delegated_from': fields.function(_compute_data, method=True, string=\
|
||||
'Delegated From', type="char", store=True, size=124, multi='delegated_from'),
|
||||
'del_from_user_ids': fields.many2many('res.users', 'att_del_from_user_rel', \
|
||||
'del_from_user_ids': fields.many2many('calendar.attendee', 'att_del_from_user_rel', \
|
||||
'attendee_id', 'user_id', 'Users'),
|
||||
'sent_by': fields.function(_compute_data, method=True, string='Sent By', type="char", multi='sent_by', store=True, size=124, help="Specify the user that is acting on behalf of the calendar user"),
|
||||
'sent_by_uid': fields.function(_compute_data, method=True, string='Sent By User', type="many2one", relation="res.users", multi='sent_by_uid'),
|
||||
'sent_by_uid': fields.function(_compute_data, method=True, string='Sent By User', type="many2one", relation="res.users", multi='sent_by_uid'),
|
||||
'cn': fields.function(_compute_data, method=True, string='Common name', type="char", size=124, multi='cn', store=True),
|
||||
'dir': fields.char('URI Reference', size=124, help="Reference to the URI that points to the directory information corresponding to the attendee."),
|
||||
'language': fields.function(_compute_data, method=True, string='Language', type="selection", selection=_lang_get, multi='language', store=True, help="To specify the language for text values in a property or property parameter."),
|
||||
'language': fields.function(_compute_data, method=True, string='Language', type="selection", selection=_lang_get, multi='language', store=True, help="To specify the language for text values in a property or property parameter."),
|
||||
'user_id': fields.many2one('res.users', 'User'),
|
||||
'partner_address_id': fields.many2one('res.partner.address', 'Contact'),
|
||||
'partner_id':fields.related('partner_address_id', 'partner_id', type='many2one', relation='res.partner', string='Partner'),
|
||||
@@ -253,6 +301,30 @@ request was delegated to"),
|
||||
_defaults = {
|
||||
'state': lambda *x: 'needs-action',
|
||||
}
|
||||
|
||||
response_re = response_re = re.compile("Are you coming\?.*(YES|NO|MAYBE).*", re.UNICODE)
|
||||
|
||||
def msg_new(self, cr, uid, msg):
|
||||
return False
|
||||
|
||||
def msg_act_get(self, msg):
|
||||
mailgate_obj = self.pool.get('mail.gateway')
|
||||
body = mailgate_obj.msg_body_get(msg)
|
||||
actions = {}
|
||||
res = self.response_re.findall(body['body'])
|
||||
if res:
|
||||
actions['state'] = res[0]
|
||||
return actions
|
||||
|
||||
def msg_update(self, cr, uid, ids, msg, data={}, default_act='None'):
|
||||
msg_actions = self.msg_act_get(msg)
|
||||
if msg_actions.get('state'):
|
||||
if msg_actions['state'] in ['YES', 'NO', 'MAYBE']:
|
||||
mapping = {'YES': 'accepted', 'NO': 'declined', 'MAYBE': 'tentative'}
|
||||
status = mapping[msg_actions['state']]
|
||||
print 'Got response for invitation id: %s as %s' % (ids, status)
|
||||
self.write(cr, uid, ids, {'state': status})
|
||||
return True
|
||||
|
||||
def onchange_user_id(self, cr, uid, ids, user_id, *args, **argv):
|
||||
if not user_id:
|
||||
@@ -278,7 +350,7 @@ request was delegated to"),
|
||||
vals['cn'] = vals.get("cn")
|
||||
res = super(calendar_attendee, self).create(cr, uid, vals, context)
|
||||
return res
|
||||
|
||||
|
||||
calendar_attendee()
|
||||
|
||||
class res_alarm(osv.osv):
|
||||
@@ -352,7 +424,7 @@ are both optional, but if one occurs, so MUST the other"""),
|
||||
model_obj = self.pool.get(model)
|
||||
for datas in model_obj.browse(cr, uid, ids):
|
||||
alarm_ids = alarm_obj.search(cr, uid, [('model_id', '=', model_id), ('res_id', '=', datas.id)])
|
||||
if alarm_ids and len(alarm_ids):
|
||||
if alarm_ids:
|
||||
alarm_obj.unlink(cr, uid, alarm_ids)
|
||||
cr.execute('Update %s set caldav_alarm_id=NULL, alarm_id=NULL\
|
||||
where id=%s' % (model_obj._table, datas.id))
|
||||
@@ -414,7 +486,7 @@ or contains the text to be used for display"""),
|
||||
res = super(calendar_alarm, self).create(cr, uid, vals, context)
|
||||
return res
|
||||
|
||||
def do_run_scheduler(self, cr, uid, automatic=False, use_new_cursor=False, \
|
||||
def do_run_scheduler(self, cr, uid, automatic=False, use_new_cursor=False,\
|
||||
context=None):
|
||||
if not context:
|
||||
context = {}
|
||||
@@ -457,13 +529,13 @@ or contains the text to be used for display"""),
|
||||
%s
|
||||
|
||||
""" % (alarm.name, alarm.trigger_date, alarm.description, \
|
||||
alarm.user_id.name, alarm.user_id.sign)
|
||||
alarm.user_id.name, alarm.user_id.signature)
|
||||
mail_to = [alarm.user_id.address_id.email]
|
||||
for att in alarm.attendee_ids:
|
||||
mail_to.append(att.user_id.address_id.email)
|
||||
|
||||
tools.email_send(
|
||||
tools.confirm['from_mail'],
|
||||
tools.config.get('email_from', False),
|
||||
mail_to,
|
||||
sub,
|
||||
body
|
||||
@@ -479,7 +551,7 @@ class calendar_event(osv.osv):
|
||||
_description = "Calendar Event"
|
||||
__attribute__ = {}
|
||||
|
||||
def _tz_get(self,cr,uid, context={}):
|
||||
def _tz_get(self, cr, uid, context={}):
|
||||
return [(x.lower(), x) for x in pytz.all_timezones]
|
||||
|
||||
def onchange_rrule_type(self, cr, uid, ids, rtype, *args, **argv):
|
||||
@@ -518,7 +590,7 @@ class calendar_event(osv.osv):
|
||||
'name': fields.char('Description', size=64, required=True),
|
||||
'date': fields.datetime('Date'),
|
||||
'date_deadline': fields.datetime('Deadline'),
|
||||
'create_date': fields.datetime('Created' ,readonly=True),
|
||||
'create_date': fields.datetime('Created', readonly=True),
|
||||
'duration': fields.function(_get_duration, method=True, \
|
||||
fnct_inv=_set_duration, string='Duration'),
|
||||
'description': fields.text('Your action'),
|
||||
@@ -541,7 +613,7 @@ rule or repeating pattern for anexception to a recurrence set"),
|
||||
'caldav_alarm_id': fields.many2one('calendar.alarm', 'Alarm'),
|
||||
'recurrent_uid': fields.integer('Recurrent ID'),
|
||||
'recurrent_id': fields.datetime('Recurrent ID date'),
|
||||
'vtimezone': fields.selection(_tz_get, 'Timezone', size=64),
|
||||
'vtimezone': fields.selection(_tz_get, 'Timezone', size=64),
|
||||
'user_id': fields.many2one('res.users', 'Responsible'),
|
||||
}
|
||||
|
||||
@@ -565,8 +637,8 @@ rule or repeating pattern for anexception to a recurrence set"),
|
||||
def check_import(self, cr, uid, vals, context={}):
|
||||
ids = []
|
||||
for val in vals:
|
||||
exists, r_id = base_calendar.uid2openobjectid(cr, val['id'], self._name, \
|
||||
val.get('recurrent_id'))
|
||||
exists, r_id = base_calendar.uid2openobjectid(cr, val['id'], \
|
||||
self._name, val.get('recurrent_id'))
|
||||
if val.has_key('create_date'): val.pop('create_date')
|
||||
val['caldav_url'] = context.get('url') or ''
|
||||
val.pop('id')
|
||||
@@ -680,8 +752,8 @@ rule or repeating pattern for anexception to a recurrence set"),
|
||||
start_date = arg[2]
|
||||
elif arg[1] in ('<', '<='):
|
||||
until_date = arg[2]
|
||||
res = super(calendar_event, self).search(cr, uid, args_without_date, offset,
|
||||
limit, order, context, count)
|
||||
res = super(calendar_event, self).search(cr, uid, args_without_date, \
|
||||
offset, limit, order, context, count)
|
||||
return self.get_recurrent_ids(cr, uid, res, start_date, until_date, limit)
|
||||
|
||||
|
||||
@@ -753,8 +825,7 @@ rule or repeating pattern for anexception to a recurrence set"),
|
||||
for record in self.read(cr, uid, [caldav_id2real_id(id)], \
|
||||
['date', 'rrule', 'exdate']):
|
||||
if record['rrule']:
|
||||
exdate = (record['exdate'] and (record['exdate'] + ',') or '') + \
|
||||
''.join((re.compile('\d')).findall(date_new)) + 'Z'
|
||||
exdate = (record['exdate'] and (record['exdate'] + ',') or '') + ''.join((re.compile('\d')).findall(date_new)) + 'Z'
|
||||
if record['date'] == date_new:
|
||||
res = self.write(cr, uid, [caldav_id2real_id(id)], {'exdate': exdate})
|
||||
else:
|
||||
@@ -795,14 +866,14 @@ class calendar_todo(osv.osv):
|
||||
return True
|
||||
|
||||
_columns = {
|
||||
'date': fields.function(_get_date, method=True, fnct_inv=_set_date, \
|
||||
string='Duration', store=True, type='datetime'),
|
||||
'date': fields.function(_get_date, method=True, fnct_inv=_set_date, \
|
||||
string='Duration', store=True, type='datetime'),
|
||||
'duration': fields.integer('Duration'),
|
||||
}
|
||||
|
||||
__attribute__ = {}
|
||||
|
||||
def import_cal(self, cr, uid, data, data_id=None, context={}):
|
||||
def import_cal(self, cr, uid, data, data_id=None, context={}):
|
||||
todo_obj = self.pool.get('basic.calendar.todo')
|
||||
vals = todo_obj.import_cal(cr, uid, data, context=context)
|
||||
return self.check_import(cr, uid, vals, context=context)
|
||||
@@ -882,7 +953,7 @@ class ir_values(osv.osv):
|
||||
new_model.append((data[0], caldav_id2real_id(data[1])))
|
||||
else:
|
||||
new_model.append(data)
|
||||
return super(ir_values, self).set(cr, uid, key, key2, name, new_model, \
|
||||
return super(ir_values, self).set(cr, uid, key, key2, name, new_model,\
|
||||
value, replace, isobject, meta, preserve_user, company)
|
||||
|
||||
def get(self, cr, uid, key, key2, models, meta=False, context={}, \
|
||||
@@ -1087,6 +1158,9 @@ class invite_attendee_wizard(osv.osv_memory):
|
||||
}
|
||||
|
||||
def do_invite(self, cr, uid, ids, context={}):
|
||||
model2field = {
|
||||
'calendar.attendee': 'del_to_user_ids',
|
||||
'crm.meeting': 'attendee_ids'}
|
||||
datas = self.read(cr, uid, ids)[0]
|
||||
if not context or not context.get('model'):
|
||||
return {}
|
||||
@@ -1096,7 +1170,9 @@ class invite_attendee_wizard(osv.osv_memory):
|
||||
res_obj = obj.browse(cr, uid, context['active_id'])
|
||||
type = datas.get('type')
|
||||
att_obj = self.pool.get('calendar.attendee')
|
||||
vals = {'ref': '%s,%s' % (model, caldav_id2real_id(context['active_id']))}
|
||||
vals = {}
|
||||
if not model == 'calendar.attendee':
|
||||
vals = {'ref': '%s,%s' % (model, caldav_id2real_id(context['active_id']))}
|
||||
if type == 'internal':
|
||||
user_obj = self.pool.get('res.users')
|
||||
for user_id in datas.get('user_ids', []):
|
||||
@@ -1107,39 +1183,53 @@ class invite_attendee_wizard(osv.osv_memory):
|
||||
vals.update({'user_id': user_id,
|
||||
'email': user.address_id.email})
|
||||
att_id = att_obj.create(cr, uid, vals)
|
||||
obj.write(cr, uid, res_obj.id, {'attendee_ids': [(4, att_id)]})
|
||||
obj.write(cr, uid, res_obj.id, {model2field[model]: [(4, att_id)]})
|
||||
|
||||
elif type == 'external' and datas.get('email'):
|
||||
vals.update({'email': datas['email']})
|
||||
company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.name
|
||||
att_infos = []
|
||||
for att in res_obj.attendee_ids:
|
||||
att_infos.append(((att.user_id and att.user_id.name) or \
|
||||
(att.partner_id and att.partner_id.name) or \
|
||||
att.email) + ' - Status: ' + att.state.title())
|
||||
att_id = att_obj.create(cr, uid, vals)
|
||||
obj.write(cr, uid, res_obj.id, {'attendee_ids': [(4, att_id)]})
|
||||
|
||||
sub = '[OpenERP Invitation] %s' % (res_obj.name)
|
||||
obj.write(cr, uid, res_obj.id, {model2field[model]: [(4, att_id)]})
|
||||
sign = res_obj.user_id and res_obj.user_id.signature or ''
|
||||
sign = '<br>'.join(sign and sign.split('\n') or [])
|
||||
sub = '[%s Invitation][%d] %s' % (company, att_id, res_obj.name)
|
||||
body_vals = {'name': res_obj.name,
|
||||
'start_date': res_obj.date,
|
||||
'end_date': res_obj.date_deadline or None,
|
||||
'description': res_obj.description,
|
||||
'description': res_obj.description or '-',
|
||||
'location': res_obj.location or '-',
|
||||
'attendees': '-' #Todo
|
||||
'attendees': '<br>'.join(att_infos),
|
||||
'user': res_obj.user_id and res_obj.user_id.name or 'OpenERP User',
|
||||
'sign': sign,
|
||||
'company': company
|
||||
}
|
||||
body = html_invitation % body_vals
|
||||
mail_to = [datas['email']]
|
||||
tools.email_send(
|
||||
res_obj.user_id.name,
|
||||
tools.config.get('email_from', False),
|
||||
mail_to,
|
||||
sub,
|
||||
body,
|
||||
subtype='html'
|
||||
subtype='html',
|
||||
reply_to=tools.config.get('email_from', False)
|
||||
)
|
||||
|
||||
elif type == 'partner':
|
||||
add_obj = self.pool.get('res.partner.address')
|
||||
for contact in add_obj.browse(cr, uid, datas['contact_ids']):
|
||||
if not contact.email:
|
||||
raise osv.except_osv(_('Error!'), \
|
||||
("Partner does not have an email Address"))
|
||||
vals.update({
|
||||
'partner_address_id': contact.id,
|
||||
'email': contact.email})
|
||||
att_id = att_obj.create(cr, uid, vals)
|
||||
obj.write(cr, uid, res_obj.id, {'attendee_ids': [(4, att_id)]})
|
||||
obj.write(cr, uid, res_obj.id, {model2field[model]: [(4, att_id)]})
|
||||
return {}
|
||||
|
||||
|
||||
|
||||
@@ -95,21 +95,16 @@
|
||||
<group col="6" colspan="4">
|
||||
<field name="state" select="2" />
|
||||
<button name="do_tentative"
|
||||
string="Uncertain"
|
||||
states="needs-action" type="object"
|
||||
string="Uncertain" type="object"
|
||||
icon="terp-crm" />
|
||||
<button name="do_accept"
|
||||
string="Accept"
|
||||
states="needs-action" type="object"
|
||||
icon="gtk-apply" />
|
||||
<button name="do_decline"
|
||||
string="Decline"
|
||||
states="needs-action" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="do_accept" string="Accept"
|
||||
type="object" icon="gtk-apply" />
|
||||
<button name="do_decline" string="Decline"
|
||||
type="object" icon="gtk-cancel" />
|
||||
<button
|
||||
name="%(caldav.action_view_calendar_invite_attendee_wizard)d"
|
||||
states="needs-action" string="Delegate"
|
||||
type="action" icon="gtk-sort-descending"
|
||||
string="Delegate" type="action"
|
||||
icon="gtk-sort-descending"
|
||||
context="{'model' : 'calendar.attendee', 'state' : 'delegated'}" />
|
||||
</group>
|
||||
</form>
|
||||
|
||||
+31
-22
@@ -22,14 +22,14 @@
|
||||
import time
|
||||
import re
|
||||
import os
|
||||
|
||||
import mx.DateTime
|
||||
import base64
|
||||
import tools
|
||||
import mx.DateTime
|
||||
|
||||
from tools.translate import _
|
||||
|
||||
import tools
|
||||
from osv import fields,osv,orm
|
||||
from osv import fields
|
||||
from osv import osv
|
||||
from osv import orm
|
||||
from osv.orm import except_orm
|
||||
|
||||
MAX_LEVEL = 15
|
||||
@@ -313,7 +313,7 @@ class crm_case(osv.osv):
|
||||
|
||||
_columns = {
|
||||
'id': fields.integer('ID', readonly=True),
|
||||
'name': fields.char('Description',size=64,required=True),
|
||||
'name': fields.char('Description', size=1024, required=True),
|
||||
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the case without removing it."),
|
||||
'description': fields.text('Your action'),
|
||||
'section_id': fields.many2one('crm.case.section', 'Section', select=True, help='Section to which Case belongs to. Define Responsible user and Email account for mail gateway.'),
|
||||
@@ -653,7 +653,7 @@ class crm_case(osv.osv):
|
||||
"Reminder: [%s] %s" % (str(case.id), case.name, ),
|
||||
self.format_body(body),
|
||||
reply_to=case.section_id.reply_to,
|
||||
tinycrm=str(case.id),
|
||||
openobject_id=str(case.id),
|
||||
attach=attach_to_send
|
||||
)
|
||||
if flag:
|
||||
@@ -713,7 +713,7 @@ class crm_case(osv.osv):
|
||||
'['+str(case.id)+'] '+case.name,
|
||||
self.format_body(body),
|
||||
reply_to=case.section_id.reply_to,
|
||||
tinycrm=str(case.id)
|
||||
openobject_id=str(case.id)
|
||||
)
|
||||
return True
|
||||
|
||||
@@ -726,17 +726,23 @@ class crm_case(osv.osv):
|
||||
data['email_from'] = self.pool.get('res.partner.address').browse(cr, uid, addr['contact']).email
|
||||
return {'value':data}
|
||||
|
||||
|
||||
|
||||
|
||||
def onchange_partner_address_id(self, cr, uid, ids, part, email=False):
|
||||
if not part:
|
||||
return {'value':{}}
|
||||
def onchange_partner_address_id(self, cr, uid, ids, add, email=False):
|
||||
data = {}
|
||||
if not email:
|
||||
data['email_from'] = self.pool.get('res.partner.address').browse(cr, uid, part).email
|
||||
return {'value':data}
|
||||
if not add:
|
||||
return {'value': {'email_from': False}}
|
||||
data['email_from'] = self.pool.get('res.partner.address').browse(cr, uid, add).email
|
||||
return {'value': data}
|
||||
|
||||
def onchange_partner_id(self, cr, uid, ids, part):
|
||||
data = {}
|
||||
if not part:
|
||||
return {'value': {'partner_address_id': False,
|
||||
'email_from': False}}
|
||||
add = self.pool.get('res.partner').address_get(cr, uid, [part])['default']
|
||||
data['partner_address_id'] = add
|
||||
data.update(self.onchange_partner_address_id(cr, uid, ids, add)['value'])
|
||||
return {'value': data}
|
||||
|
||||
def case_close(self, cr, uid, ids, *args):
|
||||
cases = self.browse(cr, uid, ids)
|
||||
cases[0].state # to fill the browse record cache
|
||||
@@ -876,19 +882,22 @@ class crm_email_add_cc_wizard(osv.osv_memory):
|
||||
if not context:
|
||||
return {}
|
||||
history_line = self.pool.get('crm.case.history').browse(cr, uid, context['active_id'])
|
||||
crm_case = self.pool.get('crm.case')
|
||||
case = history_line.log_id.case_id
|
||||
model_obj = self.pool.get('ir.model')
|
||||
model = history_line.log_id.model_id.model
|
||||
model_pool = self.pool.get(model)
|
||||
case = model_pool.browse(cr, uid, history_line.log_id.res_id)
|
||||
body = history_line.description.replace('\n','\n> ')
|
||||
flag = tools.email_send(
|
||||
case.user_id.address_id.email,
|
||||
[case.email_from],
|
||||
subject or '['+str(case.id)+'] '+case.name,
|
||||
crm_case.format_body(body),
|
||||
model_pool.format_body(body),
|
||||
email_cc = [email],
|
||||
tinycrm=str(case.id)
|
||||
openobject_id=str(case.id),
|
||||
subtype="html"
|
||||
)
|
||||
if flag:
|
||||
crm_case.write(cr, uid, case.id, {'email_cc' : case.email_cc and case.email_cc +','+ email or email})
|
||||
model_pool.write(cr, uid, case.id, {'email_cc' : case.email_cc and case.email_cc +','+ email or email})
|
||||
else:
|
||||
raise osv.except_osv(_('Email Fail!'),("Lastest Email is not sent successfully"))
|
||||
return {}
|
||||
|
||||
@@ -33,10 +33,11 @@ class crm_lead(osv.osv):
|
||||
_order = "id desc"
|
||||
_inherit = 'crm.case'
|
||||
_columns = {
|
||||
'name': fields.char('Lead Subject', size=64),
|
||||
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
|
||||
'type_id': fields.many2one('crm.case.resource.type', 'Lead Type Name', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]"),
|
||||
'partner_name': fields.char("Employee's Name", size=64),
|
||||
'partner_name2': fields.char('Employee Email', size=64),
|
||||
'partner_name': fields.char("Lead Name", size=64),
|
||||
'partner_name2': fields.char('Email', size=64),
|
||||
'partner_phone': fields.char('Phone', size=32),
|
||||
'partner_mobile': fields.char('Mobile', size=32),
|
||||
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
<field name="res_model">crm.lead</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="crm_case_tree_view_leads"/>
|
||||
<field name="context" eval="{'default_state':'open'}"/>
|
||||
<field name="search_view_id" ref="crm.view_crm_case_leads_filter"/>
|
||||
</record>
|
||||
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_leads_all">
|
||||
|
||||
@@ -26,87 +26,92 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Leads Form">
|
||||
<group colspan="4" col="7">
|
||||
<field name="name" select="1" string="Lead Subject"/>
|
||||
<field name="section_id" colspan="1" widget="selection"/>
|
||||
<field name="opportunity_id" string="Opportunity Case"/>
|
||||
<button string="Convert to Opportunity" name="%(wizard_crm_lead_opportunity_set)d" icon="gtk-index" type="action" attrs="{'invisible':[('opportunity_id','!=',False)]}"/>
|
||||
|
||||
<label string="Stage: " align="1.0"/>
|
||||
<group colspan="1" col="2">
|
||||
<field name="stage_id" select="1" nolabel="1"/>
|
||||
<button icon="gtk-go-forward" string="" name="stage_next" type="object"/>
|
||||
|
||||
<group colspan="4" col="4">
|
||||
<field name="partner_name" string="Lead Name" required="1"/>
|
||||
<field name="name" string="Lead Subject"/>
|
||||
<field name="partner_name2" string="Contact Name"/>
|
||||
<field name="email_from" string="Email"/>
|
||||
<newline/>
|
||||
<group colspan="4" col="5">
|
||||
<label string="" colspan="2"/>
|
||||
<button string="Create Opportunity" name="%(wizard_crm_lead_opportunity_set)d" icon="gtk-index" type="action"/>
|
||||
<button string="Convert to Partner"
|
||||
icon="terp-partner" name="%(wizard_crm_lead_partner_create)d"
|
||||
type="action" attrs="{'invisible':[('partner_id','!=',False)]}"
|
||||
/>
|
||||
</group>
|
||||
</group>
|
||||
<field name="categ_id" select="1" on_change="onchange_categ_id(categ_id)" string="Lead Source"/>
|
||||
<field name="type_id" string="Campaign Type" select="1"/>
|
||||
<newline/>
|
||||
<field name="date"/>
|
||||
<field name="date_deadline"/>
|
||||
<field name="user_id" select="2"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Leads">
|
||||
<separator string="Lead Information" colspan="4"/>
|
||||
<field name="partner_name" string="Lead Name"/>
|
||||
<field name="partner_name2" string="Contact Name"/>
|
||||
<field name="partner_phone"/>
|
||||
<field name="partner_mobile"/>
|
||||
<field name="email_from" string="Lead Email"/>
|
||||
<newline/>
|
||||
<label string="Partner:" align="1.0"/>
|
||||
<group colspan="1" col="2">
|
||||
<field name="partner_id" nolabel="1" colspan="1"/>
|
||||
<button string="Convert to Partner"
|
||||
icon="terp-partner" name="%(wizard_crm_lead_partner_create)d"
|
||||
type="action" attrs="{'invisible':[('partner_id','!=',False)]}"
|
||||
/>
|
||||
</group>
|
||||
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)"/>
|
||||
|
||||
<group colspan="4" col="4">
|
||||
<notebook>
|
||||
<page string="Leads">
|
||||
<separator colspan="4" string="Communication"/>
|
||||
<field name="partner_id" string="Partner"
|
||||
on_change="onchange_partner_id(partner_id)" />
|
||||
<field name="partner_address_id"
|
||||
string="Contact"
|
||||
on_change="onchange_partner_address_id(partner_address_id, email_from)" />
|
||||
<field name="partner_phone"/>
|
||||
<field name="partner_mobile"/>
|
||||
<separator colspan="4" string="Status and Categarization"/>
|
||||
<group colspan="4" col="6">
|
||||
<field name="user_id" select="2"/>
|
||||
<field name="stage_id" select="1" string="Status" widget="selection" domain="[('object_id.model', '=', 'crm.opportunity')]"/>
|
||||
<field name="categ_id" select="1" on_change="onchange_categ_id(categ_id)" string="Lead Source" widget="selection" domain="[('object_id.model', '=', 'crm.opportunity')]"/>
|
||||
|
||||
<field name="type_id" string="Campaign" select="1"/>
|
||||
<field name="section_id" colspan="1" widget="selection"/>
|
||||
<field name="priority" string="Priority"/>
|
||||
|
||||
<field name="date" string="Create Date"/>
|
||||
</group>
|
||||
<separator colspan="4" string="Details"/>
|
||||
<field name="description" nolabel="1" colspan="4"/>
|
||||
|
||||
<field name="priority" string="Priority"/>
|
||||
<newline/>
|
||||
<separator colspan="4" string="Lead Details"/>
|
||||
<field name="description" nolabel="1" colspan="4"/>
|
||||
|
||||
<separator colspan="4"/>
|
||||
<group col="8" colspan="4">
|
||||
<field name="state" select="2"/>
|
||||
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-close"/>
|
||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
|
||||
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
|
||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Emails" groups="base.group_extended">
|
||||
<group colspan="4">
|
||||
<field colspan="4" name="email_cc" string="CC"/>
|
||||
</group>
|
||||
<field name="history_line" colspan="4" nolabel="1" mode="form,tree">
|
||||
<form string="Communication history">
|
||||
<group col="7" colspan="4">
|
||||
<field name="date"/>
|
||||
<separator colspan="4"/>
|
||||
<group col="8" colspan="4">
|
||||
<field name="state" select="2"/>
|
||||
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-close"/>
|
||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
|
||||
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
|
||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Emails" groups="base.group_extended">
|
||||
<group colspan="4">
|
||||
<field colspan="4" name="email_cc" string="CC"/>
|
||||
</group>
|
||||
<field name="history_line" colspan="4" nolabel="1" mode="form,tree">
|
||||
<form string="Communication history">
|
||||
<group col="7" colspan="4">
|
||||
<field name="date"/>
|
||||
<field name="email"/>
|
||||
<field name="canal_id"/>
|
||||
<button
|
||||
string="Add a CC"
|
||||
name="%(crm.action_view_crm_email_add_cc_wizard)d"
|
||||
icon="gtk-add" type="action"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<field name="description" colspan="4" nolabel="1"/>
|
||||
<button colspan="4" string="Reply to Last Email" name="%(crm.wizard_crm_send_mail)d" context="{'mail':'reply'}" icon="gtk-go-forward" type="action"/>
|
||||
</form>
|
||||
<tree string="Communication history">
|
||||
<field name="description"/>
|
||||
<field name="email"/>
|
||||
<field name="canal_id"/>
|
||||
<button
|
||||
string="Add a CC"
|
||||
name="%(crm.action_view_crm_email_add_cc_wizard)d"
|
||||
icon="gtk-add" type="action"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<field name="description" colspan="4" nolabel="1"/>
|
||||
<button colspan="4" string="Reply to Last Email" name="%(crm.wizard_crm_send_mail)d" context="{'mail':'reply'}" icon="gtk-go-forward" type="action"/>
|
||||
</form>
|
||||
<tree string="Communication history">
|
||||
<field name="description"/>
|
||||
<field name="email"/>
|
||||
<field name="date"/>
|
||||
</tree>
|
||||
</field>
|
||||
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
|
||||
</page>
|
||||
</notebook>
|
||||
<field name="date"/>
|
||||
</tree>
|
||||
</field>
|
||||
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</group>
|
||||
|
||||
|
||||
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
@@ -115,14 +120,12 @@
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Leads Tree" colors="red:state=='open';black:state in ('draft', 'pending');grey: state in ('cancel','done')">
|
||||
<field name="id"/>
|
||||
<field name="name" string="Lead Subject"/>
|
||||
<field name="partner_phone"/>
|
||||
<field name="partner_name2" string="Contact Name"/>
|
||||
<field name="stage_id"/>
|
||||
<tree string="Leads Tree" colors="red:state=='open';black:state in ('draft', 'pending');grey: state in ('cancel','done')">
|
||||
<field name="partner_name" string="Lead Name"/>
|
||||
<field name="stage_id" string="Status"/>
|
||||
<field name="create_date"/>
|
||||
<field name="categ_id" string="Lead Source"/>
|
||||
<field name="type_id" string="Campaign Type"/>
|
||||
<field name="email_from" string="Email"/>
|
||||
<field name="user_id"/>
|
||||
<field name="state"/>
|
||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
||||
@@ -174,7 +177,7 @@
|
||||
/>
|
||||
</field>
|
||||
<field name="state" select="1">
|
||||
<filter icon="gtk-new" domain="[('state','=','draft')]" help="Draft Leads"/>
|
||||
<filter icon="gtk-new" domain="[('state','in',('draft', 'open'))]" help="Current Leads"/>
|
||||
<filter icon="gtk-yes" domain="[('state','=','open')]" help="Open Leads"/>
|
||||
</field>
|
||||
<field name="section_id" select="1" default="context.get('section_id', False)" widget="selection" string="Section">
|
||||
|
||||
@@ -53,8 +53,6 @@
|
||||
<field name="object_id" search="[('model','=','calendar.attendee')]" />
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_1">
|
||||
<field name="name" ref="base_calendar.field_event_uid"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event" />
|
||||
@@ -68,6 +66,13 @@
|
||||
<field name="field_id" search="[('name','=','recurrent_id'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_3">
|
||||
<field name="name" ref="base_calendar.field_event_vtimezone"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event" />
|
||||
<field name="field_id" search="[('name','=','vtimezone'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_4">
|
||||
<field name="name" ref="base_calendar.field_event_attendee" />
|
||||
|
||||
@@ -44,6 +44,7 @@ class crm_opportunity(osv.osv):
|
||||
'ref2' : fields.reference('Reference 2', selection=crm._links_get, size=128),
|
||||
'date_closed': fields.datetime('Closed', readonly=True),
|
||||
'phonecall_id':fields.many2one ('crm.phonecall', 'Phonecall'),
|
||||
'partner_phone': fields.char('Phone', size=32),
|
||||
}
|
||||
|
||||
crm_opportunity()
|
||||
|
||||
@@ -39,37 +39,45 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Opportunities">
|
||||
<group colspan="4" col="7">
|
||||
<field name="name" select="1" string="Opportunity" colspan="2"/>
|
||||
<field name="section_id" colspan="1" widget="selection"/>
|
||||
<field name="user_id" select="2" string="Responsible"/>
|
||||
<button string="Schedule a Meeting"
|
||||
name="%(wizard_crm_opportunity_meeting_set)d" icon="gtk-redo" type="action" />
|
||||
<newline/>
|
||||
<label string="Sales Stage: " align="1.0"/>
|
||||
<group colspan="1" col="2">
|
||||
<field name="stage_id" select="1" nolabel="1"/>
|
||||
<button icon="gtk-go-forward" string="" name="stage_next" type="object"/>
|
||||
</group>
|
||||
<field name="date" />
|
||||
<field name="date_deadline"/>
|
||||
<button string="Schedule a Phone Call"
|
||||
name="%(wizard_crm_opportunity_reschedule_phone_call)d" icon="gtk-redo" type="action" />
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Description">
|
||||
<field name="partner_id" select="1" on_change="onchange_partner_id(partner_id, email_from)" colspan="2"/>
|
||||
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
|
||||
<field name="email_from" colspan="2"/>
|
||||
<field name="categ_id" select="1" on_change="onchange_categ_id(categ_id)" string="Source"/>
|
||||
<field name="priority" string="Priority"/>
|
||||
<field name="type_id" select="1" string="Type"/>
|
||||
<separator colspan="4" string="Estimates"/>
|
||||
<field name="planned_revenue"/>
|
||||
<group colspan="4" col="4">
|
||||
<field name="name" select="1" string="Opportunity" colspan="4"/>
|
||||
<field name="planned_revenue" required="1"/>
|
||||
<field name="planned_cost"/>
|
||||
<field name="probability"/>
|
||||
<separator colspan="4" string="Description Information"/>
|
||||
<field name="description" nolabel="1" colspan="4"/>
|
||||
<field name="date_deadline" string="Excepted Close Date" required="1"/>
|
||||
<group colspan="4" col="5">
|
||||
<label string="" colspan="2"/>
|
||||
<button string="Schedule Meeting"
|
||||
name="%(wizard_crm_opportunity_meeting_set)d" icon="gtk-redo" type="action" />
|
||||
<button string="Schedule Call"
|
||||
name="%(wizard_crm_opportunity_reschedule_phone_call)d" icon="gtk-redo" type="action" />
|
||||
</group>
|
||||
</group>
|
||||
|
||||
<group colspan="4" col="4">
|
||||
<notebook>
|
||||
<page string="Opportunity">
|
||||
<separator colspan="4" string="Communication"/>
|
||||
<field name="partner_id" required="1" select="1" on_change="onchange_partner_id(partner_id, email_from)" colspan="2"/>
|
||||
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
|
||||
<field name="email_from" colspan="2" string="Email"/>
|
||||
<field name="partner_phone" colspan="2"/>
|
||||
|
||||
<separator colspan="4" string="Status and Categarization"/>
|
||||
<group colspan="4" col="6">
|
||||
<field name="user_id" select="2" string="Responsible"/>
|
||||
<field name="stage_id" select="1" string="Sales Stage" required="1" widget="selection" domain="[('object_id.model', '=', 'crm.opportunity')]"/>
|
||||
<field name="categ_id" select="1" on_change="onchange_categ_id(categ_id)" string="Lead Source" widget="selection" domain="[('object_id.model', '=', 'crm.opportunity')]"/>
|
||||
<field name="type_id" select="1" string="Campaign"/>
|
||||
<field name="section_id" colspan="1" widget="selection"/>
|
||||
<field name="priority" string="Priority"/>
|
||||
|
||||
</group>
|
||||
|
||||
|
||||
|
||||
<separator colspan="4" string="Details"/>
|
||||
<field name="description" nolabel="1" colspan="4"/>
|
||||
|
||||
<separator colspan="4"/>
|
||||
<group col="8" colspan="4">
|
||||
@@ -136,6 +144,7 @@
|
||||
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
@@ -151,7 +160,7 @@
|
||||
<field name="partner_id" string="Partner"/>
|
||||
<field name="planned_revenue"/>
|
||||
<field name="probability"/>
|
||||
<field name="date_deadline"/>
|
||||
<field name="date_deadline" string="Excepted Close Date"/>
|
||||
<field name="user_id"/>
|
||||
<field name="state"/>
|
||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-03 04:46+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: crm
|
||||
|
||||
@@ -1484,7 +1484,6 @@ msgstr "borrador"
|
||||
#. module: crm
|
||||
#: model:crm.case.stage,name:crm.stage_claim5
|
||||
#: model:crm.case.stage,name:crm.stage_meet4
|
||||
#, fuzzy
|
||||
msgid "Awaiting Response"
|
||||
msgstr "Enviar correo ao responsábel"
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-03 04:46+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: crm
|
||||
|
||||
+3
-92
@@ -913,7 +913,6 @@ msgstr ""
|
||||
#: model:crm.case.section,name:crm.section_support3 view:crm.opportunity:0
|
||||
#: model:ir.ui.menu,name:crm.menu_crm_case_opp
|
||||
#: model:process.node,name:crm.process_node_opportunities0
|
||||
#, fuzzy
|
||||
msgid "Opportunities"
|
||||
msgstr "Galimybės"
|
||||
|
||||
@@ -1470,7 +1469,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:crm.case.stage,name:crm.stage_lead4
|
||||
#, fuzzy
|
||||
msgid "Converted"
|
||||
msgstr "Sukurta"
|
||||
|
||||
@@ -1498,7 +1496,6 @@ msgstr "Istorija"
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.model,name:crm.model_crm_job
|
||||
#, fuzzy
|
||||
msgid "Job Cases"
|
||||
msgstr "Klausimai"
|
||||
|
||||
@@ -1517,7 +1514,6 @@ msgstr ""
|
||||
#: field:report.crm.case.section.categ.stage,state:0
|
||||
#: field:report.crm.case.section.categ2,state:0
|
||||
#: field:report.crm.case.section.stage,state:0
|
||||
#, fuzzy
|
||||
msgid "State"
|
||||
msgstr "Būklė"
|
||||
|
||||
@@ -1585,13 +1581,11 @@ msgstr "Bendras aprašymas"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.meeting:0
|
||||
#, fuzzy
|
||||
msgid "Other Info"
|
||||
msgstr "Papildoma informacija"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.claim:0
|
||||
#, fuzzy
|
||||
msgid "Claim Cost"
|
||||
msgstr "Planuojamos išlaidos"
|
||||
|
||||
@@ -1607,7 +1601,6 @@ msgstr "Nuoroda"
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.meeting,exrule:0
|
||||
#, fuzzy
|
||||
msgid "Exception Rule"
|
||||
msgstr "Atlikimo būklė"
|
||||
|
||||
@@ -1618,7 +1611,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:crm.case.category2,name:crm.category_lead2
|
||||
#, fuzzy
|
||||
msgid "Mail"
|
||||
msgstr "El. paštas"
|
||||
|
||||
@@ -1671,7 +1663,6 @@ msgstr "Vardas"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.opportunity:0
|
||||
#, fuzzy
|
||||
msgid "Sales Stage"
|
||||
msgstr "Klausimo būklė"
|
||||
|
||||
@@ -1682,13 +1673,11 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.case.rule,act_mail_to_watchers:0
|
||||
#, fuzzy
|
||||
msgid "Mail to watchers (CC)"
|
||||
msgstr "Laiškas stebėtojams (Cc)"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.fundraising:0 view:crm.meeting:0
|
||||
#, fuzzy
|
||||
msgid "Next Meeting"
|
||||
msgstr "Kitas veiksmas"
|
||||
|
||||
@@ -1707,7 +1696,6 @@ msgstr "Leidžia ištrinti nejuodraštinius klausimus"
|
||||
|
||||
#. module: crm
|
||||
#: model:crm.case.stage,name:crm.stage_oppor7
|
||||
#, fuzzy
|
||||
msgid "Closed Lost"
|
||||
msgstr "Uždaryta"
|
||||
|
||||
@@ -1784,7 +1772,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.actions.act_window,name:crm.crm_case_history-act
|
||||
#, fuzzy
|
||||
msgid "Histories"
|
||||
msgstr "Archyvuoti"
|
||||
|
||||
@@ -1818,7 +1805,7 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm.py:0
|
||||
#, fuzzy, python-format
|
||||
#, python-format
|
||||
msgid "Email Fail!"
|
||||
msgstr "El. paštas"
|
||||
|
||||
@@ -1867,7 +1854,6 @@ msgstr "Aukščiausias"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.job:0
|
||||
#, fuzzy
|
||||
msgid "Contract Data"
|
||||
msgstr "Sukūrimo data"
|
||||
|
||||
@@ -1883,7 +1869,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.menu.config_wizard,document_ics:0
|
||||
#, fuzzy
|
||||
msgid "Shared Calendar"
|
||||
msgstr "Kalendorius"
|
||||
|
||||
@@ -1930,7 +1915,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.case.category2,name:0
|
||||
#, fuzzy
|
||||
msgid "Case Category2 Name"
|
||||
msgstr "Klausimo kategorijos pavadinimas"
|
||||
|
||||
@@ -1998,13 +1982,11 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.meeting,location:0
|
||||
#, fuzzy
|
||||
msgid "Location"
|
||||
msgstr "Veiksmas"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.fundraising:0
|
||||
#, fuzzy
|
||||
msgid "Payment Mode"
|
||||
msgstr "Pirminis meniu"
|
||||
|
||||
@@ -2061,7 +2043,6 @@ msgstr "Sukurta"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.lead:0
|
||||
#, fuzzy
|
||||
msgid "Lead Information"
|
||||
msgstr "Bazinė informacija"
|
||||
|
||||
@@ -2074,7 +2055,6 @@ msgstr "Segmentacijos eilutė"
|
||||
#: wizard_field:crm.job.reschedule_phone_call,init,deadline:0
|
||||
#: wizard_field:crm.opportunity.reschedule_phone_call,init,deadline:0
|
||||
#: view:crm.phonecall:0
|
||||
#, fuzzy
|
||||
msgid "Planned Date"
|
||||
msgstr "Planuojamos išlaidos"
|
||||
|
||||
@@ -2115,7 +2095,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:crm.case.stage,name:crm.stage_oppor1
|
||||
#, fuzzy
|
||||
msgid "Prospecting"
|
||||
msgstr "Profiliavimas"
|
||||
|
||||
@@ -2126,7 +2105,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.model,name:crm.model_crm_meeting
|
||||
#, fuzzy
|
||||
msgid "Meeting Cases"
|
||||
msgstr "Atviri klausimai"
|
||||
|
||||
@@ -2137,7 +2115,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.meeting:0
|
||||
#, fuzzy
|
||||
msgid "Cancel Meeting"
|
||||
msgstr "Klausimo sekcija"
|
||||
|
||||
@@ -2148,13 +2125,11 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.case.rule:0
|
||||
#, fuzzy
|
||||
msgid "%(case_date)s = Creation date"
|
||||
msgstr "%(case_id)s = Klausimo ID"
|
||||
|
||||
#. module: crm
|
||||
#: model:crm.case.stage,name:crm.stage_phone3 view:crm.phonecall:0
|
||||
#, fuzzy
|
||||
msgid "Not Held"
|
||||
msgstr "Pastaba"
|
||||
|
||||
@@ -2170,13 +2145,11 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:crm.case.category2,name:crm.category_claim1
|
||||
#, fuzzy
|
||||
msgid "Corrective"
|
||||
msgstr "Aktyvuota"
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.model,name:crm.model_crm_opportunity
|
||||
#, fuzzy
|
||||
msgid "Opportunity Cases"
|
||||
msgstr "Atviri klausimai"
|
||||
|
||||
@@ -2195,7 +2168,6 @@ msgstr "Pašto šablonas siuntimui"
|
||||
#: field:report.crm.case.section.categ.stage,month:0
|
||||
#: field:report.crm.case.section.categ2,month:0
|
||||
#: field:report.crm.case.section.stage,month:0
|
||||
#, fuzzy
|
||||
msgid "Month"
|
||||
msgstr "Mėnesiai"
|
||||
|
||||
@@ -2211,13 +2183,11 @@ msgstr ""
|
||||
#. module: crm
|
||||
#: wizard_button:crm.new.send.mail,init,send:0
|
||||
#: wizard_button:crm.send.mail,init,send:0
|
||||
#, fuzzy
|
||||
msgid "Send Email"
|
||||
msgstr "El. paštas"
|
||||
|
||||
#. module: crm
|
||||
#: wizard_view:crm.new.send.mail,init:0
|
||||
#, fuzzy
|
||||
msgid "Set case state to"
|
||||
msgstr "Nustatyti būklę į"
|
||||
|
||||
@@ -2274,7 +2244,6 @@ msgstr "Pastaba"
|
||||
#: field:report.crm.case.section.categ.stage,delay_close:0
|
||||
#: field:report.crm.case.section.categ2,delay_close:0
|
||||
#: field:report.crm.case.section.stage,delay_close:0
|
||||
#, fuzzy
|
||||
msgid "Delay Close"
|
||||
msgstr "Delsos tipas"
|
||||
|
||||
@@ -2299,13 +2268,12 @@ msgstr "Uždaryta"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.job:0
|
||||
#, fuzzy
|
||||
msgid "Candidate Name2"
|
||||
msgstr "Klausimo kategorijos pavadinimas"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm.py:0
|
||||
#, fuzzy, python-format
|
||||
#, python-format
|
||||
msgid "cancel"
|
||||
msgstr "Atšaukti"
|
||||
|
||||
@@ -2317,7 +2285,6 @@ msgstr ""
|
||||
#. module: crm
|
||||
#: view:crm.case:0 field:crm.case,child_ids:0 view:crm.claim:0 view:crm.lead:0
|
||||
#: view:crm.opportunity:0
|
||||
#, fuzzy
|
||||
msgid "Events"
|
||||
msgstr "Partnerio renginiai"
|
||||
|
||||
@@ -2395,7 +2362,6 @@ msgstr "Klausimo istorija"
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.case,partner_phone:0
|
||||
#, fuzzy
|
||||
msgid "Phone"
|
||||
msgstr "Niekas"
|
||||
|
||||
@@ -2479,7 +2445,7 @@ msgstr "Veiksmas"
|
||||
#: model:crm.case.section,name:crm.section_support_claims view:crm.claim:0
|
||||
#: field:crm.menu.config_wizard,claims:0 view:crm.phonecall:0
|
||||
#: model:ir.ui.menu,name:crm.menu_crm_case_claims
|
||||
#, fuzzy, python-format
|
||||
#, python-format
|
||||
msgid "Claims"
|
||||
msgstr "Klausimas"
|
||||
|
||||
@@ -2495,7 +2461,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.model,name:crm.model_crm_case_category2
|
||||
#, fuzzy
|
||||
msgid "Category2 of case"
|
||||
msgstr "Klausimo kategorija"
|
||||
|
||||
@@ -2512,7 +2477,6 @@ msgstr "%(case_user_email)s = Atsakingo paštas"
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.ui.menu,name:crm.menu_presale
|
||||
#, fuzzy
|
||||
msgid "Sales"
|
||||
msgstr "Klausimai"
|
||||
|
||||
@@ -2523,7 +2487,6 @@ msgstr "Bendra"
|
||||
|
||||
#. module: crm
|
||||
#: model:crm.case.stage,name:crm.stage_lead2
|
||||
#, fuzzy
|
||||
msgid "Assigned"
|
||||
msgstr "Visi nepriskirti "
|
||||
|
||||
@@ -2541,7 +2504,6 @@ msgstr ""
|
||||
#. module: crm
|
||||
#: view:crm.case:0 view:crm.claim:0 view:crm.fundraising:0 view:crm.lead:0
|
||||
#: selection:crm.new.send.mail,init,state:0 view:crm.opportunity:0
|
||||
#, fuzzy
|
||||
msgid "Done"
|
||||
msgstr "Niekas"
|
||||
|
||||
@@ -2552,7 +2514,6 @@ msgstr "Maks. intervalas"
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.actions.act_window,name:crm.crm_case_category_act_oppor11
|
||||
#, fuzzy
|
||||
msgid "All Opportunities"
|
||||
msgstr "Verslo galimybės"
|
||||
|
||||
@@ -2586,7 +2547,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.model,name:crm.model_crm_phonecall
|
||||
#, fuzzy
|
||||
msgid "Phonecall Cases"
|
||||
msgstr "Visi klausimai"
|
||||
|
||||
@@ -2619,13 +2579,11 @@ msgstr ""
|
||||
#. module: crm
|
||||
#: wizard_button:crm.job.meeting_set,init,order:0
|
||||
#: wizard_button:crm.phonecall.meeting_set,init,order:0
|
||||
#, fuzzy
|
||||
msgid "Set Meeting"
|
||||
msgstr "Nustatyti sekciją į"
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.menu.config_wizard,meeting:0
|
||||
#, fuzzy
|
||||
msgid "Calendar of Meetings"
|
||||
msgstr "Kalendoriaus peržiūra"
|
||||
|
||||
@@ -2644,13 +2602,11 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.lead:0
|
||||
#, fuzzy
|
||||
msgid "Lead Name"
|
||||
msgstr "Taisyklės pavadinimas"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.claim:0
|
||||
#, fuzzy
|
||||
msgid "Claim/Action Description"
|
||||
msgstr "Segmentacijos aprašymas"
|
||||
|
||||
@@ -2689,7 +2645,6 @@ msgstr ""
|
||||
#: view:report.crm.case.section.categ.categ2:0
|
||||
#: view:report.crm.case.section.categ.stage:0
|
||||
#: view:report.crm.case.section.categ2:0 view:report.crm.case.section.stage:0
|
||||
#, fuzzy
|
||||
msgid "This Month"
|
||||
msgstr "Mėnesiai"
|
||||
|
||||
@@ -2700,7 +2655,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.opportunity:0
|
||||
#, fuzzy
|
||||
msgid "Opportunities Tree"
|
||||
msgstr "Verslo galimybės"
|
||||
|
||||
@@ -2718,7 +2672,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.job:0
|
||||
#, fuzzy
|
||||
msgid "Open Jobs"
|
||||
msgstr "Atviri klausimai"
|
||||
|
||||
@@ -2741,13 +2694,11 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.case.rule,server_action_id:0
|
||||
#, fuzzy
|
||||
msgid "Server Action"
|
||||
msgstr "Sekcija"
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.actions.act_window,name:crm.crm_case_categ_claim0
|
||||
#, fuzzy
|
||||
msgid "All Claims"
|
||||
msgstr "Visi klausimai"
|
||||
|
||||
@@ -2774,7 +2725,6 @@ msgstr "Naujausi laiškai"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.case.rule:0
|
||||
#, fuzzy
|
||||
msgid "Regex on Communication History"
|
||||
msgstr "Klausimų komunikacijos istorija"
|
||||
|
||||
@@ -2827,13 +2777,11 @@ msgstr "Paskutinis veiksmas"
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.case,duration:0
|
||||
#, fuzzy
|
||||
msgid "Duration"
|
||||
msgstr "Jūsų veiksmas"
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.model,name:crm.model_report_crm_case_section_categ_stage
|
||||
#, fuzzy
|
||||
msgid "Cases by section, Category and stage"
|
||||
msgstr "Klausimai pagal sekciją"
|
||||
|
||||
@@ -2844,7 +2792,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.menu.config_wizard,jobs:0
|
||||
#, fuzzy
|
||||
msgid "Jobs Hiring Process"
|
||||
msgstr "Tęsti procesą"
|
||||
|
||||
@@ -2869,7 +2816,6 @@ msgstr ""
|
||||
#: field:report.crm.case.section.categ.stage,nbr:0
|
||||
#: field:report.crm.case.section.categ2,nbr:0
|
||||
#: field:report.crm.case.section.stage,nbr:0
|
||||
#, fuzzy
|
||||
msgid "# of Cases"
|
||||
msgstr "Klausimai"
|
||||
|
||||
@@ -2895,14 +2841,12 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.meeting:0
|
||||
#, fuzzy
|
||||
msgid "Search Meetings"
|
||||
msgstr "Sekcijos"
|
||||
|
||||
#. module: crm
|
||||
#: selection:crm.lead.opportunity_set,create_partner,action:0
|
||||
#: selection:crm.phonecall.opportunity_set,create_partner,action:0
|
||||
#, fuzzy
|
||||
msgid "Create a new partner"
|
||||
msgstr "Sukūrimo data"
|
||||
|
||||
@@ -2913,7 +2857,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:crm.case.stage,name:crm.stage_lead3
|
||||
#, fuzzy
|
||||
msgid "In Process"
|
||||
msgstr "Stabdyti procesą"
|
||||
|
||||
@@ -2936,7 +2879,6 @@ msgstr ""
|
||||
#. module: crm
|
||||
#: model:ir.ui.menu,name:crm.menu_crm_case_section_categ_tree
|
||||
#: view:report.crm.case.section.categ2:0
|
||||
#, fuzzy
|
||||
msgid "Cases by Section and Type"
|
||||
msgstr "Klausimai pagal sekciją"
|
||||
|
||||
@@ -2954,7 +2896,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: wizard_field:caldav.crm.export,init,name:0
|
||||
#, fuzzy
|
||||
msgid "File name"
|
||||
msgstr "Taisyklės pavadinimas"
|
||||
|
||||
@@ -2995,7 +2936,6 @@ msgstr ""
|
||||
#: selection:report.crm.case.section.categ.stage,state:0
|
||||
#: selection:report.crm.case.section.categ2,state:0
|
||||
#: selection:report.crm.case.section.stage,state:0
|
||||
#, fuzzy
|
||||
msgid "Cancelled"
|
||||
msgstr "Atšaukti"
|
||||
|
||||
@@ -3048,7 +2988,6 @@ msgstr "Klausimų komunikacijos istorija"
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.ui.menu,name:crm.menu_action_report_crm_case_oppor_categ
|
||||
#, fuzzy
|
||||
msgid "Cases by Opportunities and Type"
|
||||
msgstr "Verslo galimybės"
|
||||
|
||||
@@ -3092,7 +3031,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:crm.case.stage,name:crm.stage_lead1
|
||||
#, fuzzy
|
||||
msgid "New"
|
||||
msgstr "Naujas "
|
||||
|
||||
@@ -3120,7 +3058,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.model,name:crm.model_crm_claim
|
||||
#, fuzzy
|
||||
msgid "Claim Cases"
|
||||
msgstr "Visi klausimai"
|
||||
|
||||
@@ -3136,7 +3073,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.meeting,exdate:0
|
||||
#, fuzzy
|
||||
msgid "Exception Date/Times"
|
||||
msgstr "Atlikimo būklė"
|
||||
|
||||
@@ -3147,7 +3083,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:process.transition,note:crm.process_transition_leadopportunity0
|
||||
#, fuzzy
|
||||
msgid "Creating business opportunities from Leads"
|
||||
msgstr "Verslo galimybės"
|
||||
|
||||
@@ -3173,7 +3108,6 @@ msgstr "Laukia"
|
||||
|
||||
#. module: crm
|
||||
#: model:process.transition,name:crm.process_transition_leadopportunity0
|
||||
#, fuzzy
|
||||
msgid "Prospect Opportunity"
|
||||
msgstr "Verslo galimybės"
|
||||
|
||||
@@ -3204,7 +3138,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.case:0
|
||||
#, fuzzy
|
||||
msgid "My Cases"
|
||||
msgstr "Mano klausimai"
|
||||
|
||||
@@ -3226,7 +3159,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:crm.case.stage,name:crm.stage_phone1
|
||||
#, fuzzy
|
||||
msgid "Planned"
|
||||
msgstr "Planuojamos išlaidos"
|
||||
|
||||
@@ -3237,19 +3169,16 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.job:0
|
||||
#, fuzzy
|
||||
msgid "Candidate Email"
|
||||
msgstr "Partnerio el. paštas"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.opportunity:0
|
||||
#, fuzzy
|
||||
msgid "Sales Stage: "
|
||||
msgstr "Klausimo būklė"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.claim:0
|
||||
#, fuzzy
|
||||
msgid "Type of Action"
|
||||
msgstr "Kitas veiksmas"
|
||||
|
||||
@@ -3260,7 +3189,6 @@ msgstr "Nustatyti atsakingą į"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.job:0
|
||||
#, fuzzy
|
||||
msgid "Meeting With Candidates"
|
||||
msgstr "Naujas su kalendoriumi"
|
||||
|
||||
@@ -3284,7 +3212,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: view:report.crm.case.section.categ.categ2:0
|
||||
#, fuzzy
|
||||
msgid "Search Cases by User"
|
||||
msgstr "Klausimai pagal sekciją"
|
||||
|
||||
@@ -3310,7 +3237,6 @@ msgstr "Objekto iškvietimo metodas"
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.actions.act_window,name:crm.crm_case_category_act_fund_all1
|
||||
#, fuzzy
|
||||
msgid "All Funds"
|
||||
msgstr "Visi "
|
||||
|
||||
@@ -3322,7 +3248,6 @@ msgstr "Kalendorius"
|
||||
|
||||
#. module: crm
|
||||
#: model:crm.case.categ,name:crm.categ_job1
|
||||
#, fuzzy
|
||||
msgid "Salesman"
|
||||
msgstr "Pardavimo suma"
|
||||
|
||||
@@ -3379,7 +3304,6 @@ msgstr "Ne einamasis"
|
||||
#: wizard_field:crm.case.opportunity.partner_opportunity,init,probability:0
|
||||
#: wizard_field:crm.lead.opportunity_set,opportunity,probability:0
|
||||
#: wizard_field:crm.phonecall.opportunity_set,opportunity,probability:0
|
||||
#, fuzzy
|
||||
msgid "Success Probability"
|
||||
msgstr "Tikimybė (%)"
|
||||
|
||||
@@ -3437,13 +3361,11 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.job:0
|
||||
#, fuzzy
|
||||
msgid "Qualication"
|
||||
msgstr "Komunikacija"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.meeting:0
|
||||
#, fuzzy
|
||||
msgid "Change RRule"
|
||||
msgstr "Klausimo taisyklė"
|
||||
|
||||
@@ -3460,7 +3382,6 @@ msgstr ""
|
||||
#: model:ir.ui.menu,name:crm.menu_action_report_crm_case_lead_categ_categ2
|
||||
#: model:ir.ui.menu,name:crm.menu_crm_case_section_categ_categ2_tree
|
||||
#: view:report.crm.case.section.categ.categ2:0
|
||||
#, fuzzy
|
||||
msgid "Cases by Section, Category and Type"
|
||||
msgstr "Klausimo kategorijos pavadinimas"
|
||||
|
||||
@@ -3510,7 +3431,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:process.process,name:crm.process_process_contractprocess0
|
||||
#, fuzzy
|
||||
msgid "Contract"
|
||||
msgstr "Partnerio kontaktas"
|
||||
|
||||
@@ -3555,7 +3475,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.model,name:crm.model_crm_case_stage
|
||||
#, fuzzy
|
||||
msgid "Stage of case"
|
||||
msgstr "Klausimo kategorija"
|
||||
|
||||
@@ -3593,7 +3512,6 @@ msgstr "Sekcijos kodas"
|
||||
#. module: crm
|
||||
#: wizard_field:crm.job.meeting_set,init,date:0
|
||||
#: wizard_field:crm.phonecall.meeting_set,init,date:0
|
||||
#, fuzzy
|
||||
msgid "Meeting date"
|
||||
msgstr "Sukūrimo data"
|
||||
|
||||
@@ -3609,7 +3527,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:crm.case.stage,name:crm.stage_meet2
|
||||
#, fuzzy
|
||||
msgid "Not fixed"
|
||||
msgstr "Pastaba"
|
||||
|
||||
@@ -3642,7 +3559,6 @@ msgstr "Aprašymas"
|
||||
#: selection:report.crm.case.section.categ.stage,month:0
|
||||
#: selection:report.crm.case.section.categ2,month:0
|
||||
#: selection:report.crm.case.section.stage,month:0
|
||||
#, fuzzy
|
||||
msgid "May"
|
||||
msgstr "Mano "
|
||||
|
||||
@@ -3741,13 +3657,11 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:crm.case.category2,name:crm.categ2_fund1
|
||||
#, fuzzy
|
||||
msgid "Cash"
|
||||
msgstr "Klausimas"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.fundraising:0
|
||||
#, fuzzy
|
||||
msgid "Funds by Categories"
|
||||
msgstr "Kategorijos"
|
||||
|
||||
@@ -3791,7 +3705,6 @@ msgstr ""
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.model,name:crm.model_crm_helpdesk
|
||||
#, fuzzy
|
||||
msgid "Helpdesk Cases"
|
||||
msgstr "Atviri klausimai"
|
||||
|
||||
@@ -3830,13 +3743,11 @@ msgstr "Klausimai pagal sekciją"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.job:0
|
||||
#, fuzzy
|
||||
msgid "New Jobs"
|
||||
msgstr "Naujas "
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.menu.config_wizard,fund:0
|
||||
#, fuzzy
|
||||
msgid "Fund Raising Operations"
|
||||
msgstr "Profiliavimo parinktys"
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-03 04:47+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: crm
|
||||
|
||||
@@ -117,6 +117,7 @@ class lead2opportunity(wizard.interface):
|
||||
'date_deadline': lead.date_deadline,
|
||||
'partner_address_id':lead.partner_address_id.id,
|
||||
'priority':lead.priority,
|
||||
'categ_id':lead.categ_id.id,
|
||||
'date': lead.date,
|
||||
})
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ def _mass_mail_send(self, cr, uid, data, context):
|
||||
attach = map(lambda x: x and ('Attachment'+str(attach.index(x)+1), base64.decodestring(x)), attach)
|
||||
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
case_pool=pool.get('crm.case')
|
||||
case_pool=pool.get(data.get('model'))
|
||||
|
||||
case = case_pool.browse(cr,uid,data['ids'])[0]
|
||||
case_pool.write(cr, uid, [case.id], {
|
||||
@@ -80,20 +80,18 @@ def _mass_mail_send(self, cr, uid, data, context):
|
||||
emails = [data['form']['to']] + (data['form']['cc'] or '').split(',')
|
||||
emails = filter(None, emails)
|
||||
body = data['form']['text']
|
||||
if not case.user_id.address_id.email:
|
||||
raise wizard.except_wizard(_('Warning!'),_("Please specify user's email address !"))
|
||||
if case.user_id.signature:
|
||||
body += '\n\n%s' % (case.user_id.signature)
|
||||
case_pool._history(cr, uid, [case], _('Send'), history=True, email=False, details=body)
|
||||
case_pool._history(cr, uid, [case], _('Send'), history=True, email=data['form']['to'], details=body)
|
||||
flag = tools.email_send(
|
||||
case.user_id.address_id.email,
|
||||
emails,
|
||||
data['form']['subject'],
|
||||
body,
|
||||
case_pool.format_body(body),
|
||||
attach=attach,
|
||||
reply_to=case.section_id.reply_to,
|
||||
tinycrm=str(case.id)
|
||||
openobject_id=str(case.id),
|
||||
subtype="html"
|
||||
)
|
||||
if flag:
|
||||
if data['form']['state'] == 'unchanged':
|
||||
@@ -110,13 +108,19 @@ def _mass_mail_send(self, cr, uid, data, context):
|
||||
def _get_info(self, cr, uid, data, context):
|
||||
if not data['id']:
|
||||
return {}
|
||||
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
case = pool.get('crm.case').browse(cr,uid,data['ids'])[0]
|
||||
#if not case.email_from:
|
||||
# raise wizard.except_wizard(_('Error'),_('You must put a Partner eMail to use this action!'))
|
||||
case = pool.get(data.get('model')).browse(cr, uid, data['id'])
|
||||
if not case.user_id:
|
||||
raise wizard.except_wizard(_('Error'),_('You must define a responsible user for this case in order to use this action!'))
|
||||
return {'to': case.email_from,'subject': case.name,'cc': case.email_cc or ''}
|
||||
if not case.user_id.address_id.email:
|
||||
raise wizard.except_wizard(_('Warning!'),_("Please specify user's email address !"))
|
||||
|
||||
return {
|
||||
'to': case.email_from,
|
||||
'subject': case.name,
|
||||
'cc': case.email_cc or ''
|
||||
}
|
||||
|
||||
class wizard_send_mail(wizard.interface):
|
||||
states = {
|
||||
|
||||
@@ -51,7 +51,7 @@ email_send_fields = {
|
||||
# this sends an email to ALL the addresses of the selected partners.
|
||||
def _mass_mail_send(self, cr, uid, data, context):
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
case_pool=pool.get('crm.case')
|
||||
case_pool=pool.get(data['model'])
|
||||
|
||||
hist_obj = pool.get('crm.case.history').browse(cr,uid,data['ids'])[0]
|
||||
case = hist_obj.log_id.case_id
|
||||
@@ -71,7 +71,7 @@ def _mass_mail_send(self, cr, uid, data, context):
|
||||
data['form']['subject'],
|
||||
case_pool.format_body(body),
|
||||
reply_to=case.section_id.reply_to,
|
||||
tinycrm=str(case.id)
|
||||
openobject_id=str(case.id)
|
||||
)
|
||||
return {}
|
||||
|
||||
|
||||
@@ -48,6 +48,5 @@
|
||||
],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -107,6 +107,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_question_job_0" model="survey.question">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="validation_type">do_not_validate</field>
|
||||
<field name="comment_valid_type">do_not_validate</field>
|
||||
<field name="make_comment_field_err_msg">Please enter a comment.</field>
|
||||
@@ -130,6 +131,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_question_job_1" model="survey.question">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="validation_type">do_not_validate</field>
|
||||
<field name="comment_valid_type">do_not_validate</field>
|
||||
<field name="make_comment_field_err_msg">Please enter a comment.</field>
|
||||
@@ -153,6 +155,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_question_job_2" model="survey.question">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="validation_type">do_not_validate</field>
|
||||
<field name="comment_valid_type">do_not_validate</field>
|
||||
<field name="make_comment_field_err_msg">Please enter a comment.</field>
|
||||
@@ -176,6 +179,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_question_job_3" model="survey.question">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="validation_type">do_not_validate</field>
|
||||
<field name="comment_valid_type">do_not_validate</field>
|
||||
<field name="make_comment_field_err_msg">Please enter a comment.</field>
|
||||
@@ -199,6 +203,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_question_job_4" model="survey.question">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="validation_type">do_not_validate</field>
|
||||
<field name="comment_valid_type">do_not_validate</field>
|
||||
<field name="make_comment_field_err_msg">Please enter a comment.</field>
|
||||
@@ -221,12 +226,14 @@
|
||||
</record>
|
||||
|
||||
<record id="survey_answer_job_70" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">Male</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_4"/>
|
||||
<field eval="1" name="sequence"/>
|
||||
</record>
|
||||
|
||||
<record id="survey_answer_job_71" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">Female</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_4"/>
|
||||
<field eval="2" name="sequence"/>
|
||||
@@ -235,6 +242,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_question_job_5" model="survey.question">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="validation_type">do_not_validate</field>
|
||||
<field name="comment_valid_type">do_not_validate</field>
|
||||
<field name="make_comment_field_err_msg">Please enter a comment.</field>
|
||||
@@ -257,41 +265,49 @@
|
||||
</record>
|
||||
|
||||
<record id="survey_answer_job_81" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">0 - 15</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
|
||||
<field eval="1" name="sequence"/>
|
||||
</record>
|
||||
<record id="survey_answer_job_82" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">16 - 20</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
|
||||
<field eval="2" name="sequence"/>
|
||||
</record>
|
||||
<record id="survey_answer_job_83" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">21 - 30</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
|
||||
<field eval="3" name="sequence"/>
|
||||
</record>
|
||||
<record id="survey_answer_job_84" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">31 - 40</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
|
||||
<field eval="4" name="sequence"/>
|
||||
</record>
|
||||
<record id="survey_answer_job_85" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">41 - 50</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
|
||||
<field eval="5" name="sequence"/>
|
||||
</record>
|
||||
<record id="survey_answer_job_86" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">51 - 60</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
|
||||
<field eval="6" name="sequence"/>
|
||||
</record>
|
||||
<record id="survey_answer_job_87" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">61 - 70</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
|
||||
<field eval="7" name="sequence"/>
|
||||
</record>
|
||||
<record id="survey_answer_job_88" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">71 +</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
|
||||
<field eval="8" name="sequence"/>
|
||||
@@ -300,6 +316,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_question_job_6" model="survey.question">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="validation_type">do_not_validate</field>
|
||||
<field name="comment_valid_type">do_not_validate</field>
|
||||
<field name="make_comment_field_err_msg">Please enter a comment.</field>
|
||||
@@ -323,6 +340,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_question_job_7" model="survey.question">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="validation_type">do_not_validate</field>
|
||||
<field name="comment_valid_type">do_not_validate</field>
|
||||
<field name="make_comment_field_err_msg">Please enter a comment.</field>
|
||||
@@ -387,6 +405,7 @@
|
||||
|
||||
<data>
|
||||
<record id="survey_answer_job_0" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">Good pay</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
|
||||
<field eval="1" name="sequence"/>
|
||||
@@ -394,6 +413,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_answer_job_1" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">Getting on with colleagues</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
|
||||
<field eval="2" name="sequence"/>
|
||||
@@ -401,6 +421,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_answer_job_2" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">Office environment (décor, light, space etc)</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
|
||||
<field eval="3" name="sequence"/>
|
||||
@@ -408,6 +429,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_answer_job_3" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">Desk space</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
|
||||
<field eval="4" name="sequence"/>
|
||||
@@ -415,6 +437,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_answer_job_4" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">State of the art technology</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
|
||||
<field eval="5" name="sequence"/>
|
||||
@@ -422,6 +445,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_answer_job_5" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">Office location (proximity to home)</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
|
||||
<field eval="6" name="sequence"/>
|
||||
@@ -429,6 +453,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_answer_job_6" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">Good management/boss</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
|
||||
<field eval="7" name="sequence"/>
|
||||
@@ -436,6 +461,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_answer_job_7" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">Freebies such as tea, coffee and stationery</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
|
||||
<field eval="8" name="sequence"/>
|
||||
@@ -443,6 +469,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_answer_job_8" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">Perks such as free parking, gym passes etc</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
|
||||
<field eval="9" name="sequence"/>
|
||||
@@ -450,6 +477,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_answer_job_9" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">No out of hours working</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
|
||||
<field eval="10" name="sequence"/>
|
||||
@@ -457,6 +485,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_answer_job_10" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">Dress code</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
|
||||
<field eval="11" name="sequence"/>
|
||||
@@ -464,6 +493,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_answer_job_11" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">Regular meetings</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
|
||||
<field eval="12" name="sequence"/>
|
||||
@@ -471,6 +501,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<record id="survey_answer_job_12" model="survey.answer">
|
||||
<field name="in_visible_answer_type">1</field>
|
||||
<field name="answer">Good social life (office nights out, good Christmas parties etc)</field>
|
||||
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
|
||||
<field eval="13" name="sequence"/>
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
|
||||
|
||||
import crm_project_bug
|
||||
import crm_project_feature
|
||||
|
||||
import report
|
||||
import wizard
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
|
||||
{
|
||||
'name': 'CRM Stuff in Project Management',
|
||||
'name': 'Bug Reporting in Project Management',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/CRM & SRM',
|
||||
'description': """
|
||||
@@ -35,9 +35,9 @@
|
||||
'crm_bugs_data.xml'
|
||||
],
|
||||
'update_xml': [
|
||||
'crm_bug_wizard.xml',
|
||||
'crm_bugs_view.xml',
|
||||
'crm_bugs_menu.xml',
|
||||
'crm_feature_view.xml',
|
||||
'crm_bugs_menu.xml',
|
||||
'crm_feature_menu.xml',
|
||||
'report_crm_project_bug_view.xml',
|
||||
'security/crm_project_security.xml',
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<wizard
|
||||
id="wizard_crm_bug_task_set"
|
||||
keyword="client_action_multi"
|
||||
model="crm.bug"
|
||||
name="crm.bug.task_set"
|
||||
multi="True"
|
||||
string="Convert To Task"/>
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -6,17 +6,12 @@
|
||||
-->
|
||||
<!-- For Bugs -->
|
||||
|
||||
<record model="crm.case.categ" id="categ1">
|
||||
<record model="crm.case.categ" id="bug_categ">
|
||||
<field name="name">Bugs</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.project.bug')]" model="ir.model"/>
|
||||
</record>
|
||||
<record model="crm.case.categ" id="categ2">
|
||||
<field name="name">Patches</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.project.bug')]" model="ir.model"/>
|
||||
</record>
|
||||
<record model="crm.case.categ" id="categ3">
|
||||
</record>
|
||||
<record model="crm.case.categ" id="feature_request_categ">
|
||||
<field name="name">Feature Requests</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.project.bug')]" model="ir.model"/>
|
||||
@@ -71,12 +66,6 @@
|
||||
<field name="name">Works For Me</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.project.bug')]" model="ir.model"/>
|
||||
</record>
|
||||
<record model="crm.case.stage" id="stage7">
|
||||
<field name="name">Future</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.project.bug')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<field eval=""open"" name="state"/>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="categ_id" ref="categ1"/>
|
||||
<field name="categ_id" ref="bug_categ"/>
|
||||
<field name="stage_id" ref="stage1"/>
|
||||
<field eval="15.0" name="duration"/>
|
||||
<field eval=""Bug in Accounts module"" name="name"/>
|
||||
@@ -40,7 +40,7 @@
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="3.5" name="duration"/>
|
||||
<field name="categ_id" ref="categ1"/>
|
||||
<field name="categ_id" ref="bug_categ"/>
|
||||
<field name="stage_id" ref="stage2"/>
|
||||
<field eval=""Program not giving proper output"" name="name"/>
|
||||
</record>
|
||||
@@ -56,7 +56,7 @@
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="2.3" name="duration"/>
|
||||
<field name="categ_id" ref="categ1"/>
|
||||
<field name="categ_id" ref="bug_categ"/>
|
||||
<field name="stage_id" ref="stage3"/>
|
||||
<field eval=""Output incorrect"" name="name"/>
|
||||
</record>
|
||||
@@ -72,7 +72,7 @@
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="4.0" name="duration"/>
|
||||
<field name="categ_id" ref="categ1"/>
|
||||
<field name="categ_id" ref="bug_categ"/>
|
||||
<field name="stage_id" ref="stage4"/>
|
||||
<field eval=""Problem loading page"" name="name"/>
|
||||
</record>
|
||||
@@ -87,7 +87,7 @@
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="1.0" name="duration"/>
|
||||
<field name="categ_id" ref="categ1"/>
|
||||
<field name="categ_id" ref="bug_categ"/>
|
||||
<field name="stage_id" ref="stage5"/>
|
||||
<field eval=""Page not Found"" name="name"/>
|
||||
</record>
|
||||
@@ -103,7 +103,7 @@
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="4.0" name="duration"/>
|
||||
<field name="categ_id" ref="categ1"/>
|
||||
<field name="categ_id" ref="bug_categ"/>
|
||||
<field name="stage_id" ref="stage6"/>
|
||||
<field eval=""Programming Error"" name="name"/>
|
||||
</record>
|
||||
@@ -119,8 +119,8 @@
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="2.0" name="duration"/>
|
||||
<field name="categ_id" ref="categ1"/>
|
||||
<field name="stage_id" ref="stage7"/>
|
||||
<field name="categ_id" ref="bug_categ"/>
|
||||
<field name="stage_id" ref="stage6"/>
|
||||
<field eval=""Logical Error in Program"" name="name"/>
|
||||
</record>
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="7.3" name="duration"/>
|
||||
<field name="categ_id" ref="categ1"/>
|
||||
<field name="categ_id" ref="bug_categ"/>
|
||||
<field name="stage_id" ref="stage5"/>
|
||||
<field eval=""Constraint Error"" name="name"/>
|
||||
</record>
|
||||
@@ -150,7 +150,7 @@
|
||||
<field eval=""open"" name="state"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="1.3" name="duration"/>
|
||||
<field name="categ_id" ref="categ2"/>
|
||||
<field name="categ_id" ref="feature_request_categ"/>
|
||||
<field name="stage_id" ref="stage5"/>
|
||||
<field eval=""Error in Program"" name="name"/>
|
||||
</record>
|
||||
@@ -166,7 +166,7 @@
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="13.0" name="duration"/>
|
||||
<field name="categ_id" ref="categ2"/>
|
||||
<field name="categ_id" ref="feature_request_categ"/>
|
||||
<field name="stage_id" ref="stage5"/>
|
||||
<field eval=""Patches Error in Program"" name="name"/>
|
||||
</record>
|
||||
@@ -182,7 +182,7 @@
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="3.2" name="duration"/>
|
||||
<field name="categ_id" ref="categ3"/>
|
||||
<field name="categ_id" ref="feature_request_categ"/>
|
||||
<field name="stage_id" ref="stage1"/>
|
||||
<field eval=""New Features To Be Added"" name="name"/>
|
||||
</record>
|
||||
@@ -198,7 +198,7 @@
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="3.0" name="duration"/>
|
||||
<field name="categ_id" ref="categ3"/>
|
||||
<field name="categ_id" ref="feature_request_categ"/>
|
||||
<field name="stage_id" ref="stage2"/>
|
||||
<field eval=""Add menus to the module"" name="name"/>
|
||||
<field eval=""info@opensides.be"" name="email_from"/>
|
||||
@@ -215,7 +215,7 @@
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="2.0" name="duration"/>
|
||||
<field name="categ_id" ref="categ3"/>
|
||||
<field name="categ_id" ref="feature_request_categ"/>
|
||||
<field name="stage_id" ref="stage3"/>
|
||||
<field eval=""Include Attendance sheet in Project"" name="name"/>
|
||||
<field eval=""contact@tecsas.fr"" name="email_from"/>
|
||||
@@ -234,7 +234,7 @@
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="2.45" name="duration"/>
|
||||
<field name="categ_id" ref="categ3"/>
|
||||
<field name="categ_id" ref="feature_request_categ"/>
|
||||
<field name="stage_id" ref="stage5"/>
|
||||
<field eval=""Create new object"" name="name"/>
|
||||
</record>
|
||||
@@ -250,8 +250,8 @@
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="15.0" name="duration"/>
|
||||
<field name="categ_id" ref="categ3"/>
|
||||
<field name="stage_id" ref="stage7"/>
|
||||
<field name="categ_id" ref="feature_request_categ"/>
|
||||
<field name="stage_id" ref="stage6"/>
|
||||
<field eval=""Improve Reports in HRMS"" name="name"/>
|
||||
</record>
|
||||
|
||||
@@ -266,7 +266,7 @@
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="06.15" name="duration"/>
|
||||
<field name="categ_id" ref="categ3"/>
|
||||
<field name="categ_id" ref="feature_request_categ"/>
|
||||
<field name="stage_id" ref="stage5"/>
|
||||
<field eval=""Improve Reports in PMS"" name="name"/>
|
||||
</record>
|
||||
|
||||
@@ -1,50 +1,19 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
|
||||
<record model="crm.case.categ" id="categ1">
|
||||
<field name="name">Bugs</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.project.bug')]" model="ir.model"/>
|
||||
</record>
|
||||
<record model="crm.case.categ" id="categ2">
|
||||
<field name="name">Patches</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.project.bug')]" model="ir.model"/>
|
||||
</record>
|
||||
<record model="crm.case.categ" id="categ3">
|
||||
<field name="name">Feature Requests</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.project.bug')]" model="ir.model"/>
|
||||
</record>
|
||||
<record model="crm.case.stage" id="stage2">
|
||||
<field name="name">Fixed</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.project.bug')]" model="ir.model"/>
|
||||
</record>
|
||||
<record model="crm.case.stage" id="stage5">
|
||||
<field name="name">Awaiting Response</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.project.bug')]" model="ir.model"/>
|
||||
</record>
|
||||
<record model="crm.case.stage" id="stage7">
|
||||
<field name="name">Future</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.project.bug')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<data noupdate="1">
|
||||
|
||||
|
||||
######################## BUG TRACKING (menu) ###########################
|
||||
<!--
|
||||
ALL BUGS
|
||||
-->
|
||||
<record model="ir.actions.act_window" id="crm_case_categ_act0">
|
||||
<field name="name">Bugs</field>
|
||||
<field name="name">Issues</field>
|
||||
<field name="res_model">crm.project.bug</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,calendar</field>
|
||||
<field name="view_id" ref="crm_case_tree_view"/>
|
||||
<field name="domain" eval="[('categ_id','=',ref('bug_categ'))]"/>
|
||||
<field name="context" eval="{'default_state':'open'}"/>
|
||||
<field name="search_view_id" ref="view_crm_case_bugs_filter"/>
|
||||
</record>
|
||||
@@ -67,7 +36,7 @@
|
||||
<field name="act_window_id" ref="crm_case_categ_act0"/>
|
||||
</record>
|
||||
|
||||
<!--<menuitem id="menu_aftertask" name="Bug" parent="base.menu_main_pm" visible="False"/>-->
|
||||
<!--<menuitem id="menu_aftertask" name="Bug" parent="project.menu_main" visible="False"/>-->
|
||||
<menuitem name="Issues" id="menu_crm_case_bug_track" parent="project.menu_project_management" action="crm_case_categ_act0"/>
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -36,25 +36,29 @@
|
||||
<field name="arch" type="xml">
|
||||
<form string="Bug Tracker Form">
|
||||
<group colspan="4" col="6">
|
||||
<field name="project_id" required="True"/>
|
||||
<field name="name" string="Title" colspan="2"/>
|
||||
<field name="section_id" colspan="1" widget="selection"/>
|
||||
<label string="Resolution: " align="1.0"/>
|
||||
<group colspan="1" col="2">
|
||||
<field name="stage_id" select="1" nolabel="1"/>
|
||||
<button icon="gtk-go-forward" string="" name="stage_next" type="object"/>
|
||||
</group>
|
||||
<field name="date"/>
|
||||
<field name="name" string="Title" colspan="2"/>
|
||||
<field name="project_id" required="True"/>
|
||||
<field name="categ_id" on_change="onchange_categ_id(categ_id)" widget="selection" required="1" domain="[('object_id.model', '=', 'crm.project.bug')]"/>
|
||||
<field name="user_id" />
|
||||
<label string="Resolution: " align="1.0"/>
|
||||
<group colspan="1" col="2">
|
||||
<field name="stage_id" select="1" nolabel="1"/>
|
||||
<button icon="gtk-go-forward" string="" name="stage_next" type="object"/>
|
||||
</group>
|
||||
<label string="Related Task: " align="1.0"/>
|
||||
<group colspan="1" col="2">
|
||||
<field name="task_id" nolabel="1"/>
|
||||
<button string="Convert To Task" name="%(wizard_crm_bug_task_set)d" icon="gtk-index" type="action" attrs="{'invisible':[('task_id','!=',False)]}"/>
|
||||
</group>
|
||||
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="General">
|
||||
<field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)" colspan="2"/>
|
||||
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
|
||||
<field name="email_from" colspan="2"/>
|
||||
<field name="email_from" colspan="2"/>
|
||||
<separator colspan="4"/>
|
||||
<field name="type_id" string="Version"/>
|
||||
<field name="categ_id" on_change="onchange_categ_id(categ_id)"/>
|
||||
<field name="type_id" string="Version"/>
|
||||
<field name="priority" string="Severity"/>
|
||||
<newline/>
|
||||
<separator string= "Description" colspan="4"/>
|
||||
@@ -158,20 +162,7 @@
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Bugs">
|
||||
<group col="7" colspan="1">
|
||||
<filter icon="gtk-apply" string="Fixed Bugs"
|
||||
domain="[('stage_id.name','=','Fixed')]"
|
||||
separator="1" help="All Fixed Bugs"
|
||||
/>
|
||||
<filter icon="gtk-media-pause" string="Waiting Bugs"
|
||||
domain="[('stage_id.name','=','Awaiting Response')]"
|
||||
separator="1" help="All Waiting Bugs"
|
||||
/>
|
||||
<filter icon="gtk-media-forward" string="Future Bugs"
|
||||
domain="[('stage_id.name','=','Future')]"
|
||||
separator="1" help="All Future Bugs"
|
||||
/>
|
||||
<separator orientation="vertical"/>
|
||||
<group col="3" colspan="1">
|
||||
<filter icon="gtk-home" string=" Today "
|
||||
separator="1"
|
||||
domain="[('date','=',time.strftime('%%Y-%%m-%%d'))]"
|
||||
@@ -181,20 +172,25 @@
|
||||
string=" 7 Days " separator="1"
|
||||
domain="[('date','<', time.strftime('%%Y-%%m-%%d')), ('date','>=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Bugs during last 7 days"
|
||||
/>
|
||||
/>
|
||||
|
||||
</group>
|
||||
<separator orientation="vertical"/>
|
||||
<group col="4" colspan="2">
|
||||
<group col="5" colspan="2">
|
||||
<field name="name" select='1' string="Subject"/>
|
||||
<field name="user_id" select="1" widget="selection">
|
||||
<filter icon="terp-partner" domain="[('user_id','=',uid)]" help="My Bugs" default="1"/>
|
||||
</field>
|
||||
<field name="section_id" select="1" widget="selection" string="Section" default="context.get('section_id', False)">
|
||||
<field name="user_id" select="1" widget="selection">
|
||||
<filter icon="terp-partner" domain="[('user_id','=',uid)]" help="My Bugs" default="1"/>
|
||||
</field>
|
||||
<field name="state" select="1">
|
||||
<filter icon="gtk-new" domain="[('state','in',('open','draft'))]" help="Current Bugs" default="1"/>
|
||||
<filter icon="gtk-yes" domain="[('state','=','open')]" help="Open Bugs"/>
|
||||
</field>
|
||||
<field name="project_id" select="1" widget="selection" string="Project" default="context.get('project_id', False)">
|
||||
<filter icon="terp-crm"
|
||||
domain="[('section_id','=',context.get('section_id',False))]"
|
||||
help="My section"
|
||||
domain="[('project_id','=',context.get('project_id',False))]"
|
||||
help="My Project"
|
||||
/>
|
||||
</field>
|
||||
</field>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
|
||||
@@ -1,55 +1,36 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
|
||||
<record model="crm.case.categ" id="future_patch_categ">
|
||||
<field name="name">Patches</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.project.future')]" model="ir.model"/>
|
||||
</record>
|
||||
<record model="crm.case.stage" id="future_fixed_categ">
|
||||
<field name="name">Fixed</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.project.future')]" model="ir.model"/>
|
||||
</record>
|
||||
<record model="crm.case.stage" id="future_awaiting_categ">
|
||||
<field name="name">Awaiting Response</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="object_id" search="[('model','=','crm.project.future')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<data noupdate="1">
|
||||
|
||||
|
||||
######################## Future Request (menu) ###########################
|
||||
<!--
|
||||
ALL BUGS
|
||||
-->
|
||||
|
||||
<record model="ir.actions.act_window" id="action_crm_case_future">
|
||||
<field name="name">Future Requests</field>
|
||||
<field name="res_model">crm.project.future</field>
|
||||
<field name="res_model">crm.project.bug</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,calendar</field>
|
||||
<field name="view_id" ref="crm_case_future_tree_view"/>
|
||||
<field name="view_id" ref="crm_case_tree_view"/>
|
||||
<field name="domain" eval="[('categ_id','=',ref('feature_request_categ'))]"/>
|
||||
<field name="context" eval="{'default_state':'open'}"/>
|
||||
<field name="search_view_id" ref="view_crm_case_future_filter"/>
|
||||
<field name="search_view_id" ref="view_crm_case_bugs_filter"/>
|
||||
</record>
|
||||
<record model="ir.actions.act_window.view" id="action_crm_future_tree_view0">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_id" ref="crm_case_future_tree_view"/>
|
||||
<field name="view_id" ref="crm_case_tree_view"/>
|
||||
<field name="act_window_id" ref="action_crm_case_future"/>
|
||||
</record>
|
||||
<record model="ir.actions.act_window.view" id="action_crm_future_calendar_view0">
|
||||
<field name="sequence" eval="2"/>
|
||||
<field name="view_mode">calendar</field>
|
||||
<field name="view_id" ref="crm_case_future_calendar_view"/>
|
||||
<field name="view_id" ref="crm_case_calendar_view"/>
|
||||
<field name="act_window_id" ref="action_crm_case_future"/>
|
||||
</record>
|
||||
<record model="ir.actions.act_window.view" id="action_crm_future_form_view0">
|
||||
<field name="sequence" eval="3"/>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="crm_case_future_form_view"/>
|
||||
<field name="view_id" ref="crm_case_form_view"/>
|
||||
<field name="act_window_id" ref="action_crm_case_future"/>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -1,191 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- <menuitem name="CRM & SRM" icon="terp-crm" id="menu_crm1"/> -->
|
||||
|
||||
# ------------------------------------------------------
|
||||
# Future Request
|
||||
# ------------------------------------------------------
|
||||
|
||||
|
||||
<record model="ir.ui.view" id="crm_case_future_form_view">
|
||||
<field name="name">CRM - Future Request Form</field>
|
||||
<field name="model">crm.project.future</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Future Request Form">
|
||||
<group colspan="4" col="6">
|
||||
<field name="project_id" required="True"/>
|
||||
<field name="name" string="Title" colspan="2"/>
|
||||
<field name="section_id" colspan="1" widget="selection"/>
|
||||
<label string="Resolution: " align="1.0"/>
|
||||
<group colspan="1" col="2">
|
||||
<field name="stage_id" select="1" nolabel="1"/>
|
||||
<button icon="gtk-go-forward" string="" name="stage_next" type="object"/>
|
||||
</group>
|
||||
<field name="date"/>
|
||||
<field name="user_id" />
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="General">
|
||||
<field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)" colspan="2"/>
|
||||
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
|
||||
<field name="email_from" colspan="2"/>
|
||||
<separator colspan="4"/>
|
||||
<field name="type_id" string="Version"/>
|
||||
<field name="categ_id" on_change="onchange_categ_id(categ_id)"/>
|
||||
<field name="priority" string="Severity"/>
|
||||
<newline/>
|
||||
<separator string= "Description" colspan="4"/>
|
||||
<field name="description" nolabel="1" colspan="4"/>
|
||||
<separator colspan="4"/>
|
||||
<group col="8" colspan="4">
|
||||
<field name="state" />
|
||||
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
|
||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
|
||||
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
|
||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="History">
|
||||
<field name="id" select="1"/>
|
||||
<field name="active" />
|
||||
<separator colspan="4" string="Dates"/>
|
||||
<field name="create_date"/>
|
||||
<field name="date_closed"/>
|
||||
<field name="date_action_last"/>
|
||||
<field name="date_action_next"/>
|
||||
<separator colspan="4" string="Estimates"/>
|
||||
<field name="planned_revenue"/>
|
||||
<field name="planned_cost"/>
|
||||
<field name="probability"/>
|
||||
<separator colspan="4" string="References"/>
|
||||
<field name="ref" colspan="4"/>
|
||||
<field name="ref2" colspan="4"/>
|
||||
<field name="log_ids" nolabel="1" colspan="4">
|
||||
<form string="Actions">
|
||||
<separator string="Action Information" colspan="4"/>
|
||||
<field name="name" colspan="4"/>
|
||||
<field name="date" />
|
||||
<field name="user_id" />
|
||||
<field name="som" />
|
||||
<field name="canal_id"/>
|
||||
</form>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Emails">
|
||||
<group colspan="4">
|
||||
<field colspan="4" name="email_cc" string="CC"/>
|
||||
</group>
|
||||
<field name="history_line" colspan="4" nolabel="1" mode="form,tree">
|
||||
<form string="Communication history">
|
||||
<group col="7" colspan="4">
|
||||
<field name="date"/>
|
||||
<field name="email"/>
|
||||
<field name="canal_id"/>
|
||||
<button
|
||||
string="Add a CC"
|
||||
name="%(crm.action_view_crm_email_add_cc_wizard)d"
|
||||
icon="gtk-add" type="action"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<field name="description" colspan="4" nolabel="1"/>
|
||||
<button colspan="4" string="Reply to Last Email" name="%(crm.wizard_crm_send_mail)d" context="{'mail':'reply'}" icon="gtk-undo" type="action"/>
|
||||
</form>
|
||||
<tree string="Communication history">
|
||||
<field name="description"/>
|
||||
<field name="email"/>
|
||||
<field name="date"/>
|
||||
</tree>
|
||||
</field>
|
||||
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="crm_case_future_tree_view">
|
||||
<field name="name">CRM - Future Request Tree</field>
|
||||
<field name="model">crm.project.future</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Bugs Tree" colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
|
||||
<field name="id"/>
|
||||
<field name="name" string="Title"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="priority" string="Severity"/>
|
||||
<field name="categ_id"/>
|
||||
<field name="stage_id" string="Resolution"/>
|
||||
<field name="type_id" string="Version"/>
|
||||
<field name="user_id"/>
|
||||
<field name="state"/>
|
||||
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
|
||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
|
||||
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
|
||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_crm_case_future_filter" model="ir.ui.view">
|
||||
<field name="name">CRM - Future Request Search</field>
|
||||
<field name="model">crm.project.future</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Future Requests">
|
||||
<group col="7" colspan="1">
|
||||
<filter icon="gtk-apply" string="Fixed Future Requests"
|
||||
domain="[('stage_id.name','=','Fixed')]"
|
||||
separator="1" help="All Fixed Future Requests"
|
||||
/>
|
||||
<filter icon="gtk-media-pause" string="Waiting Response"
|
||||
domain="[('stage_id.name','=','Awaiting Response')]"
|
||||
separator="1" help="All Future Requests which are Waiting for Response"
|
||||
/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter icon="gtk-home" string=" Today "
|
||||
separator="1"
|
||||
domain="[('date','=',time.strftime('%%Y-%%m-%%d'))]"
|
||||
help="Todays's Future Requests"
|
||||
/>
|
||||
<filter icon="gtk-media-rewind"
|
||||
string=" 7 Days " separator="1"
|
||||
domain="[('date','<', time.strftime('%%Y-%%m-%%d')), ('date','>=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Future Requests during last 7 days"
|
||||
/>
|
||||
</group>
|
||||
<separator orientation="vertical"/>
|
||||
<group col="4" colspan="2">
|
||||
<field name="name" select='1' string="Subject"/>
|
||||
<field name="user_id" select="1" widget="selection">
|
||||
<filter icon="terp-partner" domain="[('user_id','=',uid)]" help="My Future Requests" default="1"/>
|
||||
</field>
|
||||
<field name="section_id" select="1" widget="selection" string="Section" default="context.get('section_id', False)">
|
||||
<filter icon="terp-crm"
|
||||
domain="[('section_id','=',context.get('section_id',False))]"
|
||||
help="My section"
|
||||
/>
|
||||
</field>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="crm_case_future_calendar_view">
|
||||
<field name="name">CRM - Future Request Calendar</field>
|
||||
<field name="model">crm.project.future</field>
|
||||
<field name="type">calendar</field>
|
||||
<field name="priority" eval="2"/>
|
||||
<field name="arch" type="xml">
|
||||
<calendar string="Bugs" date_start="date" color="user_id" date_delay="duration">
|
||||
<field name="name"/>
|
||||
<field name="partner_id"/>
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -38,7 +38,7 @@ from crm import crm
|
||||
class crm_project_bug(osv.osv):
|
||||
_name = "crm.project.bug"
|
||||
_description = "Project Bug Cases"
|
||||
_order = "id desc"
|
||||
_order = "priority, id desc"
|
||||
_inherit = 'crm.case'
|
||||
_columns = {
|
||||
'date_closed': fields.datetime('Closed', readonly=True),
|
||||
@@ -51,34 +51,28 @@ class crm_project_bug(osv.osv):
|
||||
'som': fields.many2one('res.partner.som', 'State of Mind', help="The minds states allow to define a value scale which represents" \
|
||||
"the partner mentality in relation to our services.The scale has" \
|
||||
"to be created with a factor for each level from 0 (Very dissatisfied) to 10 (Extremely satisfied)."),
|
||||
'categ_id': fields.many2one('crm.case.categ','Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.project.bug')]"),
|
||||
'categ_id': fields.many2one('crm.case.categ','Category', domain="[('object_id.model', '=', 'crm.project.bug')]"),
|
||||
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
|
||||
'type_id': fields.many2one('crm.case.resource.type', 'Bug Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.project.bug')]"),
|
||||
'type_id': fields.many2one('crm.case.resource.type', 'Bug Type', domain="[('object_id.model', '=', 'crm.project.bug')]"),
|
||||
|
||||
'partner_name': fields.char("Employee's Name", size=64),
|
||||
'partner_mobile': fields.char('Mobile', size=32),
|
||||
'partner_phone': fields.char('Phone', size=32),
|
||||
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.project.bug')]"),
|
||||
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('object_id.model', '=', 'crm.project.bug')]"),
|
||||
'project_id':fields.many2one('project.project', 'Project'),
|
||||
'duration': fields.float('Duration') ,
|
||||
'duration': fields.float('Duration'),
|
||||
'probability': fields.float('Probability (%)'),
|
||||
'task_id': fields.many2one('project.task', 'Task', domain="[('project_id','=',project_id)]")
|
||||
}
|
||||
|
||||
def _get_project(self, cr, uid, context):
|
||||
user = self.pool.get('res.users').browse(cr,uid,uid, context=context)
|
||||
if user.context_project_id:
|
||||
return user.context_project_id
|
||||
return False
|
||||
return False
|
||||
|
||||
_defaults = {
|
||||
'project_id':_get_project
|
||||
'project_id':_get_project,
|
||||
}
|
||||
def onchange_categ_id(self, cr, uid, ids, categ, context={}):
|
||||
if not categ:
|
||||
return {'value':{}}
|
||||
cat = self.pool.get('crm.case.categ').browse(cr, uid, categ, context).probability
|
||||
return {'value':{'probability':cat}}
|
||||
|
||||
|
||||
crm_project_bug()
|
||||
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
#-*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# 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/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import time
|
||||
import re
|
||||
import os
|
||||
|
||||
import mx.DateTime
|
||||
import base64
|
||||
|
||||
from tools.translate import _
|
||||
|
||||
import tools
|
||||
from osv import fields,osv,orm
|
||||
from osv.orm import except_orm
|
||||
|
||||
from crm import crm
|
||||
|
||||
class crm_project_future_request(osv.osv):
|
||||
_name = "crm.project.future"
|
||||
_description = "Project Future Request"
|
||||
_order = "id desc"
|
||||
_inherit = 'crm.case'
|
||||
_columns = {
|
||||
'date_closed': fields.datetime('Closed', readonly=True),
|
||||
'ref' : fields.reference('Reference', selection=crm._links_get, size=128),
|
||||
'ref2' : fields.reference('Reference 2', selection=crm._links_get, size=128),
|
||||
'canal_id': fields.many2one('res.partner.canal', 'Channel',help="The channels represent the different communication modes available with the customer." \
|
||||
" With each commercial opportunity, you can indicate the canall which is this opportunity source."),
|
||||
'planned_revenue': fields.float('Planned Revenue'),
|
||||
'planned_cost': fields.float('Planned Costs'),
|
||||
'som': fields.many2one('res.partner.som', 'State of Mind', help="The minds states allow to define a value scale which represents" \
|
||||
"the partner mentality in relation to our services.The scale has" \
|
||||
"to be created with a factor for each level from 0 (Very dissatisfied) to 10 (Extremely satisfied)."),
|
||||
'categ_id': fields.many2one('crm.case.categ','Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.project.future')]"),
|
||||
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
|
||||
'type_id': fields.many2one('crm.case.resource.type', 'Bug Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.project.future')]"),
|
||||
|
||||
'partner_name': fields.char("Employee's Name", size=64),
|
||||
'partner_mobile': fields.char('Mobile', size=32),
|
||||
'partner_phone': fields.char('Phone', size=32),
|
||||
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.project.future')]"),
|
||||
'project_id':fields.many2one('project.project', 'Project'),
|
||||
'duration': fields.float('Duration') ,
|
||||
'probability': fields.float('Probability (%)'),
|
||||
}
|
||||
def _get_project(self, cr, uid, context):
|
||||
user = self.pool.get('res.users').browse(cr,uid,uid, context=context)
|
||||
if user.context_project_id:
|
||||
return user.context_project_id
|
||||
return False
|
||||
|
||||
_defaults = {
|
||||
'project_id':_get_project
|
||||
}
|
||||
def onchange_categ_id(self, cr, uid, ids, categ, context={}):
|
||||
if not categ:
|
||||
return {'value':{}}
|
||||
cat = self.pool.get('crm.case.categ').browse(cr, uid, categ, context).probability
|
||||
return {'value':{'probability':cat}}
|
||||
|
||||
|
||||
crm_project_future_request()
|
||||
|
||||
@@ -68,8 +68,8 @@
|
||||
<field name="view_id" ref="view_crm_project_bug_user_graph"/>
|
||||
<field name="search_view_id" ref="view_crm_project_bug_user_filter"/>
|
||||
</record>
|
||||
|
||||
<menuitem id="base.menu_project_report" name="Reporting" parent="project.menu_main" sequence="50"/>
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management"/>
|
||||
<menuitem id="base.menu_project_report" name="Reporting" parent="base.menu_main_pm" sequence="50"/>
|
||||
<menuitem name="Project Bug" id="menu_crm_project_bug_tree" parent="base.menu_project_report" sequence="1"/>
|
||||
<menuitem action="action_report_crm_project_bug_user_tree" id="menu_crm_project_bug_user_tree" parent="menu_crm_project_bug_tree"/>
|
||||
|
||||
@@ -190,4 +190,4 @@
|
||||
</record>
|
||||
<menuitem action="action_report_crm_project_bug_section_tree" id="menu_crm_project_bug_section_tree" parent="menu_crm_project_bug_tree"/>
|
||||
</data>
|
||||
</openerp>
|
||||
</openerp>
|
||||
|
||||
@@ -12,17 +12,7 @@
|
||||
<record id="crm_project_bug_rule" model="ir.rule">
|
||||
<field name="domain_force">['|',('project_id','=',False),('project_id','=',user.context_project_id)]</field>
|
||||
<field name="rule_group" ref="crm_project_bug_rule_group"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="crm_project_feature_rule_group">
|
||||
<field name="name">crm.project.feature.rule.group</field>
|
||||
<field name="model_id" search="[('model','=','crm.project.future')]" model="ir.model"/>
|
||||
<field name="global" eval="True"/>
|
||||
</record>
|
||||
<record id="crm_project_feature_rule" model="ir.rule">
|
||||
<field name="domain_force">['|',('project_id','=',False),('project_id','=',user.context_project_id)]</field>
|
||||
<field name="rule_group" ref="crm_project_feature_rule_group"/>
|
||||
</record>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_crm_project_bug","crm.project.bug","model_crm_project_bug","crm.group_crm_manager",1,1,1,1
|
||||
"access_crm_project_future","crm.project.future","model_crm_project_future","crm.group_crm_manager",1,1,1,1
|
||||
"access_report_crm_project_bug_user","report.crm.project.bug.user","model_report_crm_project_bug_user","crm.group_crm_manager",1,0,0,0
|
||||
"access_report_crm_project_bug_categ","report.crm.project.bug.categ","model_report_crm_project_bug_categ","crm.group_crm_manager",1,0,0,0
|
||||
"access_repor_crm_project_bug_section","report.crm.project.bug.section","model_report_crm_project_bug_section","crm.group_crm_manager",1,0,0,0
|
||||
|
||||
|
@@ -0,0 +1,25 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). All Rights Reserved
|
||||
# $Id$
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
import crm_bug_wizard
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
@@ -0,0 +1,98 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# 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 mx.DateTime import now
|
||||
|
||||
import wizard
|
||||
import netsvc
|
||||
import ir
|
||||
import pooler
|
||||
from tools.translate import _
|
||||
|
||||
class bug2task(wizard.interface):
|
||||
|
||||
def _check_state(self, cr, uid, data, context):
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
case_obj = pool.get('crm.project.bug')
|
||||
for case in case_obj.browse(cr, uid, data['ids']):
|
||||
if case.state != 'open':
|
||||
raise wizard.except_wizard(_('Warning !'),
|
||||
_('Bugs or Feature Requests should be in \'Open\' state before converting into Task.'))
|
||||
return {}
|
||||
|
||||
def _makeTask(self, cr, uid, data, context):
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
data_obj = pool.get('ir.model.data')
|
||||
result = data_obj._get_id(cr, uid, 'project', 'view_task_search_form')
|
||||
res = data_obj.read(cr, uid, result, ['res_id'])
|
||||
|
||||
|
||||
id2 = data_obj._get_id(cr, uid, 'project', 'view_task_form2')
|
||||
id3 = data_obj._get_id(cr, uid, 'project', 'view_task_tree2')
|
||||
if id2:
|
||||
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
|
||||
if id3:
|
||||
id3 = data_obj.browse(cr, uid, id3, context=context).res_id
|
||||
|
||||
bug_case_obj = pool.get('crm.project.bug')
|
||||
task_obj = pool.get('project.task')
|
||||
for bug in bug_case_obj.browse(cr, uid, data['ids']):
|
||||
new_task_id = task_obj.create(cr, uid, {
|
||||
'name': bug.name,
|
||||
'partner_id': bug.partner_id.id,
|
||||
'description':bug.description,
|
||||
'date': bug.date,
|
||||
'project_id':bug.project_id.id,
|
||||
'priority':bug.priority,
|
||||
'user_id':bug.user_id.id,
|
||||
'planned_hours': 0.0,
|
||||
})
|
||||
|
||||
new_task = task_obj.browse(cr, uid, new_task_id)
|
||||
|
||||
vals = {
|
||||
'task_id': new_task_id,
|
||||
}
|
||||
|
||||
bug_case_obj.write(cr, uid, [bug.id], vals)
|
||||
|
||||
value = {
|
||||
'name': _('Tasks'),
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form,tree',
|
||||
'res_model': 'project.task',
|
||||
'res_id': int(new_task_id),
|
||||
'view_id': False,
|
||||
'views': [(id2,'form'),(id3,'tree'),(False,'calendar'),(False,'graph')],
|
||||
'type': 'ir.actions.act_window',
|
||||
'search_view_id': res['res_id']
|
||||
}
|
||||
return value
|
||||
|
||||
states = {
|
||||
'init': {
|
||||
'actions': [_check_state],
|
||||
'result': {'type': 'action', 'action': _makeTask, 'state':'end' }
|
||||
}
|
||||
}
|
||||
|
||||
bug2task('crm.bug.task_set')
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-02 04:48+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: document
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-03 04:47+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: document
|
||||
|
||||
@@ -201,7 +201,7 @@ class event_registration(osv.osv):
|
||||
if reg_id.email_cc:
|
||||
dest += [reg_id.email_cc]
|
||||
if dest and src:
|
||||
tools.email_send(src, dest,'Auto Confirmation: '+'['+str(reg_id.id)+']'+' '+reg_id.name, reg_id.event_id.mail_confirm, tinycrm = str(reg_id.case_id.id))
|
||||
tools.email_send(src, dest,'Auto Confirmation: '+'['+str(reg_id.id)+']'+' '+reg_id.name, reg_id.event_id.mail_confirm, openobject_id = str(reg_id.case_id.id))
|
||||
if not src:
|
||||
raise osv.except_osv(_('Error!'), _('You must define a reply-to address in order to mail the participant. You can do this in the Mailing tab of your event. Note that this is also the place where you can configure your event to not send emails automaticly while registering'))
|
||||
return False
|
||||
@@ -216,9 +216,9 @@ class event_registration(osv.osv):
|
||||
if reg_id.event_id.mail_auto_confirm or reg_id.event_id.mail_auto_registr:
|
||||
if dest and src:
|
||||
if reg_id.event_id.state in ['draft', 'fixed', 'open','confirm','running'] and reg_id.event_id.mail_auto_registr:
|
||||
tools.email_send(src, dest,'Auto Registration: '+'['+str(reg_id.id)+']'+' '+reg_id.name, reg_id.event_id.mail_registr, tinycrm = str(reg_id.case_id.id))
|
||||
tools.email_send(src, dest,'Auto Registration: '+'['+str(reg_id.id)+']'+' '+reg_id.name, reg_id.event_id.mail_registr, openobject_id = str(reg_id.case_id.id))
|
||||
if (reg_id.event_id.state in ['confirm','running']) and reg_id.event_id.mail_auto_confirm:
|
||||
tools.email_send(src, dest,'Auto Confirmation: '+'['+str(reg_id.id)+']'+' '+reg_id.name, reg_id.event_id.mail_confirm, tinycrm = str(reg_id.case_id.id))
|
||||
tools.email_send(src, dest,'Auto Confirmation: '+'['+str(reg_id.id)+']'+' '+reg_id.name, reg_id.event_id.mail_confirm, openobject_id = str(reg_id.case_id.id))
|
||||
if not src:
|
||||
raise osv.except_osv(_('Error!'), _('You must define a reply-to address in order to mail the participant. You can do this in the Mailing tab of your event. Note that this is also the place where you can configure your event to not send emails automaticly while registering'))
|
||||
return False
|
||||
|
||||
@@ -14,7 +14,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-02 04:48+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: google_map
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-02 04:48+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: hr
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<menuitem action="si_so" id="menu_si_so" parent="menu_hr_time_tracking" type="wizard" sequence="1"
|
||||
groups="group_hr_attendance"/>
|
||||
<!--Time Tracking menu for Project Management-->
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management"/>
|
||||
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management"/>
|
||||
<menuitem
|
||||
id="base.menu_project_management_time_tracking"
|
||||
name="Time Tracking"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-02 04:48+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: hr_expense
|
||||
|
||||
+11
-1
@@ -540,6 +540,11 @@
|
||||
<field name="routing_id" select='1'/>
|
||||
<field name="origin" select='1'/>
|
||||
</group>
|
||||
<group expand="context.get('report',False)" string="Group By..." colspan="4" col="8">
|
||||
<filter string="By Product" icon="terp-mrp" domain="[]" context="{'group_by':'product_id'}"/>
|
||||
<filter string="By State" icon="terp-mrp" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="Scheduled Date" icon="terp-mrp" domain="[]" context="{'group_by':'date_planned'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
@@ -669,7 +674,7 @@
|
||||
<field name="model">mrp.procurement</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Procurement Lines">
|
||||
<tree string="Procurement Lines" colors="red:state=='draft';black:state=='running';green:state=='confirmed';gray:state in ['done','cancel']">
|
||||
<field name="name"/>
|
||||
<field name="product_id"/>
|
||||
<field name="product_qty"/>
|
||||
@@ -753,6 +758,11 @@
|
||||
<field name="date_planned" select='1'/>
|
||||
<field name="state" select='1'/>
|
||||
</group>
|
||||
<group expand="context.get('report',False)" string="Group By..." colspan="4" col="8">
|
||||
<filter string="By Product" icon="terp-mrp" domain="[]" context="{'group_by':'product_id'}"/>
|
||||
<filter string="By State" icon="terp-mrp" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="Scheduled Date" icon="terp-mrp" domain="[]" context="{'group_by':'date_planned'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -7,13 +7,13 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2009-01-23 17:16+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-02-05 00:18+0000\n"
|
||||
"Last-Translator: Guilherme Santos <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2009-12-16 05:26+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-05 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: mrp_repair
|
||||
@@ -35,12 +35,12 @@ msgstr ""
|
||||
#. module: mrp_repair
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr ""
|
||||
msgstr "Nome de modelo inválido na definição da ação"
|
||||
|
||||
#. module: mrp_repair
|
||||
#: view:mrp.repair:0
|
||||
msgid "Untaxed amount"
|
||||
msgstr ""
|
||||
msgstr "Valor sem impostos"
|
||||
|
||||
#. module: mrp_repair
|
||||
#: field:mrp.repair,state:0
|
||||
@@ -56,7 +56,7 @@ msgstr ""
|
||||
#: field:mrp.repair.fee,product_uom_qty:0
|
||||
#: rml:repair.order:0
|
||||
msgid "Quantity"
|
||||
msgstr ""
|
||||
msgstr "Quantidade"
|
||||
|
||||
#. module: mrp_repair
|
||||
#: view:mrp.repair:0
|
||||
@@ -82,12 +82,12 @@ msgstr ""
|
||||
#: field:mrp.repair.fee,price_subtotal:0
|
||||
#: field:mrp.repair.line,price_subtotal:0
|
||||
msgid "Subtotal"
|
||||
msgstr ""
|
||||
msgstr "Sub-total"
|
||||
|
||||
#. module: mrp_repair
|
||||
#: rml:repair.order:0
|
||||
msgid "Invoice address :"
|
||||
msgstr ""
|
||||
msgstr "Endereço de faturamento"
|
||||
|
||||
#. module: mrp_repair
|
||||
#: field:mrp.repair,guarantee_limit:0
|
||||
@@ -139,7 +139,7 @@ msgstr ""
|
||||
#. module: mrp_repair
|
||||
#: field:mrp.repair,partner_id:0
|
||||
msgid "Partner"
|
||||
msgstr ""
|
||||
msgstr "Parceiro"
|
||||
|
||||
#. module: mrp_repair
|
||||
#: model:ir.actions.act_window,name:mrp_repair.action_repair_quotation_tree
|
||||
@@ -172,7 +172,7 @@ msgstr ""
|
||||
#: field:mrp.repair,prodlot_id:0
|
||||
#: rml:repair.order:0
|
||||
msgid "Lot Number"
|
||||
msgstr ""
|
||||
msgstr "Numero do Lote"
|
||||
|
||||
#. module: mrp_repair
|
||||
#: selection:mrp.repair,state:0
|
||||
@@ -233,7 +233,7 @@ msgstr ""
|
||||
#. module: mrp_repair
|
||||
#: rml:repair.order:0
|
||||
msgid "Total :"
|
||||
msgstr ""
|
||||
msgstr "Total :"
|
||||
|
||||
#. module: mrp_repair
|
||||
#: field:mrp.repair,pricelist_id:0
|
||||
@@ -260,7 +260,7 @@ msgstr ""
|
||||
#. module: mrp_repair
|
||||
#: constraint:ir.ui.view:0
|
||||
msgid "Invalid XML for View Architecture!"
|
||||
msgstr "Invalido XML para Arquitetura da View"
|
||||
msgstr "XML inválido para Arquitetura da View"
|
||||
|
||||
#. module: mrp_repair
|
||||
#: help:mrp.repair,guarantee_limit:0
|
||||
@@ -279,7 +279,7 @@ msgstr ""
|
||||
#. module: mrp_repair
|
||||
#: rml:repair.order:0
|
||||
msgid "N° :"
|
||||
msgstr ""
|
||||
msgstr "N° :"
|
||||
|
||||
#. module: mrp_repair
|
||||
#: field:mrp.repair,invoice_method:0
|
||||
|
||||
@@ -14,7 +14,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-03 04:47+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: olap
|
||||
|
||||
@@ -49,7 +49,7 @@ Main features :
|
||||
'pos_data.xml',
|
||||
'pos_workflow.xml',
|
||||
'statement_view.xml',
|
||||
'statement_report.xml',
|
||||
'statement_report.xml',
|
||||
'statement_data.xml',
|
||||
'statement_wizard.xml'
|
||||
],
|
||||
@@ -66,6 +66,5 @@ Main features :
|
||||
],
|
||||
'demo_xml': ['pos_demo.xml','singer_statement_demo.xml','multi_company_stock_data.xml'],
|
||||
'installable': True,
|
||||
'certificate': '',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -108,7 +108,7 @@ class project(osv.osv):
|
||||
'category_id': fields.many2one('account.analytic.account','Analytic Account', help="Link this project to an analytic account if you need financial management on projects. It enables you to connect projects with budgets, planning, cost and revenue analysis, timesheets on projects, etc."),
|
||||
'priority': fields.integer('Sequence'),
|
||||
'warn_manager': fields.boolean('Warn Manager', help="If you check this field, the project manager will receive a request each time a task is completed by his team."),
|
||||
'resource_ids': fields.many2many('resource.resource', 'project_resource_rel', 'project_id', 'resource_id', 'Project Members', help="Project's member. Not used in any computation, just for information purpose."),
|
||||
'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project Members', help="Project's member. Not used in any computation, just for information purpose."),
|
||||
'tasks': fields.one2many('project.task', 'project_id', "Project tasks"),
|
||||
'planned_hours': fields.function(_progress_rate, multi="progress", method=True, string='Planned Time', help="Sum of planned hours of all tasks related to this project."),
|
||||
'effective_hours': fields.function(_progress_rate, multi="progress", method=True, string='Time Spent', help="Sum of spent hours of all tasks related to this project."),
|
||||
@@ -521,18 +521,21 @@ class message(osv.osv):
|
||||
_name = "project.message"
|
||||
_description = "Message"
|
||||
_columns = {
|
||||
'subject': fields.char('Subject', size=128),
|
||||
'description': fields.char('Description', size =128),
|
||||
'subject': fields.char('Subject', size=128, required="True"),
|
||||
'description': fields.text('Description'),
|
||||
'project_id': fields.many2one('project.project', 'Project', ondelete='cascade'),
|
||||
'date': fields.date('Date'),
|
||||
'user_id': fields.many2one('res.users', 'User'),
|
||||
'user_id': fields.many2one('res.users', 'User', required="True"),
|
||||
}
|
||||
def _default_project(self, cr, uid, context={}):
|
||||
if 'project_id' in context and context['project_id']:
|
||||
return int(context['project_id'])
|
||||
return False
|
||||
return False
|
||||
|
||||
_defaults = {
|
||||
'project_id':_default_project}
|
||||
'user_id' : lambda self,cr,uid,ctx : uid,
|
||||
'project_id':_default_project}
|
||||
|
||||
message()
|
||||
|
||||
def _project_get(self, cr, uid, context={}):
|
||||
|
||||
@@ -28,12 +28,13 @@
|
||||
<field name="priority"/>
|
||||
<field name="resource_calendar_id"/>
|
||||
<field name="active" select="2"/>
|
||||
<newline/>
|
||||
<field name="planned_hours" widget="float_time"/>
|
||||
<field name="effective_hours" widget="float_time"/>
|
||||
|
||||
<newline/>
|
||||
<separator colspan="4" string="Project's members"/>
|
||||
<field colspan="4" name="resource_ids" nolabel="1"/>
|
||||
<field colspan="4" name="members" nolabel="1"/>
|
||||
<group col="9" colspan="8">
|
||||
<field name="state" select="1"/>
|
||||
<button name="set_template" string="Set as Template" type="object" states="open" icon="gtk-convert"/>
|
||||
@@ -346,22 +347,24 @@
|
||||
<tree colors="grey:state in ('cancelled','done');blue:remaining_hours<0;red:bool(date_deadline) and (date_deadline<current_date) and (state in ('draft','open'));black:state not in ('cancelled','done')" string="Tasks">
|
||||
<field name="sequence" invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="project_id" icon="gtk-indent"/>
|
||||
<field name="project_id" icon="gtk-indent" invisible="context.get('set_visible',False)"/>
|
||||
<field name="user_id"/>
|
||||
<field name="remaining_hours" widget="float_time" sum="Remaining Hours"/>
|
||||
<field name="date_deadline"/>
|
||||
<field name="type" groups="base.group_extended"/>
|
||||
<button name="next_type"
|
||||
<field name="remaining_hours" widget="float_time" sum="Remaining Hours" invisible="context.get('set_visible',False)"/>
|
||||
<field name="date_deadline" invisible="context.get('set_visible',False)"/>
|
||||
<field name="type" groups="base.group_extended" invisible="context.get('set_visible',False)"/>
|
||||
<field name="date_start" invisible="1"/>
|
||||
<field name="date_end" invisible="1"/>
|
||||
<button name="next_type" invisible="context.get('set_visible',False)"
|
||||
states="draft,open,pending"
|
||||
string="Change Stage"
|
||||
type="object"
|
||||
icon="gtk-go-forward"
|
||||
groups="base.group_extended"
|
||||
help="Change Type"/>
|
||||
<field name="progress" widget="progressbar"/>
|
||||
<field name="state"/>
|
||||
<button name="do_open" states="pending,draft" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state"/>
|
||||
<button groups="base.group_extended" name="%(wizard_delegate_task)d" states="pending,open,draft" string="Delegate" type="action" icon="gtk-execute" help="For changing to delegate state"/>
|
||||
<field name="progress" widget="progressbar" invisible="context.get('set_visible',False)"/>
|
||||
<field name="state" invisible="context.get('set_visible',False)"/>
|
||||
<button name="do_open" states="pending,draft" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state" invisible="context.get('set_visible',False)"/>
|
||||
<button groups="base.group_extended" name="%(wizard_delegate_task)d" states="pending,open,draft" string="Delegate" type="action" icon="gtk-execute" help="For changing to delegate state" />
|
||||
<button name="%(wizard_close_task)d" states="pending,open" string="Done" type="action" icon="gtk-jump-to" help="For changing to done state"/>
|
||||
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel" help="For cancelling the task"/>
|
||||
</tree>
|
||||
@@ -447,7 +450,7 @@
|
||||
<filter domain="[('manager_id','=',False)]" help="Unassigned Project" icon="terp-project"/>
|
||||
</field>
|
||||
<field name="user_id" select="1" widget="selection">
|
||||
<filter domain="[('user_id','=',uid)]" help="My Tasks" icon="gtk-execute"/>
|
||||
<filter domain="[('user_id','=',uid)]" help="My Tasks" icon="gtk-execute" default="1"/>
|
||||
<filter domain="[('user_id','=',False)]" help="Unassigned Tasks" icon="gtk-execute" separator="1"/>
|
||||
</field>
|
||||
</group>
|
||||
@@ -612,14 +615,15 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Messages">
|
||||
<group colspan="6">
|
||||
<field name="subject" select="1"/>
|
||||
<field name="description"/>
|
||||
<field name="project_id" />
|
||||
<field name="date" select="2"/>
|
||||
<field name="user_id" select="1"/>
|
||||
</group>
|
||||
</form>
|
||||
<group colspan="6">
|
||||
<field name="subject" select="1" string="Title"/>
|
||||
<field name="project_id"/>
|
||||
<field name="user_id" select="1"/>
|
||||
<field name="date" select="2"/>
|
||||
</group>
|
||||
<separator string="Description" colspan="4"/>
|
||||
<field name="description" nolabel="1" colspan="4"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
<wizard id="wizard_delegate_task" menu="False" model="project.task" name="project.task.delegate" string="Delegate Task"/>
|
||||
|
||||
<wizard id="wizard_compute_task" model="project.task" name="wizard.compute.tasks" string="Compute Task Scheduling"/>
|
||||
<menuitem icon="terp-project" id="menu_main" name="Project Management"/>
|
||||
<menuitem id="base.menu_pm_planning" name="Planning" parent="base.menu_main" sequence="3"/>
|
||||
<menuitem
|
||||
action="wizard_compute_task"
|
||||
id="menu_wizard_compute_task"
|
||||
parent="menu_main"
|
||||
parent="base.menu_pm_planning"
|
||||
type="wizard"
|
||||
sequence="1"/>
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_project_project_manager","project.project manager","model_project_project","project.group_project_manager",1,1,1,1
|
||||
"access_account_analytic_account_manager","account.analytic.account","account.model_account_analytic_account","project.group_project_user",1,1,1,1
|
||||
"access_project_project","project.project","model_project_project","project.group_project_user",1,0,0,0
|
||||
"access_account_analytic_account","account.analytic.account","account.model_account_analytic_account","project.group_project_user",1,0,0,0
|
||||
"access_project_task_type_user","project.task.type user","model_project_task_type","project.group_project_user",1,0,0,1
|
||||
"access_project_task_type","project.task.type","model_project_task_type","project.group_project_manager",1,1,1,1
|
||||
"access_project_task_manager","project.task manager","model_project_task","project.group_project_manager",1,1,1,1
|
||||
|
||||
|
@@ -25,7 +25,8 @@ class project_task(osv.osv):
|
||||
_name = "project.task"
|
||||
_inherit = ["calendar.todo", "project.task"]
|
||||
_columns = {
|
||||
'attendee_ids': fields.many2many('calendar.attendee', 'task_attendee_rel', 'task_id', 'attendee_id', 'Attendees'),
|
||||
'attendee_ids': fields.many2many('calendar.attendee', \
|
||||
'task_attendee_rel', 'task_id', 'attendee_id', 'Attendees'),
|
||||
}
|
||||
|
||||
project_task()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<data noupdate="1">
|
||||
|
||||
<record model="basic.calendar" id="base_calendar.basic_calendar2">
|
||||
<field name="name">Meeting-Todo</field>
|
||||
<field name="name">Todo</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.lines" id="caldav.calendar_lines_todo">
|
||||
@@ -69,7 +69,15 @@
|
||||
<field name="field_id" search="[('name','=','progress'),('model_id.model','=','project.task')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
<record model="basic.calendar.fields" id="map_todo_10">
|
||||
<field name="name" ref="base_calendar.field_todo_vtimezone"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_todo" />
|
||||
<field name="field_id" search="[('name','=','vtimezone'),('model_id.model','=','calendar.todo')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_todo_11">
|
||||
<field name="name" ref="base_calendar.field_todo_summary"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_todo" />
|
||||
@@ -134,14 +142,6 @@
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.lines" id="caldav.calendar_lines_event2">
|
||||
<field name="name">vevent</field>
|
||||
<field name="calendar_id" ref="base_calendar.basic_calendar2" />
|
||||
<field name="object_id" search="[('model','=','crm.meeting')]" />
|
||||
<field name="domain">[('user_id','=', uid)]</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.lines" id="caldav.calendar_lines_alarm2">
|
||||
<field name="name">valarm</field>
|
||||
<field name="calendar_id" ref="base_calendar.basic_calendar2" />
|
||||
@@ -154,137 +154,6 @@
|
||||
<field name="object_id" search="[('model','=','calendar.attendee')]" />
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_1">
|
||||
<field name="name" ref="base_calendar.field_event_uid"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','id'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_2">
|
||||
<field name="name" ref="base_calendar.field_event_recurrence-id"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','recurrent_id'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_4">
|
||||
<field name="name" ref="base_calendar.field_event_attendee" />
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','attendee_ids'),('model_id.model','=','crm.meeting')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_5">
|
||||
<field name="name" ref="base_calendar.field_event_rrule"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','rrule'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_6">
|
||||
<field name="name" ref="base_calendar.field_event_dtend"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','date_deadline'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_7">
|
||||
<field name="name" ref="base_calendar.field_event_valarm"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','caldav_alarm_id'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_8">
|
||||
<field name="name" ref="base_calendar.field_event_priority"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','priority'),('model_id.model','=','crm.meeting')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_9">
|
||||
<field name="name" ref="base_calendar.field_event_location"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','location'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_10">
|
||||
<field name="name" ref="base_calendar.field_event_exrule"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','exrule'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_11">
|
||||
<field name="name" ref="base_calendar.field_event_status"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','state'),('model_id.model','=','crm.meeting')]" />
|
||||
<field name="mapping">{'tentative': 'draft', 'confirmed': 'open', 'cancelled': 'cancel'}</field>
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_12">
|
||||
<field name="name" ref="base_calendar.field_event_exdate"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','exdate'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_13">
|
||||
<field name="name" ref="base_calendar.field_event_dtstamp"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','date'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_14">
|
||||
<field name="name" ref="base_calendar.field_event_description"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','description'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_15">
|
||||
<field name="name" ref="base_calendar.field_event_dtstart"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','date'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_16">
|
||||
<field name="name" ref="base_calendar.field_event_class"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','class'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_18">
|
||||
<field name="name" ref="base_calendar.field_event_created"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','create_date'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_19">
|
||||
<field name="name" ref="base_calendar.field_event_url"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','caldav_url'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_20">
|
||||
<field name="name" ref="base_calendar.field_event_summary"/>
|
||||
<field name="type_id" ref="caldav.calendar_lines_event2" />
|
||||
<field name="field_id" search="[('name','=','name'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
<record model="basic.calendar.fields" id="map_alarm_1">
|
||||
<field name="name" ref="base_calendar.field_alarm_attendee"/>
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<field name="partner_id" position="after">
|
||||
<field name="vtimezone" colspan="2" />
|
||||
<field name="location" colspan="2" />
|
||||
<field name="alarm_id" string="Reminder" widget="selection" />
|
||||
<field name="caldav_url" widget="url" />
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
@@ -15,7 +15,7 @@
|
||||
# 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/>.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
@@ -49,7 +49,7 @@ class project_gtd_context(osv.osv):
|
||||
'sequence': lambda *args: 1
|
||||
}
|
||||
_order = "sequence, name"
|
||||
|
||||
|
||||
project_gtd_context()
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ class project_gtd_timebox(osv.osv):
|
||||
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of timebox."),
|
||||
'icon': fields.selection(tools.icons, 'Icon', size=64),
|
||||
}
|
||||
|
||||
|
||||
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
|
||||
res = super(project_gtd_timebox,self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
|
||||
if (res['type']=='form') and ('record_id' in context):
|
||||
@@ -123,14 +123,14 @@ class project_task(osv.osv):
|
||||
'timebox_id': fields.many2one('project.gtd.timebox', "Timebox"),
|
||||
'context_id': fields.many2one('project.gtd.context', "Context"),
|
||||
}
|
||||
|
||||
|
||||
def copy_data(self, cr, uid, id, default=None, context=None):
|
||||
if not default:
|
||||
default = {}
|
||||
default['timebox_id']=False
|
||||
default['context_id']=False
|
||||
return super(project_task,self).copy_data(cr, uid, id, default, context)
|
||||
|
||||
|
||||
def _get_context(self,cr, uid, ctx):
|
||||
ids = self.pool.get('project.gtd.context').search(cr, uid, [], context=ctx)
|
||||
return ids and ids[0] or False
|
||||
@@ -169,19 +169,19 @@ class project_task(osv.osv):
|
||||
timebox_obj = self.pool.get('project.gtd.timebox')
|
||||
if res['type'] == 'search':
|
||||
tt = timebox_obj.browse(cr, uid, timebox_obj.search(cr,uid,[]))
|
||||
search_extended ='''<newline/><group col="%d" expand="1" string="%s" groups="project_gtd.group_project_getting">''' % (len(tt)+6,_('Getting Things Done'))
|
||||
search_extended += '''<filter domain="[('timebox_id','=', False)]" icon="gtk-new" string="Inbox"/>'''
|
||||
search_extended ='''<newline/><group col="%d" expand="1" string="%s" groups="project_gtd.group_project_getting">''' % (len(tt)+7,_('Getting Things Done'))
|
||||
search_extended += '''<filter domain="[('timebox_id','=', False)]" context="{'set_editable':True,'set_visible':True}" icon="gtk-new" string="Inbox"/>'''
|
||||
search_extended += '''<separator orientation="vertical"/>'''
|
||||
for time in tt:
|
||||
if time.icon:
|
||||
icon = time.icon
|
||||
else :
|
||||
icon=""
|
||||
search_extended += '''<filter domain="[('timebox_id','=', ''' + str(time.id) + ''')]" icon="''' + icon + '''" string="''' + time.name + '''"/>'''
|
||||
search_extended += '''<filter domain="[('timebox_id','=', ''' + str(time.id) + ''')]" icon="''' + icon + '''" string="''' + time.name + '''" context="{'set_visible':True}"/>'''
|
||||
search_extended += '''
|
||||
<separator orientation="vertical"/>
|
||||
<field name="context_id" select="1" widget="selection"/>
|
||||
<field name="priority" select="1"/>
|
||||
<field name="context_id" select="1" widget="selection" />
|
||||
<field name="priority" select="1" />
|
||||
</group>
|
||||
</search> '''
|
||||
if search_extended:
|
||||
@@ -191,7 +191,7 @@ class project_task(osv.osv):
|
||||
context_id_info['context_id']['selection'] = attrs_sel
|
||||
res['fields'].update(context_id_info)
|
||||
return res
|
||||
|
||||
|
||||
# Override read for using this method if context set !!!
|
||||
#_order = "((55-ascii(coalesce(priority,'2')))*2 + coalesce((date_start::date-current_date)/2,8))"
|
||||
project_task()
|
||||
|
||||
@@ -75,9 +75,10 @@
|
||||
<field name="inherit_id" ref="project.view_task_tree2" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="remaining_hours" position="after">
|
||||
<field name="timebox_id" groups="project_gtd.group_project_getting"/>
|
||||
<button name="prev_timebox" type="object" icon="gtk-go-back" string="Previous" states="draft,pending,open" groups="project_gtd.group_project_getting"/>
|
||||
<button name="next_timebox" type="object" icon="gtk-go-forward" string="Next" states="draft,pending,open" groups="project_gtd.group_project_getting"/>
|
||||
<field name="timebox_id" groups="project_gtd.group_project_getting" invisible=" not context.get('set_visible',False)"/>
|
||||
<button name="prev_timebox" type="object" icon="gtk-go-back" string="Previous" states="draft,pending,open" groups="project_gtd.group_project_getting" invisible=" not context.get('set_visible',False)"/>
|
||||
<button name="next_timebox" type="object" icon="gtk-go-forward" string="Next" states="draft,pending,open" groups="project_gtd.group_project_getting" invisible=" not context.get('set_visible',False)"/>
|
||||
<button name="do_reopen" states="done,cancelled" string="Reactivate" type="object" icon="gtk-convert" help="For reopening the tasks" invisible="not context.get('set_visible',False)"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
@@ -100,38 +101,13 @@
|
||||
<field name="name">Tasks</field>
|
||||
<field name="model">project.task</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="inherit_id" ref="project.view_task_tree2"/>
|
||||
<field eval="2" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="top" colors="grey:state in ('done',);red:state in ('cancelled');black:state not in ('done','cancelled')" string="Tasks">
|
||||
<field name="sequence" invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="planned_hours" widget="float_time"/>
|
||||
<field name="user_id"/>
|
||||
<field name="timebox_id" widget="selection" groups="project_gtd.group_project_getting"/>
|
||||
<button name="prev_timebox" type="object" icon="gtk-go-back" string="Previous" states="draft,pending,open" groups="project_gtd.group_project_getting"/>
|
||||
<button name="next_timebox" type="object" icon="gtk-go-forward" string="Next" states="draft,pending,open" groups="project_gtd.group_project_getting"/>
|
||||
<field name="state" invisible="1"/>
|
||||
<button name="%(project.wizard_close_task)d" states="draft,pending,open" string="Done" type="action" icon="gtk-jump-to" help="For changing to done state"/>
|
||||
<button groups="base.group_extended" name="%(project.wizard_delegate_task)d" states="pending,open" string="Delegate" type="action" icon="gtk-sort-descending"/>
|
||||
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel" help="For cancelling the task"/>
|
||||
<button name="do_reopen" states="done,cancelled" string="Reactivate" type="object" icon="gtk-convert" help="For reopening the tasks"/>
|
||||
</tree>
|
||||
<field name="name" position="after">
|
||||
<field name="planned_hours" widget="float_time" invisible="not context.get('set_visible',False)"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_prject_task_tree">
|
||||
<field name="res_model">project.task</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form,calendar,graph</field>
|
||||
<field name="view_id" ref="view_project_task_tree2"/>
|
||||
<field name="search_view_id" ref="project.view_task_search_form"/>
|
||||
</record>
|
||||
|
||||
<menuitem name="To-Dos"
|
||||
groups="group_project_getting"
|
||||
id="menu_task_inbox"
|
||||
parent="project.menu_project_management"
|
||||
action="action_prject_task_tree"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -161,6 +161,11 @@
|
||||
<filter icon="terp-purchase" domain="[('create_uid','child_of',[uid])]" help="My Departments Purchase Orders"/>
|
||||
</field>
|
||||
</group>
|
||||
<group expand="context.get('report',False)" string="Group By..." colspan="4" col="10">
|
||||
<filter string="By Supplier" icon="terp-purchase" domain="[]" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="By State" icon="terp-purchase" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Order Date" icon="terp-purchase" domain="[]" context="{'group_by':'date_order'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-02 04:48+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: report_project
|
||||
|
||||
@@ -64,6 +64,12 @@
|
||||
<field name="month" select="1"/>
|
||||
<field name="product_id" select="1"/>
|
||||
<field name="state" select="1"/>
|
||||
</group>
|
||||
<group expand="1" string="Group By..." colspan="4" col="8">
|
||||
<filter string="By Year" icon="terp-sale" domain="[]" context="{'group_by':'name'}"/>
|
||||
<filter string="By Month" icon="terp-sale" domain="[]" context="{'group_by':'month'}"/>
|
||||
<filter string="By State" icon="terp-sale" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Product" icon="terp-sale" domain="[]" context="{'group_by':'product_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
@@ -145,7 +151,14 @@
|
||||
<field name="month" select="1"/>
|
||||
<field name="category_id" select="1"/>
|
||||
<field name="state" select="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group expand="1" string="Group By..." colspan="4" col="20">
|
||||
<filter string="By Year" icon="terp-sale" domain="[]" context="{'group_by':'name'}"/>
|
||||
<filter string="By Month" icon="terp-sale" domain="[]" context="{'group_by':'month'}"/>
|
||||
<filter string="By State" icon="terp-sale" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Category" icon="terp-sale" domain="[]" context="{'group_by':'category_id'}"/>
|
||||
</group>
|
||||
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
sequence="40" />
|
||||
|
||||
<!-- Tasks by projects and users -->
|
||||
|
||||
|
||||
<record id="view_task_project_form" model="ir.ui.view">
|
||||
<field name="name">report.project.task.form</field>
|
||||
@@ -81,8 +82,7 @@
|
||||
<field name="domain">[]</field>
|
||||
<field name="search_view_id" ref="view_report_task_user_pipeline_open_search"/>
|
||||
</record>
|
||||
<menuitem id="base.menu_project_report" name="Reporting" parent="project.menu_main" sequence="50"/>
|
||||
<!-- <menuitem id="next_id_57" name="Reporting" parent="project.menu_main" sequence="50"/>-->
|
||||
<menuitem id="base.menu_project_report" name="Reporting" parent="base.menu_main_pm" sequence="50"/>
|
||||
<menuitem action="action_project_task" id="menu_project_task_user_tree" parent="base.menu_project_report"/>
|
||||
|
||||
<!-- Closed Task in Random Acitivities dashboard -->
|
||||
|
||||
@@ -242,7 +242,13 @@
|
||||
<filter icon="terp-sale" domain="[('user_id','child_of',[uid])]" help="My Departments Sale Orders"/>
|
||||
</field>
|
||||
<field name="date_order" select="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group expand="context.get('report',False)" string="Group By..." colspan="4" col="8">
|
||||
<filter string="By Parnter" icon="terp-sale" domain="[]" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="By State" icon="terp-sale" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Order Date" icon="terp-sale" domain="[]" context="{'group_by':'date_order'}"/>
|
||||
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -8,13 +8,9 @@
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="crm.crm_case_form_view_oppor"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="user_id" position="replace">
|
||||
<label string="Responsible: " align="1.0"/>
|
||||
<group colspan="1" col="2">
|
||||
<field name="user_id" select="2" nolabel="1" string="Responsible"/>
|
||||
<button string="Convert to Quote" icon="terp-sale" name="%(sale_crm_wizard)d" type="action"/>
|
||||
</group>
|
||||
</field>
|
||||
<xpath expr="/form[@string='Opportunities']/group/group/button[@string='Schedule Call']" position="after">
|
||||
<button string="Quotation" icon="terp-sale" name="%(sale_crm_wizard)d" type="action"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -665,6 +665,11 @@
|
||||
<field name="name" select="1"/>
|
||||
<field name="address_id" select="1"/>
|
||||
</group>
|
||||
<group expand="1" string="Group By..." colspan="4" col="8">
|
||||
<filter string="By Partner" icon="terp-stock" domain="[]" context="{'group_by':'address_id'}"/>
|
||||
<filter string="By State" icon="terp-stock" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
@@ -786,6 +791,11 @@
|
||||
<field name="name" select="1"/>
|
||||
<field name="origin" select="1"/>
|
||||
</group>
|
||||
<group expand="1" string="Group By..." colspan="4" col="10">
|
||||
<filter string="By Partner" icon="terp-stock" domain="[]" context="{'group_by':'address_id'}"/>
|
||||
<filter string="By State" icon="terp-stock" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Order Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
@@ -939,6 +949,11 @@
|
||||
<field name="address_id" select="1"/>
|
||||
<field name="company_id" select="1" widget="selection"/>
|
||||
</group>
|
||||
<group expand="1" string="Group By..." colspan="4" col="8">
|
||||
<filter string="By Partner" icon="terp-stock" domain="[]" context="{'group_by':'address_id'}"/>
|
||||
<filter string="By State" icon="terp-stock" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
@@ -1094,6 +1109,11 @@
|
||||
<field name="address_id" select="1"/>
|
||||
<field name="company_id" select="1" widget="selection"/>
|
||||
</group>
|
||||
<group expand="1" string="Group By..." colspan="4" col="8">
|
||||
<filter string="By Partner" icon="terp-stock" domain="[]" context="{'group_by':'address_id'}"/>
|
||||
<filter string="By State" icon="terp-stock" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
@@ -1142,6 +1162,11 @@
|
||||
<field name="address_id" select="1"/>
|
||||
<field name="company_id" select="1" widget="selection"/>
|
||||
</group>
|
||||
<group expand="1" string="Group By..." colspan="4" col="8">
|
||||
<filter string="By Partner" icon="terp-stock" domain="[]" context="{'group_by':'address_id'}"/>
|
||||
<filter string="By State" icon="terp-stock" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
@@ -1254,6 +1279,13 @@
|
||||
<field name="location_dest_id" select="1"/>
|
||||
<field name="product_id" select="1"/>
|
||||
</group>
|
||||
<group expand="1" string="Group By..." colspan="4" col="8">
|
||||
<filter string="By Location" icon="terp-stock" domain="[]" context="{'group_by':'location_id'}"/>
|
||||
<filter string="By Product" icon="terp-stock" domain="[]" context="{'group_by':'product_id'}"/>
|
||||
<filter string="By State" icon="terp-stock" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Destion Location" icon="terp-stock" domain="[]" context="{'group_by':'location_dest_id'}"/>
|
||||
<filter string="By Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
@@ -1373,6 +1405,11 @@
|
||||
<field name="partner_id" string="Supplier" select="1"/>
|
||||
<field name="product_id"/>
|
||||
</group>
|
||||
<group expand="1" string="Group By..." colspan="4" col="8">
|
||||
<filter string="By Product" icon="terp-stock" domain="[]" context="{'group_by':'product_id'}"/>
|
||||
<filter string="By State" icon="terp-stock" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="By Date" icon="terp-stock" domain="[]" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -144,13 +144,13 @@ class survey_analysis(report_rml):
|
||||
for col in range(0, len(que.column_heading_ids) + 1):
|
||||
cols_widhts.append(float(300 / (len(que.column_heading_ids) + 1)))
|
||||
colWidths = ",".join(map(tools.ustr, cols_widhts))
|
||||
matrix_ans = ['',]
|
||||
matrix_ans = [(0,'')]
|
||||
for col in que.column_heading_ids:
|
||||
if col.title not in matrix_ans:
|
||||
matrix_ans.append(col.title)
|
||||
matrix_ans.append((col.id,col.title))
|
||||
rml+="""<blockTable colWidths=" """ + colWidths + """ " style="Table1"><tr>"""
|
||||
for mat_col in matrix_ans:
|
||||
rml+="""<td><para style="response">""" + to_xml(tools.ustr(mat_col)) + """</para></td>"""
|
||||
for mat_col in range(0, len(matrix_ans)):
|
||||
rml+="""<td><para style="response">""" + to_xml(tools.ustr(matrix_ans[mat_col][1])) + """</para></td>"""
|
||||
rml+="""<td><para style="response">Response Count</para></td>
|
||||
</tr>"""
|
||||
last_col = cols_widhts[-1]
|
||||
@@ -158,16 +158,16 @@ class survey_analysis(report_rml):
|
||||
rml+="""<tr><td><para style="answer">""" + to_xml(tools.ustr(ans.answer)) + """</para></td>"""
|
||||
cr.execute("select count(id) from survey_response_answer sra where sra.answer_id = %d"%(ans.id))
|
||||
tot_res = cr.fetchone()[0]
|
||||
cr.execute("select count(id) ,sra.answer from survey_response_answer sra where sra.answer_id = %d group by sra.answer" % ans.id)
|
||||
cr.execute("select count(id) ,sra.column_id from survey_response_answer sra where sra.answer_id = %d group by sra.column_id" % ans.id)
|
||||
calc_res = cr.dictfetchall()
|
||||
for mat_col in range(1, len(matrix_ans)):
|
||||
percantage = 0
|
||||
cal_count = 0
|
||||
for cal in calc_res:
|
||||
if cal['answer'] == matrix_ans[mat_col]:
|
||||
if cal['column_id'] == matrix_ans[mat_col][0]:
|
||||
cal_count = cal['count']
|
||||
if tot_res:
|
||||
percantage = float(cal_count)*100 / tot_res
|
||||
percantage = round(float(cal_count)*100 / tot_res,2)
|
||||
if percantage:
|
||||
rml += """<td color="#FFF435"><para style="answer_bold">""" + tools.ustr(percantage) +"% (" + tools.ustr(cal_count) + """)</para></td>"""
|
||||
else:
|
||||
@@ -181,7 +181,7 @@ class survey_analysis(report_rml):
|
||||
rml+="""<blockTable colWidths=" """+ str(500 - last_col) +"," + str(last_col) + """ " style="Table1"><tr><td><para style="answer_right">""" + to_xml(tools.ustr(que.comment_label)) + """</para></td>
|
||||
<td><para style="answer">""" + tools.ustr(tot_res) + """</para></td></tr></blockTable>"""
|
||||
|
||||
elif que.type in['multiple_choice_only_one_ans', 'multiple_choice_multiple_ans', 'multiple_textboxes','date_and_time','date']:
|
||||
elif que.type in['multiple_choice_only_one_ans', 'multiple_choice_multiple_ans', 'multiple_textboxes','date_and_time','date','multiple_textboxes_diff_type']:
|
||||
rml +="""<blockTable colWidths="280.0,120,100.0" style="Table1">"""
|
||||
rml += """ <tr>
|
||||
<td> <para style="Standard"> </para></td>
|
||||
@@ -234,13 +234,13 @@ class survey_analysis(report_rml):
|
||||
for col in range(0,len(que.column_heading_ids) + 2):
|
||||
cols_widhts.append(float(300 / (len(que.column_heading_ids) + 2)))
|
||||
colWidths = ",".join(map(tools.ustr, cols_widhts))
|
||||
matrix_ans = ['',]
|
||||
matrix_ans = [(0,'')]
|
||||
for col in que.column_heading_ids:
|
||||
if col.title not in matrix_ans:
|
||||
matrix_ans.append(col.title)
|
||||
matrix_ans.append((col.id,col.title))
|
||||
rml+="""<blockTable colWidths=" """ + colWidths + """ " style="Table1"><tr>"""
|
||||
for mat_col in matrix_ans:
|
||||
rml+="""<td><para style="response">""" + to_xml(tools.ustr(mat_col)) + """</para></td>"""
|
||||
for mat_col in range(0,len(matrix_ans)):
|
||||
rml+="""<td><para style="response">""" + to_xml(tools.ustr(matrix_ans[mat_col][1])) + """</para></td>"""
|
||||
rml+="""<td><para style="response">Rating Average</para></td>
|
||||
<td><para style="response">Response Count</para></td>
|
||||
</tr>"""
|
||||
@@ -250,21 +250,23 @@ class survey_analysis(report_rml):
|
||||
rating_weight_sum = 0
|
||||
for mat_col in range(1, len(matrix_ans)):
|
||||
cr.execute("select count(sra.answer_id) from survey_response_line sr, survey_response_answer sra\
|
||||
where sr.id = sra.response_id and sra.answer_id = %d and sra.answer ='%s'" % (ans.id,matrix_ans[mat_col]))
|
||||
where sr.id = sra.response_id and sra.answer_id = %d and sra.column_id ='%d'" % (ans.id,matrix_ans[mat_col][0]))
|
||||
tot_res = cr.fetchone()[0]
|
||||
cr.execute("select count(sra.answer_id),sqc.rating_weight from survey_response_line sr, survey_response_answer sra ,\
|
||||
survey_question_column_heading sqc where sr.id = sra.response_id and \
|
||||
sqc.question_id = sr.question_id and sra.answer_id = %d and sqc.title ='%s'\
|
||||
group by sra.answer_id,sqc.rating_weight" % (ans.id,matrix_ans[mat_col]))
|
||||
group by sra.answer_id,sqc.rating_weight" % (ans.id,matrix_ans[mat_col][1]))
|
||||
col_weight = cr.fetchone()
|
||||
if not col_weight :
|
||||
if not col_weight:
|
||||
col_weight= (0,0)
|
||||
elif not col_weight[1]:
|
||||
col_weight = (col_weight[0],0)
|
||||
res_count = col_weight[0]
|
||||
if tot_res:
|
||||
rating_weight_sum += col_weight[1] * tot_res
|
||||
if tot_res and res_count:
|
||||
rating_weight_sum += int(col_weight[1]) * tot_res
|
||||
tot_per = round((float(tot_res) * 100) / int(res_count), 2)
|
||||
else:
|
||||
tot_res = 0
|
||||
tor_res = 0
|
||||
tot_per = 0.0
|
||||
if tot_res:
|
||||
rml += """<td><para style="answer_bold">""" + tools.ustr(tot_per) + "%(" + tools.ustr(tot_res) + """)</para></td>"""
|
||||
@@ -292,10 +294,10 @@ class survey_analysis(report_rml):
|
||||
rml += """<td><para style="response">""" + to_xml(tools.ustr(menu)) + """</para></td>"""
|
||||
rml += """<td><para style="response">Response Count</para></td></tr>"""
|
||||
cr.execute("select count(id), sra.answer_id from survey_response_answer sra \
|
||||
where sra.answer='%s' group by sra.answer_id " % (column.title))
|
||||
where sra.column_id='%s' group by sra.answer_id " % (column.id))
|
||||
res_count = cr.dictfetchall()
|
||||
cr.execute("select count(sra.id),sra.value_choice, sra.answer_id, sra.answer from survey_response_answer sra \
|
||||
where sra.answer='%s' group by sra.value_choice ,sra.answer_id, sra.answer" % (column.title))
|
||||
cr.execute("select count(sra.id),sra.value_choice, sra.answer_id, sra.column_id from survey_response_answer sra \
|
||||
where sra.column_id='%s' group by sra.value_choice ,sra.answer_id, sra.column_id" % (column.id))
|
||||
calc_percantage = cr.dictfetchall()
|
||||
for ans in que.answer_choice_ids:
|
||||
rml+="""<tr><td><para style="answer_right">""" + to_xml(tools.ustr(ans.answer)) + """</para></td>"""
|
||||
@@ -309,7 +311,7 @@ class survey_analysis(report_rml):
|
||||
calc = per['count']
|
||||
percantage = 0.00
|
||||
if calc and response:
|
||||
percantage = (float(calc)* 100) / response
|
||||
percantage = round((float(calc)* 100) / response,2)
|
||||
if calc:
|
||||
rml+="""<td><para style="answer_bold">""" +tools.ustr(percantage)+"% (" + tools.ustr(calc) + """)</para></td>"""
|
||||
else:
|
||||
|
||||
@@ -51,6 +51,10 @@ class survey_browse_response(report_rml):
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#e6e6e6"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="note_table">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="Table2">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
@@ -139,11 +143,11 @@ class survey_browse_response(report_rml):
|
||||
response_id = surv_resp_obj.search(cr, uid, [('survey_id','in',ids)])
|
||||
surv_resp_line_obj = pooler.get_pool(cr.dbname).get('survey.response.line')
|
||||
surv_obj = pooler.get_pool(cr.dbname).get('survey')
|
||||
for response in surv_resp_obj.browse(cr,uid, response_id):
|
||||
for response in surv_resp_obj.browse(cr,uid, response_id):
|
||||
for survey in surv_obj.browse(cr, uid, [response.survey_id.id]):
|
||||
status = "Skip"
|
||||
status = "Not Finished"
|
||||
if response.state == "done":
|
||||
status = "Complete"
|
||||
status = "Finished"
|
||||
rml += """<blockTable colWidths="230.0,120.0,100.0,50" style="Table_heading">
|
||||
<tr>
|
||||
<td>
|
||||
@@ -183,6 +187,13 @@ class survey_browse_response(report_rml):
|
||||
<td><para style="page">Page :- """ + to_xml(tools.ustr(page.title)) + """</para></td>
|
||||
</tr>
|
||||
</blockTable>"""
|
||||
if page.note:
|
||||
rml += """<para style="P2"></para>
|
||||
<blockTable colWidths="500" style="note_table">
|
||||
<tr>
|
||||
<td><para style="response">""" + to_xml(tools.ustr(page.note)) + """</para></td>
|
||||
</tr>
|
||||
</blockTable>"""
|
||||
for que in page.question_ids:
|
||||
rml += """<para style="P2"></para>
|
||||
<blockTable colWidths="500" style="Table5">
|
||||
@@ -213,11 +224,14 @@ class survey_browse_response(report_rml):
|
||||
rml +="""<blockTable colWidths=" """ + str(colWidths) + """ " style="Table51"><tr>"""
|
||||
table_data = col_heading.browse(cr, uid, col_heading.search(cr, uid, [('response_table_id', '=', answer[0].id),('name','=',row)]))
|
||||
for column in matrix_ans:
|
||||
value = """<font color="white"> </font>"""
|
||||
value = False
|
||||
for col in table_data:
|
||||
if column == col.column_id.title:
|
||||
value = col.value
|
||||
rml += """<td> <para style="terp_default_9">""" + to_xml(tools.ustr(value)) +"""</para></td>"""
|
||||
if value:
|
||||
rml += """<td> <para style="terp_default_9">""" + to_xml(tools.ustr(value)) +"""</para></td>"""
|
||||
else:
|
||||
rml += """<td><para style="terp_default_9"><font color ="white"> </font></para></td>"""
|
||||
rml += """</tr></blockTable>"""
|
||||
else:
|
||||
rml +="""<blockTable colWidths="500" style="Table1">
|
||||
@@ -237,7 +251,7 @@ class survey_browse_response(report_rml):
|
||||
rml +="""<blockTable colWidths="500" style="Table1">
|
||||
<tr> <td> <para style="response">No Response</para></td> </tr>
|
||||
</blockTable>"""
|
||||
elif que.type in ['multiple_textboxes','date','date_and_time','numerical_textboxes']:
|
||||
elif que.type in ['multiple_textboxes_diff_type','multiple_textboxes','date','date_and_time','numerical_textboxes','multiple_textboxes_diff_type']:
|
||||
if len(answer) and answer[0].state == "done":
|
||||
for ans in answer[0].response_answer_ids:
|
||||
rml +="""<blockTable colWidths="200,300" style="Table1">
|
||||
@@ -287,16 +301,16 @@ class survey_browse_response(report_rml):
|
||||
i+=1
|
||||
cols_widhts.append(round(tmp,2))
|
||||
colWidths = ",".join(map(tools.ustr, cols_widhts))
|
||||
matrix_ans = ['',]
|
||||
matrix_ans = [(0,''),]
|
||||
for col in que.column_heading_ids:
|
||||
if col.title not in matrix_ans:
|
||||
matrix_ans.append(col.title)
|
||||
matrix_ans.append((col.id,col.title))
|
||||
len_matrix = len(matrix_ans)
|
||||
if que.type in ['matrix_of_choices_only_one_ans','rating_scale'] and que.comment_column:
|
||||
matrix_ans.append(que.column_name)
|
||||
rml+="""<blockTable colWidths=" """ + colWidths + """ " style="Table1"><tr>"""
|
||||
for mat_col in matrix_ans:
|
||||
rml+="""<td><para style="response">""" + to_xml(tools.ustr(mat_col)) + """</para></td>"""
|
||||
for mat_col in range(0, len(matrix_ans)):
|
||||
rml+="""<td><para style="response">""" + to_xml(tools.ustr(matrix_ans[mat_col][1])) + """</para></td>"""
|
||||
rml +="""</tr>"""
|
||||
rml+="""</blockTable>"""
|
||||
i=0
|
||||
@@ -312,7 +326,7 @@ class survey_browse_response(report_rml):
|
||||
for mat_col in range(1, len_matrix):
|
||||
value = """"""
|
||||
for res_ans in answer[0].response_answer_ids:
|
||||
if res_ans.answer_id.id == ans.id and res_ans.answer == matrix_ans[mat_col]:
|
||||
if res_ans.answer_id.id == ans.id and res_ans.column_id.id == matrix_ans[mat_col][0]:
|
||||
comment_value = to_xml(tools.ustr(res_ans.comment_field))
|
||||
if que.type in ['matrix_of_drop_down_menus']:
|
||||
value = """<para style="response">""" + to_xml(tools.ustr(res_ans.value_choice)) + """</para>"""
|
||||
@@ -354,8 +368,8 @@ class survey_browse_response(report_rml):
|
||||
rml +="""<blockTable colWidths="500" style="Table1">
|
||||
<tr> <td> <para style="response">No Response</para></td> </tr>
|
||||
</blockTable>"""
|
||||
|
||||
rml += """<pageBreak/>"""
|
||||
|
||||
rml += """<pageBreak/>"""
|
||||
rml += """</story></document>"""
|
||||
report_type = datas.get('report_type', 'pdf')
|
||||
create_doc = self.generators[report_type]
|
||||
|
||||
@@ -102,6 +102,10 @@ class survey_form(report_rml):
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#8f8f8f" start="0,-1" stop="1,-1"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="note_table">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="Table4">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
@@ -147,6 +151,10 @@ class survey_form(report_rml):
|
||||
<blockTable colWidths='"""+_tbl_widths+"""' style="page_tbl">
|
||||
<tr><td><para style="page">"""+ tools.ustr(seq) + """. """ + to_xml(tools.ustr(page.title)) + """</para></td></tr>
|
||||
</blockTable>"""
|
||||
if page.note:
|
||||
rml += """<para style="P2"></para><blockTable colWidths='"""+_tbl_widths+"""' style="note_table">
|
||||
<tr><td><para style="descriptive_text">""" + to_xml(tools.ustr(page.note or '')) + """</para></td></tr>
|
||||
</blockTable>"""
|
||||
for que in page.question_ids:
|
||||
cols_widhts=[]
|
||||
rml +="""
|
||||
@@ -280,16 +288,11 @@ class survey_form(report_rml):
|
||||
else:
|
||||
rml+="""<td><illustration>""" + value + """</illustration></td>"""
|
||||
rml+= """</tr></blockTable>"""
|
||||
elif que.type in ['multiple_textboxes','numerical_textboxes', 'date_and_time','date']:
|
||||
elif que.type in ['multiple_textboxes','numerical_textboxes', 'date_and_time','date','multiple_textboxes_diff_type']:
|
||||
cols_widhts.append(float(_tbl_widths.replace('cm',''))/2)
|
||||
cols_widhts.append(float(_tbl_widths.replace('cm',''))/2)
|
||||
colWidths = "cm,".join(map(tools.ustr, cols_widhts))
|
||||
colWidths = tools.ustr(colWidths) + 'cm'
|
||||
rect_len = ""
|
||||
if que.type in ['multiple_textboxes']:
|
||||
rect_len = tools.ustr(cols_widhts[0] - 0.3) + "cm"
|
||||
else:
|
||||
rect_len = "6cm"
|
||||
for ans in que.answer_choice_ids:
|
||||
rml +="""<para style="P1"></para>
|
||||
<blockTable colWidths=" """+ colWidths + """ " style="ans_tbl">
|
||||
@@ -297,7 +300,7 @@ class survey_form(report_rml):
|
||||
<td><para style="answer">""" + to_xml(tools.ustr(ans.answer)) + """</para></td>
|
||||
<td>
|
||||
<illustration>
|
||||
<rect x="0.0cm" y="-0.5cm" width='""" + tools.ustr(rect_len) + """' height="0.6cm" fill="no" stroke="yes"/>
|
||||
<rect x="0.0cm" y="-0.5cm" width='""" + tools.ustr(str(cols_widhts[0] - 0.3) + "cm") + """' height="0.6cm" fill="no" stroke="yes"/>
|
||||
</illustration>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -305,14 +308,11 @@ class survey_form(report_rml):
|
||||
elif que.type in ['comment']:
|
||||
cols_widhts.append(float(_tbl_widths.replace('cm','')))
|
||||
colWidths = "cm,".join(map(tools.ustr, cols_widhts))
|
||||
colWidths = colWidths+'cm'
|
||||
rect_len = ""
|
||||
rect_len = tools.ustr(cols_widhts[0] - 0.4) + "cm"
|
||||
rml+="""<blockTable colWidths=" """ + colWidths + """ " style="ans_tbl">
|
||||
rml+="""<blockTable colWidths=" """ + colWidths + """cm " style="ans_tbl">
|
||||
<tr>
|
||||
<td><para style="comment"><font color="white"> </font></para>
|
||||
<illustration>
|
||||
<rect x="0.0cm" y="0.3cm" width='""" + tools.ustr(rect_len) + """' height="1.5cm" fill="no" stroke="yes"/>
|
||||
<rect x="0.1cm" y="0.3cm" width='""" + tools.ustr(str(float(colWidths) - 0.6) +'cm') + """' height="1.5cm" fill="no" stroke="yes"/>
|
||||
</illustration>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -320,13 +320,12 @@ class survey_form(report_rml):
|
||||
elif que.type in ['single_textbox']:
|
||||
cols_widhts.append(float(_tbl_widths.replace('cm','')))
|
||||
colWidths = "cm,".join(map(tools.ustr, cols_widhts))
|
||||
colWidths = colWidths+'cm'
|
||||
rml+="""<para style="P2"><font color="white"> </font></para>
|
||||
<blockTable colWidths=" """ + colWidths + """ " style="ans_tbl">
|
||||
<blockTable colWidths=" """ + colWidths + """cm " style="ans_tbl">
|
||||
<tr>
|
||||
<td>
|
||||
<illustration>
|
||||
<rect x="0.2cm" y="0.3cm" width="15.0 cm" height="0.6cm" fill="no" stroke="yes"/>
|
||||
<rect x="0.2cm" y="0.3cm" width='""" + tools.ustr(str(float(colWidths) - 0.7) +'cm') + """' height="0.6cm" fill="no" stroke="yes"/>
|
||||
</illustration>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
+106
-56
@@ -92,7 +92,10 @@ class survey(osv.osv):
|
||||
def survey_cancel(self, cr, uid, ids, arg):
|
||||
self.write(cr, uid, ids, { 'state' : 'cancel' })
|
||||
return True
|
||||
|
||||
|
||||
def copy(self, cr, uid, id, default=None,context={}):
|
||||
raise osv.except_osv(_('Error !'),_('You cannot duplicate the resource!'))
|
||||
|
||||
survey()
|
||||
|
||||
class survey_history(osv.osv):
|
||||
@@ -129,7 +132,7 @@ class survey_page(osv.osv):
|
||||
def default_get(self, cr, uid, fields, context={}):
|
||||
data = super(survey_page, self).default_get(cr, uid, fields, context)
|
||||
if context.has_key('line_order') and context['line_order']:
|
||||
if len(context['line_order'][-1]) > 2 and context['line_order'][-1][2].has_key('sequence'):
|
||||
if len(context['line_order'][-1]) > 2 and type(context['line_order'][-1][2]) == type({}) and context['line_order'][-1][2].has_key('sequence'):
|
||||
data['sequence'] = context['line_order'][-1][2]['sequence'] + 1
|
||||
if context.has_key('survey_id'):
|
||||
data['survey_id'] = context['survey_id']
|
||||
@@ -150,6 +153,9 @@ class survey_page(osv.osv):
|
||||
'context': context
|
||||
}
|
||||
|
||||
def copy(self, cr, uid, id, default=None,context={}):
|
||||
raise osv.except_osv(_('Error !'),_('You cannot duplicate the resource!'))
|
||||
|
||||
survey_page()
|
||||
|
||||
class survey_question(osv.osv):
|
||||
@@ -194,7 +200,9 @@ class survey_question(osv.osv):
|
||||
('matrix_of_choices_only_multi_ans','Matrix of Choices (Multiple Answers Per Row)'),
|
||||
('matrix_of_drop_down_menus','Matrix of Drop-down Menus'),
|
||||
('rating_scale','Rating Scale'),('single_textbox','Single Textbox'),
|
||||
('multiple_textboxes','Multiple Textboxes'),('comment','Comment/Essay Box'),
|
||||
('multiple_textboxes','Multiple Textboxes'),
|
||||
('multiple_textboxes_diff_type','Multiple Textboxes With Different Type'),
|
||||
('comment','Comment/Essay Box'),
|
||||
('numerical_textboxes','Numerical Textboxes'),('date','Date'),
|
||||
('date_and_time','Date and Time'),('descriptive_text','Descriptive Text'),
|
||||
('table','Table'),
|
||||
@@ -238,6 +246,7 @@ class survey_question(osv.osv):
|
||||
'rating_allow_one_column_require' : fields.boolean('Allow Only One Response per Column (Forced Ranking)'),
|
||||
'in_visible_rating_weight':fields.boolean('Is Rating Scale Invisible?'),
|
||||
'in_visible_menu_choice':fields.boolean('Is Menu Choice Invisible?'),
|
||||
'in_visible_answer_type':fields.boolean('Is Answer Type Invisible?'),
|
||||
'comment_column':fields.boolean('Add comment column in matrix'),
|
||||
'column_name':fields.char('Column Name',size=256),
|
||||
'no_of_rows' : fields.integer('No of Rows'),
|
||||
@@ -256,9 +265,12 @@ class survey_question(osv.osv):
|
||||
'validation_valid_err_msg' : lambda * a : 'The comment you entered is in an invalid format.',
|
||||
'numeric_required_sum_err_msg' : lambda * a :'The choices need to add up to [enter sum here].',
|
||||
'make_comment_field_err_msg' : lambda * a : 'Please enter a comment.',
|
||||
'in_visible_answer_type' : lambda * a: 1
|
||||
}
|
||||
|
||||
def on_change_type(self, cr, uid, ids, type, context=None):
|
||||
if type in ['multiple_textboxes_diff_type']:
|
||||
return {'value': {'in_visible_answer_type':False}}
|
||||
if type in ['rating_scale']:
|
||||
return {'value': {'in_visible_rating_weight':False,'in_visible_menu_choice':True}}
|
||||
elif type in ['matrix_of_drop_down_menus']:
|
||||
@@ -266,7 +278,7 @@ class survey_question(osv.osv):
|
||||
elif type in ['single_textbox']:
|
||||
return {'value': {'in_visible_rating_weight':True,'in_visible_menu_choice':True}}
|
||||
else:
|
||||
return {'value': {'in_visible_rating_weight':True,'in_visible_menu_choice':True}}
|
||||
return {'value': {'in_visible_rating_weight':True,'in_visible_menu_choice':True,'in_visible_answer_type':True}}
|
||||
|
||||
def write(self, cr, uid, ids, vals, context=None):
|
||||
questions = self.read(cr,uid, ids, ['answer_choice_ids', 'type', 'required_type','req_ans', 'minimum_req_ans', 'maximum_req_ans', 'column_heading_ids'])
|
||||
@@ -331,9 +343,9 @@ class survey_question(osv.osv):
|
||||
raise osv.except_osv(_('Error !'),_("Maximum Required Answer is greater than Minimum Required Answer"))
|
||||
if question['type'] == 'matrix_of_drop_down_menus' and vals.has_key('column_heading_ids'):
|
||||
for col in vals['column_heading_ids']:
|
||||
if col[2] and col[2].has_key('menu_choice') and not col[2]['menu_choice']:
|
||||
if not col[2] or not col[2].has_key('menu_choice') or not col[2]['menu_choice']:
|
||||
raise osv.except_osv(_('Error !'),_("You must enter one or more menu choices in column heading"))
|
||||
elif col[2] and col[2].has_key('menu_choice') and col[2]['menu_choice'].strip() == '':
|
||||
elif not col[2] or not col[2].has_key('menu_choice') or col[2]['menu_choice'].strip() == '':
|
||||
raise osv.except_osv(_('Error !'),_("You must enter one or more menu choices in column heading (white spaces not allowed)"))
|
||||
return super(survey_question, self).write(cr, uid, ids, vals, context=context)
|
||||
|
||||
@@ -348,22 +360,22 @@ class survey_question(osv.osv):
|
||||
raise osv.except_osv(_('Error !'),_("You must enter one or more column heading."))
|
||||
if vals['type'] in ['multiple_choice_multiple_ans','matrix_of_choices_only_one_ans', 'matrix_of_choices_only_multi_ans', 'matrix_of_drop_down_menus', 'rating_scale','multiple_textboxes','numerical_textboxes','date','date_and_time']:
|
||||
if vals.has_key('is_require_answer') and vals.has_key('required_type') and vals['required_type'] in ['at least', 'at most', 'exactly']:
|
||||
if vals['req_ans'] > len(vals['answer_choice_ids']) or not vals['req_ans']:
|
||||
if vals.has_key('answer_choice_ids') and vals['req_ans'] > len(vals['answer_choice_ids']) or not vals['req_ans']:
|
||||
raise osv.except_osv(_('Error !'),_("#Required Answer you entered is greater than the number of answer. Please use a number that is smaller than %d.") % (len(vals['answer_choice_ids'])+1))
|
||||
if vals.has_key('is_require_answer') and vals.has_key('required_type') and vals['required_type'] == 'a range':
|
||||
minimum_ans = vals['minimum_req_ans']
|
||||
maximum_ans = vals['maximum_req_ans']
|
||||
if vals['minimum_req_ans'] > len(vals['answer_choice_ids']) or not vals['minimum_req_ans']:
|
||||
if vals.has_key('answer_choice_ids') or vals['minimum_req_ans'] > len(vals['answer_choice_ids']) or not vals['minimum_req_ans']:
|
||||
raise osv.except_osv(_('Error !'),_("Minimum Required Answer you entered is greater than the number of answer. Please use a number that is smaller than %d.") % (len(vals['answer_choice_ids'])+1))
|
||||
if vals['maximum_req_ans'] > len(vals['answer_choice_ids']) or not vals['maximum_req_ans']:
|
||||
if vals.has_key('answer_choice_ids') or vals['maximum_req_ans'] > len(vals['answer_choice_ids']) or not vals['maximum_req_ans']:
|
||||
raise osv.except_osv(_('Error !'),_("Maximum Required Answer you entered for your maximum is greater than the number of answer. Please use a number that is smaller than %d.") % (len(vals['answer_choice_ids'])+1))
|
||||
if maximum_ans <= minimum_ans:
|
||||
raise osv.except_osv(_('Error !'),_("Maximum Required Answer is greater than Minimum Required Answer"))
|
||||
if vals['type'] == 'matrix_of_drop_down_menus':
|
||||
for col in vals['column_heading_ids']:
|
||||
if not col[2]['menu_choice']:
|
||||
if not col[2] or not col[2].has_key('menu_choice') or not col[2]['menu_choice']:
|
||||
raise osv.except_osv(_('Error !'),_("You must enter one or more menu choices in column heading"))
|
||||
elif col[2]['menu_choice'].strip() == '':
|
||||
elif not col[2] or not col[2].has_key('menu_choice') or col[2]['menu_choice'].strip() == '':
|
||||
raise osv.except_osv(_('Error !'),_("You must enter one or more menu choices in column heading (white spaces not allowed)"))
|
||||
res = super(survey_question, self).create(cr, uid, vals, context)
|
||||
return res
|
||||
@@ -386,7 +398,8 @@ class survey_question(osv.osv):
|
||||
def default_get(self, cr, uid, fields, context={}):
|
||||
data = super(survey_question, self).default_get(cr, uid, fields, context)
|
||||
if context.has_key('line_order') and context['line_order']:
|
||||
if len(context['line_order'][-1]) > 2 and context['line_order'][-1][2].has_key('sequence'):
|
||||
|
||||
if len(context['line_order'][-1]) > 2 and type(context['line_order'][-1][2]) == type({}) and context['line_order'][-1][2].has_key('sequence'):
|
||||
data['sequence'] = context['line_order'][-1][2]['sequence'] + 1
|
||||
if context.has_key('page_id'):
|
||||
data['page_id']= context['page_id']
|
||||
@@ -450,21 +463,30 @@ class survey_answer(osv.osv):
|
||||
}
|
||||
return val
|
||||
|
||||
def _get_in_visible_answer_type(self,cr, uid, context={}):
|
||||
if context.get('in_visible_answer_type',False):
|
||||
return context['in_visible_answer_type']
|
||||
return False
|
||||
|
||||
_columns = {
|
||||
'question_id' : fields.many2one('survey.question', 'Question', ondelete='cascade'),
|
||||
'answer' : fields.char('Answer', size=128, required=1),
|
||||
'sequence' : fields.integer('Sequence'),
|
||||
'response' : fields.function(_calc_response_avg, method=True, string="#Response", multi='sums'),
|
||||
'average' : fields.function(_calc_response_avg, method=True, string="#Avg", multi='sums'),
|
||||
'type' : fields.selection([('char','Character'),('date','Date'),('datetime','Date & Time'),('integer','Integer'),('float','Float')], "Type of Answer",required=1),
|
||||
'in_visible_answer_type':fields.boolean('Is Answer Type Invisible??')
|
||||
}
|
||||
_defaults = {
|
||||
'sequence' : lambda * a: 1
|
||||
'sequence' : lambda * a: 1,
|
||||
'type' : lambda * a: 'char',
|
||||
'in_visible_answer_type':_get_in_visible_answer_type,
|
||||
}
|
||||
|
||||
def default_get(self, cr, uid, fields, context={}):
|
||||
data = super(survey_answer, self).default_get(cr, uid, fields, context)
|
||||
if context.has_key('line_order') and context['line_order']:
|
||||
if len(context['line_order'][-1]) > 2 and context['line_order'][-1][2].has_key('sequence'):
|
||||
if len(context['line_order'][-1]) > 2 and type(context['line_order'][-1][2]) == type({}) and context['line_order'][-1][2].has_key('sequence'):
|
||||
data['sequence'] = context['line_order'][-1][2]['sequence'] + 1
|
||||
return data
|
||||
|
||||
@@ -479,18 +501,13 @@ class survey_response(osv.osv):
|
||||
'user_id' : fields.many2one('res.users', 'User'),
|
||||
'response_type' : fields.selection([('manually', 'Manually'), ('link', 'Link')], 'Response Type', required=1),
|
||||
'question_ids' : fields.one2many('survey.response.line', 'response_id', 'Response Answer'),
|
||||
'state' : fields.selection([('done', 'Completed '),('skip', 'Skiped')], 'Status', readonly=True),
|
||||
'state' : fields.selection([('done', 'Finished '),('skip', 'Not Finished')], 'Status', readonly=True),
|
||||
}
|
||||
_defaults = {
|
||||
'state' : lambda * a: "skip",
|
||||
}
|
||||
def response_done(self, cr, uid, ids, arg):
|
||||
self.write(cr, uid, ids, { 'state' : 'done' })
|
||||
return True
|
||||
|
||||
def response_skip(self, cr, uid, ids, arg):
|
||||
self.write(cr, uid, ids, { 'state' : 'skip' })
|
||||
return True
|
||||
def copy(self, cr, uid, id, default=None,context={}):
|
||||
raise osv.except_osv(_('Error !'),_('You cannot duplicate the resource!'))
|
||||
|
||||
survey_response()
|
||||
|
||||
@@ -502,7 +519,7 @@ class survey_response_line(osv.osv):
|
||||
'response_id' : fields.many2one('survey.response', 'Response', ondelete='cascade'),
|
||||
'date_create' : fields.datetime('Create Date', required=1),
|
||||
'state' : fields.selection([('draft', 'Draft'), ('done', 'Answered'),('skip', 'Skiped')], 'Status', readonly=True),
|
||||
'question_id' : fields.many2one('survey.question', 'Question', ondelete='cascade'),
|
||||
'question_id' : fields.many2one('survey.question', 'Question'),
|
||||
'page_id' : fields.related('question_id', 'page_id', type='many2one', relation='survey.page', string='Page'),
|
||||
'response_answer_ids' : fields.one2many('survey.response.answer', 'response_id', 'Response Answer'),
|
||||
'response_table_ids' : fields.one2many('survey.tbl.column.heading', 'response_table_id', 'Response Answer'),
|
||||
@@ -532,7 +549,7 @@ class survey_tbl_column_heading(osv.osv):
|
||||
_order = 'name'
|
||||
_columns = {
|
||||
'name' : fields.integer('Row Number'),
|
||||
'column_id' : fields.many2one('survey.question.column.heading', 'Column', ondelete='cascade'),
|
||||
'column_id' : fields.many2one('survey.question.column.heading', 'Column'),
|
||||
'value' : fields.char('Value', size = 255),
|
||||
'response_table_id' : fields.many2one('survey.response.line', 'Response', ondelete='cascade'),
|
||||
}
|
||||
@@ -545,7 +562,8 @@ class survey_response_answer(osv.osv):
|
||||
_rec_name = 'response_id'
|
||||
_columns = {
|
||||
'response_id' : fields.many2one('survey.response.line', 'Response', ondelete='cascade'),
|
||||
'answer_id' : fields.many2one('survey.answer', 'Answer', required=1, ondelete='cascade'),
|
||||
'answer_id' : fields.many2one('survey.answer', 'Answer', required=1),
|
||||
'column_id' : fields.many2one('survey.question.column.heading','Column'),
|
||||
'answer' : fields.char('Value', size =255),
|
||||
'value_choice' : fields.char('Value Choice', size =255),
|
||||
'comment' : fields.text('Notes'),
|
||||
@@ -734,7 +752,7 @@ class survey_question_wiz(osv.osv_memory):
|
||||
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_selection_" + tools.ustr(row['id']),'string':to_xml(tools.ustr(row['answer']))})
|
||||
selection = [('','')]
|
||||
for col in que_col_head.read(cr, uid, que_rec['column_heading_ids']):
|
||||
selection.append((col['title'], col['title']))
|
||||
selection.append((str(col['id']), col['title']))
|
||||
fields[tools.ustr(que) + "_selection_" + tools.ustr(row['id'])] = {'type':'selection', 'selection' : selection, 'string': "Answer"}
|
||||
if que_rec['comment_column']:
|
||||
fields[tools.ustr(que) + "_commentcolumn_"+tools.ustr(row['id']) + "_field"] = {'type':'char', 'size' : 255, 'string':tools.ustr(que_rec['column_name']), 'views':{}}
|
||||
@@ -747,8 +765,8 @@ class survey_question_wiz(osv.osv_memory):
|
||||
for row in ans_ids:
|
||||
etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr(row['answer'])) +' :-', 'align': '0.0'})
|
||||
for col in que_col_head.read(cr, uid, que_rec['column_heading_ids']):
|
||||
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_" + tools.ustr(row['id']) + "_" + tools.ustr(col['title']), 'nolabel':"1"})
|
||||
fields[tools.ustr(que) + "_" + tools.ustr(row['id']) + "_" + tools.ustr(col['title'])] = {'type':'boolean', 'string': col['title']}
|
||||
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_" + tools.ustr(row['id']) + "_" + tools.ustr(col['id']), 'nolabel':"1"})
|
||||
fields[tools.ustr(que) + "_" + tools.ustr(row['id']) + "_" + tools.ustr(col['id'])] = {'type':'boolean', 'string': col['title']}
|
||||
elif que_rec['type'] == 'matrix_of_drop_down_menus':
|
||||
xml_group = etree.SubElement(xml_group, 'group', {'col': str(len(que_rec['column_heading_ids']) + 1), 'colspan': '4'})
|
||||
etree.SubElement(xml_group, 'separator', {'string': '.','colspan': '1'})
|
||||
@@ -761,27 +779,38 @@ class survey_question_wiz(osv.osv_memory):
|
||||
if col['menu_choice']:
|
||||
for item in col['menu_choice'].split('\n'):
|
||||
if item and not item.strip() == '': selection.append((item ,item))
|
||||
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_" + tools.ustr(row['id']) + "_" + tools.ustr(col['title']),'nolabel':'1'})
|
||||
fields[tools.ustr(que) + "_" + tools.ustr(row['id']) + "_" + tools.ustr(col['title'])] = {'type':'selection', 'string': col['title'], 'selection':selection}
|
||||
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_" + tools.ustr(row['id']) + "_" + tools.ustr(col['id']),'nolabel':'1'})
|
||||
fields[tools.ustr(que) + "_" + tools.ustr(row['id']) + "_" + tools.ustr(col['id'])] = {'type':'selection', 'string': col['title'], 'selection':selection}
|
||||
elif que_rec['type'] == 'multiple_textboxes':
|
||||
xml_group = etree.SubElement(xml_group, 'group', {'col': '1', 'colspan': '4'})
|
||||
xml_group = etree.SubElement(xml_group, 'group', {'col': '4', 'colspan': '4'})
|
||||
type = "char"
|
||||
if que_rec['is_validation_require']:
|
||||
if que_rec['validation_type'] in ['must_be_whole_number']:
|
||||
type = "integer"
|
||||
elif que_rec['validation_type'] in ['must_be_decimal_number']:
|
||||
type = "float"
|
||||
elif que_rec['validation_type'] in ['must_be_date']:
|
||||
type = "date"
|
||||
for ans in ans_ids:
|
||||
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_" + tools.ustr(ans['id']) + "_multi"})
|
||||
fields[tools.ustr(que) + "_" + tools.ustr(ans['id']) + "_multi"] = {'type':'char', 'size':255, 'string':ans['answer']}
|
||||
etree.SubElement(xml_group, 'field', {'width':"300",'colspan': '1','name': tools.ustr(que) + "_" + tools.ustr(ans['id']) + "_multi"})
|
||||
if type == "char" :
|
||||
fields[tools.ustr(que) + "_" + tools.ustr(ans['id']) + "_multi"] = {'type':'char', 'size':255, 'string':ans['answer']}
|
||||
else:
|
||||
fields[tools.ustr(que) + "_" + tools.ustr(ans['id']) + "_multi"] = {'type': str(type), 'string':ans['answer']}
|
||||
elif que_rec['type'] == 'numerical_textboxes':
|
||||
xml_group = etree.SubElement(xml_group, 'group', {'col': '2', 'colspan': '2'})
|
||||
xml_group = etree.SubElement(xml_group, 'group', {'col': '4', 'colspan': '4'})
|
||||
for ans in ans_ids:
|
||||
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_" + tools.ustr(ans['id']) + "_numeric"})
|
||||
etree.SubElement(xml_group, 'field', {'width':"300",'colspan': '1','name': tools.ustr(que) + "_" + tools.ustr(ans['id']) + "_numeric"})
|
||||
fields[tools.ustr(que) + "_" + tools.ustr(ans['id']) + "_numeric"] = {'type':'integer', 'string':ans['answer']}
|
||||
elif que_rec['type'] == 'date':
|
||||
xml_group = etree.SubElement(xml_group, 'group', {'col': '2', 'colspan': '2'})
|
||||
xml_group = etree.SubElement(xml_group, 'group', {'col': '4', 'colspan': '4'})
|
||||
for ans in ans_ids:
|
||||
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_" + tools.ustr(ans['id'])})
|
||||
etree.SubElement(xml_group, 'field', {'width':"300",'colspan': '1','name': tools.ustr(que) + "_" + tools.ustr(ans['id'])})
|
||||
fields[tools.ustr(que) + "_" + tools.ustr(ans['id'])] = {'type':'date', 'string':ans['answer']}
|
||||
elif que_rec['type'] == 'date_and_time':
|
||||
xml_group = etree.SubElement(xml_group, 'group', {'col': '2', 'colspan': '2'})
|
||||
xml_group = etree.SubElement(xml_group, 'group', {'col': '4', 'colspan': '4'})
|
||||
for ans in ans_ids:
|
||||
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_" + tools.ustr(ans['id'])})
|
||||
etree.SubElement(xml_group, 'field', {'width':"300",'colspan': '1','name': tools.ustr(que) + "_" + tools.ustr(ans['id'])})
|
||||
fields[tools.ustr(que) + "_" + tools.ustr(ans['id'])] = {'type':'datetime', 'string':ans['answer']}
|
||||
elif que_rec['type'] == 'descriptive_text':
|
||||
for que_test in que_rec['descriptive_text'].split('\n'):
|
||||
@@ -800,6 +829,15 @@ class survey_question_wiz(osv.osv_memory):
|
||||
for col in que_col_head.read(cr, uid, que_rec['column_heading_ids']):
|
||||
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_table_" + tools.ustr(col['id']) +"_"+ tools.ustr(row), 'nolabel':"1"})
|
||||
fields[tools.ustr(que) + "_table_" + tools.ustr(col['id']) +"_"+ tools.ustr(row)] = {'type':'char','size':255,'views':{}}
|
||||
elif que_rec['type'] == 'multiple_textboxes_diff_type':
|
||||
xml_group = etree.SubElement(xml_group, 'group', {'col': '4', 'colspan': '4'})
|
||||
for ans in ans_ids:
|
||||
etree.SubElement(xml_group, 'field', {'width':"300",'colspan': '1','name': tools.ustr(que) + "_" + tools.ustr(ans['id']) + "_multi"})
|
||||
if ans['type'] == "char" :
|
||||
fields[tools.ustr(que) + "_" + tools.ustr(ans['id']) + "_multi"] = {'type':'char', 'size':255, 'string':ans['answer']}
|
||||
else:
|
||||
fields[tools.ustr(que) + "_" + tools.ustr(ans['id']) + "_multi"] = {'type': str(ans['type']), 'string':ans['answer']}
|
||||
|
||||
if que_rec['type'] in ['multiple_choice_only_one_ans', 'multiple_choice_multiple_ans', 'matrix_of_choices_only_one_ans', 'matrix_of_choices_only_multi_ans', 'matrix_of_drop_down_menus', 'rating_scale'] and que_rec['is_comment_require']:
|
||||
if que_rec['type'] in ['multiple_choice_only_one_ans', 'multiple_choice_multiple_ans'] and que_rec['comment_field_type'] in ['char','text'] and que_rec['make_comment_field']:
|
||||
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_otherfield", 'colspan':"4"})
|
||||
@@ -981,7 +1019,7 @@ class survey_question_wiz(osv.osv_memory):
|
||||
continue
|
||||
elif val1 and key1.split('_')[1] == "selection" and key1.split('_')[0] == que_id:
|
||||
if len(key1.split('_')) > 2:
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':resp_id, 'answer_id':key1.split('_')[-1], 'answer' : val1})
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':resp_id, 'answer_id':key1.split('_')[-1], 'column_id' : val1})
|
||||
selected_value.append(val1)
|
||||
response_list.append(str(ans_create_id) + "_" + str(key1.split('_')[-1]))
|
||||
else:
|
||||
@@ -1064,16 +1102,23 @@ class survey_question_wiz(osv.osv_memory):
|
||||
sur_name_read['store_ans'][resp_id].update({key1:val1})
|
||||
select_count += 1
|
||||
elif val1 and que_id == key1.split('_')[0] and len(key1.split('_')) > 2 and key1.split('_')[2] == 'numeric':
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':resp_id, 'answer_id':key1.split('_')[1], 'answer' : val1})
|
||||
sur_name_read['store_ans'][resp_id].update({key1:val1})
|
||||
select_count += 1
|
||||
numeric_sum += int(val1)
|
||||
if not val1=="0":
|
||||
try:
|
||||
numeric_sum += int(val1)
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':resp_id, 'answer_id':key1.split('_')[1], 'answer' : val1})
|
||||
sur_name_read['store_ans'][resp_id].update({key1:val1})
|
||||
select_count += 1
|
||||
except:
|
||||
for res in resp_id_list:
|
||||
sur_name_read['store_ans'].pop(res)
|
||||
raise osv.except_osv(_('Error !'), _("'" + que_rec['question'] + "' \nPlease enter an integer value " ))
|
||||
|
||||
elif val1 and que_id == key1.split('_')[0] and len(key1.split('_')) == 3:
|
||||
if type(val1) == type('') or type(val1) == type(u''):
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':resp_id, 'answer_id':key1.split('_')[1], 'answer' : key1.split('_')[2], 'value_choice' : val1})
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':resp_id, 'answer_id':key1.split('_')[1], 'column_id' : key1.split('_')[2], 'value_choice' : val1})
|
||||
sur_name_read['store_ans'][resp_id].update({key1:val1})
|
||||
else:
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':resp_id, 'answer_id':key1.split('_')[1], 'answer' : key1.split('_')[2]})
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':resp_id, 'answer_id':key1.split('_')[1], 'column_id' : key1.split('_')[2]})
|
||||
sur_name_read['store_ans'][resp_id].update({key1:True})
|
||||
matrix_list.append(key1.split('_')[0] + '_' + key1.split('_')[1])
|
||||
select_count += 1
|
||||
@@ -1102,7 +1147,7 @@ class survey_question_wiz(osv.osv_memory):
|
||||
for res in resp_id_list:
|
||||
sur_name_read['store_ans'].pop(res)
|
||||
raise osv.except_osv(_('Error re !'), _("'" + que_rec['question'] + "' " + tools.ustr(que_rec['numeric_required_sum_err_msg'])))
|
||||
if que_rec['type'] in ['multiple_choice_multiple_ans','matrix_of_choices_only_one_ans','matrix_of_choices_only_multi_ans','matrix_of_drop_down_menus','rating_scale','multiple_textboxes','numerical_textboxes','date','date_and_time'] and que_rec['is_require_answer']:
|
||||
if que_rec['type'] in ['multiple_textboxes_diff_type', 'multiple_choice_multiple_ans','matrix_of_choices_only_one_ans','matrix_of_choices_only_multi_ans','matrix_of_drop_down_menus','rating_scale','multiple_textboxes','numerical_textboxes','date','date_and_time'] and que_rec['is_require_answer']:
|
||||
if matrix_list:
|
||||
if (que_rec['required_type'] == 'all' and len(list(set(matrix_list))) < len(que_rec['answer_choice_ids'])) or \
|
||||
(que_rec['required_type'] == 'at least' and len(list(set(matrix_list))) < que_rec['req_ans']) or \
|
||||
@@ -1155,7 +1200,7 @@ class survey_question_wiz(osv.osv_memory):
|
||||
continue
|
||||
elif val and key.split('_')[1] == "selection":
|
||||
if len(key.split('_')) > 2:
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':update, 'answer_id':key.split('_')[-1], 'answer' : val})
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':update, 'answer_id':key.split('_')[-1], 'column_id' : val})
|
||||
selected_value.append(val)
|
||||
response_list.append(str(ans_create_id) + "_" + str(key.split('_')[-1]))
|
||||
else:
|
||||
@@ -1235,18 +1280,23 @@ class survey_question_wiz(osv.osv_memory):
|
||||
sur_name_read['store_ans'][update].update({key:val})
|
||||
select_count += 1
|
||||
elif val and len(key.split('_')) > 2 and key.split('_')[2] == 'numeric':
|
||||
resp_obj.write(cr, uid, update, {'state': 'done'})
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':update, 'answer_id':ans_id_len[1], 'answer' : val})
|
||||
sur_name_read['store_ans'][update].update({key:val})
|
||||
select_count += 1
|
||||
numeric_sum += int(val)
|
||||
if not val=="0":
|
||||
try:
|
||||
numeric_sum += int(val)
|
||||
resp_obj.write(cr, uid, update, {'state': 'done'})
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':update, 'answer_id':ans_id_len[1], 'answer' : val})
|
||||
sur_name_read['store_ans'][update].update({key:val})
|
||||
select_count += 1
|
||||
except:
|
||||
raise osv.except_osv(_('Error !'), _("'" + que_rec['question'] + "' \n Please enter an integer value " ))
|
||||
|
||||
elif val and len(key.split('_')) == 3:
|
||||
resp_obj.write(cr, uid, update, {'state': 'done'})
|
||||
if type(val) == type('') or type(val) == type(u''):
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':update, 'answer_id':ans_id_len[1], 'answer' : ans_id_len[2], 'value_choice' : val})
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':update, 'answer_id':ans_id_len[1], 'column_id' : ans_id_len[2], 'value_choice' : val})
|
||||
sur_name_read['store_ans'][update].update({key:val})
|
||||
else:
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':update, 'answer_id':ans_id_len[1], 'answer' : ans_id_len[2]})
|
||||
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':update, 'answer_id':ans_id_len[1], 'column_id' : ans_id_len[2]})
|
||||
sur_name_read['store_ans'][update].update({key:True})
|
||||
matrix_list.append(key.split('_')[0] + '_' + key.split('_')[1])
|
||||
select_count += 1
|
||||
@@ -1270,7 +1320,7 @@ class survey_question_wiz(osv.osv_memory):
|
||||
raise osv.except_osv(_('Error re !'), _("'" + que_rec['question'] + "' " + tools.ustr(que_rec['numeric_required_sum_err_msg'])))
|
||||
if not select_count:
|
||||
resp_obj.write(cr, uid, update, {'state': 'skip'})
|
||||
if que_rec['type'] in ['multiple_choice_multiple_ans','matrix_of_choices_only_one_ans','matrix_of_choices_only_multi_ans','matrix_of_drop_down_menus','rating_scale','multiple_textboxes','numerical_textboxes','date','date_and_time'] and que_rec['is_require_answer']:
|
||||
if que_rec['type'] in ['multiple_textboxes_diff_type','multiple_choice_multiple_ans','matrix_of_choices_only_one_ans','matrix_of_choices_only_multi_ans','matrix_of_drop_down_menus','rating_scale','multiple_textboxes','numerical_textboxes','date','date_and_time'] and que_rec['is_require_answer']:
|
||||
if matrix_list:
|
||||
if (que_rec['required_type'] == 'all' and len(list(set(matrix_list))) < len(que_rec['answer_choice_ids'])) or \
|
||||
(que_rec['required_type'] == 'at least' and len(list(set(matrix_list))) < que_rec['req_ans']) or \
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -47,12 +47,13 @@
|
||||
<field name="type" on_change="on_change_type(type)"/>
|
||||
<field name="in_visible_rating_weight" invisible="1"/>
|
||||
<field name="in_visible_menu_choice" invisible="1"/>
|
||||
<field name="in_visible_answer_type" invisible="1"/>
|
||||
<notebook colspan="4">
|
||||
<page string="Options">
|
||||
<group attrs="{'invisible':[('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','table')]}">
|
||||
<group attrs="{'invisible':[('type','!=','multiple_textboxes_diff_type'),('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','table')]}">
|
||||
<separator string="Answer" colspan="4"/>
|
||||
<group colspan="4" attrs="{'invisible':[('type','=','table')]}">
|
||||
<field name="answer_choice_ids" nolabel="1" colspan="4" context="{'line_order': answer_choice_ids}"/>
|
||||
<field name="answer_choice_ids" nolabel="1" colspan="4" context="{'line_order': answer_choice_ids}" default_get="{'in_visible_answer_type': in_visible_answer_type}"/>
|
||||
</group>
|
||||
<group colspan="4" attrs="{'invisible':[('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','table')]}">
|
||||
<field name="column_heading_ids" colspan="4" nolabel="1" default_get="{'in_visible_rating_weight':in_visible_rating_weight,'in_visible_menu_choice':in_visible_menu_choice}"/>
|
||||
@@ -93,16 +94,15 @@
|
||||
<field name="comment_valid_err_msg" nolabel="1" colspan="4"/>
|
||||
</group>
|
||||
</group>
|
||||
<group attrs="{'invisible':[('type','!=','matrix_of_choices_only_one_ans'),('type','!=','rating_scale')]}">
|
||||
<field name="comment_column"/>
|
||||
<group colspan="2" attrs="{'invisible':[('comment_column','!=',True)]}">
|
||||
<field name="column_name" colspan="2"/>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<newline/>
|
||||
<group attrs="{'invisible':[('type','!=','matrix_of_choices_only_one_ans'),('type','!=','rating_scale')]}">
|
||||
<field name="comment_column"/>
|
||||
<group colspan="2" attrs="{'invisible':[('comment_column','!=',True)]}">
|
||||
<field name="column_name" colspan="2"/>
|
||||
</group>
|
||||
</group>
|
||||
<newline/>
|
||||
<group attrs="{'invisible':[('type','!=','single_textbox'), ('type','!=','multiple_textboxes')]}">
|
||||
<separator string="Validation" colspan="4"/>
|
||||
<group colspan="4">
|
||||
@@ -129,12 +129,12 @@
|
||||
</group>
|
||||
</group>
|
||||
<newline/>
|
||||
<group attrs="{'invisible':[('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','single_textbox'),('type','!=','comment')]}">
|
||||
<group attrs="{'invisible':[('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','single_textbox'),('type','!=','comment'),('type','!=','multiple_textboxes_diff_type')]}">
|
||||
<separator string="Required Answer" colspan="4"/>
|
||||
<newline/>
|
||||
<field name="is_require_answer"/>
|
||||
<group col="6" colspan="4" attrs="{'invisible':[('is_require_answer','=',False)]}">
|
||||
<group colspan="4" attrs="{'invisible':[('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time')]}">
|
||||
<group colspan="4" attrs="{'invisible':[('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','multiple_textboxes_diff_type')]}">
|
||||
<field name="required_type"/>
|
||||
<group colspan="2" attrs="{'invisible':[('required_type','!=','at least'),('required_type','!=','at most'),('required_type','!=','exactly')]}">
|
||||
<field name="req_ans" />
|
||||
@@ -306,12 +306,13 @@
|
||||
<field name="type" on_change="on_change_type(type)"/>
|
||||
<field name="in_visible_rating_weight" invisible="1"/>
|
||||
<field name="in_visible_menu_choice" invisible="1"/>
|
||||
<notebook colspan="4">
|
||||
<field name="in_visible_answer_type" invisible="1"/>
|
||||
<notebook colspan="4">
|
||||
<page string="Options">
|
||||
<group attrs="{'invisible':[('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','table')]}">
|
||||
<group attrs="{'invisible':[('type','!=','multiple_textboxes_diff_type'),('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','table')]}">
|
||||
<separator string="Answer" colspan="4"/>
|
||||
<group colspan="4" attrs="{'invisible':[('type','=','table')]}">
|
||||
<field name="answer_choice_ids" nolabel="1" colspan="4" context="{'line_order': answer_choice_ids}"/>
|
||||
<field name="answer_choice_ids" nolabel="1" colspan="4" context="{'line_order': answer_choice_ids}" default_get="{'in_visible_answer_type': in_visible_answer_type}"/>
|
||||
</group>
|
||||
<group colspan="4" attrs="{'invisible':[('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','table')]}">
|
||||
<field name="column_heading_ids" colspan="4" nolabel="1" default_get="{'in_visible_rating_weight':in_visible_rating_weight,'in_visible_menu_choice':in_visible_menu_choice}"/>
|
||||
@@ -352,16 +353,15 @@
|
||||
<field name="comment_valid_err_msg" nolabel="1" colspan="4"/>
|
||||
</group>
|
||||
</group>
|
||||
<group attrs="{'invisible':[('type','!=','matrix_of_choices_only_one_ans'),('type','!=','rating_scale')]}">
|
||||
<field name="comment_column"/>
|
||||
<group colspan="2" attrs="{'invisible':[('comment_column','!=',True)]}">
|
||||
<field name="column_name" colspan="2"/>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<newline/>
|
||||
<group attrs="{'invisible':[('type','!=','matrix_of_choices_only_one_ans'),('type','!=','rating_scale')]}">
|
||||
<field name="comment_column"/>
|
||||
<group colspan="2" attrs="{'invisible':[('comment_column','!=',True)]}">
|
||||
<field name="column_name" colspan="2"/>
|
||||
</group>
|
||||
</group>
|
||||
<newline/>
|
||||
<group attrs="{'invisible':[('type','!=','single_textbox'), ('type','!=','multiple_textboxes')]}">
|
||||
<separator string="Validation" colspan="4"/>
|
||||
<group colspan="4">
|
||||
@@ -388,12 +388,12 @@
|
||||
</group>
|
||||
</group>
|
||||
<newline/>
|
||||
<group attrs="{'invisible':[('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','single_textbox'),('type','!=','comment')]}">
|
||||
<group attrs="{'invisible':[('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','single_textbox'),('type','!=','comment'),('type','!=','multiple_textboxes_diff_type')]}">
|
||||
<separator string="Required Answer" colspan="4"/>
|
||||
<newline/>
|
||||
<field name="is_require_answer"/>
|
||||
<group col="6" colspan="4" attrs="{'invisible':[('is_require_answer','=',False)]}">
|
||||
<group colspan="4" attrs="{'invisible':[('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time')]}">
|
||||
<group colspan="4" attrs="{'invisible':[('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','multiple_textboxes_diff_type')]}">
|
||||
<field name="required_type"/>
|
||||
<group colspan="2" attrs="{'invisible':[('required_type','!=','at least'),('required_type','!=','at most'),('required_type','!=','exactly')]}">
|
||||
<field name="req_ans" />
|
||||
@@ -427,6 +427,7 @@
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
|
||||
</form>
|
||||
<tree string="Survey Question">
|
||||
<field name="sequence" string="Seq"/>
|
||||
@@ -500,12 +501,13 @@
|
||||
<field name="type" on_change="on_change_type(type)"/>
|
||||
<field name="in_visible_rating_weight" invisible="1"/>
|
||||
<field name="in_visible_menu_choice" invisible="1"/>
|
||||
<field name="in_visible_answer_type" invisible="1"/>
|
||||
<notebook colspan="4">
|
||||
<page string="Options">
|
||||
<group attrs="{'invisible':[('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','table')]}">
|
||||
<group attrs="{'invisible':[('type','!=','multiple_textboxes_diff_type'),('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','table')]}">
|
||||
<separator string="Answer" colspan="4"/>
|
||||
<group colspan="4" attrs="{'invisible':[('type','=','table')]}">
|
||||
<field name="answer_choice_ids" nolabel="1" colspan="4" context="{'line_order': answer_choice_ids}"/>
|
||||
<field name="answer_choice_ids" nolabel="1" colspan="4" context="{'line_order': answer_choice_ids}" default_get="{'in_visible_answer_type': in_visible_answer_type}"/>
|
||||
</group>
|
||||
<group colspan="4" attrs="{'invisible':[('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','table')]}">
|
||||
<field name="column_heading_ids" colspan="4" nolabel="1" default_get="{'in_visible_rating_weight':in_visible_rating_weight,'in_visible_menu_choice':in_visible_menu_choice}"/>
|
||||
@@ -546,16 +548,15 @@
|
||||
<field name="comment_valid_err_msg" nolabel="1" colspan="4"/>
|
||||
</group>
|
||||
</group>
|
||||
<group attrs="{'invisible':[('type','!=','matrix_of_choices_only_one_ans'),('type','!=','rating_scale')]}">
|
||||
<field name="comment_column"/>
|
||||
<group colspan="2" attrs="{'invisible':[('comment_column','!=',True)]}">
|
||||
<field name="column_name" colspan="2"/>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<newline/>
|
||||
<group attrs="{'invisible':[('type','!=','matrix_of_choices_only_one_ans'),('type','!=','rating_scale')]}">
|
||||
<field name="comment_column"/>
|
||||
<group colspan="2" attrs="{'invisible':[('comment_column','!=',True)]}">
|
||||
<field name="column_name" colspan="2"/>
|
||||
</group>
|
||||
</group>
|
||||
<newline/>
|
||||
<group attrs="{'invisible':[('type','!=','single_textbox'), ('type','!=','multiple_textboxes')]}">
|
||||
<separator string="Validation" colspan="4"/>
|
||||
<group colspan="4">
|
||||
@@ -582,12 +583,12 @@
|
||||
</group>
|
||||
</group>
|
||||
<newline/>
|
||||
<group attrs="{'invisible':[('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','single_textbox'),('type','!=','comment')]}">
|
||||
<group attrs="{'invisible':[('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','single_textbox'),('type','!=','comment'),('type','!=','multiple_textboxes_diff_type')]}">
|
||||
<separator string="Required Answer" colspan="4"/>
|
||||
<newline/>
|
||||
<field name="is_require_answer"/>
|
||||
<group col="6" colspan="4" attrs="{'invisible':[('is_require_answer','=',False)]}">
|
||||
<group colspan="4" attrs="{'invisible':[('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time')]}">
|
||||
<group colspan="4" attrs="{'invisible':[('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','multiple_textboxes_diff_type')]}">
|
||||
<field name="required_type"/>
|
||||
<group colspan="2" attrs="{'invisible':[('required_type','!=','at least'),('required_type','!=','at most'),('required_type','!=','exactly')]}">
|
||||
<field name="req_ans" />
|
||||
@@ -665,12 +666,13 @@
|
||||
<field name="type" on_change="on_change_type(type)"/>
|
||||
<field name="in_visible_rating_weight" invisible="1"/>
|
||||
<field name="in_visible_menu_choice" invisible="1"/>
|
||||
<field name="in_visible_answer_type" invisible="1"/>
|
||||
<notebook colspan="4">
|
||||
<page string="Options">
|
||||
<group attrs="{'invisible':[('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','table')]}">
|
||||
<group attrs="{'invisible':[('type','!=','multiple_textboxes_diff_type'),('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','table')]}">
|
||||
<separator string="Answer" colspan="4"/>
|
||||
<group colspan="4" attrs="{'invisible':[('type','=','table')]}">
|
||||
<field name="answer_choice_ids" nolabel="1" colspan="4" context="{'line_order': answer_choice_ids}"/>
|
||||
<field name="answer_choice_ids" nolabel="1" colspan="4" context="{'line_order': answer_choice_ids}" default_get="{'in_visible_answer_type': in_visible_answer_type}"/>
|
||||
</group>
|
||||
<group colspan="4" attrs="{'invisible':[('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','table')]}">
|
||||
<field name="column_heading_ids" colspan="4" nolabel="1" default_get="{'in_visible_rating_weight':in_visible_rating_weight,'in_visible_menu_choice':in_visible_menu_choice}"/>
|
||||
@@ -711,7 +713,7 @@
|
||||
<field name="comment_valid_err_msg" nolabel="1" colspan="4"/>
|
||||
</group>
|
||||
</group>
|
||||
<group attrs="{'invisible':[('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale')]}">
|
||||
<group attrs="{'invisible':[('type','!=','matrix_of_choices_only_one_ans'),('type','!=','rating_scale')]}">
|
||||
<field name="comment_column"/>
|
||||
<group colspan="2" attrs="{'invisible':[('comment_column','!=',True)]}">
|
||||
<field name="column_name" colspan="2"/>
|
||||
@@ -746,12 +748,12 @@
|
||||
</group>
|
||||
</group>
|
||||
<newline/>
|
||||
<group attrs="{'invisible':[('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','single_textbox'),('type','!=','comment')]}">
|
||||
<group attrs="{'invisible':[('type','!=','multiple_choice_only_one_ans'), ('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','single_textbox'),('type','!=','comment'),('type','!=','multiple_textboxes_diff_type')]}">
|
||||
<separator string="Required Answer" colspan="4"/>
|
||||
<newline/>
|
||||
<field name="is_require_answer"/>
|
||||
<group col="6" colspan="4" attrs="{'invisible':[('is_require_answer','=',False)]}">
|
||||
<group colspan="4" attrs="{'invisible':[('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time')]}">
|
||||
<group colspan="4" attrs="{'invisible':[('type','!=','multiple_choice_multiple_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale'),('type','!=','multiple_textboxes'),('type','!=','numerical_textboxes'),('type','!=','date'),('type','!=','date_and_time'),('type','!=','multiple_textboxes_diff_type')]}">
|
||||
<field name="required_type"/>
|
||||
<group colspan="2" attrs="{'invisible':[('required_type','!=','at least'),('required_type','!=','at most'),('required_type','!=','exactly')]}">
|
||||
<field name="req_ans" />
|
||||
@@ -805,6 +807,10 @@
|
||||
<form string="Survey Answer">
|
||||
<field name="answer" colspan="4" select="1"/>
|
||||
<field name="sequence"/>
|
||||
<field name="in_visible_answer_type" invisible="1"/>
|
||||
<group colspan="4" attrs="{'invisible':[('in_visible_answer_type','=',True)]}">
|
||||
<field name="type"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
@@ -815,7 +821,7 @@
|
||||
<field name="model">survey.answer</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom" string="Survey Answer">
|
||||
<tree editable="top" string="Survey Answer">
|
||||
<field name="sequence" string="Seq"/>
|
||||
<field name="answer" select="1"/>
|
||||
</tree>
|
||||
@@ -903,13 +909,7 @@
|
||||
<field name="user_id" select="1"/>
|
||||
<field name="response_type" select="1"/>
|
||||
<field name="question_ids" nolabel="1" colspan="4" />
|
||||
<group col="5" colspan="4">
|
||||
<field name="state"/>
|
||||
<button name="response_done" string="Done"
|
||||
states="skip" type="object" icon="gtk-go-forward"/>
|
||||
<button name="response_skip" string="Skip"
|
||||
states="done" type="object" icon="gtk-close"/>
|
||||
</group>
|
||||
<field name="state" select="1"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
@@ -924,6 +924,7 @@
|
||||
<field name="date_create" select="1"/>
|
||||
<field name="user_id" select="1"/>
|
||||
<field name="response_type" select="1"/>
|
||||
<field name="state" select="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -944,7 +945,10 @@
|
||||
</group>
|
||||
<field name="value_choice"/>
|
||||
<label string="(Use Only Question Type is matrix_of_drop_down_menus)" align="0.0"/>
|
||||
<field name="comment_field"/>
|
||||
<group colspan="4" col="4">
|
||||
<field name="comment_field"/>
|
||||
<field name="column_id"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
@@ -958,6 +962,7 @@
|
||||
<field name="answer_id"/>
|
||||
<field name="answer" />
|
||||
<field name="value_choice" />
|
||||
<field name="column_id"/>
|
||||
<field name="comment_field"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
||||
@@ -14,7 +14,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-03 04:47+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: thunderbird
|
||||
|
||||
Reference in New Issue
Block a user