[MERGE]: with trunk
bzr revid: aja@tinyerp.com-20130624070057-0l0wiwzoblb1tk61
This commit is contained in:
commit
2f3bbb8c25
|
@ -23,14 +23,15 @@ import logging
|
|||
import openerp
|
||||
from openerp.modules.registry import RegistryManager
|
||||
from ..res_users import SignupError
|
||||
import openerp.addons.web.http as http
|
||||
from openerp.addons.web.http import request
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class Controller(openerp.addons.web.http.Controller):
|
||||
_cp_path = '/auth_signup'
|
||||
class Controller(http.Controller):
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
def get_config(self, req, dbname):
|
||||
@http.route('/auth_signup/get_config', type='json', auth="none")
|
||||
def get_config(self, dbname):
|
||||
""" retrieve the module config (which features are enabled) for the login page """
|
||||
registry = RegistryManager.get(dbname)
|
||||
with registry.cursor() as cr:
|
||||
|
@ -41,8 +42,8 @@ class Controller(openerp.addons.web.http.Controller):
|
|||
}
|
||||
return config
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
def retrieve(self, req, dbname, token):
|
||||
@http.route('/auth_signup/retrieve', type='json', auth="user")
|
||||
def retrieve(self, dbname, token):
|
||||
""" retrieve the user info (name, login or email) corresponding to a signup token """
|
||||
registry = RegistryManager.get(dbname)
|
||||
with registry.cursor() as cr:
|
||||
|
@ -50,23 +51,23 @@ class Controller(openerp.addons.web.http.Controller):
|
|||
user_info = res_partner.signup_retrieve_info(cr, openerp.SUPERUSER_ID, token)
|
||||
return user_info
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
def signup(self, req, dbname, token, **values):
|
||||
@http.route('/auth_signup/signup', type='json', auth="user")
|
||||
def signup(self, dbname, token, **values):
|
||||
""" sign up a user (new or existing)"""
|
||||
try:
|
||||
self._signup_with_values(req, dbname, token, values)
|
||||
self._signup_with_values(dbname, token, values)
|
||||
except SignupError, e:
|
||||
return {'error': openerp.tools.exception_to_unicode(e)}
|
||||
return {}
|
||||
|
||||
def _signup_with_values(self, req, dbname, token, values):
|
||||
def _signup_with_values(self, dbname, token, values):
|
||||
registry = RegistryManager.get(dbname)
|
||||
with registry.cursor() as cr:
|
||||
res_users = registry.get('res.users')
|
||||
res_users.signup(cr, openerp.SUPERUSER_ID, values, token)
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
def reset_password(self, req, dbname, login):
|
||||
@http.route('/auth_signup/reset_password', type='json', auth="user")
|
||||
def reset_password(self, dbname, login):
|
||||
""" retrieve user, and perform reset password """
|
||||
registry = RegistryManager.get(dbname)
|
||||
with registry.cursor() as cr:
|
||||
|
|
|
@ -0,0 +1,249 @@
|
|||
# Thai translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-06-20 13:54+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Thai <th@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: 2013-06-21 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:res.company:0
|
||||
msgid "Comments for Translator"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:ir.translation,job_id:0
|
||||
msgid "Gengo Job ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:114
|
||||
#, python-format
|
||||
msgid "This language is not supported by the Gengo translation services."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:res.company,gengo_comment:0
|
||||
msgid "Comments"
|
||||
msgstr "ความคิดเห็น"
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:res.company,gengo_private_key:0
|
||||
msgid "Gengo Private Key"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: model:ir.model,name:base_gengo.model_base_gengo_translations
|
||||
msgid "base.gengo.translations"
|
||||
msgstr "base.gengo.translations"
|
||||
|
||||
#. module: base_gengo
|
||||
#: help:res.company,gengo_auto_approve:0
|
||||
msgid "Jobs are Automatically Approved by Gengo."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:base.gengo.translations,lang_id:0
|
||||
msgid "Language"
|
||||
msgstr "ภาษา"
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:ir.translation,gengo_comment:0
|
||||
msgid "Comments & Activity Linked to Gengo"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:124
|
||||
#, python-format
|
||||
msgid "Gengo Sync Translation (Response)"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:72
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Gengo `Public Key` or `Private Key` are missing. Enter your Gengo "
|
||||
"authentication parameters under `Settings > Companies > Gengo Parameters`."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: selection:ir.translation,gengo_translation:0
|
||||
msgid "Translation By Machine"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:155
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%s\n"
|
||||
"\n"
|
||||
"--\n"
|
||||
" Commented on %s by %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:ir.translation,gengo_translation:0
|
||||
msgid "Gengo Translation Service Level"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: constraint:ir.translation:0
|
||||
msgid ""
|
||||
"The Gengo translation service selected is not supported for this language."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: selection:ir.translation,gengo_translation:0
|
||||
msgid "Standard"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: help:ir.translation,gengo_translation:0
|
||||
msgid ""
|
||||
"You can select here the service level you want for an automatic translation "
|
||||
"using Gengo."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:base.gengo.translations,restart_send_job:0
|
||||
msgid "Restart Sending Job"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:ir.translation:0
|
||||
msgid "To Approve In Gengo"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:res.company:0
|
||||
msgid "Private Key"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:res.company:0
|
||||
msgid "Public Key"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:res.company,gengo_public_key:0
|
||||
msgid "Gengo Public Key"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:123
|
||||
#, python-format
|
||||
msgid "Gengo Sync Translation (Request)"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:ir.translation:0
|
||||
msgid "Translations"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:res.company,gengo_auto_approve:0
|
||||
msgid "Auto Approve Translation ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: model:ir.actions.act_window,name:base_gengo.action_wizard_base_gengo_translations
|
||||
#: model:ir.ui.menu,name:base_gengo.menu_action_wizard_base_gengo_translations
|
||||
msgid "Gengo: Manual Request of Translation"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/ir_translation.py:62
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:109
|
||||
#, python-format
|
||||
msgid "Gengo Authentication Error"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: model:ir.model,name:base_gengo.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:ir.translation:0
|
||||
msgid ""
|
||||
"Note: If the translation state is 'In Progress', it means that the "
|
||||
"translation has to be approved to be uploaded in this system. You are "
|
||||
"supposed to do that directly by using your Gengo Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:82
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Gengo connection failed with this message:\n"
|
||||
"``%s``"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:res.company:0
|
||||
msgid "Gengo Parameters"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:base.gengo.translations:0
|
||||
msgid "Send"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: selection:ir.translation,gengo_translation:0
|
||||
msgid "Ultra"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: model:ir.model,name:base_gengo.model_ir_translation
|
||||
msgid "ir.translation"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:ir.translation:0
|
||||
msgid "Gengo Translation Service"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: selection:ir.translation,gengo_translation:0
|
||||
msgid "Pro"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:base.gengo.translations:0
|
||||
msgid "Gengo Request Form"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:114
|
||||
#, python-format
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: help:res.company,gengo_comment:0
|
||||
msgid ""
|
||||
"This comment will be automatically be enclosed in each an every request sent "
|
||||
"to Gengo"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:base.gengo.translations:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:base.gengo.translations:0
|
||||
msgid "or"
|
||||
msgstr ""
|
|
@ -689,7 +689,6 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
continue
|
||||
vals = self._convert_opportunity_data(cr, uid, lead, customer, section_id, context=context)
|
||||
self.write(cr, uid, [lead.id], vals, context=context)
|
||||
self.message_post(cr, uid, ids, body=_("Lead <b>converted into an Opportunity</b>"), subtype="crm.mt_lead_convert_to_opportunity", context=context)
|
||||
|
||||
if user_ids or section_id:
|
||||
self.allocate_salesman(cr, uid, ids, user_ids, section_id, context=context)
|
||||
|
|
|
@ -149,12 +149,6 @@
|
|||
<field name="default" eval="False"/>
|
||||
<field name="description">Lead created</field>
|
||||
</record>
|
||||
<record id="mt_lead_convert_to_opportunity" model="mail.message.subtype">
|
||||
<field name="name">Lead to Opportunity</field>
|
||||
<field name="res_model">crm.lead</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="description">Lead converted into an opportunity</field>
|
||||
</record>
|
||||
<record id="mt_lead_stage" model="mail.message.subtype">
|
||||
<field name="name">Stage Changed</field>
|
||||
<field name="res_model">crm.lead</field>
|
||||
|
@ -181,13 +175,6 @@
|
|||
<field name="parent_id" eval="ref('mt_lead_create')"/>
|
||||
<field name="relation_field">section_id</field>
|
||||
</record>
|
||||
<record id="mt_salesteam_lead_opportunity" model="mail.message.subtype">
|
||||
<field name="name">Lead to Opportunity</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="res_model">crm.case.section</field>
|
||||
<field name="parent_id" eval="ref('mt_lead_convert_to_opportunity')"/>
|
||||
<field name="relation_field">section_id</field>
|
||||
</record>
|
||||
<record id="mt_salesteam_lead_stage" model="mail.message.subtype">
|
||||
<field name="name">Opportunity Stage Changed</field>
|
||||
<field name="res_model">crm.case.section</field>
|
||||
|
|
|
@ -594,7 +594,9 @@
|
|||
'default_email_to':'{$object.email or \'\'}',
|
||||
'default_use_template': True,
|
||||
'default_template_id': ref('crm.email_template_opportunity_mail'),
|
||||
}"/>
|
||||
}"
|
||||
groups="base.group_sale_salesman"
|
||||
/>
|
||||
|
||||
<!--Update of email_template defined in crm_lead_data, to add ref_ir_act_window
|
||||
allowing to have a well formed email template (context action considered as set). -->
|
||||
|
@ -610,6 +612,7 @@
|
|||
if context.get('active_model') == 'crm.lead' and context.get('active_ids'):
|
||||
self.case_mark_lost(cr, uid, context['active_ids'], context=context)
|
||||
</field>
|
||||
<field name="groups_id" eval="[(4,ref('base.group_sale_salesman'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="ir_mark_as_lost" model="ir.values">
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
|
||||
"PO-Revision-Date: 2013-04-13 08:42+0000\n"
|
||||
"PO-Revision-Date: 2013-06-21 07:11+0000\n"
|
||||
"Last-Translator: krnkris <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: 2013-04-14 05:12+0000\n"
|
||||
"X-Generator: Launchpad (build 16564)\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-22 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.lead.report:0
|
||||
|
@ -31,7 +31,7 @@ msgstr ""
|
|||
"létrehozását a bejövő levelekből."
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:881
|
||||
#: code:addons/crm/crm_lead.py:898
|
||||
#: selection:crm.case.stage,type:0
|
||||
#: view:crm.lead:0
|
||||
#: selection:crm.lead,type:0
|
||||
|
@ -192,8 +192,8 @@ msgstr ""
|
|||
"direkt HTML formátumú ahhoz hogy beilleszthető legyen a kanban nézetekbe."
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:624
|
||||
#: code:addons/crm/crm_lead.py:744
|
||||
#: code:addons/crm/crm_lead.py:640
|
||||
#: code:addons/crm/crm_lead.py:761
|
||||
#: code:addons/crm/crm_phonecall.py:280
|
||||
#, python-format
|
||||
msgid "Warning!"
|
||||
|
@ -304,7 +304,7 @@ msgid "Prospect Partner"
|
|||
msgstr "Leendő partner"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:982
|
||||
#: code:addons/crm/crm_lead.py:1002
|
||||
#, python-format
|
||||
msgid "No Subject"
|
||||
msgstr "Nincs tárgy"
|
||||
|
@ -482,7 +482,7 @@ msgid "#Opportunities"
|
|||
msgstr "Lehetőségek száma"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:624
|
||||
#: code:addons/crm/crm_lead.py:640
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please select more than one element (lead or opportunity) from the list view."
|
||||
|
@ -782,7 +782,7 @@ msgid "Statistics Dashboard"
|
|||
msgstr "Statisztika vezérlőpult"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:861
|
||||
#: code:addons/crm/crm_lead.py:878
|
||||
#: model:crm.case.stage,name:crm.stage_lead2
|
||||
#: selection:crm.case.stage,type:0
|
||||
#: view:crm.lead:0
|
||||
|
@ -844,7 +844,7 @@ msgid "Exclusive"
|
|||
msgstr "Kizárólagos"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:584
|
||||
#: code:addons/crm/crm_lead.py:600
|
||||
#, python-format
|
||||
msgid "From %s : %s"
|
||||
msgstr "Ettől %s : %s"
|
||||
|
@ -1016,7 +1016,7 @@ msgid "Next Action"
|
|||
msgstr "Következő művelet"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:763
|
||||
#: code:addons/crm/crm_lead.py:780
|
||||
#, python-format
|
||||
msgid "<b>Partner</b> set to <em>%s</em>."
|
||||
msgstr "<b>Partner</b> beállítva mint <em>%s</em>."
|
||||
|
@ -1109,7 +1109,7 @@ msgid "Creation Date"
|
|||
msgstr "Létrehozás dátuma"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:698
|
||||
#: code:addons/crm/crm_lead.py:715
|
||||
#, python-format
|
||||
msgid "Lead <b>converted into an Opportunity</b>"
|
||||
msgstr "Tervezet <b>lehetőséggé átalakítva lehetőséggé</b>"
|
||||
|
@ -1324,7 +1324,9 @@ msgid "Days to Close"
|
|||
msgstr "Lezárásig hátralévő napok"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:1057
|
||||
#: field:crm.case.section,complete_name:0
|
||||
#, python-format
|
||||
msgid "unknown"
|
||||
msgstr "Ismeretlen"
|
||||
|
||||
|
@ -1415,7 +1417,7 @@ msgid "Lead Description"
|
|||
msgstr "Érdeklődés leírása"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:565
|
||||
#: code:addons/crm/crm_lead.py:581
|
||||
#, python-format
|
||||
msgid "Merged opportunities"
|
||||
msgstr "Lehetőségek összefésülése"
|
||||
|
@ -1989,7 +1991,7 @@ msgid "Leads"
|
|||
msgstr "Érdeklődők"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:563
|
||||
#: code:addons/crm/crm_lead.py:579
|
||||
#, python-format
|
||||
msgid "Merged leads"
|
||||
msgstr "Össztefésült érdeklődések"
|
||||
|
@ -2085,7 +2087,6 @@ msgid "Global CC"
|
|||
msgstr "Globális CC /másolat/"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.lead:0
|
||||
#: view:crm.phonecall:0
|
||||
#: model:ir.actions.act_window,name:crm.crm_case_categ_phone0
|
||||
#: model:ir.ui.menu,name:crm.menu_crm_case_phone
|
||||
|
@ -2399,7 +2400,7 @@ msgstr "Érdeklődés átalakítva egy lehetőséggé"
|
|||
#. module: crm
|
||||
#: view:crm.lead:0
|
||||
msgid "Unassigned Leads"
|
||||
msgstr "Nem iktatott rdeklődések"
|
||||
msgstr "Nem iktatott érdeklődések"
|
||||
|
||||
#. module: crm
|
||||
#: model:mail.message.subtype,description:crm.mt_lead_won
|
||||
|
@ -3100,7 +3101,7 @@ msgid "Working Hours"
|
|||
msgstr "Munkaórák"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:968
|
||||
#: code:addons/crm/crm_lead.py:986
|
||||
#: view:crm.lead:0
|
||||
#: field:crm.lead2opportunity.partner,partner_id:0
|
||||
#: field:crm.lead2opportunity.partner.mass,partner_id:0
|
||||
|
|
|
@ -102,7 +102,9 @@
|
|||
res_model="crm.lead2opportunity.partner.mass" src_model="crm.lead"
|
||||
view_mode="form" target="new" view_type="form"
|
||||
context="{'mass_convert' : True}"
|
||||
view_id="view_crm_lead2opportunity_partner_mass"/>
|
||||
view_id="view_crm_lead2opportunity_partner_mass"
|
||||
groups="base.group_sale_salesman"
|
||||
/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -45,7 +45,9 @@
|
|||
multi="True"
|
||||
key2="client_action_multi" name="Merge leads/opportunities"
|
||||
res_model="crm.merge.opportunity" src_model="crm.lead"
|
||||
view_mode="form" target="new" view_type="form"/>
|
||||
view_mode="form" target="new" view_type="form"
|
||||
groups="base.group_sale_salesman"
|
||||
/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
##############################################################################
|
||||
|
||||
import crm_partner_assign
|
||||
import crm_lead
|
||||
import wizard
|
||||
import report
|
||||
|
||||
|
|
|
@ -37,17 +37,23 @@ The most appropriate partner can be assigned.
|
|||
You can also use the geolocalization without using the GPS coordinates.
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'depends': ['crm', 'account'],
|
||||
'depends': ['crm', 'account', 'portal'],
|
||||
'demo': ['res_partner_demo.xml'],
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'res_partner_view.xml',
|
||||
'wizard/crm_forward_to_partner_view.xml',
|
||||
'wizard/crm_channel_interested_view.xml',
|
||||
'crm_lead_view.xml',
|
||||
'crm_partner_assign_data.xml',
|
||||
'crm_portal_view.xml',
|
||||
'portal_data.xml',
|
||||
'report/crm_lead_report_view.xml',
|
||||
'report/crm_partner_report_view.xml',
|
||||
],
|
||||
'js': [
|
||||
'static/src/js/next.js',
|
||||
],
|
||||
'test': ['test/partner_assign.yml'],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
# -*- 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 openerp.osv import osv
|
||||
from openerp.tools.translate import _
|
||||
|
||||
|
||||
class crm_lead(osv.osv):
|
||||
_inherit = 'crm.lead'
|
||||
|
||||
def get_interested_action(self, cr, uid, interested, context=None):
|
||||
try:
|
||||
model, action_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'crm_partner_assign', 'crm_lead_channel_interested_act')
|
||||
except ValueError:
|
||||
raise osv.except_osv(_('Error!'), _("The CRM Channel Interested Action is missing"))
|
||||
action = self.pool[model].read(cr, uid, action_id, context=context)
|
||||
action_context = eval(action['context'])
|
||||
action_context['interested'] = interested
|
||||
action['context'] = str(action_context)
|
||||
return action
|
||||
|
||||
def case_interested(self, cr, uid, ids, context=None):
|
||||
return self.get_interested_action(cr, uid, True, context=context)
|
||||
|
||||
def case_disinterested(self, cr, uid, ids, context=None):
|
||||
return self.get_interested_action(cr, uid, False, context=context)
|
|
@ -8,27 +8,33 @@
|
|||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//notebook/page[@string='Lead']" position="after">
|
||||
<page string="Assignation">
|
||||
<page string="Assigned Partner" groups="base.group_sale_manager">
|
||||
<group name="partner_assign_group">
|
||||
<group string="Partner Assignation">
|
||||
<field name="partner_assigned_id" on_change="onchange_assign_id(partner_assigned_id)" domain="[('grade_id','<>',False)]"/>
|
||||
<label for="date_assign"/>
|
||||
<group string="Partner Assignation" col="3" colspan="1">
|
||||
<label for="partner_latitude" string="Geolocation" />
|
||||
<div class="oe_title">
|
||||
<h3>
|
||||
<span class="oe_grey">( </span>
|
||||
<field name="partner_latitude" nolabel="1" readonly="1" class="oe_inline"/>
|
||||
<span class="oe_grey oe_inline" attrs="{'invisible':[('partner_latitude','<=',0)]}">N </span>
|
||||
<span class="oe_grey oe_inline" attrs="{'invisible':[('partner_latitude','>=',0)]}">S </span>
|
||||
<field name="partner_longitude" class="oe_inline" readonly="1" nolabel="1"/>
|
||||
<span class="oe_grey oe_inline" attrs="{'invisible':[('partner_longitude','<=',0)]}">E </span>
|
||||
<span class="oe_grey oe_inline" attrs="{'invisible':[('partner_longitude','>=',0)]}">W </span>
|
||||
<span class="oe_grey">) </span>
|
||||
</h3>
|
||||
</div>
|
||||
<button string="Automatic Assignation" name="action_assign_partner" type="object" colspan="1"
|
||||
class="oe_inline"/>
|
||||
<field name="partner_assigned_id" class="oe_inline" on_change="onchange_assign_id(partner_assigned_id)" domain="[('grade_id','<>',False)]"/>
|
||||
<div>
|
||||
<field name="date_assign"/>
|
||||
<button string="Forward"
|
||||
<button string="Send Email"
|
||||
attrs="{'invisible':[('partner_assigned_id','=',False)]}"
|
||||
name="%(crm_lead_forward_to_partner_act)d"
|
||||
icon="terp-mail-forward" type="action"
|
||||
context="{'default_composition_mode': 'forward', 'default_partner_ids': [partner_assigned_id]}"/>
|
||||
type="action"
|
||||
context="{'default_composition_mode': 'forward','hide_forward_type': 1 , 'default_partner_ids': [partner_assigned_id]}"/>
|
||||
</div>
|
||||
</group>
|
||||
<group string="Geo Assignation">
|
||||
<field name="partner_latitude"/>
|
||||
<field name="partner_longitude"/>
|
||||
<span/>
|
||||
<button string="Geo Assign" name="action_assign_partner" type="object" colspan="1"
|
||||
icon="gtk-apply"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</xpath>
|
||||
|
@ -59,41 +65,46 @@
|
|||
domain="[]" context="{'group_by':'date_assign'}"/>
|
||||
|
||||
</filter>
|
||||
|
||||
<field name="partner_id" position="after">
|
||||
<field name="partner_assigned_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</record>
|
||||
|
||||
<record id="view_crm_lead_geo_assign_form" model="ir.ui.view">
|
||||
<record id="view_crm_lead_geo_assign_form" model="ir.ui.view">
|
||||
<field name="name">crm.lead.lead.geo_assign.inherit</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="inherit_id" ref="crm.crm_case_form_view_leads"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//notebook/page[@string='Extra Info']" position="after">
|
||||
<page string="Assignation">
|
||||
<page string="Assigned Partner" groups="base.group_sale_manager">
|
||||
<group name="partner_assign_group">
|
||||
<group string="Partner Assignation">
|
||||
<field name="partner_assigned_id" on_change="onchange_assign_id(partner_assigned_id)" domain="[('grade_id','<>',False)]"/>
|
||||
<label for="date_assign"/>
|
||||
<group string="Partner Assignation" col="3">
|
||||
<label for="partner_latitude" string="Geolocation" />
|
||||
<div>
|
||||
<field name="date_assign"/>
|
||||
<button string="Forward"
|
||||
<h3>
|
||||
<span class="oe_grey">( </span>
|
||||
<field name="partner_latitude" nolabel="1" readonly="1" class="oe_inline"/>
|
||||
<span class="oe_grey oe_inline" attrs="{'invisible':[('partner_latitude','<=',0)]}">N </span>
|
||||
<span class="oe_grey oe_inline" attrs="{'invisible':[('partner_latitude','>=',0)]}">S </span>
|
||||
<field name="partner_longitude" class="oe_inline" readonly="1" nolabel="1"/>
|
||||
<span class="oe_grey oe_inline" attrs="{'invisible':[('partner_longitude','<=',0)]}">E </span>
|
||||
<span class="oe_grey oe_inline" attrs="{'invisible':[('partner_longitude','>=',0)]}">W </span>
|
||||
<span class="oe_grey">) </span>
|
||||
</h3>
|
||||
</div>
|
||||
<button string="Automatic Assignation" name="action_assign_partner" type="object" colspan="1"
|
||||
class="oe_inline" />
|
||||
<field name="partner_assigned_id" class="oe_inline" on_change="onchange_assign_id(partner_assigned_id)" domain="[('grade_id','<>',False)]"/>
|
||||
<div>
|
||||
<button string="Send Email"
|
||||
attrs="{'invisible':[('partner_assigned_id','=',False)]}"
|
||||
name="%(crm_lead_forward_to_partner_act)d"
|
||||
icon="terp-mail-forward" type="action"
|
||||
context="{'default_composition_mode': 'forward', 'default_partner_ids': [partner_assigned_id]}"/>
|
||||
type="action"
|
||||
context="{'default_composition_mode': 'forward','hide_forward_type': 1 , 'default_partner_ids': [partner_assigned_id]}"/>
|
||||
</div>
|
||||
</group>
|
||||
<group string="Geo Assignation">
|
||||
<field name="partner_latitude"/>
|
||||
<field name="partner_longitude"/>
|
||||
<span/>
|
||||
<button string="Geo Assign" name="action_assign_partner" type="object" colspan="1"
|
||||
icon="gtk-apply"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</xpath>
|
||||
|
@ -108,7 +119,7 @@
|
|||
<field name="arch" type="xml">
|
||||
<field name="partner_id" position="after">
|
||||
<field name="partner_assigned_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
@ -120,12 +131,11 @@
|
|||
<filter string="Team" position="after">
|
||||
<filter string="Assigned Partner" icon="terp-personal" domain="[]" context="{'group_by':'partner_assigned_id'}"/>
|
||||
</filter>
|
||||
|
||||
<field name="partner_id" position="after">
|
||||
<field name="partner_assigned_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -66,10 +66,13 @@ class res_partner_grade(osv.osv):
|
|||
_columns = {
|
||||
'sequence': fields.integer('Sequence'),
|
||||
'active': fields.boolean('Active'),
|
||||
'name': fields.char('Grade Name', size=32)
|
||||
'name': fields.char('Grade Name', size=32),
|
||||
'partner_weight': fields.integer('Grade Weight',
|
||||
help="Gives the probability to assign a lead to this partner. (0 means no assignation.)"),
|
||||
}
|
||||
_defaults = {
|
||||
'active': lambda *args: 1
|
||||
'active': lambda *args: 1,
|
||||
'partner_weight':1
|
||||
}
|
||||
|
||||
class res_partner_activation(osv.osv):
|
||||
|
@ -88,11 +91,11 @@ class res_partner(osv.osv):
|
|||
'partner_latitude': fields.float('Geo Latitude'),
|
||||
'partner_longitude': fields.float('Geo Longitude'),
|
||||
'date_localization': fields.date('Geo Localization Date'),
|
||||
'partner_weight': fields.integer('Weight',
|
||||
'partner_weight': fields.integer('Grade Weight',
|
||||
help="Gives the probability to assign a lead to this partner. (0 means no assignation.)"),
|
||||
'opportunity_assigned_ids': fields.one2many('crm.lead', 'partner_assigned_id',\
|
||||
'Assigned Opportunities'),
|
||||
'grade_id': fields.many2one('res.partner.grade', 'Partner Level'),
|
||||
'grade_id': fields.many2one('res.partner.grade', 'Grade'),
|
||||
'activation' : fields.many2one('res.partner.activation', 'Activation', select=1),
|
||||
'date_partnership' : fields.date('Partnership Date'),
|
||||
'date_review' : fields.date('Latest Partner Review'),
|
||||
|
@ -101,6 +104,13 @@ class res_partner(osv.osv):
|
|||
_defaults = {
|
||||
'partner_weight': lambda *args: 0
|
||||
}
|
||||
|
||||
def onchange_grade_id(self, cr, uid, ids, grade_id, context=None):
|
||||
res = {'value' :{'partner_weight':0}}
|
||||
if grade_id:
|
||||
partner_grade = self.pool.get('res.partner.grade').browse(cr, uid, grade_id)
|
||||
res['value']['partner_weight'] = partner_grade.partner_weight
|
||||
return res
|
||||
def geo_localize(self, cr, uid, ids, context=None):
|
||||
# Don't pass context to browse()! We need country names in english below
|
||||
for partner in self.browse(cr, uid, ids):
|
||||
|
@ -124,7 +134,7 @@ class crm_lead(osv.osv):
|
|||
_columns = {
|
||||
'partner_latitude': fields.float('Geo Latitude'),
|
||||
'partner_longitude': fields.float('Geo Longitude'),
|
||||
'partner_assigned_id': fields.many2one('res.partner', 'Assigned Partner', help="Partner this case has been forwarded/assigned to.", select=True),
|
||||
'partner_assigned_id': fields.many2one('res.partner', 'Assigned Partner',track_visibility='onchange' , help="Partner this case has been forwarded/assigned to.", select=True),
|
||||
'date_assign': fields.date('Assignation Date', help="Last date this case was forwarded/assigned to a partner"),
|
||||
}
|
||||
def _merge_data(self, cr, uid, ids, oldest, fields, context=None):
|
||||
|
@ -134,6 +144,7 @@ class crm_lead(osv.osv):
|
|||
def onchange_assign_id(self, cr, uid, ids, partner_assigned_id, context=None):
|
||||
"""This function updates the "assignation date" automatically, when manually assign a partner in the geo assign tab
|
||||
"""
|
||||
|
||||
if not partner_assigned_id:
|
||||
return {'value':{'date_assign': False}}
|
||||
else:
|
||||
|
@ -261,4 +272,3 @@ class crm_lead(osv.osv):
|
|||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
|
|
@ -1,44 +1,59 @@
|
|||
<?xml version="1.0" encoding='UTF-8'?>
|
||||
<?xml version="1.0" ?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="crm_partner_assign_email_template" model="email.template">
|
||||
<field name="name">Lead forward</field>
|
||||
<field name="email_from"></field>
|
||||
<field name="subject">Fwd: Lead: ${object.name}</field>
|
||||
<field name="email_to"></field>
|
||||
<field name="lang"></field>
|
||||
<field name="model_id" ref="crm.model_crm_lead"/>
|
||||
<record model="crm.case.stage" id="stage_portal_lead_assigned">
|
||||
<field name="name">Assigned</field>
|
||||
<field eval="1" name="case_default"/>
|
||||
<field eval="0" name="probability"/>
|
||||
<field eval="12" name="sequence"/>
|
||||
<field name="type">lead</field>
|
||||
</record>
|
||||
<record model="crm.case.stage" id="stage_portal_lead_recycle">
|
||||
<field name="name">To Recycle</field>
|
||||
<field eval="1" name="case_default"/>
|
||||
<field eval="0" name="probability"/>
|
||||
<field eval="11" name="sequence"/>
|
||||
<field name="type">lead</field>
|
||||
</record>
|
||||
<record id="email_template_lead_forward_mail" model="email.template">
|
||||
<field name="name">Lead Mass Mail</field>
|
||||
<field name="model_id" model="ir.model" search="[('name', '=', 'crm.lead.forward.to.partner')]"></field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="email_to">${ctx['partner_id'].email}</field>
|
||||
<field name="email_from">${user.email or ''}</field>
|
||||
<field name="subject">Fwd: Lead: ${ctx['partner_id'].name}</field>
|
||||
<field name="body_html"><![CDATA[
|
||||
Hello ${object.partner_assigned_id.name},
|
||||
<p>
|
||||
Here is a lead that might interest you.
|
||||
</p>
|
||||
<p>
|
||||
Please keep me informed about your actions about it so that I can keep an
|
||||
accurate follow-up of it and help you in the sale cycle.
|
||||
</p>
|
||||
<p>
|
||||
Your account manager,<br/>
|
||||
${object.user_id.name},<br/>
|
||||
${object.user_id.email}
|
||||
</p>
|
||||
|
||||
<p>Hello,</p>
|
||||
|
||||
<p>
|
||||
${ctx["mail_body"].replace('\n','<br>') | safe}
|
||||
</p>
|
||||
|
||||
% if ctx["history_mode"] in ('whole'):
|
||||
% for message in object.message_ids:
|
||||
---- Original Message (${message.date or ''}) ----<br/>
|
||||
${message.body | safe}
|
||||
% endfor
|
||||
<p>We have been contacted by those prospects that are in your region. Thus, the following leads have been assigned to ${ctx['partner_id'].name}:</p>
|
||||
|
||||
<ol>
|
||||
% for lead in ctx['partner_leads']:
|
||||
<li><a href="${lead.lead_link}">${lead.lead_id.name or 'Subject Undefined'}</a>, ${lead.lead_id.contact_name or 'Contact Name Undefined'}, ${lead.lead_id.country_id and lead.lead_id.country_id.name or 'Country Undefined' }, ${lead.lead_id.email_from or 'Email Undefined'}, ${lead.lead_id.phone or ''} </li></br>
|
||||
% endfor
|
||||
</ol>
|
||||
|
||||
% if ctx.get('partner_in_portal'):
|
||||
<p>Please connect to your <a href="${object.get_portal_url()}">Partner Portal</a> to get details. On each lead are two buttons on the top left corner that you should press after having contacted the lead: "I'm interested" & "I'm not interested".</p>
|
||||
% else:
|
||||
<p>
|
||||
You do not have yet a portal access to our database. Please contact
|
||||
${ctx['partner_id'].user_id and ctx['partner_id'].user_id.email and 'your account manager %s (%s)' % (ctx['partner_id'].user_id.name,ctx['partner_id'].user_id.email) or 'us'}.
|
||||
</p>
|
||||
% endif
|
||||
% if ctx['history_mode'] == 'latest':
|
||||
---- Original Message (${object.message_ids[0].date or ''}) ----<br/>
|
||||
${object.message_ids[0].body | safe}
|
||||
<p>The lead will be sent to another partner if you do not contact the lead before 20 days.</p>
|
||||
|
||||
<p>Thanks,</p>
|
||||
|
||||
<pre>
|
||||
${ctx['partner_id'].user_id and ctx['partner_id'].user_id.signature or ''}
|
||||
</pre>
|
||||
% if not ctx['partner_id'].user_id:
|
||||
PS: It looks like you do not have an account manager assigned to you, please contact us.
|
||||
% endif
|
||||
]]></field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
</openerp>
|
|
@ -0,0 +1,209 @@
|
|||
<openerp>
|
||||
<data>
|
||||
<!-- lead views-->
|
||||
<record model="ir.ui.view" id="crm_lead_portal_tree">
|
||||
<field name="name">partner lead</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="priority" eval="32"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Leads" colors="blue:state=='pending';grey:state in ('cancel', 'done');red:stage_id[1]=='Disinterested';black:stage_id[1]=='Interested'">
|
||||
<field name="date_deadline" invisible="1"/>
|
||||
<field name="create_date"/>
|
||||
<field name="name" string="Subject"/>
|
||||
<field name="contact_name"/>
|
||||
<field name="country_id" invisible="context.get('invisible_country', True)" />
|
||||
<field name="email_from"/>
|
||||
<field name="phone"/>
|
||||
<field name="stage_id" invisible="1"/>
|
||||
<field name="type_id" invisible="1"/>
|
||||
<field name="referred" invisible="1"/>
|
||||
<field name="channel_id" invisible="1"/>
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="section_id" invisible="context.get('invisible_section', True)" />
|
||||
|
||||
<button string="I'm interested" name="case_interested" icon="gtk-index" type="object"/>
|
||||
<button string="I'm not interested" name="case_disinterested" icon="gtk-close" type="object"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record model= "ir.ui.view" id="crm_lead_portal_form">
|
||||
<field name="name">crm_portal_form</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="priority" eval="32"/>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Leads" version="7.0">
|
||||
<header>
|
||||
<button string="I'm interested" name="case_interested" icon="gtk-index" type="object"/>
|
||||
<button string="I'm not interested" name="case_disinterested" icon="gtk-close" type="object"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="partner_name" string="Partner Name" readonly="1"/>
|
||||
<field name="title" widget="selection" readonly="1"/>
|
||||
<field name="contact_name" readonly="1"/>
|
||||
<field name="function" readonly="1"/>
|
||||
<field name="email_from" readonly="1"/>
|
||||
<field name="phone" readonly="1"/>
|
||||
<field name="fax" readonly="1"/>
|
||||
<field name="mobile" readonly="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="street" readonly="1"/>
|
||||
<field name="street2" readonly="1"/>
|
||||
<field name="zip" readonly="1"/>
|
||||
<field name="city" readonly="1"/>
|
||||
<field name="country_id" readonly="1"/>
|
||||
<field name="state_id" readonly="1"/>
|
||||
</group>
|
||||
<label for="description" colspan="2"/>
|
||||
<field name="description" nolabel="1" colspan="2"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<!-- opportunity views-->
|
||||
<record model="ir.ui.view" id="crm_opportunity_portal_tree">
|
||||
<field name="name">partner lead</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="priority" eval="32"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Leads" colors="blue:state=='pending';grey:state in ('cancel', 'done')">
|
||||
<field name="date_deadline" invisible="1"/>
|
||||
<field name="create_date" groups="base.group_no_one"/>
|
||||
<field name="name" string="Opportunity"/>
|
||||
<field name="partner_id" string="Customer"/>
|
||||
<field name="country_id" invisible="context.get('invisible_country', True)" />
|
||||
<field name="date_action"/>
|
||||
<field name="title_action" />
|
||||
<field name="channel_id" invisible="1"/>
|
||||
<field name="type_id" invisible="1"/>
|
||||
<field name="planned_revenue" sum="Expected Revenues"/>
|
||||
<field name="probability" widget="progressbar" avg="Avg. of Probability"/>
|
||||
<field name="section_id" invisible="context.get('invisible_section', True)" />
|
||||
<field name="priority" invisible="1"/>
|
||||
<field name="state" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record model= "ir.ui.view" id="crm_opportunity_portal_form">
|
||||
<field name="name">crm_portal_form</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="priority" eval="32"/>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Leads" version="7.0">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name" required="1" string="Opportunity"/>
|
||||
<field name="planned_revenue" readonly="1"/>
|
||||
<field name="probability" readonly="1"/>
|
||||
<field name="date_deadline"/>
|
||||
<newline/>
|
||||
<field name="date_action" readonly="1"/>
|
||||
<field name="title_action" readonly="1"/>
|
||||
<field name="priority" string="Priority" readonly="1"/>
|
||||
<newline/>
|
||||
<field name="type" invisible="1" readonly="1"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Opportunity">
|
||||
<group col="2">
|
||||
<separator string="Contact" colspan="2"/>
|
||||
<group col="2">
|
||||
<field name="partner_id" select="1"
|
||||
on_change="onchange_partner_id(partner_id, email_from)" string="Customer"
|
||||
colspan="2" readonly="1"/>
|
||||
<field name="partner_name" string="Customer Name" readonly="1"/>
|
||||
<field domain="[('domain', '=', 'contact')]" name="title" widget="selection" readonly="1"/>
|
||||
<field name="function" readonly="1"/>
|
||||
<field name="street" readonly="1"/>
|
||||
<field name="street2" readonly="1"/>
|
||||
</group>
|
||||
<group col="2">
|
||||
<field name="zip" readonly="1"/>
|
||||
<field name="city" readonly="1"/>
|
||||
<field name="country_id" readonly="1"/>
|
||||
<field name="state_id" readonly="1"/>
|
||||
<field name="phone" readonly="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="2">
|
||||
<group col="2">
|
||||
<separator string="Communication" colspan="2"/>
|
||||
<field name="email_from" readonly="1"/>
|
||||
<field name="phone" readonly="1"/>
|
||||
<field name="fax" readonly="1"/>
|
||||
<field name="mobile" readonly="1"/>
|
||||
</group>
|
||||
<group col="2">
|
||||
<separator string="Categorization" colspan="2"/>
|
||||
<field name="type_id" widget="selection" readonly="1"/>
|
||||
<field name="channel_id" widget="selection" readonly="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<separator string="Details" />
|
||||
<field name="description" nolabel="1" colspan="4"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- leads -->
|
||||
|
||||
<record id="action_portal_leads" model="ir.actions.act_window">
|
||||
<field name="name">Leads</field>
|
||||
<field name="res_model">crm.lead</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="crm_lead_portal_tree"/>
|
||||
<field name="domain">[('type','like','lead')]</field>
|
||||
</record>
|
||||
|
||||
<record id="action_portal_lead_tree" model="ir.actions.act_window.view">
|
||||
<field name="sequence" eval="0"/>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_id" ref="crm_lead_portal_tree"/>
|
||||
<field name="act_window_id" ref="action_portal_leads"/>
|
||||
</record>
|
||||
|
||||
<record id="action_portal_lead_form" model="ir.actions.act_window.view">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="crm_lead_portal_form"/>
|
||||
<field name="act_window_id" ref="action_portal_leads"/>
|
||||
</record>
|
||||
|
||||
<!-- opportunities -->
|
||||
|
||||
<record id="action_portal_opportunities" model="ir.actions.act_window">
|
||||
<field name="name">Opportunities</field>
|
||||
<field name="res_model">crm.lead</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="crm_opportunity_portal_tree"/>
|
||||
<field name="domain">[('type','like','opportunity')]</field>
|
||||
</record>
|
||||
|
||||
<record id="action_portal_opportunities_tree" model="ir.actions.act_window.view">
|
||||
<field name="sequence" eval="0"/>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_id" ref="crm_opportunity_portal_tree"/>
|
||||
<field name="act_window_id" ref="action_portal_opportunities"/>
|
||||
</record>
|
||||
|
||||
<record id="action_portal_opportunities_form" model="ir.actions.act_window.view">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="crm_opportunity_portal_form"/>
|
||||
<field name="act_window_id" ref="action_portal_opportunities"/>
|
||||
</record>
|
||||
|
||||
<!--menus-->
|
||||
<menuitem name="Leads & Opportunities" id="portal_leads" parent="portal.portal_menu" sequence="25"/>
|
||||
<menuitem action="action_portal_leads" sequence="0" id="openerp_portal_menu_sales_leads_current" parent="portal_leads"/>
|
||||
<menuitem action="action_portal_opportunities" sequence="1" id="openerp_portal_menu_sales_leads_current1" parent="portal_leads"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -0,0 +1,49 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!-- Partner and address -->
|
||||
<record id="res_partner_access" model="ir.model.access">
|
||||
<field name="name">openerp.portal.res.partner</field>
|
||||
<field name="model_id" ref="base.model_res_partner"/>
|
||||
<field name="group_id" ref="portal.group_portal"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_create" eval="0"/>
|
||||
<field name="perm_write" eval="0"/>
|
||||
<field name="perm_unlink" eval="0"/>
|
||||
</record>
|
||||
<record id="res_partner_rule" model="ir.rule">
|
||||
<field name="name">openerp.portal.res.partner</field>
|
||||
<field name="model_id" ref="base.model_res_partner"/>
|
||||
<field name="groups" eval="[(6,0,[ref('portal.group_portal')])]"/>
|
||||
<field name="domain_force">[('id','child_of',user.commercial_partner_id.id)]</field>
|
||||
</record>
|
||||
<record id="res_partner_grade_access" model="ir.model.access">
|
||||
<field name="name">openerp.portal.res.partner.grade</field>
|
||||
<field name="model_id" ref="crm_partner_assign.model_res_partner_grade"/>
|
||||
<field name="group_id" ref="portal.group_portal"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_create" eval="0"/>
|
||||
<field name="perm_write" eval="0"/>
|
||||
<field name="perm_unlink" eval="0"/>
|
||||
</record>
|
||||
|
||||
<!-- CRM Lead portal -->
|
||||
<record id="assigned_lead_portal_rule_1" model="ir.rule">
|
||||
<field name="name">openerp.portal.crm.lead</field>
|
||||
<field name="model_id" ref="crm.model_crm_lead"/>
|
||||
<field name="groups" eval="[(6,0,[ref('portal.group_portal')])]"/>
|
||||
<field name="domain_force">[('partner_assigned_id','child_of',user.commercial_partner_id.id)]</field>
|
||||
</record>
|
||||
<record id="lead_portal_access" model="ir.model.access">
|
||||
<field name="name">openerp.portal.crm.lead</field>
|
||||
<field name="model_id" ref="crm.model_crm_lead"/>
|
||||
<field name="group_id" ref="portal.group_portal"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_create" eval="0"/>
|
||||
<field name="perm_write" eval="1"/>
|
||||
<field name="perm_unlink" eval="0"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -2,7 +2,7 @@
|
|||
<openerp>
|
||||
<data>
|
||||
|
||||
<!--Partner Activation -->
|
||||
<!--Partner Activation -->
|
||||
|
||||
<record model="ir.ui.view" id="res_partner_activation_form">
|
||||
<field name="name">openerp_custom.res.partner.activation.form</field>
|
||||
|
@ -158,6 +158,5 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -5,3 +5,4 @@ access_crm_partner_report,crm.partner.report.assign.all,model_crm_partner_report
|
|||
access_res_partner_grade,res.partner.grade,model_res_partner_grade,base.group_sale_salesman,1,1,1,0
|
||||
access_res_partner_grade_manager,res.partner.grade.manager,model_res_partner_grade,base.group_sale_manager,1,1,1,1
|
||||
"access_partner_activation_manager","res.partner.activation.manager","model_res_partner_activation","base.group_partner_manager",1,1,1,1
|
||||
partner_access_crm_lead,crm.lead,model_crm_lead,portal.group_portal,1,1,0,0
|
|
|
@ -0,0 +1,13 @@
|
|||
openerp.crm_partner_assign = function (instance) {
|
||||
instance.crm_partner_assign = instance.crm_partner_assign || {};
|
||||
instance.crm_partner_assign.next_or_list = function(parent) {
|
||||
var form = parent.inner_widget.views.form.controller;
|
||||
form.dataset.remove_ids([form.dataset.ids[form.dataset.index]]);
|
||||
form.reload();
|
||||
if (!form.dataset.ids.length){
|
||||
parent.inner_widget.switch_mode('list');
|
||||
}
|
||||
parent.do_action({ type: 'ir.actions.act_window_close' });
|
||||
};
|
||||
instance.web.client_actions.add("next_or_list", "instance.crm_partner_assign.next_or_list");
|
||||
}
|
|
@ -20,3 +20,4 @@
|
|||
##############################################################################
|
||||
|
||||
import crm_forward_to_partner
|
||||
import crm_channel_interested
|
|
@ -0,0 +1,76 @@
|
|||
# -*- coding: 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 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 openerp.osv import fields, osv
|
||||
from openerp.tools.translate import _
|
||||
from openerp import SUPERUSER_ID
|
||||
|
||||
|
||||
class crm_lead_forward_to_partner(osv.TransientModel):
|
||||
""" Forward info history to partners. """
|
||||
_name = 'crm.lead.channel.interested'
|
||||
_columns = {
|
||||
'interested': fields.boolean('Interested by this lead'),
|
||||
'contacted': fields.boolean('Did you contact the lead?', help="The lead has been contacted"),
|
||||
'comment': fields.text('Comment', help="What are the elements that have led to this decision?", required=True),
|
||||
}
|
||||
_defaults = {
|
||||
'interested': lambda self, cr, uid, c: c.get('interested', True),
|
||||
'contacted': False,
|
||||
}
|
||||
|
||||
def action_confirm(self, cr, uid, ids, context=None):
|
||||
wizard = self.browse(cr, uid, ids[0], context=context)
|
||||
if wizard.interested and not wizard.contacted:
|
||||
raise osv.except_osv(_('Error!'), _("You must contact the lead before saying that you are interested"))
|
||||
lead_obj = self.pool.get('crm.lead')
|
||||
lead_obj.check_access_rights(cr, uid, 'write')
|
||||
if wizard.interested:
|
||||
message = _('<p>I am interested by this lead.</p>')
|
||||
values = {}
|
||||
else:
|
||||
stage = 'stage_portal_lead_recycle'
|
||||
message = _('<p>I am not interested by this lead. I %scontacted the lead.</p>') % (not wizard.contacted and 'have not ' or '')
|
||||
values = {'partner_assigned_id': False}
|
||||
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||
partner_ids = self.pool.get('res.partner').search(cr, SUPERUSER_ID, [('id', 'child_of', user.partner_id.commercial_partner_id.id)], context=context)
|
||||
lead_obj.message_unsubscribe(cr, SUPERUSER_ID, context.get('active_ids'), partner_ids, context=None)
|
||||
try:
|
||||
stage_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'crm_partner_assign', stage)[1]
|
||||
except ValueError:
|
||||
stage_id = False
|
||||
if stage_id:
|
||||
values.update({'stage_id': stage_id})
|
||||
if wizard.comment:
|
||||
message += '<p>%s</p>' % wizard.comment
|
||||
lead_obj.message_post(cr, uid, context.get('active_ids'), body=message, context=context)
|
||||
if values:
|
||||
lead_obj.write(cr, SUPERUSER_ID, context.get('active_ids'), values)
|
||||
if wizard.interested:
|
||||
for lead in lead_obj.browse(cr, uid, context.get('active_ids'), context=context):
|
||||
lead_obj.convert_opportunity(cr, SUPERUSER_ID, [lead.id], lead.partner_id and lead.partner_id.id or None, context=None)
|
||||
return {
|
||||
'type': 'ir.actions.client',
|
||||
'tag': 'next_or_list',
|
||||
'params': {
|
||||
},
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record model="ir.ui.view" id="crm_lead_channel_interested_form">
|
||||
<field name="name">crm_lead_channel_interested</field>
|
||||
<field name="model">crm.lead.channel.interested</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Send Mail" version="7.0">
|
||||
<group col="1">
|
||||
<field name="interested" nolabel="1" invisible="1"/>
|
||||
<div>
|
||||
<div invisible="context.get('interested', True)">
|
||||
<label for="comment" string="Why aren't you interested by this lead?" />
|
||||
</div>
|
||||
<div invisible="not context.get('interested', True)">
|
||||
<label for="comment" string="What is the next action? When? What is the expected revenue?" />
|
||||
</div>
|
||||
</div>
|
||||
<field name="comment" nolabel="1"/>
|
||||
<div class="oe_inline">
|
||||
<field name="contacted" nolabel="1" string="Do you have contacted the customer?"/>
|
||||
<label for="contacted" />
|
||||
</div>
|
||||
<p class="oe_grey" invisible="not context.get('interested', True)">
|
||||
Once the lead is processed, it will be in your "Opportunities" menu.
|
||||
</p>
|
||||
</group>
|
||||
<footer>
|
||||
<button name="action_confirm" string="Confirm" type="object" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" special="cancel" class="oe_link"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="crm_lead_channel_interested_act">
|
||||
<field name="name">Lead Feedback</field>
|
||||
<field name="res_model">crm.lead.channel.interested</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="crm_lead_channel_interested_form"/>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
|
@ -27,107 +27,182 @@ from openerp.tools.translate import _
|
|||
class crm_lead_forward_to_partner(osv.TransientModel):
|
||||
""" Forward info history to partners. """
|
||||
_name = 'crm.lead.forward.to.partner'
|
||||
_inherit = "mail.compose.message"
|
||||
|
||||
def _get_composition_mode_selection(self, cr, uid, context=None):
|
||||
composition_mode = super(crm_lead_forward_to_partner, self)._get_composition_mode_selection(cr, uid, context=context)
|
||||
composition_mode.append(('forward', 'Forward'))
|
||||
return composition_mode
|
||||
|
||||
_columns = {
|
||||
'partner_ids': fields.many2many('res.partner',
|
||||
'lead_forward_to_partner_res_partner_rel',
|
||||
'wizard_id', 'partner_id', 'Additional contacts'),
|
||||
'attachment_ids': fields.many2many('ir.attachment',
|
||||
'lead_forward_to_partner_attachment_rel',
|
||||
'wizard_id', 'attachment_id', 'Attachments'),
|
||||
'history_mode': fields.selection([('info', 'Internal notes'),
|
||||
('latest', 'Latest email'), ('whole', 'Whole Story')],
|
||||
'Send history', required=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'history_mode': 'info',
|
||||
}
|
||||
def _convert_to_assignation_line(self, cr, uid, lead, partner, context=None):
|
||||
lead_location = []
|
||||
partner_location = []
|
||||
if lead.country_id:
|
||||
lead_location.append(lead.country_id.name)
|
||||
if lead.city:
|
||||
lead_location.append(lead.city)
|
||||
if partner:
|
||||
if partner.country_id:
|
||||
partner_location.append(partner.country_id.name)
|
||||
if partner.city:
|
||||
partner_location.append(partner.city)
|
||||
return {'lead_id': lead.id,
|
||||
'lead_location': ", ".join(lead_location),
|
||||
'partner_assigned_id': partner and partner.id or False,
|
||||
'partner_location': ", ".join(partner_location),
|
||||
'lead_link': self.get_lead_portal_url(cr, uid, lead.id, lead.type, context=context),
|
||||
}
|
||||
|
||||
def default_get(self, cr, uid, fields, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
# set as comment, perform overrided document-like action that calls get_record_data
|
||||
old_mode = context.get('default_composition_mode', 'forward')
|
||||
context['default_composition_mode'] = 'comment'
|
||||
lead_obj = self.pool.get('crm.lead')
|
||||
email_template_obj = self.pool.get('email.template')
|
||||
try:
|
||||
template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'crm_partner_assign', 'email_template_lead_forward_mail')[1]
|
||||
except ValueError:
|
||||
template_id = False
|
||||
res = super(crm_lead_forward_to_partner, self).default_get(cr, uid, fields, context=context)
|
||||
# back to forward mode
|
||||
context['default_composition_mode'] = old_mode
|
||||
res['composition_mode'] = context['default_composition_mode']
|
||||
active_ids = context.get('active_ids')
|
||||
default_composition_mode = context.get('default_composition_mode')
|
||||
res['assignation_lines'] = []
|
||||
if template_id:
|
||||
res['body'] = email_template_obj.get_email_template(cr, uid, template_id).body_html
|
||||
if active_ids:
|
||||
lead_ids = lead_obj.browse(cr, uid, active_ids, context=context)
|
||||
if default_composition_mode == 'mass_mail':
|
||||
partner_assigned_ids = lead_obj.search_geo_partner(cr, uid, active_ids, context=context)
|
||||
else:
|
||||
partner_assigned_ids = dict((lead.id, lead.partner_assigned_id and lead.partner_assigned_id.id or False) for lead in lead_ids)
|
||||
res['partner_id'] = lead_ids[0].partner_assigned_id.id
|
||||
for lead in lead_ids:
|
||||
partner_id = partner_assigned_ids.get(lead.id) or False
|
||||
partner = False
|
||||
if partner_id:
|
||||
partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
|
||||
res['assignation_lines'].append(self._convert_to_assignation_line(cr, uid, lead, partner))
|
||||
return res
|
||||
|
||||
def get_record_data(self, cr, uid, model, res_id, context=None):
|
||||
""" Override of mail.compose.message, to add default values coming
|
||||
form the related lead.
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
res = super(crm_lead_forward_to_partner, self).get_record_data(cr, uid, model, res_id, context=context)
|
||||
if model not in ('crm.lead') or not res_id:
|
||||
return res
|
||||
template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'crm_partner_assign', 'crm_partner_assign_email_template')[1]
|
||||
context['history_mode'] = context.get('history_mode','whole')
|
||||
mail_body_fields = ['partner_id', 'partner_name', 'title', 'function', 'street', 'street2', 'zip', 'city', 'country_id', 'state_id', 'email_from', 'phone', 'fax', 'mobile', 'description']
|
||||
lead = self.pool.get('crm.lead').browse(cr, uid, res_id, context=context)
|
||||
context['mail_body'] = self.pool.get('crm.lead')._mail_body(cr, uid, lead, mail_body_fields, context=context)
|
||||
template = self.generate_email_for_composer(cr, uid, template_id, res_id, context)
|
||||
res['subject'] = template['subject']
|
||||
res['body'] = template['body']
|
||||
return res
|
||||
|
||||
def on_change_history_mode(self, cr, uid, ids, history_mode, model, res_id, context=None):
|
||||
""" Update body when changing history_mode """
|
||||
if context is None:
|
||||
context = {}
|
||||
if model and model == 'crm.lead' and res_id:
|
||||
lead = self.pool[model].browse(cr, uid, res_id, context=context)
|
||||
context['history_mode'] = history_mode
|
||||
body = self.get_record_data(cr, uid, 'crm.lead', res_id, context=context)['body']
|
||||
return {'value': {'body': body}}
|
||||
|
||||
def create(self, cr, uid, values, context=None):
|
||||
""" TDE-HACK: remove 'type' from context, because when viewing an
|
||||
opportunity form view, a default_type is set and propagated
|
||||
to the wizard, that has a not matching type field. """
|
||||
default_type = context.pop('default_type', None)
|
||||
new_id = super(crm_lead_forward_to_partner, self).create(cr, uid, values, context=context)
|
||||
if default_type:
|
||||
context['default_type'] = default_type
|
||||
return new_id
|
||||
|
||||
def action_forward(self, cr, uid, ids, context=None):
|
||||
""" Forward the lead to a partner """
|
||||
if context is None:
|
||||
lead_obj = self.pool.get('crm.lead')
|
||||
record = self.browse(cr, uid, ids[0], context=context)
|
||||
email_template_obj = self.pool.get('email.template')
|
||||
try:
|
||||
template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'crm_partner_assign', 'email_template_lead_forward_mail')[1]
|
||||
except ValueError:
|
||||
raise osv.except_osv(_('Email Template Error'),
|
||||
_('The Forward Email Template is not in the database'))
|
||||
try:
|
||||
portal_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'portal', 'group_portal')[1]
|
||||
except ValueError:
|
||||
raise osv.except_osv(_('Portal Group Error'),
|
||||
_('The Portal group cannot be found'))
|
||||
|
||||
local_context = context.copy()
|
||||
if not (record.forward_type == 'single'):
|
||||
no_email = set()
|
||||
for lead in record.assignation_lines:
|
||||
if lead.partner_assigned_id and not lead.partner_assigned_id.email:
|
||||
no_email.add(lead.partner_assigned_id.name)
|
||||
if no_email:
|
||||
raise osv.except_osv(_('Email Error'),
|
||||
('Set an email address for the partner(s): %s' % ", ".join(no_email)))
|
||||
if record.forward_type == 'single' and not record.partner_id.email:
|
||||
raise osv.except_osv(_('Email Error'),
|
||||
('Set an email address for the partner %s' % record.partner_id.name))
|
||||
|
||||
partners_leads = {}
|
||||
for lead in record.assignation_lines:
|
||||
partner = record.forward_type == 'single' and record.partner_id or lead.partner_assigned_id
|
||||
lead_details = {
|
||||
'lead_link': lead.lead_link,
|
||||
'lead_id': lead.lead_id,
|
||||
}
|
||||
if partner:
|
||||
partner_leads = partners_leads.get(partner.id)
|
||||
if partner_leads:
|
||||
partner_leads['leads'].append(lead_details)
|
||||
else:
|
||||
partners_leads[partner.id] = {'partner': partner, 'leads': [lead_details]}
|
||||
stage_id = False
|
||||
if record.assignation_lines and record.assignation_lines[0].lead_id.type == 'lead':
|
||||
try:
|
||||
stage_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'crm_partner_assign', 'stage_portal_lead_assigned')[1]
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
for partner_id, partner_leads in partners_leads.items():
|
||||
in_portal = False
|
||||
for contact in (partner.child_ids or [partner]):
|
||||
if contact.user_ids:
|
||||
in_portal = portal_id in [g.id for g in contact.user_ids[0].groups_id]
|
||||
|
||||
local_context['partner_id'] = partner_leads['partner']
|
||||
local_context['partner_leads'] = partner_leads['leads']
|
||||
local_context['partner_in_portal'] = in_portal
|
||||
email_template_obj.send_mail(cr, uid, template_id, ids[0], context=local_context)
|
||||
lead_ids = [lead['lead_id'].id for lead in partner_leads['leads']]
|
||||
values = {'partner_assigned_id': partner_id, 'user_id': partner_leads['partner'].user_id.id}
|
||||
if stage_id:
|
||||
values['stage_id'] = stage_id
|
||||
lead_obj.write(cr, uid, lead_ids, values)
|
||||
self.pool.get('crm.lead').message_subscribe(cr, uid, lead_ids, [partner_id], context=context)
|
||||
return True
|
||||
|
||||
def get_lead_portal_url(self, cr, uid, lead_id, type, context=None):
|
||||
action = type == 'opportunity' and 'action_portal_opportunities' or 'action_portal_leads'
|
||||
try:
|
||||
action_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'crm_partner_assign', action)[1]
|
||||
except ValueError:
|
||||
action_id = False
|
||||
portal_link = "%s/?db=%s#id=%s&action=%s&view_type=form" % (self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url'), cr.dbname, lead_id, action_id)
|
||||
return portal_link
|
||||
|
||||
def get_portal_url(self, cr, uid, ids, context=None):
|
||||
portal_link = "%s/?db=%s" % (self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url'), cr.dbname)
|
||||
return portal_link
|
||||
|
||||
_columns = {
|
||||
'forward_type': fields.selection([('single', 'a single partner: manual selection of partner'), ('assigned', "several partners: automatic assignation, using GPS coordinates and partner's grades"), ], 'Forward selected leads to'),
|
||||
'partner_id': fields.many2one('res.partner', 'Forward Leads To'),
|
||||
'assignation_lines': fields.one2many('crm.lead.assignation', 'forward_id', 'Partner Assignation'),
|
||||
'body': fields.html('Contents', help='Automatically sanitized HTML contents'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'forward_type': lambda self, cr, uid, c: c.get('forward_type') or 'single',
|
||||
}
|
||||
|
||||
|
||||
class crm_lead_assignation (osv.TransientModel):
|
||||
_name = 'crm.lead.assignation'
|
||||
_columns = {
|
||||
'forward_id': fields.many2one('crm.lead.forward.to.partner', 'Partner Assignation'),
|
||||
'lead_id': fields.many2one('crm.lead', 'Lead'),
|
||||
'lead_location': fields.char('Lead Location', size=128),
|
||||
'partner_assigned_id': fields.many2one('res.partner', 'Assigned Partner'),
|
||||
'partner_location': fields.char('Partner Location', size=128),
|
||||
'lead_link': fields.char('Lead Single Links', size=128),
|
||||
}
|
||||
|
||||
def on_change_lead_id(self, cr, uid, ids, lead_id, context=None):
|
||||
if not context:
|
||||
context = {}
|
||||
# TDE FIX in 7.0: force mass_mailing mode; this way, the message will be
|
||||
# send only to partners; default subtype of mass_mailing is indeed False
|
||||
# Chatter will show 'logged a note', but partner_ids (aka, the assigned partner)
|
||||
# will effectively receive the message if present in the composition window
|
||||
self.write(cr, uid, ids, {'composition_mode': 'mass_mail'}, context=context)
|
||||
res = {'type': 'ir.actions.act_window_close'}
|
||||
wizard = self.browse(cr, uid, ids[0], context=context)
|
||||
if wizard.model not in ('crm.lead'):
|
||||
return res
|
||||
if context.get('active_ids') is None:
|
||||
context['active_ids'] = [wizard.res_id]
|
||||
if not lead_id:
|
||||
return {'value': {'lead_location': False}}
|
||||
lead = self.pool.get('crm.lead').browse(cr, uid, lead_id, context=context)
|
||||
lead_location = []
|
||||
if lead.country_id:
|
||||
lead_location.append(lead.country_id.name)
|
||||
if lead.city:
|
||||
lead_location.append(lead.city)
|
||||
return {'value': {'lead_location': ", ".join(lead_location)}}
|
||||
|
||||
lead = self.pool[wizard.model]
|
||||
lead_ids = wizard.res_id and [wizard.res_id] or []
|
||||
def on_change_partner_assigned_id(self, cr, uid, ids, partner_assigned_id, context=None):
|
||||
if not context:
|
||||
context = {}
|
||||
if not partner_assigned_id:
|
||||
return {'value': {'lead_location': False}}
|
||||
partner = self.pool.get('res.partner').browse(cr, uid, partner_assigned_id, context=context)
|
||||
partner_location = []
|
||||
if partner.country_id:
|
||||
partner_location.append(partner.country_id.name)
|
||||
if partner.city:
|
||||
partner_location.append(partner.city)
|
||||
return {'value': {'partner_location': ", ".join(partner_location)}}
|
||||
|
||||
if wizard.composition_mode == 'mass_mail':
|
||||
lead_ids = context and context.get('active_ids', []) or []
|
||||
value = self.default_get(cr, uid, ['body', 'email_to', 'email_cc', 'subject', 'history_mode'], context=context)
|
||||
value.pop('composition_mode')
|
||||
self.pool.get('crm.lead').message_subscribe(cr, uid, lead_ids, [partner.id for partner in wizard.partner_ids], context=context)
|
||||
self.write(cr, uid, ids, value, context=context)
|
||||
|
||||
return self.send_mail(cr, uid, ids, context=context)
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -1,36 +1,38 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record model="ir.ui.view" id="crm_lead_forward_to_partner_form">
|
||||
<field name="name">crm_lead_forward_to_partner</field>
|
||||
<field name="model">crm.lead.forward.to.partner</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Send Mail" version="7.0">
|
||||
<field name="composition_mode" colspan="2" nolabel="1" invisible="1"/>
|
||||
<field name="model" colspan="2" nolabel="1" invisible="1"/>
|
||||
<field name="res_id" colspan="2" nolabel="1" invisible="1"/>
|
||||
<separator string="Forward to Partner" colspan="4"/>
|
||||
<group col="4">
|
||||
<field name="history_mode" colspan="4"
|
||||
on_change="on_change_history_mode(history_mode, model, res_id)"/>
|
||||
<field name="subject" colspan="4"/>
|
||||
<field name="partner_ids" colspan="4" widget="many2many_tags_email"/>
|
||||
<notebook colspan="4">
|
||||
<page string="Body">
|
||||
<field name="body"/>
|
||||
</page>
|
||||
<page string="Attachments">
|
||||
<field name="attachment_ids"/>
|
||||
</page>
|
||||
</notebook>
|
||||
<group>
|
||||
<field name="forward_type" widget="radio" invisible="context.get('hide_forward_type',False)"/>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="partner_id" attrs="{'invisible': [('forward_type', 'in', ['assigned',False])], 'required': [('forward_type', '=', 'single')]}" />
|
||||
</group>
|
||||
<group>
|
||||
</group>
|
||||
</group>
|
||||
<field name="assignation_lines" attrs="{'invisible': [('forward_type', 'in', ['single',False])]}">
|
||||
<tree create="false" editable="bottom">
|
||||
<field name="lead_id" readonly="1" on_change="on_change_lead_id(lead_id)"/>
|
||||
<field name="lead_location" readonly="1"/>
|
||||
<field name="partner_assigned_id" on_change="on_change_partner_assigned_id(partner_assigned_id)"/>
|
||||
<field name="partner_location" readonly="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
<notebook colspan="4" groups="base.group_no_one">
|
||||
<page string="Email Template">
|
||||
<field name="body" readonly="1"/>
|
||||
</page>
|
||||
</notebook>
|
||||
<footer>
|
||||
<button name="action_forward" string="Send" type="object"
|
||||
class="oe_highlight"/>
|
||||
<button name="action_forward" string="Send" type="object" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" special="cancel"
|
||||
class="oe_link"/>
|
||||
<button string="Cancel" special="cancel" class="oe_link"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
|
@ -45,14 +47,11 @@
|
|||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<act_window id="action_crm_send_mass_forward"
|
||||
multi="True"
|
||||
key2="client_action_multi" name="Mass forward to partner"
|
||||
res_model="crm.lead.forward.to.partner" src_model="crm.lead"
|
||||
view_mode="form" target="new" view_type="form"
|
||||
context="{'default_composition_mode' : 'mass_mail'}"
|
||||
view_id="crm_lead_forward_to_partner_form"
|
||||
/>
|
||||
<act_window id="action_crm_send_mass_forward" multi="True"
|
||||
key2="client_action_multi" name="Forward to Partner" res_model="crm.lead.forward.to.partner"
|
||||
src_model="crm.lead" view_mode="form" target="new" view_type="form"
|
||||
groups="base.group_sale_manager"
|
||||
context="{'default_composition_mode' : 'mass_mail'}" view_id="crm_lead_forward_to_partner_form" />
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-20 05:17+0000\n"
|
||||
"X-Generator: Launchpad (build 16673)\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-21 05:35+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_attendance_month
|
||||
|
|
|
@ -0,0 +1,939 @@
|
|||
# Thai translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
|
||||
"PO-Revision-Date: 2013-06-20 10:09+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Thai <th@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: 2013-06-21 05:35+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
#: model:process.node,name:hr_expense.process_node_confirmedexpenses0
|
||||
msgid "Confirmed Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_hr_expense_line
|
||||
msgid "Expense Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.node,note:hr_expense.process_node_reimbursement0
|
||||
msgid "The accoutant reimburse the expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:mail.message.subtype,description:hr_expense.mt_expense_approved
|
||||
msgid "Expense approved"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,date_confirm:0
|
||||
#: field:hr.expense.report,date_confirm:0
|
||||
msgid "Confirmation Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
#: view:hr.expense.report:0
|
||||
msgid "Group By..."
|
||||
msgstr "จัดกลุ่มตาม..."
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:product.template,name:hr_expense.air_ticket_product_template
|
||||
msgid "Air Ticket"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: report:hr.expense:0
|
||||
msgid "Validated By"
|
||||
msgstr "ตรวจสอบโดย"
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
#: field:hr.expense.expense,department_id:0
|
||||
#: view:hr.expense.report:0
|
||||
#: field:hr.expense.report,department_id:0
|
||||
msgid "Department"
|
||||
msgstr "แผนก"
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
msgid "New Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.line,uom_id:0
|
||||
#: view:product.product:0
|
||||
msgid "Unit of Measure"
|
||||
msgstr "หน่วยของการวัด"
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,month:0
|
||||
msgid "March"
|
||||
msgstr "มีนาคม"
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,message_unread:0
|
||||
msgid "Unread Messages"
|
||||
msgstr "ข้อความที่ไม่ได้อ่าน"
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,company_id:0
|
||||
#: view:hr.expense.report:0
|
||||
#: field:hr.expense.report,company_id:0
|
||||
msgid "Company"
|
||||
msgstr "บริษัท"
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
msgid "Set to Draft"
|
||||
msgstr "กำหนดให้เป็นแบบร่าง"
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
msgid "To Pay"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/hr_expense.py:172
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No expense journal found. Please make sure you have a journal with type "
|
||||
"'purchase' configured."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_hr_expense_report
|
||||
msgid "Expenses Statistics"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
msgid "Open Receipt"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.report:0
|
||||
#: field:hr.expense.report,day:0
|
||||
msgid "Day"
|
||||
msgstr "วัน"
|
||||
|
||||
#. module: hr_expense
|
||||
#: help:hr.expense.expense,date_valid:0
|
||||
msgid ""
|
||||
"Date of the acceptation of the sheet expense. It's filled when the button "
|
||||
"Accept is pressed."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
msgid "Notes"
|
||||
msgstr "บันทึกย่อ"
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,message_ids:0
|
||||
msgid "Messages"
|
||||
msgstr "ข้อความ"
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/hr_expense.py:172
|
||||
#: code:addons/hr_expense/hr_expense.py:238
|
||||
#: code:addons/hr_expense/hr_expense.py:240
|
||||
#: code:addons/hr_expense/hr_expense.py:349
|
||||
#: code:addons/hr_expense/hr_expense.py:353
|
||||
#, python-format
|
||||
msgid "Error!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:mail.message.subtype,description:hr_expense.mt_expense_refused
|
||||
msgid "Expense refused"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.hr_expense_product
|
||||
#: view:product.product:0
|
||||
msgid "Products"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.report:0
|
||||
msgid "Confirm Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,state:0
|
||||
msgid "Cancelled"
|
||||
msgstr "ยกเลิกแล้ว"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.node,note:hr_expense.process_node_refused0
|
||||
msgid "The direct manager refuses the sheet.Reset as draft."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: help:hr.expense.expense,message_unread:0
|
||||
msgid "If checked new messages require your attention."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,state:0
|
||||
msgid "Waiting confirmation"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,state:0
|
||||
msgid "Accepted"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.line,ref:0
|
||||
msgid "Reference"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: report:hr.expense:0
|
||||
msgid "Certified honest and conform,"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: help:hr.expense.expense,state:0
|
||||
msgid ""
|
||||
"When the expense request is created the status is 'Draft'.\n"
|
||||
" It is confirmed by the user and request is sent to admin, the status is "
|
||||
"'Waiting Confirmation'. \n"
|
||||
"If the admin accepts it, the status is 'Accepted'.\n"
|
||||
" If a receipt is made for the expense request, the status is 'Done'."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: help:hr.expense.expense,date_confirm:0
|
||||
msgid ""
|
||||
"Date of the confirmation of the sheet expense. It's filled when the button "
|
||||
"Confirm is pressed."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.report:0
|
||||
#: field:hr.expense.report,nbr:0
|
||||
msgid "# of Lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: help:hr.expense.expense,message_summary:0
|
||||
msgid ""
|
||||
"Holds the Chatter summary (number of messages, ...). This summary is "
|
||||
"directly in html format in order to be inserted in kanban views."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/hr_expense.py:453
|
||||
#, python-format
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: report:hr.expense:0
|
||||
msgid "(Date and signature)"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: report:hr.expense:0
|
||||
msgid "Total:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.transition,name:hr_expense.process_transition_refuseexpense0
|
||||
msgid "Refuse expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.report,price_average:0
|
||||
msgid "Average Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
#: model:process.transition.action,name:hr_expense.process_transition_action_confirm0
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.node,note:hr_expense.process_node_supplierinvoice0
|
||||
msgid "The accoutant validates the sheet"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.report,delay_valid:0
|
||||
msgid "Delay to Valid"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: help:hr.expense.line,sequence:0
|
||||
msgid "Gives the sequence order when displaying a list of expense lines."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,state:0
|
||||
#: view:hr.expense.report:0
|
||||
#: field:hr.expense.report,state:0
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.line,analytic_account:0
|
||||
#: view:hr.expense.report:0
|
||||
#: field:hr.expense.report,analytic_account:0
|
||||
msgid "Analytic account"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.report,date:0
|
||||
msgid "Date "
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.report:0
|
||||
msgid "Waiting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,message_follower_ids:0
|
||||
msgid "Followers"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: report:hr.expense:0
|
||||
#: view:hr.expense.expense:0
|
||||
#: field:hr.expense.expense,employee_id:0
|
||||
#: view:hr.expense.report:0
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
#: selection:hr.expense.expense,state:0
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: report:hr.expense:0
|
||||
#: field:hr.expense.report,product_qty:0
|
||||
msgid "Qty"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.report:0
|
||||
#: field:hr.expense.report,price_total:0
|
||||
msgid "Total Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.node,note:hr_expense.process_node_reinvoicing0
|
||||
msgid "Some costs may be reinvoices to the customer"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/hr_expense.py:238
|
||||
#, python-format
|
||||
msgid "The employee must have a home address."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:board.board:0
|
||||
#: view:hr.expense.expense:0
|
||||
#: model:ir.actions.act_window,name:hr_expense.action_my_expense
|
||||
msgid "My Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.report:0
|
||||
msgid "Creation Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.report.xml,name:hr_expense.hr_expenses
|
||||
msgid "HR expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,id:0
|
||||
msgid "Sheet ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.transition,name:hr_expense.process_transition_reimburseexpense0
|
||||
msgid "Reimburse expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,journal_id:0
|
||||
#: field:hr.expense.report,journal_id:0
|
||||
msgid "Force Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.report:0
|
||||
#: field:hr.expense.report,no_of_products:0
|
||||
msgid "# of Products"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,month:0
|
||||
msgid "July"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.transition,note:hr_expense.process_transition_reimburseexpense0
|
||||
msgid "After creating invoice, reimburse expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/hr_expense.py:121
|
||||
#, python-format
|
||||
msgid "Warning!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.node,name:hr_expense.process_node_reimbursement0
|
||||
msgid "Reimbursement"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,date_valid:0
|
||||
#: field:hr.expense.report,date_valid:0
|
||||
msgid "Validation Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/hr_expense.py:226
|
||||
#, python-format
|
||||
msgid "Expense Receipt"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.report:0
|
||||
#: model:ir.actions.act_window,name:hr_expense.action_hr_expense_report_all
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_hr_expense_report_all
|
||||
msgid "Expenses Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
#: field:hr.expense.line,expense_id:0
|
||||
#: model:ir.model,name:hr_expense.model_hr_expense_expense
|
||||
#: model:process.process,name:hr_expense.process_process_expenseprocess0
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
#: field:hr.expense.expense,line_ids:0
|
||||
#: view:hr.expense.line:0
|
||||
msgid "Expense Lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.report,delay_confirm:0
|
||||
msgid "Delay to Confirm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,month:0
|
||||
msgid "September"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,month:0
|
||||
msgid "December"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
#: view:hr.expense.report:0
|
||||
#: field:hr.expense.report,month:0
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,currency_id:0
|
||||
#: field:hr.expense.report,currency_id:0
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,voucher_id:0
|
||||
msgid "Employee's Receipt"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.expense,state:0
|
||||
msgid "Waiting Approval"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.node,note:hr_expense.process_node_draftexpenses0
|
||||
msgid "Employee encode all his expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/hr_expense.py:453
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Selected Unit of Measure does not belong to the same category as the product "
|
||||
"Unit of Measure"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: help:hr.expense.expense,journal_id:0
|
||||
msgid "The journal used when the expense is done."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,note:0
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.transition,note:hr_expense.process_transition_reimbursereinvoice0
|
||||
msgid "Create Customer invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,state:0
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/hr_expense.py:353
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please configure Default Expense account for Product purchase: "
|
||||
"`property_account_expense_categ`."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.transition,note:hr_expense.process_transition_approveexpense0
|
||||
msgid "Expense is approved."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,month:0
|
||||
msgid "August"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.node,note:hr_expense.process_node_approved0
|
||||
msgid "The direct manager approves the sheet"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
#: field:hr.expense.expense,amount:0
|
||||
msgid "Total Amount"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,month:0
|
||||
msgid "June"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.node,name:hr_expense.process_node_draftexpenses0
|
||||
msgid "Draft Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,message_is_follower:0
|
||||
msgid "Is a Follower"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.product_normal_form_view_installer
|
||||
msgid "Review Your Expenses Products"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: report:hr.expense:0
|
||||
#: field:hr.expense.expense,date:0
|
||||
#: field:hr.expense.line,date_value:0
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,month:0
|
||||
msgid "November"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.report:0
|
||||
msgid "Extended Filters..."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,user_id:0
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_hr_product
|
||||
msgid "Expense Categories"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,month:0
|
||||
msgid "October"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,help:hr_expense.expense_all
|
||||
msgid ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Click to register new expenses. \n"
|
||||
" </p><p>\n"
|
||||
" OpenERP will ensure the whole process is followed; the "
|
||||
"expense\n"
|
||||
" sheet is validated by manager(s), the employee is "
|
||||
"reimbursed\n"
|
||||
" from his expenses, some expenses must be re-invoiced to the\n"
|
||||
" customers.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
msgid "Generate Accounting Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,month:0
|
||||
msgid "January"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: report:hr.expense:0
|
||||
msgid "HR Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,message_summary:0
|
||||
msgid "Summary"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:product.template,name:hr_expense.car_travel_product_template
|
||||
msgid "Car Travel Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
msgid "Submit to Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.report:0
|
||||
msgid "Done Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.node,note:hr_expense.process_node_confirmedexpenses0
|
||||
msgid "The employee validates his expense sheet"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
msgid "Expenses to Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.node,name:hr_expense.process_node_supplierinvoice0
|
||||
#: model:process.transition,name:hr_expense.process_transition_approveinvoice0
|
||||
msgid "Supplier Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
msgid "Expenses Sheet"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.report,voucher_id:0
|
||||
msgid "Receipt"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.report:0
|
||||
msgid "Approved Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: report:hr.expense:0
|
||||
#: field:hr.expense.line,unit_amount:0
|
||||
msgid "Unit Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.report:0
|
||||
#: selection:hr.expense.report,state:0
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.transition.action,name:hr_expense.process_transition_action_supplierinvoice0
|
||||
msgid "Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.report:0
|
||||
#: field:hr.expense.report,year:0
|
||||
msgid "Year"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.transition,name:hr_expense.process_transition_reimbursereinvoice0
|
||||
msgid "Reinvoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
msgid "Expense Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,user_valid:0
|
||||
msgid "Validation By"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
#: model:process.transition.action,name:hr_expense.process_transition_action_refuse0
|
||||
msgid "Refuse"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.transition,name:hr_expense.process_transition_confirmexpense0
|
||||
msgid "Confirm expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.transition,name:hr_expense.process_transition_approveexpense0
|
||||
msgid "Approve expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.transition.action,name:hr_expense.process_transition_action_accept0
|
||||
msgid "Accept"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: report:hr.expense:0
|
||||
msgid "This document must be dated and signed for reimbursement"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.transition,note:hr_expense.process_transition_refuseexpense0
|
||||
msgid "Expense is refused."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,help:hr_expense.product_normal_form_view_installer
|
||||
msgid ""
|
||||
"Define one product for each expense type allowed for an employee (travel by "
|
||||
"car, hostel, restaurant, etc). If you reimburse the employees at a fixed "
|
||||
"rate, set a cost and a unit of measure on the product. If you reimburse "
|
||||
"based on real costs, set the cost at 0.00. The user will set the real price "
|
||||
"when recording his expense sheet."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.expense,state:0
|
||||
#: view:hr.expense.report:0
|
||||
#: model:mail.message.subtype,name:hr_expense.mt_expense_approved
|
||||
#: model:process.node,name:hr_expense.process_node_approved0
|
||||
msgid "Approved"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.line,product_id:0
|
||||
#: view:hr.expense.report:0
|
||||
#: field:hr.expense.report,product_id:0
|
||||
#: model:ir.model,name:hr_expense.model_product_product
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: report:hr.expense:0
|
||||
#: view:hr.expense.expense:0
|
||||
#: field:hr.expense.expense,name:0
|
||||
#: field:hr.expense.line,description:0
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,month:0
|
||||
msgid "May"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.line,unit_quantity:0
|
||||
msgid "Quantities"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: report:hr.expense:0
|
||||
msgid "Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.report,no_of_account:0
|
||||
msgid "# of Accounts"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.expense,state:0
|
||||
#: model:mail.message.subtype,name:hr_expense.mt_expense_refused
|
||||
#: model:process.node,name:hr_expense.process_node_refused0
|
||||
msgid "Refused"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:product.product,hr_expense_ok:0
|
||||
msgid "Can be Expensed"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:mail.message.subtype,description:hr_expense.mt_expense_confirmed
|
||||
msgid "Expense confirmed, waiting confirmation"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: report:hr.expense:0
|
||||
msgid "Ref."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.report,employee_id:0
|
||||
msgid "Employee's Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.report:0
|
||||
#: field:hr.expense.report,user_id:0
|
||||
msgid "Validation User"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
msgid "Accounting Data"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,month:0
|
||||
msgid "February"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: report:hr.expense:0
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/hr_expense.py:121
|
||||
#, python-format
|
||||
msgid "You can only delete draft expenses!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.expense,account_move_id:0
|
||||
msgid "Ledger Posting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.transition,note:hr_expense.process_transition_approveinvoice0
|
||||
msgid "Creates supplier invoice."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:product.template,name:hr_expense.hotel_rent_product_template
|
||||
msgid "Hotel Accommodation"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense.report,month:0
|
||||
msgid "April"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.line,name:0
|
||||
msgid "Expense Note"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
msgid "Approve"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: help:hr.expense.expense,message_ids:0
|
||||
msgid "Messages and communication history"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: field:hr.expense.line,sequence:0
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.transition,note:hr_expense.process_transition_confirmexpense0
|
||||
msgid "Expense is confirmed."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
#: model:ir.actions.act_window,name:hr_expense.expense_all
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_expense_all
|
||||
#: model:ir.ui.menu,name:hr_expense.next_id_49
|
||||
#: model:product.category,name:hr_expense.cat_expense
|
||||
msgid "Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: help:product.product,hr_expense_ok:0
|
||||
msgid "Specify if the product can be selected in an HR expense line."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
msgid "Accounting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
#: model:mail.message.subtype,name:hr_expense.mt_expense_confirmed
|
||||
msgid "To Approve"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: view:hr.expense.expense:0
|
||||
#: view:hr.expense.line:0
|
||||
#: field:hr.expense.line,total_amount:0
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:process.node,name:hr_expense.process_node_reinvoicing0
|
||||
msgid "Reinvoicing"
|
||||
msgstr ""
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
|
||||
"PO-Revision-Date: 2012-12-14 12:51+0000\n"
|
||||
"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) <grzegorz@openglobe.pl>\n"
|
||||
"PO-Revision-Date: 2013-06-22 10:54+0000\n"
|
||||
"Last-Translator: Dariusz Kubiak <d.kubiak@macopedia.pl>\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: 2013-03-16 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-23 05:13+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: selection:hr.holidays.status,color_name:0
|
||||
|
@ -32,7 +32,7 @@ msgid "Waiting Second Approval"
|
|||
msgstr "Oczekuje na drugą aprobatę"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: code:addons/hr_holidays/hr_holidays.py:298
|
||||
#: code:addons/hr_holidays/hr_holidays.py:309
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You cannot modify a leave request that has been approved. Contact a human "
|
||||
|
@ -109,11 +109,13 @@ msgid ""
|
|||
"The default duration interval between the start date and the end date is 8 "
|
||||
"hours. Feel free to adapt it to your needs."
|
||||
msgstr ""
|
||||
"Domyślny odstęp między datą rozpoczęcia i data zakończenia jest 8 godzin. "
|
||||
"Zapraszam do dostosowania go do swoich potrzeb."
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:mail.message.subtype,description:hr_holidays.mt_holidays_refused
|
||||
msgid "Request refused"
|
||||
msgstr ""
|
||||
msgstr "Wniosek odrzucony"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: field:hr.holidays,number_of_days_temp:0
|
||||
|
@ -274,12 +276,12 @@ msgid ""
|
|||
msgstr ""
|
||||
|
||||
#. module: hr_holidays
|
||||
#: code:addons/hr_holidays/hr_holidays.py:238
|
||||
#: code:addons/hr_holidays/hr_holidays.py:249
|
||||
#: code:addons/hr_holidays/hr_holidays.py:274
|
||||
#: code:addons/hr_holidays/hr_holidays.py:298
|
||||
#: code:addons/hr_holidays/hr_holidays.py:421
|
||||
#: code:addons/hr_holidays/hr_holidays.py:471
|
||||
#: code:addons/hr_holidays/hr_holidays.py:260
|
||||
#: code:addons/hr_holidays/hr_holidays.py:285
|
||||
#: code:addons/hr_holidays/hr_holidays.py:309
|
||||
#: code:addons/hr_holidays/hr_holidays.py:432
|
||||
#: code:addons/hr_holidays/hr_holidays.py:482
|
||||
#, python-format
|
||||
msgid "Warning!"
|
||||
msgstr "Ostrzeżenie !"
|
||||
|
@ -317,7 +319,7 @@ msgid "Sick Leaves"
|
|||
msgstr "Zwolnienie lekarskie"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: code:addons/hr_holidays/hr_holidays.py:478
|
||||
#: code:addons/hr_holidays/hr_holidays.py:489
|
||||
#, python-format
|
||||
msgid "Leave Request for %s"
|
||||
msgstr "Wniosek urlopowy dla %s"
|
||||
|
@ -341,7 +343,7 @@ msgstr "Pozostało dni urlopu"
|
|||
#. module: hr_holidays
|
||||
#: field:hr.holidays,message_follower_ids:0
|
||||
msgid "Followers"
|
||||
msgstr ""
|
||||
msgstr "Obserwatorzy"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:ir.model,name:hr_holidays.model_hr_holidays_remaining_leaves_user
|
||||
|
@ -388,7 +390,7 @@ msgid "Wheat"
|
|||
msgstr "Pszenny"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: code:addons/hr_holidays/hr_holidays.py:476
|
||||
#: code:addons/hr_holidays/hr_holidays.py:487
|
||||
#, python-format
|
||||
msgid "Allocation for %s"
|
||||
msgstr "Przydział dla %s"
|
||||
|
@ -412,7 +414,7 @@ msgid "Number of Days"
|
|||
msgstr "Liczba dni"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: code:addons/hr_holidays/hr_holidays.py:471
|
||||
#: code:addons/hr_holidays/hr_holidays.py:482
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The feature behind the field 'Remaining Legal Leaves' can only be used when "
|
||||
|
@ -516,7 +518,7 @@ msgid "Start Date"
|
|||
msgstr "Data początkowa"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: code:addons/hr_holidays/hr_holidays.py:421
|
||||
#: code:addons/hr_holidays/hr_holidays.py:432
|
||||
#, python-format
|
||||
msgid ""
|
||||
"There are not enough %s allocated for employee %s; please create an "
|
||||
|
@ -678,7 +680,7 @@ msgstr "Podsumowanie"
|
|||
#. module: hr_holidays
|
||||
#: model:hr.holidays.status,name:hr_holidays.holiday_status_unpaid
|
||||
msgid "Unpaid"
|
||||
msgstr "Niezapłacone"
|
||||
msgstr "Bezpłatny"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: xsl:holidays.summary:0
|
||||
|
@ -741,7 +743,7 @@ msgstr "Różne"
|
|||
#. module: hr_holidays
|
||||
#: model:hr.holidays.status,name:hr_holidays.holiday_status_comp
|
||||
msgid "Compensatory Days"
|
||||
msgstr ""
|
||||
msgstr "Urlop wyrównawczy"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: selection:hr.holidays.status,color_name:0
|
||||
|
@ -766,7 +768,7 @@ msgid "Validated"
|
|||
msgstr "Zatwierdzony"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: code:addons/hr_holidays/hr_holidays.py:238
|
||||
#: code:addons/hr_holidays/hr_holidays.py:249
|
||||
#, python-format
|
||||
msgid "You cannot delete a leave which is in %s state."
|
||||
msgstr "Nie możesz usunąć nieobecności, która jest w stanie %s."
|
||||
|
@ -830,7 +832,7 @@ msgid "To Submit"
|
|||
msgstr "Do wysłania"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: code:addons/hr_holidays/hr_holidays.py:343
|
||||
#: code:addons/hr_holidays/hr_holidays.py:354
|
||||
#: view:hr.holidays:0
|
||||
#: selection:hr.holidays,type:0
|
||||
#: field:resource.calendar.leaves,holiday_id:0
|
||||
|
@ -930,8 +932,8 @@ msgid "Messages and communication history"
|
|||
msgstr "Wiadomości i historia komunikacji"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: code:addons/hr_holidays/hr_holidays.py:249
|
||||
#: code:addons/hr_holidays/hr_holidays.py:274
|
||||
#: code:addons/hr_holidays/hr_holidays.py:260
|
||||
#: code:addons/hr_holidays/hr_holidays.py:285
|
||||
#: sql_constraint:hr.holidays:0
|
||||
#, python-format
|
||||
msgid "The start date must be anterior to the end date."
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-20 05:17+0000\n"
|
||||
"X-Generator: Launchpad (build 16673)\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-21 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: hr_recruitment
|
||||
#: help:hr.applicant,active:0
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
import openerp
|
||||
import openerp.tools.config
|
||||
import openerp.modules.registry
|
||||
import openerp.addons.web.http as http
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.tools.misc import DEFAULT_SERVER_DATETIME_FORMAT
|
||||
import datetime
|
||||
from openerp.osv import osv, fields
|
||||
|
@ -90,36 +92,38 @@ POLL_TIMER = 30
|
|||
DISCONNECTION_TIMER = POLL_TIMER + 5
|
||||
WATCHER_ERROR_DELAY = 10
|
||||
|
||||
class LongPollingController(openerp.addons.web.http.Controller):
|
||||
_cp_path = '/longpolling/im'
|
||||
class LongPollingController(http.Controller):
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
def poll(self, req, last=None, users_watch=None, db=None, uid=None, password=None, uuid=None):
|
||||
@http.route('/longpolling/im/poll', type="json", auth="none")
|
||||
def poll(self, last=None, users_watch=None, db=None, uid=None, password=None, uuid=None):
|
||||
assert_uuid(uuid)
|
||||
if not openerp.evented:
|
||||
raise Exception("Not usable in a server not running gevent")
|
||||
from openerp.addons.im.watcher import ImWatcher
|
||||
if db is not None:
|
||||
req.session._db = db
|
||||
req.session._uid = uid
|
||||
req.session._password = password
|
||||
req.session.model('im.user').im_connect(uuid=uuid, context=req.context)
|
||||
my_id = req.session.model('im.user').get_by_user_id(uuid or req.session._uid, req.context)["id"]
|
||||
request.session.authenticate(db=db, uid=uid, password=password)
|
||||
else:
|
||||
request.session.authenticate(db=request.session._db, uid=request.session._uid, password=request.session._password)
|
||||
|
||||
with request.registry.cursor() as cr:
|
||||
request.registry.get('im.user').im_connect(cr, request.uid, uuid=uuid, context=request.context)
|
||||
my_id = request.registry.get('im.user').get_by_user_id(cr, request.uid, uuid or request.session._uid, request.context)["id"]
|
||||
num = 0
|
||||
while True:
|
||||
res = req.session.model('im.message').get_messages(last, users_watch, uuid=uuid, context=req.context)
|
||||
with request.registry.cursor() as cr:
|
||||
res = request.registry.get('im.message').get_messages(cr, request.uid, last, users_watch, uuid=uuid, context=request.context)
|
||||
if num >= 1 or len(res["res"]) > 0:
|
||||
return res
|
||||
last = res["last"]
|
||||
num += 1
|
||||
ImWatcher.get_watcher(res["dbname"]).stop(my_id, users_watch or [], POLL_TIMER)
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
def activated(self, req):
|
||||
@http.route('/longpolling/im/activated', type="json", auth="none")
|
||||
def activated(self):
|
||||
return not not openerp.evented
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
def gen_uuid(self, req):
|
||||
@http.route('/longpolling/im/gen_uuid', type="json", auth="none")
|
||||
def gen_uuid(self):
|
||||
import uuid
|
||||
return "%s" % uuid.uuid1()
|
||||
|
||||
|
|
|
@ -26,6 +26,8 @@ import random
|
|||
import jinja2
|
||||
from openerp.osv import osv, fields
|
||||
from openerp import tools
|
||||
import openerp.addons.web.http as http
|
||||
from openerp.addons.web.http import request
|
||||
|
||||
env = jinja2.Environment(
|
||||
loader=jinja2.PackageLoader('openerp.addons.im_livechat', "."),
|
||||
|
@ -33,48 +35,38 @@ env = jinja2.Environment(
|
|||
)
|
||||
env.filters["json"] = json.dumps
|
||||
|
||||
class LiveChatController(openerp.addons.web.http.Controller):
|
||||
_cp_path = '/im_livechat'
|
||||
class LiveChatController(http.Controller):
|
||||
|
||||
@openerp.addons.web.http.httprequest
|
||||
def loader(self, req, **kwargs):
|
||||
@http.route('/im_livechat/loader')
|
||||
def loader(self, **kwargs):
|
||||
p = json.loads(kwargs["p"])
|
||||
db = p["db"]
|
||||
channel = p["channel"]
|
||||
user_name = p.get("user_name", None)
|
||||
req.session._db = db
|
||||
req.session._uid = None
|
||||
req.session._login = "anonymous"
|
||||
req.session._password = "anonymous"
|
||||
info = req.session.model('im_livechat.channel').get_info_for_chat_src(channel)
|
||||
request.session.authenticate(db=db, login="anonymous", password="anonymous")
|
||||
info = request.session.model('im_livechat.channel').get_info_for_chat_src(channel)
|
||||
info["db"] = db
|
||||
info["channel"] = channel
|
||||
info["userName"] = user_name
|
||||
return req.make_response(env.get_template("loader.js").render(info),
|
||||
return request.make_response(env.get_template("loader.js").render(info),
|
||||
headers=[('Content-Type', "text/javascript")])
|
||||
|
||||
@openerp.addons.web.http.httprequest
|
||||
def web_page(self, req, **kwargs):
|
||||
@http.route('/im_livechat/web_page')
|
||||
def web_page(self, **kwargs):
|
||||
p = json.loads(kwargs["p"])
|
||||
db = p["db"]
|
||||
channel = p["channel"]
|
||||
req.session._db = db
|
||||
req.session._uid = None
|
||||
req.session._login = "anonymous"
|
||||
req.session._password = "anonymous"
|
||||
script = req.session.model('im_livechat.channel').read(channel, ["script"])["script"]
|
||||
info = req.session.model('im_livechat.channel').get_info_for_chat_src(channel)
|
||||
request.session.authenticate(db=db, login="anonymous", password="anonymous")
|
||||
script = request.session.model('im_livechat.channel').read(channel, ["script"])["script"]
|
||||
info = request.session.model('im_livechat.channel').get_info_for_chat_src(channel)
|
||||
info["script"] = script
|
||||
return req.make_response(env.get_template("web_page.html").render(info),
|
||||
return request.make_response(env.get_template("web_page.html").render(info),
|
||||
headers=[('Content-Type', "text/html")])
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
def available(self, req, db, channel):
|
||||
req.session._db = db
|
||||
req.session._uid = None
|
||||
req.session._login = "anonymous"
|
||||
req.session._password = "anonymous"
|
||||
return req.session.model('im_livechat.channel').get_available_user(channel) > 0
|
||||
@http.route('/im_livechat/available', type='json')
|
||||
def available(self, db, channel):
|
||||
request.session.authenticate(db=db, login="anonymous", password="anonymous")
|
||||
return request.session.model('im_livechat.channel').get_available_user(channel) > 0
|
||||
|
||||
class im_livechat_channel(osv.osv):
|
||||
_name = 'im_livechat.channel'
|
||||
|
|
|
@ -0,0 +1,118 @@
|
|||
# Thai translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-06-21 18:52+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Thai <th@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: 2013-06-22 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: knowledge
|
||||
#: view:knowledge.config.settings:0
|
||||
msgid "Documents"
|
||||
msgstr "เอกสาร"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model,name:knowledge.model_knowledge_config_settings
|
||||
msgid "knowledge.config.settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: help:knowledge.config.settings,module_document_webdav:0
|
||||
msgid ""
|
||||
"Access your documents in OpenERP through WebDAV.\n"
|
||||
" This installs the module document_webdav."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: help:knowledge.config.settings,module_document_page:0
|
||||
msgid "This installs the module document_page."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.ui.menu,name:knowledge.menu_document2
|
||||
msgid "Collaborative Content"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.actions.act_window,name:knowledge.action_knowledge_configuration
|
||||
#: view:knowledge.config.settings:0
|
||||
msgid "Configure Knowledge"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: view:knowledge.config.settings:0
|
||||
msgid "Knowledge and Documents Management"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: help:knowledge.config.settings,module_document:0
|
||||
msgid ""
|
||||
"This is a complete document management system, with: user authentication,\n"
|
||||
" full document search (but pptx and docx are not supported), "
|
||||
"and a document dashboard.\n"
|
||||
" This installs the module document."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: field:knowledge.config.settings,module_document_page:0
|
||||
msgid "Create static web pages"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: field:knowledge.config.settings,module_document_ftp:0
|
||||
msgid "Share repositories (FTP)"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: field:knowledge.config.settings,module_document:0
|
||||
msgid "Manage documents"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: view:knowledge.config.settings:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: view:knowledge.config.settings:0
|
||||
msgid "Apply"
|
||||
msgstr "ปรับใช้"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.ui.menu,name:knowledge.menu_document_configuration
|
||||
msgid "Configuration"
|
||||
msgstr "ตั้งค่า"
|
||||
|
||||
#. module: knowledge
|
||||
#: help:knowledge.config.settings,module_document_ftp:0
|
||||
msgid ""
|
||||
"Access your documents in OpenERP through an FTP interface.\n"
|
||||
" This installs the module document_ftp."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: view:knowledge.config.settings:0
|
||||
msgid "or"
|
||||
msgstr "หรือ"
|
||||
|
||||
#. module: knowledge
|
||||
#: field:knowledge.config.settings,module_document_webdav:0
|
||||
msgid "Share repositories (WebDAV)"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.ui.menu,name:knowledge.menu_document
|
||||
#: model:ir.ui.menu,name:knowledge.menu_knowledge_configuration
|
||||
msgid "Knowledge"
|
||||
msgstr "ความรู้"
|
|
@ -0,0 +1,148 @@
|
|||
# Chinese (Simplified) translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-11-24 02:53+0000\n"
|
||||
"PO-Revision-Date: 2013-06-23 05:44+0000\n"
|
||||
"Last-Translator: Calvin <mceiba@gmail.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <zh_CN@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: 2013-06-24 04:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: help:hr.employee,disabled_spouse_bool:0
|
||||
msgid "if recipient spouse is declared disabled by law"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: help:hr.employee,disabled_children_bool:0
|
||||
msgid "if recipient children is/are declared disabled by law"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,misc_onss_deduction:0
|
||||
msgid "Miscellaneous exempt ONSS "
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: model:ir.model,name:l10n_be_hr_payroll.model_hr_employee
|
||||
msgid "Employee"
|
||||
msgstr "员工"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.employee,disabled_spouse_bool:0
|
||||
msgid "Disabled Spouse"
|
||||
msgstr "残疾人配偶"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,retained_net_amount:0
|
||||
msgid "Net retained "
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.employee,resident_bool:0
|
||||
msgid "Nonresident"
|
||||
msgstr "非常住人口"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: help:hr.employee,resident_bool:0
|
||||
msgid "if recipient lives in a foreign country"
|
||||
msgstr "如果接受者居住在国外"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: view:hr.employee:0
|
||||
msgid "if spouse has professionnel income or not"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,insurance_employee_deduction:0
|
||||
msgid "Insurance Group - by worker "
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: selection:hr.employee,spouse_fiscal_status:0
|
||||
msgid "With Income"
|
||||
msgstr "有收入"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: selection:hr.employee,spouse_fiscal_status:0
|
||||
msgid "Without Income"
|
||||
msgstr "无收入"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.employee,disabled_children_number:0
|
||||
msgid "Number of disabled children"
|
||||
msgstr "残疾儿童个数"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,additional_net_amount:0
|
||||
msgid "Net supplements"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,car_company_amount:0
|
||||
msgid "Company car employer"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,misc_advantage_amount:0
|
||||
msgid "Benefits of various nature "
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,car_employee_deduction:0
|
||||
msgid "Company Car Deduction for Worker"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.employee,disabled_children_bool:0
|
||||
msgid "Disabled Children"
|
||||
msgstr "残疾儿童"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: model:ir.model,name:l10n_be_hr_payroll.model_hr_contract
|
||||
msgid "Contract"
|
||||
msgstr "合约"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,meal_voucher_amount:0
|
||||
msgid "Check Value Meal "
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,travel_reimbursement_amount:0
|
||||
msgid "Reimbursement of travel expenses"
|
||||
msgstr "差旅花费补贴"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: constraint:hr.contract:0
|
||||
msgid "Error! Contract start-date must be less than contract end-date."
|
||||
msgstr "错误!联系人开始日期必须小于结束日期"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.employee,spouse_fiscal_status:0
|
||||
msgid "Tax status for spouse"
|
||||
msgstr "配偶缴税状态"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: view:hr.employee:0
|
||||
msgid "number of dependent children declared as disabled"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: constraint:hr.employee:0
|
||||
msgid "Error! You cannot create recursive hierarchy of Employee(s)."
|
||||
msgstr "错误!,你不能创建循环的员工层次"
|
||||
|
||||
#. module: l10n_be_hr_payroll
|
||||
#: field:hr.contract,meal_voucher_employee_deduction:0
|
||||
msgid "Check Value Meal - by worker "
|
||||
msgstr ""
|
|
@ -0,0 +1,512 @@
|
|||
# Thai translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-06-20 13:55+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Thai <th@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: 2013-06-21 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid "Mako"
|
||||
msgstr "Mako"
|
||||
|
||||
#. module: portal
|
||||
#: code:addons/portal/wizard/share_wizard.py:50
|
||||
#, python-format
|
||||
msgid "Please select at least one user to share with"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.wizard:0
|
||||
msgid ""
|
||||
"Select which contacts should belong to the portal in the list below.\n"
|
||||
" The email address of each selected contact must be "
|
||||
"valid and unique.\n"
|
||||
" If necessary, you can fix any contact's email "
|
||||
"address directly in the list."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:mail.group,name:portal.company_jobs
|
||||
msgid "Company Jobs"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid "amount: the total amount to pay, as a float"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.wizard.user:0
|
||||
msgid "Contacts"
|
||||
msgstr "ที่อยู่ติดต่อ"
|
||||
|
||||
#. module: portal
|
||||
#: view:share.wizard:0
|
||||
#: field:share.wizard,group_ids:0
|
||||
msgid "Existing groups"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:res.groups:0
|
||||
msgid "Portal Groups"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: field:portal.wizard,welcome_message:0
|
||||
msgid "Invitation Message"
|
||||
msgstr "ข้อความเชื้อเชิญ"
|
||||
|
||||
#. module: portal
|
||||
#: view:res.groups:0
|
||||
msgid "Non-Portal Groups"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: code:addons/portal/wizard/share_wizard.py:54
|
||||
#, python-format
|
||||
msgid "Please select at least one group to share with"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:share.wizard:0
|
||||
msgid "Details"
|
||||
msgstr "รายละเอียด"
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.ui.menu,name:portal.portal_orders
|
||||
msgid "Quotations and Sales Orders"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid "reference: the reference number of the document to pay"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: help:portal.payment.acquirer,visible:0
|
||||
msgid ""
|
||||
"Make this payment acquirer available in portal forms (Customer invoices, "
|
||||
"etc.)"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.model,name:portal.model_share_wizard
|
||||
msgid "Share Wizard"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: field:portal.wizard.user,email:0
|
||||
msgid "Email"
|
||||
msgstr "อีเมล์"
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.actions.client,help:portal.action_news
|
||||
msgid ""
|
||||
"<p>\n"
|
||||
" Youd don't have unread company's news.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: code:addons/portal/wizard/portal_wizard.py:194
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You must have an email address in your User Preferences to send emails."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.actions.client,name:portal.action_jobs
|
||||
#: model:ir.ui.menu,name:portal.portal_jobs
|
||||
msgid "Jobs"
|
||||
msgstr "งาน"
|
||||
|
||||
#. module: portal
|
||||
#: field:portal.wizard,user_ids:0
|
||||
msgid "Users"
|
||||
msgstr "ผู้ใช้งาน"
|
||||
|
||||
#. module: portal
|
||||
#: code:addons/portal/acquirer.py:82
|
||||
#, python-format
|
||||
msgid "Pay safely online"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: code:addons/portal/acquirer.py:77
|
||||
#, python-format
|
||||
msgid "No online payment acquirers configured"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid ""
|
||||
"kind: the kind of document on which the payment form is rendered (translated "
|
||||
"to user language, e.g. \"Invoice\")"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: help:portal.wizard,portal_id:0
|
||||
msgid "The portal that users can be added in or removed from."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: code:addons/portal/wizard/share_wizard.py:38
|
||||
#, python-format
|
||||
msgid "Users you already shared with"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.actions.client,help:portal.action_jobs
|
||||
msgid ""
|
||||
"<p>\n"
|
||||
" Youd don't have unread job offers.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid ""
|
||||
", so it may use Mako expressions.\n"
|
||||
" The Mako evaluation context provides:"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.ui.menu,name:portal.portal_menu
|
||||
#: field:portal.wizard,portal_id:0
|
||||
#: field:res.groups,is_portal:0
|
||||
#: model:res.groups,name:portal.group_portal
|
||||
msgid "Portal"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: code:addons/portal/wizard/portal_wizard.py:34
|
||||
#, python-format
|
||||
msgid "Your OpenERP account at %(company)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:res.groups,name:portal.group_anonymous
|
||||
msgid "Anonymous"
|
||||
msgstr "ผู้ใช้นิรนาม"
|
||||
|
||||
#. module: portal
|
||||
#: field:portal.wizard.user,in_portal:0
|
||||
msgid "In Portal"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.actions.client,name:portal.action_news
|
||||
#: model:ir.ui.menu,name:portal.portal_company_news
|
||||
msgid "News"
|
||||
msgstr "ข่าว"
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.ui.menu,name:portal.portal_after_sales
|
||||
msgid "After Sale Services"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:res.groups,comment:portal.group_portal
|
||||
msgid ""
|
||||
"Portal members have specific access rights (such as record rules and "
|
||||
"restricted menus).\n"
|
||||
" They usually do not belong to the usual OpenERP groups."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.actions.act_window,name:portal.action_acquirer_list
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid "Payment Acquirers"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.ui.menu,name:portal.portal_projects
|
||||
msgid "Projects"
|
||||
msgstr "โครงการ"
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.actions.client,name:portal.action_mail_inbox_feeds_portal
|
||||
#: model:ir.ui.menu,name:portal.portal_inbox
|
||||
msgid "Inbox"
|
||||
msgstr "กล่องขาเข้า"
|
||||
|
||||
#. module: portal
|
||||
#: view:share.wizard:0
|
||||
#: field:share.wizard,user_ids:0
|
||||
msgid "Existing users"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: field:portal.wizard.user,wizard_id:0
|
||||
msgid "Wizard"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: field:portal.payment.acquirer,name:0
|
||||
msgid "Name"
|
||||
msgstr "ชื่อ"
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.model,name:portal.model_res_groups
|
||||
msgid "Access Groups"
|
||||
msgstr "กลุ่มการเข้าถึง"
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid "uid: the current user id"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid ""
|
||||
"quote(): a method to quote special string character to make them suitable "
|
||||
"for inclusion in a URL"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: help:res.groups,is_portal:0
|
||||
msgid "If checked, this group is usable as a portal."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: field:portal.payment.acquirer,form_template:0
|
||||
msgid "Payment form template (HTML)"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: field:portal.wizard.user,partner_id:0
|
||||
msgid "Contact"
|
||||
msgstr "ที่อยู่ติดต่อ"
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.model,name:portal.model_mail_mail
|
||||
msgid "Outgoing Mails"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: code:addons/portal/wizard/portal_wizard.py:193
|
||||
#, python-format
|
||||
msgid "Email required"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.ui.menu,name:portal.portal_messages
|
||||
msgid "Messaging"
|
||||
msgstr "Messaging"
|
||||
|
||||
#. module: portal
|
||||
#: model:res.groups,comment:portal.group_anonymous
|
||||
msgid ""
|
||||
"Anonymous users have specific access rights (such as record rules and "
|
||||
"restricted menus).\n"
|
||||
" They usually do not belong to the usual OpenERP groups."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.model,name:portal.model_portal_payment_acquirer
|
||||
msgid "Online Payment Acquirer"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:mail.group,name:portal.company_news_feed
|
||||
msgid "Company News"
|
||||
msgstr "ข่าวสารบริษัท"
|
||||
|
||||
#. module: portal
|
||||
#: code:addons/portal/acquirer.py:76
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can finish the configuration in the <a href=\"%s\">Bank&Cash settings</a>"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid "cr: the current database cursor"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.actions.client,help:portal.action_mail_inbox_feeds_portal
|
||||
msgid ""
|
||||
"<p>\n"
|
||||
" <b>Good Job!</b> Your inbox is empty.\n"
|
||||
" </p><p>\n"
|
||||
" Your inbox contains private messages or emails sent to "
|
||||
"you\n"
|
||||
" as well as information related to documents or people "
|
||||
"you\n"
|
||||
" follow.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"<p>\n"
|
||||
" <b>เยี่ยมยอด!</b> คุณอ่านข้อความหมดแล้ว\n"
|
||||
" </p><p>\n"
|
||||
" <b>ขอความร่วมมือ</b> ภาษาไทยสำหรับ OpenERP นั้น "
|
||||
"ยังไม่สมบรูณ์และถูกต้อง \n"
|
||||
" <p> เลือกหมวด Translations เพื่อแนะนำการแปลได้ที่ </p>\n"
|
||||
"\n"
|
||||
" https://launchpad.net/openobject-addons : business "
|
||||
"application modules\n"
|
||||
" https://launchpad.net/openobject-server : the "
|
||||
"framework\n"
|
||||
" https://launchpad.net/openerp-web : web "
|
||||
"modules and frontend\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid ""
|
||||
"object: the document on which the payment form is rendered (usually an "
|
||||
"invoice or sales order record)"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: help:portal.wizard,welcome_message:0
|
||||
msgid "This text is included in the email sent to new users of the portal."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.ui.menu,name:portal.portal_company
|
||||
msgid "About Us"
|
||||
msgstr "เกี่ยวกับตัวเอง"
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid ""
|
||||
"currency: the currency record in which the document is issued (e.g. "
|
||||
"currency.name could be EUR)"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid "Payment Acquirer"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: code:addons/portal/wizard/portal_wizard.py:35
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Dear %(name)s,\n"
|
||||
"\n"
|
||||
"You have been given access to %(portal)s.\n"
|
||||
"\n"
|
||||
"Your login account data is:\n"
|
||||
"Database: %(db)s\n"
|
||||
"Username: %(login)s\n"
|
||||
"\n"
|
||||
"In order to complete the signin process, click on the following url:\n"
|
||||
"%(url)s\n"
|
||||
"\n"
|
||||
"%(welcome_message)s\n"
|
||||
"\n"
|
||||
"--\n"
|
||||
"OpenERP - Open Source Business Applications\n"
|
||||
"http://www.openerp.com\n"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.wizard:0
|
||||
msgid "or"
|
||||
msgstr "หรือ"
|
||||
|
||||
#. module: portal
|
||||
#: model:portal.payment.acquirer,form_template:portal.paypal_acquirer
|
||||
msgid ""
|
||||
"\n"
|
||||
"% if object.company_id.paypal_account:\n"
|
||||
"<form action=\"https://www.paypal.com/cgi-bin/webscr\" method=\"post\" "
|
||||
"target=\"_blank\">\n"
|
||||
" <input type=\"hidden\" name=\"cmd\" value=\"_xclick\"/>\n"
|
||||
" <input type=\"hidden\" name=\"business\" "
|
||||
"value=\"${object.company_id.paypal_account}\"/>\n"
|
||||
" <input type=\"hidden\" name=\"item_name\" "
|
||||
"value=\"${object.company_id.name} ${kind.title()} ${reference}\"/>\n"
|
||||
" <input type=\"hidden\" name=\"amount\" value=\"${amount}\"/>\n"
|
||||
" <input type=\"hidden\" name=\"currency_code\" "
|
||||
"value=\"${currency.name}\"/>\n"
|
||||
" <input type=\"image\" name=\"submit\" "
|
||||
"src=\"https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif\"/>\n"
|
||||
"</form>\n"
|
||||
"% endif\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.model,name:portal.model_portal_wizard_user
|
||||
msgid "Portal User Config"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid ""
|
||||
"If the template renders to an empty result in a certain context it will be "
|
||||
"ignored, as if it was inactive."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: field:portal.payment.acquirer,visible:0
|
||||
msgid "Visible"
|
||||
msgstr "ปรากฏเห็น"
|
||||
|
||||
#. module: portal
|
||||
#: code:addons/portal/wizard/share_wizard.py:39
|
||||
#, python-format
|
||||
msgid "Existing Groups (e.g Portal Groups)"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.wizard:0
|
||||
msgid "Cancel"
|
||||
msgstr "ยกเลิก"
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.wizard:0
|
||||
msgid "Apply"
|
||||
msgstr "ใช้งาน"
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid "ctx: the current context dictionary"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid ""
|
||||
"This is an HTML form template to submit a payment through this acquirer.\n"
|
||||
" The template will be rendered with"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: code:addons/portal/mail_mail.py:42
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Access your personal documents through <a href=\"%s\">our Customer Portal</a>"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: view:portal.payment.acquirer:0
|
||||
msgid "Form Template"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.actions.act_window,name:portal.partner_wizard_action
|
||||
#: model:ir.model,name:portal.model_portal_wizard
|
||||
#: view:portal.wizard:0
|
||||
msgid "Portal Access Management"
|
||||
msgstr ""
|
|
@ -0,0 +1,25 @@
|
|||
# English (Australia) translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-06-24 01:47+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: English (Australia) <en_AU@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: 2013-06-24 04:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: portal_anonymous
|
||||
#. openerp-web
|
||||
#: code:addons/portal_anonymous/static/src/xml/portal_anonymous.xml:8
|
||||
#, python-format
|
||||
msgid "Login"
|
||||
msgstr "Login"
|
|
@ -0,0 +1,25 @@
|
|||
# Thai translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-06-20 14:03+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Thai <th@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: 2013-06-21 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: portal_anonymous
|
||||
#. openerp-web
|
||||
#: code:addons/portal_anonymous/static/src/xml/portal_anonymous.xml:8
|
||||
#, python-format
|
||||
msgid "Login"
|
||||
msgstr "เข้าระบบ"
|
|
@ -0,0 +1,546 @@
|
|||
# Thai translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-06-20 14:52+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Thai <th@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: 2013-06-21 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: portal_crm
|
||||
#: selection:portal_crm.crm_contact_us,type:0
|
||||
msgid "Lead"
|
||||
msgstr "ผู้นำ"
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,title:0
|
||||
msgid "Title"
|
||||
msgstr "คำนำหน้าชื่อ"
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,probability:0
|
||||
msgid "Success Rate (%)"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: view:portal_crm.crm_contact_us:0
|
||||
msgid "Contact us"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,date_action:0
|
||||
msgid "Next Action Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,fax:0
|
||||
msgid "Fax"
|
||||
msgstr "โทรสาร"
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,zip:0
|
||||
msgid "Zip"
|
||||
msgstr "รหัสไปรษณีย์"
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,message_unread:0
|
||||
msgid "Unread Messages"
|
||||
msgstr "ข้อความที่ยังไม่ได้อ่าน"
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,company_id:0
|
||||
msgid "Company"
|
||||
msgstr "บริษัท"
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,day_open:0
|
||||
msgid "Days to Open"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: view:portal_crm.crm_contact_us:0
|
||||
msgid "Thank you for your interest, we'll respond to your request shortly."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: selection:portal_crm.crm_contact_us,priority:0
|
||||
msgid "Highest"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,mobile:0
|
||||
msgid "Mobile"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,description:0
|
||||
msgid "Notes"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,message_ids:0
|
||||
msgid "Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,color:0
|
||||
msgid "Color Index"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,partner_latitude:0
|
||||
msgid "Geo Latitude"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,partner_name:0
|
||||
msgid "Customer Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: selection:portal_crm.crm_contact_us,state:0
|
||||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,message_unread:0
|
||||
msgid "If checked new messages require your attention."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,channel_id:0
|
||||
msgid "Communication channel (mail, direct, phone, ...)"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,type_id:0
|
||||
msgid "Campaign"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,ref:0
|
||||
msgid "Reference"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,date_action_next:0
|
||||
#: field:portal_crm.crm_contact_us,title_action:0
|
||||
msgid "Next Action"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,message_summary:0
|
||||
msgid ""
|
||||
"Holds the Chatter summary (number of messages, ...). This summary is "
|
||||
"directly in html format in order to be inserted in kanban views."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,partner_id:0
|
||||
msgid "Partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: model:ir.actions.act_window,name:portal_crm.action_contact_us
|
||||
msgid "Contact Us"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,name:0
|
||||
msgid "Subject"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,opt_out:0
|
||||
msgid "Opt-Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,priority:0
|
||||
msgid "Priority"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,state_id:0
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,message_follower_ids:0
|
||||
msgid "Followers"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,partner_id:0
|
||||
msgid "Linked partner (optional). Usually created when converting the lead."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,payment_mode:0
|
||||
msgid "Payment Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: selection:portal_crm.crm_contact_us,state:0
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,type:0
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,email_from:0
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,channel_id:0
|
||||
msgid "Channel"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: view:portal_crm.crm_contact_us:0
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: selection:portal_crm.crm_contact_us,priority:0
|
||||
msgid "Lowest"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,create_date:0
|
||||
msgid "Creation Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: view:portal_crm.crm_contact_us:0
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: selection:portal_crm.crm_contact_us,state:0
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,type:0
|
||||
msgid "Type is used to separate Leads and Opportunities"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,categ_ids:0
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,stage_id:0
|
||||
msgid "Stage"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,user_login:0
|
||||
msgid "User Login"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,opt_out:0
|
||||
msgid ""
|
||||
"If opt-out is checked, this contact has refused to receive emails or "
|
||||
"unsubscribed to a campaign."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,contact_name:0
|
||||
msgid "Contact Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: model:ir.ui.menu,name:portal_crm.portal_company_contact
|
||||
msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,partner_address_email:0
|
||||
msgid "Partner Contact Email"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,planned_revenue:0
|
||||
msgid "Expected Revenue"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,task_ids:0
|
||||
msgid "Tasks"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: view:portal_crm.crm_contact_us:0
|
||||
msgid "Contact form"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,company_currency:0
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,write_date:0
|
||||
msgid "Update Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,date_deadline:0
|
||||
msgid "Expected Closing"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,ref2:0
|
||||
msgid "Reference 2"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,user_email:0
|
||||
msgid "User Email"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,date_open:0
|
||||
msgid "Opened"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: selection:portal_crm.crm_contact_us,state:0
|
||||
msgid "In Progress"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,partner_name:0
|
||||
msgid ""
|
||||
"The name of the future partner company that will be created while converting "
|
||||
"the lead into opportunity"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,planned_cost:0
|
||||
msgid "Planned Costs"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,date_deadline:0
|
||||
msgid "Estimate of the date on which the opportunity will be won."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,email_cc:0
|
||||
msgid ""
|
||||
"These email addresses will be added to the CC field of all inbound and "
|
||||
"outbound emails for this record before being sent. Separate multiple email "
|
||||
"addresses with a comma"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: selection:portal_crm.crm_contact_us,priority:0
|
||||
msgid "Low"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,date_closed:0
|
||||
#: selection:portal_crm.crm_contact_us,state:0
|
||||
msgid "Closed"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,date_assign:0
|
||||
msgid "Assignation Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,state:0
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: selection:portal_crm.crm_contact_us,priority:0
|
||||
msgid "Normal"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,email_cc:0
|
||||
msgid "Global CC"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,street2:0
|
||||
msgid "Street2"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,id:0
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,phone:0
|
||||
msgid "Phone"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,message_is_follower:0
|
||||
msgid "Is a Follower"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,active:0
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,user_id:0
|
||||
msgid "Salesperson"
|
||||
msgstr "พนักงานขาย"
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,day_close:0
|
||||
msgid "Days to Close"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,company_ids:0
|
||||
msgid "Companies"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,message_summary:0
|
||||
msgid "Summary"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,section_id:0
|
||||
msgid ""
|
||||
"When sending mails, the default email address is taken from the sales team."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,partner_address_name:0
|
||||
msgid "Partner Contact Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,partner_longitude:0
|
||||
msgid "Geo Longitude"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,date_assign:0
|
||||
msgid "Last date this case was forwarded/assigned to a partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,email_from:0
|
||||
msgid "Email address of the contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,city:0
|
||||
msgid "City"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: view:portal_crm.crm_contact_us:0
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,function:0
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,referred:0
|
||||
msgid "Referred By"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,partner_assigned_id:0
|
||||
msgid "Assigned Partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: selection:portal_crm.crm_contact_us,type:0
|
||||
msgid "Opportunity"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,partner_assigned_id:0
|
||||
msgid "Partner this case has been forwarded/assigned to."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,country_id:0
|
||||
msgid "Country"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: view:portal_crm.crm_contact_us:0
|
||||
msgid "Thank you"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,state:0
|
||||
msgid ""
|
||||
"The Status is set to 'Draft', when a case is created. If the case is in "
|
||||
"progress the Status is set to 'Open'. When the case is over, the Status is "
|
||||
"set to 'Done'. If the case needs to be reviewed then the Status is set to "
|
||||
"'Pending'."
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,message_ids:0
|
||||
msgid "Messages and communication history"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: help:portal_crm.crm_contact_us,type_id:0
|
||||
msgid ""
|
||||
"From which campaign (seminar, marketing campaign, mass mailing, ...) did "
|
||||
"this contact come from?"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: selection:portal_crm.crm_contact_us,priority:0
|
||||
msgid "High"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,section_id:0
|
||||
msgid "Sales Team"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,street:0
|
||||
msgid "Street"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: field:portal_crm.crm_contact_us,date_action_last:0
|
||||
msgid "Last Action"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_crm
|
||||
#: model:ir.model,name:portal_crm.model_portal_crm_crm_contact_us
|
||||
msgid "Contact form for the portal"
|
||||
msgstr ""
|
|
@ -0,0 +1,95 @@
|
|||
# Thai translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-06-20 13:57+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Thai <th@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: 2013-06-21 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: view:hr.employee:0
|
||||
msgid "Coach"
|
||||
msgstr "โค้ช"
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: model:ir.actions.act_window,name:portal_hr_employees.action_team
|
||||
#: view:portal_crm.crm_contact_us:0
|
||||
msgid "Our Team"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: view:hr.employee:0
|
||||
msgid "Group By..."
|
||||
msgstr "จัดกลุ่มตาม..."
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: view:hr.employee:0
|
||||
msgid "Company"
|
||||
msgstr "บริษัท"
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: selection:hr.employee,visibility:0
|
||||
msgid "Public"
|
||||
msgstr "สาธารณะ"
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: help:hr.employee,visibility:0
|
||||
msgid "Employee's visibility in the portal's contact page"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: selection:hr.employee,visibility:0
|
||||
msgid "Private"
|
||||
msgstr "ส่วนตัว"
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: view:hr.employee:0
|
||||
msgid "Manager"
|
||||
msgstr "ผู้จัดการ"
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: model:ir.model,name:portal_hr_employees.model_hr_employee
|
||||
msgid "Employee"
|
||||
msgstr "พนักงาน"
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: view:hr.employee:0
|
||||
msgid "Job"
|
||||
msgstr "งาน"
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: field:hr.employee,visibility:0
|
||||
msgid "Visibility"
|
||||
msgstr "มองเห็นได้"
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: field:hr.employee,public_info:0
|
||||
msgid "Public Info"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: model:ir.model,name:portal_hr_employees.model_portal_crm_crm_contact_us
|
||||
msgid "Contact form for the portal"
|
||||
msgstr ""
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: view:hr.employee:0
|
||||
msgid "Department"
|
||||
msgstr "แผนก"
|
||||
|
||||
#. module: portal_hr_employees
|
||||
#: view:hr.employee:0
|
||||
#: field:portal_crm.crm_contact_us,employee_ids:0
|
||||
msgid "Employees"
|
||||
msgstr "พนักงาน"
|
|
@ -0,0 +1,377 @@
|
|||
# Thai translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:06+0000\n"
|
||||
"PO-Revision-Date: 2013-06-21 04:47+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Thai <th@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: 2013-06-22 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: stock_location
|
||||
#: help:product.pulled.flow,company_id:0
|
||||
msgid "Is used to know to which company the pickings and moves belong."
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: selection:product.pulled.flow,picking_type:0
|
||||
#: selection:stock.location.path,picking_type:0
|
||||
msgid "Sending Goods"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: view:product.product:0
|
||||
msgid "Pulled Paths"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: selection:product.pulled.flow,type_proc:0
|
||||
msgid "Move"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: model:ir.model,name:stock_location.model_stock_location_path
|
||||
msgid "Pushed Flows"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: selection:stock.location.path,auto:0
|
||||
msgid "Automatic No Step Added"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:product.pulled.flow,location_src_id:0
|
||||
#: field:stock.location.path,location_from_id:0
|
||||
msgid "Source Location"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: help:product.pulled.flow,cancel_cascade:0
|
||||
msgid "Allow you to cancel moves related to the product pull flow"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: model:ir.model,name:stock_location.model_product_pulled_flow
|
||||
#: field:product.product,flow_pull_ids:0
|
||||
msgid "Pulled Flows"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: help:product.pulled.flow,location_src_id:0
|
||||
msgid "Location used by Destination Location to supply"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: selection:product.pulled.flow,picking_type:0
|
||||
#: selection:stock.location.path,picking_type:0
|
||||
msgid "Internal"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: code:addons/stock_location/procurement_pull.py:98
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Pulled procurement coming from original location %s, pull rule %s, via "
|
||||
"original Procurement %s (#%d)"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: model:ir.model,name:stock_location.model_stock_location
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:product.pulled.flow,invoice_state:0
|
||||
#: field:stock.location.path,invoice_state:0
|
||||
msgid "Invoice Status"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: help:stock.location.path,auto:0
|
||||
msgid ""
|
||||
"This is used to define paths the product has to follow within the location "
|
||||
"tree.\n"
|
||||
"The 'Automatic Move' value will create a stock move after the current one "
|
||||
"that will be validated automatically. With 'Manual Operation', the stock "
|
||||
"move has to be validated by a worker. With 'Automatic No Step Added', the "
|
||||
"location is replaced in the original move."
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: view:product.product:0
|
||||
msgid "Conditions"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: model:stock.location,name:stock_location.location_pack_zone
|
||||
msgid "Pack Zone"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: model:stock.location,name:stock_location.location_gate_b
|
||||
msgid "Gate B"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: model:stock.location,name:stock_location.location_gate_a
|
||||
msgid "Gate A"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: selection:product.pulled.flow,type_proc:0
|
||||
msgid "Buy"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: view:product.product:0
|
||||
msgid "Pushed flows"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: model:stock.location,name:stock_location.location_dispatch_zone
|
||||
msgid "Dispatch Zone"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: view:product.product:0
|
||||
msgid "Pulled flows"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:product.pulled.flow,company_id:0
|
||||
#: field:stock.location.path,company_id:0
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: model:ir.model,name:stock_location.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: help:stock.move,cancel_cascade:0
|
||||
msgid "If checked, when this move is cancelled, cancel the linked move too"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: selection:product.pulled.flow,type_proc:0
|
||||
msgid "Produce"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: selection:product.pulled.flow,procure_method:0
|
||||
msgid "Make to Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: selection:product.pulled.flow,procure_method:0
|
||||
msgid "Make to Stock"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: code:addons/stock_location/procurement_pull.py:118
|
||||
#, python-format
|
||||
msgid "Pulled from another location."
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:product.pulled.flow,partner_address_id:0
|
||||
msgid "Partner Address"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: selection:product.pulled.flow,invoice_state:0
|
||||
#: selection:stock.location.path,invoice_state:0
|
||||
msgid "To Be Invoiced"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: help:stock.location.path,delay:0
|
||||
msgid "Number of days to do this transition"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: help:product.pulled.flow,name:0
|
||||
msgid "This field will fill the packing Origin and the name of its moves"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:product.pulled.flow,type_proc:0
|
||||
msgid "Type of Procurement"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:product.pulled.flow,name:0
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: help:product.product,path_ids:0
|
||||
msgid ""
|
||||
"These rules set the right path of the product in the whole location tree."
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: selection:stock.location.path,auto:0
|
||||
msgid "Manual Operation"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: model:ir.model,name:stock_location.model_product_product
|
||||
#: field:product.pulled.flow,product_id:0
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:product.pulled.flow,picking_type:0
|
||||
#: field:stock.location.path,picking_type:0
|
||||
msgid "Shipping Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: help:product.pulled.flow,procure_method:0
|
||||
msgid ""
|
||||
"'Make to Stock': When needed, take from the stock or wait until re-"
|
||||
"supplying. 'Make to Order': When needed, purchase or produce for the "
|
||||
"procurement request."
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: help:product.pulled.flow,location_id:0
|
||||
msgid "Is the destination location that needs supplying"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:stock.location.path,product_id:0
|
||||
msgid "Products"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: model:stock.location,name:stock_location.stock_location_qualitytest0
|
||||
msgid "Quality Control"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: selection:product.pulled.flow,invoice_state:0
|
||||
#: selection:stock.location.path,invoice_state:0
|
||||
msgid "Not Applicable"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:stock.location.path,delay:0
|
||||
msgid "Delay (days)"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: code:addons/stock_location/procurement_pull.py:67
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Picking for pulled procurement coming from original location %s, pull rule "
|
||||
"%s, via original Procurement %s (#%d)"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:product.product,path_ids:0
|
||||
msgid "Pushed Flow"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: code:addons/stock_location/procurement_pull.py:89
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move for pulled procurement coming from original location %s, pull rule %s, "
|
||||
"via original Procurement %s (#%d)"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: view:product.product:0
|
||||
msgid "Push Flow"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: view:product.product:0
|
||||
msgid "Pull Flow"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: model:ir.model,name:stock_location.model_procurement_order
|
||||
msgid "Procurement"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:product.pulled.flow,location_id:0
|
||||
#: field:stock.location.path,location_dest_id:0
|
||||
msgid "Destination Location"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:stock.location.path,auto:0
|
||||
#: selection:stock.location.path,auto:0
|
||||
msgid "Automatic Move"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: selection:product.pulled.flow,picking_type:0
|
||||
#: selection:stock.location.path,picking_type:0
|
||||
msgid "Getting Goods"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: view:product.product:0
|
||||
msgid "Action Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:product.pulled.flow,procure_method:0
|
||||
msgid "Procure Method"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: help:product.pulled.flow,picking_type:0
|
||||
#: help:stock.location.path,picking_type:0
|
||||
msgid ""
|
||||
"Depending on the company, choose whatever you want to receive or send "
|
||||
"products"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: model:stock.location,name:stock_location.location_order
|
||||
msgid "Order Processing"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:stock.location.path,name:0
|
||||
msgid "Operation"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: view:stock.location.path:0
|
||||
msgid "Location Paths"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:product.pulled.flow,journal_id:0
|
||||
#: field:stock.location.path,journal_id:0
|
||||
msgid "Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: field:product.pulled.flow,cancel_cascade:0
|
||||
#: field:stock.move,cancel_cascade:0
|
||||
msgid "Cancel Cascade"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_location
|
||||
#: selection:product.pulled.flow,invoice_state:0
|
||||
#: selection:stock.location.path,invoice_state:0
|
||||
msgid "Invoiced"
|
||||
msgstr ""
|
Loading…
Reference in New Issue