[MERGE]:trunk-mail-cleaning-fp

bzr revid: apa@tinyerp.com-20120904104409-w9zl98qjpem10pan
This commit is contained in:
Amit Patel (OpenERP)
2012-09-04 16:14:09 +05:30
117 changed files with 3227 additions and 3665 deletions
+13 -19
View File
@@ -186,19 +186,23 @@
<search string="Search Analytic Lines">
<field name="name" string="Analytic Line"/>
<field name="date"/>
<filter name="sales" string="Sales" domain="[('journal_id.type','=','sale')]" icon="terp-camera_test" help="Analytic Journal Items related to a sale journal."/>
<filter name="purchases" string="Purchases" domain="[('journal_id.type','=','purchase')]" icon="terp-purchase" help="Analytic Journal Items related to a purchase journal."/>
<filter name="others" string="Others" domain="[('journal_id.type','in',('cash','general','situation'))]" icon="terp-folder-orange"/>
<filter name="sales" string="Sales" domain="[('journal_id.type','=','sale')]" help="Analytic Journal Items related to a sale journal."/>
<filter name="purchases" string="Purchases" domain="[('journal_id.type','=','purchase')]" help="Analytic Journal Items related to a purchase journal."/>
<filter name="others" string="Others" domain="[('journal_id.type','in',('cash','general','situation'))]"/>
<separator/>
<filter string="My Entries" domain="[('user_id','=',uid)]" icon="terp-personal"/>
<filter string="My Entries" domain="[('user_id','=',uid)]"/>
<field name="account_id"/>
<field name="user_id"/>
<group string="Group By..." expand="0">
<filter string="Account" context="{'group_by':'account_id'}" icon="terp-folder-green"/>
<filter string="Journal" context="{'group_by':'journal_id'}" icon="terp-folder-orange"/>
<filter string="User" context="{'group_by':'user_id'}" icon="terp-personal"/>
<filter string="Fin.Account" context="{'group_by':'general_account_id'}" icon="terp-folder-green"/>
<filter string="Product" context="{'group_by':'product_id'}" icon="terp-accessories-archiver"/>
<filter string="Analytic Account" context="{'group_by':'account_id'}"/>
<filter string="Fin. Account" context="{'group_by':'general_account_id'}"/>
<filter string="Journal" context="{'group_by':'journal_id'}" name="group_journal"/>
<separator/>
<filter string="Product" context="{'group_by':'product_id'}"/>
<filter string="User" context="{'group_by':'user_id'}"/>
<separator/>
<filter string="Date" context="{'group_by':'date'}" name="group_date"/>
</group>
</search>
</field>
@@ -357,16 +361,6 @@
action="action_account_analytic_journal_tree"
id="account_analytic_journal_print" parent="account.next_id_40"/>
<act_window
context="{'search_default_account_id': [active_id], 'search_default_user_id': False, 'default_account_id': active_id}"
id="act_acc_analytic_acc_5_report_hr_timesheet_invoice_journal"
name="All Analytic Entries"
res_model="account.analytic.line"
src_model="account.analytic.account"
view_mode="tree,form"
view_type="form"/>
<record id="view_account_journal_1" model="ir.ui.view">
<field name="name">account.journal.form.1</field>
<field name="model">account.journal</field>
@@ -6,12 +6,11 @@
Analytic Account form
-->
<act_window
id="action_sales_order"
name="Sales Orders"
res_model="sale.order"
src_model="account.analytic.account"
/>
<record model="ir.actions.act_window" id="action_sales_order">
<field name="name">Sales Orders</field>
<field name="res_model">sale.order</field>
<field name="src_model">account.analytic.account</field>
</record>
<record id="account_analytic_account_form_form" model="ir.ui.view">
<field name="name">account.analytic.account.invoice.form.inherit</field>
+11 -5
View File
@@ -8,12 +8,18 @@
<field name="arch" type="xml">
<form string="Analytic Account" version="7.0">
<sheet string="Analytic Account">
<div class="oe_right oe_button_box" name="buttons">
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1>
<field name="name" class="oe_inline"/>
</h1>
<div name="project"/>
<group>
<h1>
<field name="name" class="oe_inline"/>
</h1>
<div name="project"/>
</div>
<group name="main">
<group>
<field name="partner_id" on_change="on_change_partner_id(partner_id, name)" attrs="{'required':[('type','=','contract')]}"/>
<field name="manager_id"/>
+536
View File
@@ -0,0 +1,536 @@
# Norwegian Bokmal translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-09-03 16:43+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Norwegian Bokmal <nb@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: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_user:0
msgid ""
"Check this if you want the rule to send an email to the responsible person."
msgstr ""
"Sjekk dette hvis du vil at regelen skal sende en e-post til ansvarlig person."
#. module: base_action_rule
#: field:base.action.rule,act_remind_partner:0
msgid "Remind Partner"
msgstr "Påminn partner"
#. module: base_action_rule
#: field:base.action.rule,trg_partner_categ_id:0
msgid "Partner Category"
msgstr "Partner Kategori"
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_watchers:0
msgid "Mail to Watchers (CC)"
msgstr "Post til overvåkere (CC)"
#. module: base_action_rule
#: field:base.action.rule,trg_state_to:0
msgid "Button Pressed"
msgstr "Knapp trykket"
#. module: base_action_rule
#: field:base.action.rule,model_id:0
msgid "Object"
msgstr "Objekt"
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_email:0
msgid "Mail to these Emails"
msgstr "Send mail til disse e-postene"
#. module: base_action_rule
#: field:base.action.rule,act_state:0
msgid "Set State to"
msgstr "Still stat til"
#. module: base_action_rule
#: field:base.action.rule,act_email_from:0
msgid "Email From"
msgstr "E-post fra"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Body"
msgstr "E-post kropp"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Days"
msgstr "Dager"
#. module: base_action_rule
#: field:base.action.rule,last_run:0
msgid "Last Run"
msgstr "Siste kjøring"
#. module: base_action_rule
#: code:addons/base_action_rule/base_action_rule.py:328
#, python-format
msgid "Error!"
msgstr "Feil!"
#. module: base_action_rule
#: field:base.action.rule,act_reply_to:0
msgid "Reply-To"
msgstr "Svar til"
#. module: base_action_rule
#: help:base.action.rule,act_email_cc:0
msgid ""
"These people will receive a copy of the future communication between partner "
"and users by email"
msgstr ""
"Disse menneskene vil motta en kopi av den fremtidige kommunikasjon mellom "
"partner og brukere av e-post"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Minutes"
msgstr "Minutter"
#. module: base_action_rule
#: field:base.action.rule,name:0
msgid "Rule Name"
msgstr "Regelnavn"
#. module: base_action_rule
#: help:base.action.rule,act_remind_partner:0
msgid ""
"Check this if you want the rule to send a reminder by email to the partner."
msgstr ""
"Sjekk dette hvis du vil at regelen skal sende en påminnelse via e-post til "
"partneren."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Model Partner"
msgstr "Forholdene på Modell Partner"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Deadline"
msgstr "Frist"
#. module: base_action_rule
#: field:base.action.rule,trg_partner_id:0
msgid "Partner"
msgstr "Partner"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_subject)s = Object subject"
msgstr "%(object_subject)s = Object subject"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Reminders"
msgstr "E-post påminnelser"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Special Keywords to be Used in the Body"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_state_from:0
msgid "State"
msgstr "Stat"
#. module: base_action_rule
#: model:ir.actions.act_window,help:base_action_rule.base_action_rule_act
msgid ""
"Use automated actions to automatically trigger actions for various screens. "
"Example: a lead created by a specific user may be automatically set to a "
"specific sales team, or an opportunity which still has status pending after "
"14 days might trigger an automatic reminder email."
msgstr ""
"Bruke automatiserte tiltak for å automatisk utløse tiltak for ulike "
"skjermer. Eksempel: en leder er opprettet av en bestemt bruker kan bli satt "
"automatisk til en bestemt salgsteam, eller en mulighet som fortsatt har "
"status påvente etter 14 dager kan utløse en automatisk påminnelse e-post."
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_email:0
msgid "Email-id of the persons whom mail is to be sent"
msgstr "E-post ID av personer som post skal sendes"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Action Rule"
msgstr "Handling regel"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Fields to Change"
msgstr "Felter å endre"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Creation Date"
msgstr "Opprettelsesdato"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Last Action Date"
msgstr "Siste handlingsdato"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Hours"
msgstr "Timer"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_id)s = Object ID"
msgstr "%(object_ID)s = Object ID"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Delay After Trigger Date"
msgstr "Forsinkelse Etter utløser Dato"
#. module: base_action_rule
#: field:base.action.rule,act_remind_attach:0
msgid "Remind with Attachment"
msgstr "Minn med vedlegg"
#. module: base_action_rule
#: constraint:ir.cron:0
msgid "Invalid arguments"
msgstr "Ugyldige argumenter"
#. module: base_action_rule
#: field:base.action.rule,act_user_id:0
msgid "Set Responsible to"
msgstr "Satt Ansvarlig for å"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "None"
msgstr "Ingen"
#. module: base_action_rule
#: help:base.action.rule,act_email_to:0
msgid ""
"Use a python expression to specify the right field on which one than we will "
"use for the 'To' field of the header"
msgstr ""
"Bruk en python uttrykk for å angi høyre feltet på hvilken enn vi vil bruke "
"for Til-feltet på header."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user_phone)s = Responsible phone"
msgstr "% (object_bruker_telefonen) s = Ansvarlig telefon"
#. module: base_action_rule
#: view:base.action.rule:0
msgid ""
"The rule uses the AND operator. The model must match all non-empty fields so "
"that the rule executes the action described in the 'Actions' tab."
msgstr ""
"Regelen bruker AND-operatoren. Modellen må matche alle-ikke tomme felt, slik "
"at regelen utfører handlingen som er beskrevet i \"Handlinger\"-fanen."
#. module: base_action_rule
#: field:base.action.rule,trg_date_range_type:0
msgid "Delay type"
msgstr "forsinkelse typen"
#. module: base_action_rule
#: help:base.action.rule,regex_name:0
msgid ""
"Regular expression for matching name of the resource\n"
"e.g.: 'urgent.*' will search for records having name starting with the "
"string 'urgent'\n"
"Note: This is case sensitive search."
msgstr ""
"Regulært uttrykk for matchende navnet på ressursen\n"
"f.eks: \". haster * 'vil søke etter poster som har navn som starter med "
"strengen\" haster \"\n"
"Merk: Dette er små bokstaver søk."
#. module: base_action_rule
#: field:base.action.rule,act_method:0
msgid "Call Object Method"
msgstr "Kall objektmetode"
#. module: base_action_rule
#: field:base.action.rule,act_email_to:0
msgid "Email To"
msgstr "E-post til."
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_watchers:0
msgid ""
"Check this if you want the rule to mark CC(mail to any other person defined "
"in actions)."
msgstr ""
"Sjekk dette hvis du vil at regelen skal merkes CC (mail til en annen person "
"som er definert i handlinger)."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(partner)s = Partner name"
msgstr "%(partner)s = Navn på partner"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Note"
msgstr "Notat"
#. module: base_action_rule
#: help:base.action.rule,act_email_from:0
msgid ""
"Use a python expression to specify the right field on which one than we will "
"use for the 'From' field of the header"
msgstr ""
"Bruk en python uttrykk for å angi høyre feltet på hvilken enn vi vil bruke "
"for Fra-feltet på overskriften"
#. module: base_action_rule
#: field:base.action.rule,trg_date_range:0
msgid "Delay after trigger date"
msgstr "Forsinkelse etter triggerdato"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions"
msgstr "Betingelser"
#. module: base_action_rule
#: help:base.action.rule,trg_date_range:0
msgid ""
"Delay After Trigger Date,specifies you can put a negative number. If you "
"need a delay before the trigger date, like sending a reminder 15 minutes "
"before a meeting."
msgstr ""
"Forsinkelse Etter utløser Dato, spesifiserer du kan sette et negativt tall. "
"Hvis du trenger en forsinkelse før avtrekkeren dato, som å sende en "
"påminnelse 15 minutter før et møte."
#. module: base_action_rule
#: field:base.action.rule,active:0
msgid "Active"
msgstr "Aktiv"
#. module: base_action_rule
#: code:addons/base_action_rule/base_action_rule.py:329
#, python-format
msgid "No Email ID Found for your Company address!"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_remind_user:0
msgid "Remind Responsible"
msgstr "Minn Ansvarlig"
#. module: base_action_rule
#: help:base.action.rule,sequence:0
msgid "Gives the sequence order when displaying a list of rules."
msgstr "Gir sekvens ordre når du viser en liste over regler."
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Months"
msgstr "Måneder"
#. module: base_action_rule
#: field:base.action.rule,filter_id:0
msgid "Filter"
msgstr "Filtrer"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Date"
msgstr "Dato"
#. module: base_action_rule
#: help:base.action.rule,server_action_id:0
msgid ""
"Describes the action name.\n"
"eg:on which object which action to be taken on basis of which condition"
msgstr ""
"Beskriver handlingens navn.\n"
"f.eks: på hvilket objekt som tiltak som skal iverksettes på grunnlag av "
"hvilken tilstand"
#. module: base_action_rule
#: model:ir.model,name:base_action_rule.model_ir_cron
msgid "ir.cron"
msgstr "ir.actions.actions"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_description)s = Object description"
msgstr "% (object_beskrivelse) s = Object beskrivelse"
#. module: base_action_rule
#: constraint:base.action.rule:0
msgid "Error: The mail is not well formated"
msgstr "Feil: E-posten er ikke godt nok formatert"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Actions"
msgstr "E-post handlinger"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Information"
msgstr "E-post Informasjon"
#. module: base_action_rule
#: model:ir.model,name:base_action_rule.model_base_action_rule
msgid "Action Rules"
msgstr "Handlingsregler"
#. module: base_action_rule
#: help:base.action.rule,act_mail_body:0
msgid "Content of mail"
msgstr "Innholdet av post"
#. module: base_action_rule
#: field:base.action.rule,trg_user_id:0
msgid "Responsible"
msgstr "Ansvarlig"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(partner_email)s = Partner Email"
msgstr "% (partner_e-post) s = Partner E-post"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_date)s = Creation date"
msgstr "%(object_dato)s = opprettelsesdato"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user_email)s = Responsible Email"
msgstr "% (object_brukerens_e-post) s = Ansvarlig e-post"
#. module: base_action_rule
#: field:base.action.rule,act_mail_body:0
msgid "Mail body"
msgstr "Mail kropp"
#. module: base_action_rule
#: help:base.action.rule,act_remind_user:0
msgid ""
"Check this if you want the rule to send a reminder by email to the user."
msgstr ""
"Kryss av her hvis du vil at regelen skal sende en påminnelse til brukeren "
"via e-post."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Server Action to be Triggered"
msgstr "Server Tiltak som skal Utløses"
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_user:0
msgid "Mail to Responsible"
msgstr "send mail til ansvarlig"
#. module: base_action_rule
#: field:base.action.rule,act_email_cc:0
msgid "Add Watchers (Cc)"
msgstr "Legg til overvåkere (Cc)"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Model Fields"
msgstr "Forholdene på Modell Felter"
#. module: base_action_rule
#: model:ir.actions.act_window,name:base_action_rule.base_action_rule_act
#: model:ir.ui.menu,name:base_action_rule.menu_base_action_rule_form
msgid "Automated Actions"
msgstr "Automatiserte handinger"
#. module: base_action_rule
#: field:base.action.rule,server_action_id:0
msgid "Server Action"
msgstr "Tjenerhandling"
#. module: base_action_rule
#: field:base.action.rule,regex_name:0
msgid "Regex on Resource Name"
msgstr "Regex på Ressursnavn"
#. module: base_action_rule
#: help:base.action.rule,act_remind_attach:0
msgid ""
"Check this if you want that all documents attached to the object be attached "
"to the reminder email sent."
msgstr ""
"Kryss av her om du vil at alle dokumenter knyttet til objektet festes til "
"påminnelse e-post sendt."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Timing"
msgstr "Vilkår for timing"
#. module: base_action_rule
#: field:base.action.rule,sequence:0
msgid "Sequence"
msgstr "Sekvens"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Actions"
msgstr "Handlinger"
#. module: base_action_rule
#: help:base.action.rule,active:0
msgid ""
"If the active field is set to False, it will allow you to hide the rule "
"without removing it."
msgstr ""
"Hvis det aktive feltet er satt til False, vil det tillate deg å skjule "
"regelen uten å fjerne den."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user)s = Responsible name"
msgstr "% (object_bruker) s = Ansvarlig navn"
#. module: base_action_rule
#: field:base.action.rule,create_date:0
msgid "Create Date"
msgstr "Opprettet dato"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on States"
msgstr "Vilkår for tilstander"
#. module: base_action_rule
#: field:base.action.rule,trg_date_type:0
msgid "Trigger Date"
msgstr "Uttløser dato"
#~ msgid "Special Keywords to Be Used in The Body"
#~ msgstr "Spesielle nøkkelord for bruk i meldingsinnhold"
#, python-format
#~ msgid "No E-Mail ID Found for your Company address!"
#~ msgstr "Ingen E-post ID funnet for din firmaadresse!"
+1 -1
View File
@@ -38,7 +38,7 @@ class crm_configuration(osv.osv_memory):
'module_import_google': fields.boolean("Google (Contacts and Calendar)",
help="""Import google contact in partner address and add google calendar events details in Meeting.
This installs the module import_google."""),
'module_google_map': fields.boolean("add google maps on customer",
'module_google_map': fields.boolean("add google maps on customers",
help="""Locate customers on Google Map.
This installs the module google_map."""),
'group_fund_raising': fields.boolean("Manage Fund Raising",
@@ -23,23 +23,5 @@
</field>
</record>
<!-- partner To Opportunity Action -->
<record model="ir.actions.act_window" id="action_view_crm_partner2opportunity">
<field name="name">Create Opportunity</field>
<field name="res_model">crm.partner2opportunity</field>
<field name="view_type">form</field>
<field name="view_mode">form,tree,kanban,calendar</field>
<field name="target">new</field>
</record>
<!-- partner To Opportunity wizard -->
<act_window id="crm_partner2opportunity"
key2="client_action_multi" name="Create Opportunity"
res_model="crm.partner2opportunity" src_model="res.partner"
view_id="view_crm_partner2opportunity"
view_mode="form" target="new" view_type="form"
groups="base.group_sale_salesman"/>
</data>
</openerp>
-1
View File
@@ -12,4 +12,3 @@
self.message_update(cr, uid,[ref('crm_claim_4')], {'subject': 'Claim Update record','body': 'first training session completed',})
except:
pass
+1 -1
View File
@@ -19,7 +19,7 @@
attrs="{'invisible':[('partner_assigned_id','=',False)]}"
name="%(crm_lead_forward_to_partner_act)d"
icon="terp-mail-forward" type="action"
context="{'mail.compose.message.mode': 'forward', 'default_partner_ids': [partner_assigned_id]}"/>
context="{'default_composition_mode': 'forward', 'default_partner_ids': [partner_assigned_id]}"/>
</div>
</group>
<group string="Geo Assignation">
@@ -36,12 +36,12 @@ class crm_lead_forward_to_partner(osv.osv_memory):
if context is None:
context = {}
# set as comment, perform overrided document-like action that calls get_record_data
old_mode = context.get('mail.compose.message.mode', 'forward')
context['mail.compose.message.mode'] = 'comment'
old_mode = context.get('default_composition_mode', 'forward')
context['default_composition_mode'] = 'comment'
res = super(crm_lead_forward_to_partner, self).default_get(cr, uid, fields, context=context)
# back to forward mode
context['mail.compose.message.mode'] = old_mode
res['composition_mode'] = context['mail.compose.message.mode']
context['default_composition_mode'] = old_mode
res['composition_mode'] = context['default_composition_mode']
return res
def _get_composition_mode_selection(self, cr, uid, context=None):
@@ -51,7 +51,7 @@
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="{'mail.compose.message.mode' : 'mass_mail'}"
context="{'default_composition_mode' : 'mass_mail'}"
view_id="crm_lead_forward_to_partner_form"
/>
+1 -1
View File
@@ -171,7 +171,7 @@ class email_template(osv.osv):
'res_model': 'mail.compose.message',
'src_model': src_obj,
'view_type': 'form',
'context': "{'mail.compose.message.mode':'mass_mail', 'mail.compose.template_id' : %d}" % (template.id),
'context': "{'default_composition_mode': 'mass_mail', 'default_template_id' : %d}" % (template.id),
'view_mode':'form,tree',
'view_id': res_id,
'target': 'new',
+34 -7
View File
@@ -71,23 +71,50 @@ class test_message_compose(common.TransactionCase):
_subject1 = 'Pigs'
_subject2 = 'Bird'
_body_text1 = 'Pigs rules'
_body_text_html1 = 'Pigs rules<pre>Admin</pre>'
_body_text_html1 = 'Fans of Pigs, unite !\n<pre>Admin</pre>\n'
_body_text2 = 'I am angry !'
_body_text_html2 = 'I am angry !<pre>Admin</pre>'
# CASE1: create in mass_mail composition mode that should work with email_template installed
# CASE1: create in comment
compose_id = mail_compose.create(cr, uid,
{'subject': 'Forget me subject', 'body': 'Dummy body'},
{'default_composition_mode': 'comment', 'default_model': 'mail.group',
'default_res_id': self.group_pigs_id, 'default_use_template': True,
'active_ids': [self.group_pigs_id, group_bird_id] })
compose = mail_compose.browse(cr, uid, compose_id)
# Perform 'onchange_template_id' with 'use_template' set
values = mail_compose.onchange_template_id(cr, uid, [], compose.use_template, email_template_id, compose.composition_mode, compose.model, compose.res_id)
compose.write(values.get('value', {}), {'default_composition_mode': 'comment', 'default_model': 'mail.group'})
compose.refresh()
message_pids = [partner.id for partner in compose.partner_ids]
partner_ids = self.res_partner.search(cr, uid, [('email', 'in', ['b@b.b', 'c@c.c', 'd@d.d'])])
partners = self.res_partner.browse(cr, uid, partner_ids)
# Test: subject, body, partner_ids
self.assertEqual(compose.subject, _subject1, 'mail.compose.message subject incorrect')
self.assertEqual(compose.body, _body_text_html1, 'mail.compose.message body incorrect')
self.assertEqual(set(message_pids), set(partner_ids), 'mail.compose.message partner_ids incorrect')
# Perform 'onchange_use_template': use_template is not set anymore
values = mail_compose.onchange_use_template(cr, uid, [], not compose.use_template, compose.template_id, compose.composition_mode, compose.model, compose.res_id)
compose.write(values.get('value', {}), {'default_composition_mode': 'comment', 'default_model': 'mail.group'})
compose.refresh()
# Test: subject, body, partner_ids
self.assertEqual(compose.subject, False, 'mail.compose.message subject incorrect')
self.assertEqual(compose.body, '', 'mail.compose.message body incorrect')
# CASE12 create in mass_mail composition
compose_id = mail_compose.create(cr, uid,
{'subject': 'Forget me subject', 'body': 'Dummy body'},
{'default_composition_mode': 'mass_mail', 'default_model': 'mail.group',
'default_res_id': -1, 'default_use_template': True,
'active_ids': [self.group_pigs_id, group_bird_id], 'default_template_id': email_template_id})
'active_ids': [self.group_pigs_id, group_bird_id] })
compose = mail_compose.browse(cr, uid, compose_id)
# print compose.subject
# Try the 'onchange_template_id'
values = mail_compose.onchange_template_id(cr, uid, [], compose.use_template, compose.template_id, compose.composition_mode, compose.model, compose.res_id)
# Test 'onchange_template_id' with 'use_template' set
values = mail_compose.onchange_template_id(cr, uid, [], compose.use_template, email_template_id, compose.composition_mode, compose.model, compose.res_id)
print values
# self.assertEqual()
# compose.write(values['value'])
values = mail_compose.onchange_use_template(cr, uid, [], not compose.use_template, compose.template_id, compose.composition_mode, compose.model, compose.res_id)
print values
@@ -28,15 +28,17 @@ from tools.translate import _
class mail_compose_message(osv.osv_memory):
_inherit = 'mail.compose.message'
_compose_fields = ['body', 'body_html', 'subject', 'partner_ids', 'attachment_ids']
def _get_templates(self, cr, uid, context=None):
if context is None:
context = {}
model = False
email_template_obj= self.pool.get('email.template')
message_id = context.get('default_parent_id', context.get('message_id', context.get('active_id')))
if context.get('default_composition_mode') == 'reply' and context.get('active_id'):
message_data = self.pool.get('mail.message').browse(cr, uid, int(context.get('active_id')), context)
if context.get('default_composition_mode') == 'reply' and message_id:
message_data = self.pool.get('mail.message').browse(cr, uid, message_id, context=context)
if message_data:
model = message_data.model
else:
@@ -62,32 +64,17 @@ class mail_compose_message(osv.osv_memory):
def onchange_template_id(self, cr, uid, ids, use_template, template_id, composition_mode, model, res_id, context=None):
""" - use_template not set: return default_get
- use_template set:
- mass_mailing: we cannot render, so return the template values
- else: return rendered values """
fields = ['body', 'body_html', 'subject', 'partner_ids', 'email_to', 'email_cc']
- use_template set in mass_mailing: we cannot render, so return the template values
- use_template set: return rendered values """
if use_template and template_id and composition_mode == 'mass_mail':
values = self.pool.get('email.template').read(cr, uid, template_id, fields, context)
values = self.pool.get('email.template').read(cr, uid, template_id, self._compose_fields, context)
elif use_template and template_id:
values = self.pool.get('email.template').generate_email(cr, uid, template_id, res_id, context=context)
values['attachment_ids'] = []
attachment_obj = self.pool.get('ir.attachment')
for attach_fname, attach_datas in values.get('attachments', []):
data_attach = {
'name': attach_fname,
'datas': attach_datas,
'datas_fname': attach_fname,
'description': fname,
'res_model': model,
'res_id': res_id,
}
values['attachment_ids'].append(attachment_obj.create(cr, uid, data_attach), context=context)
values = self.generate_email_for_composer(cr, uid, template_id, res_id, context=context)
else:
values = self.default_get(cr, uid, fields, context=context)
values = self.default_get(cr, uid, self._compose_fields, context=context)
if values.get('body_html') and not values.get('body'):
values['body'] = values.get('body_html')
if values.get('body_html'):
values['body'] = values.pop('body_html')
values.update(use_template=use_template, template_id=template_id)
return {'value': values}
@@ -98,14 +85,17 @@ class mail_compose_message(osv.osv_memory):
for record in self.browse(cr, uid, ids, context=context):
onchange_res = self.onchange_use_template(cr, uid, ids, not record.use_template,
record.template_id, record.composition_mode, record.model, record.res_id, context=context)['value']
record.write(onchange_res)
record.write(onchange_res.get('value', {}))
return True
def onchange_use_template(self, cr, uid, ids, use_template, template_id, composition_mode, model, res_id, context=None):
""" onchange_use_template (values: True or False). If use_template is
False, we do like an onchange with template_id False for values """
return self.onchange_template_id(cr, uid, ids, use_template,
values = self.onchange_template_id(cr, uid, ids, use_template,
template_id, composition_mode, model, res_id, context=context)
if use_template:
values['content_subtype'] = 'html'
return values
def save_as_template(self, cr, uid, ids, context=None):
""" hit save as template button: current form value will be a new
@@ -113,8 +103,7 @@ class mail_compose_message(osv.osv_memory):
email_template = self.pool.get('email.template')
ir_model_pool = self.pool.get('ir.model')
for record in self.browse(cr, uid, ids, context=context):
model = record.model
model_ids = ir_model_pool.search(cr, uid, [('model', '=', model)])
model_ids = ir_model_pool.search(cr, uid, [('model', '=', record.model)], context=context)
model_id = model_ids and model_ids[0] or False
model_name = ''
if model_id:
@@ -135,14 +124,49 @@ class mail_compose_message(osv.osv_memory):
# Wizard validation and send
#------------------------------------------------------
def generate_email_for_composer(self, cr, uid, template_id, res_id, context=None):
""" Call email_template.generate_email(), get fields relevant for
mail.compose.message, transform email_cc and email_to into partner_ids """
fields = ['body', 'body_html', 'subject', 'email_to', 'email_cc', 'attachment_ids']
template_values = self.pool.get('email.template').generate_email(cr, uid, template_id, res_id, context=context)
values = {field: template_values[field] for field in fields if template_values.get(field)}
# transform email_to, email_cc into partner_ids
values['partner_ids'] = []
mails = tools.email_split(values.pop('email_to', '') + ' ' + values.pop('email_cc', ''))
for mail in mails:
partner_search_ids = self.pool.get('res.partner').search(cr, uid, [('email', 'ilike', mail)], context=context)
if partner_search_ids:
values['partner_ids'].append((4, partner_search_ids[0]))
else:
partner_id = self.pool.get('res.partner').name_create(cr, uid, mail, context=context)[0]
partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
values['partner_ids'].append((4, partner_id))
# transform attachments into attachment_ids
values['attachment_ids'] = []
for attach_fname, attach_datas in template_values.get('attachments', []):
data_attach = {
'name': attach_fname,
'datas': attach_datas,
'datas_fname': attach_fname,
'res_model': model,
'res_id': res_id,
}
values['attachment_ids'].append((0, 0, data_attach))
return values
def render_message(self, cr, uid, wizard, model, res_id, context=None):
""" Generate an email from the template for given (model, res_id) pair.
This method is meant to be inherited by email_template that will
produce a more complete dictionary, with email_to, ...
"""
# render the template to get the email
fields = ['body', 'body_html', 'subject', 'email_to', 'email_cc', 'partner_ids', 'attachment_ids']
template_values = self.pool.get('email.template').generate_email(cr, uid, wizard.template_id, res_id, context=context)
# TDE TODO: handle fields to update / not to update (mail_server_id, auto_delete, ...)
template_values = {field: template_values[field] for field in fields if template_values.get(field)}
# transform email_to, email_cc into partner_ids
partner_ids = []
mails = tools.email_split(template_values.pop('email_to', '') + ' ' + template_values.pop('email_cc', ''))
@@ -154,10 +178,10 @@ class mail_compose_message(osv.osv_memory):
partner_id = self.pool.get('res.partner').name_create(cr, uid, mail, context=context)[0]
partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
partner_ids.append((4, partner_id))
# get values to return
email_dict = super(mail_compose_message, self).render_message(cr, uid, wizard, model, res_id, context)
email_dict.update(template_values)
email_dict.update(partner_ids=partner_ids, attachments=template_values.get('attachments'))
email_dict.update(template_values, partner_ids=partner_ids)
return email_dict
def render_template(self, cr, uid, template, model, res_id, context=None):
+2 -1
View File
@@ -8,8 +8,9 @@
<field name="arch" type="xml">
<field name="purchase_ok" position="after">
<field name="event_ok" on_change="onchange_event_ok(event_ok, context)"/>
<label for="event_ok"/>
</field>
<field name='procure_method' position='before'>
<field name='default_code' position='before'>
<field name="event_type_id" attrs="{'readonly': [('event_ok', '=', False)]}"/>
</field>
</field>
+1 -1
View File
@@ -20,7 +20,7 @@
<field name="arch" type="xml">
<form string="Employee" version="7.0">
<sheet>
<field name="image_small" widget='image' class="oe_right oe_image_small"/>
<field name="image_medium" widget='image' class="oe_right oe_avatar"/>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1>
+6 -6
View File
@@ -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-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-08-26 14:02+0000\n"
"PO-Revision-Date: 2012-09-03 17:10+0000\n"
"Last-Translator: Erwin <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: 2012-08-28 06:24+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: hr
#: model:process.node,name:hr.process_node_openerpuser0
@@ -195,7 +195,7 @@ msgstr "Vrouw"
#: help:hr.job,expected_employees:0
msgid ""
"Expected number of employees for this job position after new recruitment."
msgstr ""
msgstr "Verwachte aantal werknemers voor deze functie na de nieuwe werving."
#. module: hr
#: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_new_config
@@ -710,12 +710,12 @@ msgstr "Ondergeschikten"
#. module: hr
#: field:hr.job,no_of_employee:0
msgid "Number of employees currently occupying this job position."
msgstr ""
msgstr "Huidige aantal werknemers welke deze functie bekleden ."
#. module: hr
#: field:hr.job,no_of_recruitment:0
msgid "Number of new employees you expect to recruit."
msgstr ""
msgstr "Verwachte aantal te werven nieuwe werknemers."
#~ msgid "Sunday"
#~ msgstr "Zondag"
+4 -4
View File
@@ -32,15 +32,15 @@ class hr_config_settings(osv.osv_memory):
help ="""This installs the module hr_attendance."""),
'module_hr_timesheet': fields.boolean('manage timesheets',
help ="""This installs the module hr_timesheet."""),
'module_hr_holidays': fields.boolean('manage leaves and allocation requests',
'module_hr_holidays': fields.boolean('manage holidays, leaves and allocation requests',
help ="""This installs the module hr_holidays."""),
'module_hr_expense': fields.boolean('manage employees expenses',
help ="""This installs the module hr_expense."""),
'module_hr_recruitment': fields.boolean('manage the recruitment pipe',
'module_hr_recruitment': fields.boolean('manage the recruitment process',
help ="""This installs the module hr_recruitment."""),
'module_hr_contract': fields.boolean('manage contract per employee',
'module_hr_contract': fields.boolean('record contracts per employee',
help ="""This installs the module hr_contract."""),
'module_hr_evaluation': fields.boolean('manage employees periodic evaluation',
'module_hr_evaluation': fields.boolean('organize employees periodic evaluation',
help ="""This installs the module hr_evaluation."""),
'module_hr_payroll': fields.boolean('manage payroll',
help ="""This installs the module hr_payroll."""),
+25 -20
View File
@@ -33,6 +33,19 @@
<button string="Cancel" type="object" name="cancel" class="oe_link"/>
</header>
<separator string="Human Resources Management"/>
<group name="recruitment_grp">
<label for="id" string="Talent Management"/>
<div name="recruitment">
<div>
<field name="module_hr_recruitment" class="oe_inline"/>
<label for="module_hr_recruitment"/>
</div>
<div>
<field name="module_hr_evaluation" class="oe_inline"/>
<label for="module_hr_evaluation"/>
</div>
</div>
</group>
<group>
<label for="id" string="Additional Features"/>
<div>
@@ -44,21 +57,6 @@
<field name="module_hr_expense" class="oe_inline"/>
<label for="module_hr_expense"/>
</div>
<div>
<field name="module_hr_evaluation" class="oe_inline"/>
<label for="module_hr_evaluation"/>
</div>
<div>
<field name="module_hr_contract" class="oe_inline"/>
<label for="module_hr_contract"/>
</div>
<div name="hr_payroll">
<field name="module_hr_payroll" class="oe_inline"/>
<label for="module_hr_payroll"/>
<button name="%(open_payroll_modules)d" type="action"
string="Install your country's payroll" icon="gtk-go-forward"
attrs="{'invisible': [('module_hr_payroll','=',False)]}" class="oe_link"/>
</div>
</div>
</group>
<group name="timesheet_grp">
@@ -78,12 +76,19 @@
</div>
</div>
</group>
<group name="recruitment_grp">
<label for="id" string="Recruitment"/>
<div name="recruitment">
<group name="contract_grp">
<label for="id" string="Contracts"/>
<div>
<div>
<field name="module_hr_recruitment" class="oe_inline"/>
<label for="module_hr_recruitment"/>
<field name="module_hr_contract" class="oe_inline"/>
<label for="module_hr_contract"/>
</div>
<div name="hr_payroll">
<field name="module_hr_payroll" class="oe_inline"/>
<label for="module_hr_payroll"/>
<button name="%(open_payroll_modules)d" type="action"
string="Install your country's payroll" icon="gtk-go-forward"
attrs="{'invisible': [('module_hr_payroll','=',False)]}" class="oe_link"/>
</div>
</div>
</group>
+3 -3
View File
@@ -126,9 +126,9 @@
<field name="active" position="before">
<label for="state"/>
<div>
<field name="state" class="oe_inline"/>
<button class="oe_inline oe_right" name="attendance_action_change" states="present" string="Sign Out" type="object" icon="gtk-go-forward" context="{'type':'sign_out'}" groups="base.group_hr_user"/>
<button class="oe_inline oe_right" name="attendance_action_change" states="absent" string="Sign In" type="object" icon="gtk-go-back" context="{'type':'sign_in'}" groups="base.group_hr_user"/>
<field name="state" class="oe_inline"/> -
<button class="oe_link" name="attendance_action_change" states="present" string="Sign Out" type="object" context="{'type':'sign_out'}" groups="base.group_hr_user"/>
<button class="oe_link" name="attendance_action_change" states="absent" string="Sign In" type="object" context="{'type':'sign_in'}" groups="base.group_hr_user"/>
</div>
</field>
</field>
+13 -12
View File
@@ -388,22 +388,23 @@
action="action_hr_evaluation_interview_tree"/>
<!-- Email Compose message Action-->
<!-- TDE TODO: add context values -->
<act_window
id="evaluation_reminders" name="Appraisal Reminders"
res_model="mail.compose.message"
src_model="hr.evaluation.interview"
view_type="form" view_mode="form"
target="new" multi="True"
key2="client_action_multi"
context="{'mail.compose.message.mode':'mass_mail'}"/>
id="evaluation_reminders" name="Appraisal Reminders"
res_model="mail.compose.message"
src_model="hr.evaluation.interview"
view_type="form" view_mode="form"
target="new" multi="True"
key2="client_action_multi"
context="{'default_composition_mode': 'mass_mail'}"/>
<!-- Appraisal Interviews Button on Employee Form -->
<act_window
context="{'search_default_user_to_review_id': [active_id], 'default_user_to_review_id': active_id}"
id="act_hr_employee_2_hr__evaluation_interview"
name="Appraisal Interviews"
res_model="hr.evaluation.interview"
src_model="hr.employee"/>
context="{'search_default_user_to_review_id': [active_id], 'default_user_to_review_id': active_id}"
id="act_hr_employee_2_hr__evaluation_interview"
name="Appraisal Interviews"
res_model="hr.evaluation.interview"
src_model="hr.employee"/>
</data>
</openerp>
+7 -3
View File
@@ -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-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-02-19 13:05+0000\n"
"PO-Revision-Date: 2012-09-03 17:12+0000\n"
"Last-Translator: Erwin <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: 2012-08-28 06:23+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: hr_holidays
#: selection:hr.holidays.status,color_name:0
@@ -416,6 +416,8 @@ msgid ""
"When selected, the Allocation/Leave Requests for this type require a second "
"validation to be approved."
msgstr ""
"Wanneer aangevinkt heeft deze toewijzing of aanvraag een tweede controle "
"nodig om te worden goedgekeurd."
#. module: hr_holidays
#: selection:hr.employee,current_leave_state:0 selection:hr.holidays,state:0
@@ -787,6 +789,8 @@ msgid ""
"If you select this checkbox, the system allows the employees to take more "
"leaves than the available ones for this type."
msgstr ""
"Indien u deze optie aanvinkt, dan staat u toe dat werknemers meer verlof "
"aanvragen dan dat ze nog beschikbaar hebben."
#. module: hr_holidays
#: help:hr.holidays.status,leaves_taken:0
@@ -10,10 +10,6 @@
date_to: !eval time.strftime('%Y-%m-11 19:00:00')
employee_id: hr.employee_fp
type: remove
-
I confirmed the holiday request by clicking on "Confirm" button.
-
!workflow {model: hr.holidays, action: confirm, ref: hr_holidays_employee1_cl}
-
I find a small mistake on my leave request to I click on "Refuse" button to correct a mistake.
-
+10 -10
View File
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-01-22 19:09+0000\n"
"PO-Revision-Date: 2012-09-03 17:17+0000\n"
"Last-Translator: Erwin <Unknown>\n"
"Language-Team: Dutch <nl@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: 2012-08-28 06:33+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: hr_payroll
#: field:hr.payslip.line,condition_select:0
@@ -357,7 +357,7 @@ msgstr "Half-jaarlijks"
#. module: hr_payroll
#: view:hr.salary.rule:0
msgid "Children Definition"
msgstr ""
msgstr "Definitie onderliggende"
#. module: hr_payroll
#: report:paylip.details:0 report:payslip:0
@@ -465,7 +465,7 @@ msgstr ""
#. module: hr_payroll
#: view:hr.payslip:0
msgid "Worked Days & Inputs"
msgstr ""
msgstr "Gewerkte dagen & ingaves"
#. module: hr_payroll
#: field:hr.payslip,details_by_salary_rule_category:0
@@ -522,7 +522,7 @@ msgstr "Bereik"
#: model:ir.actions.act_window,name:hr_payroll.action_view_hr_payroll_structure_tree
#: model:ir.ui.menu,name:hr_payroll.menu_hr_payroll_structure_tree
msgid "Salary Structures Hierarchy"
msgstr ""
msgstr "Salaris structuur hiërarchie"
#. module: hr_payroll
#: view:hr.payslip:0
@@ -769,7 +769,7 @@ msgstr "Contributie"
#: code:addons/hr_payroll/hr_payroll.py:347
#, python-format
msgid "Refund Payslip"
msgstr ""
msgstr "Credit salarisstrook"
#. module: hr_payroll
#: field:hr.rule.input,input_id:0
@@ -852,7 +852,7 @@ msgstr "Salaris Structuur"
#. module: hr_payroll
#: field:hr.contribution.register,register_line_ids:0
msgid "Register Line"
msgstr ""
msgstr "Register regel"
#. module: hr_payroll
#: view:hr.payslip:0 view:hr.payslip.employees:0
@@ -1083,7 +1083,7 @@ msgstr "Totaal"
#: help:hr.payslip.line,appears_on_payslip:0
#: help:hr.salary.rule,appears_on_payslip:0
msgid "Used for the display of rule on payslip"
msgstr ""
msgstr "Wordt gebruikt om de regel van de salaristrook weer te geven"
#. module: hr_payroll
#: view:hr.payslip.line:0
@@ -1093,7 +1093,7 @@ msgstr "Zoek loonafschrift regels"
#. module: hr_payroll
#: view:hr.payslip:0
msgid "Details By Salary Rule Category"
msgstr ""
msgstr "details per salarisregel categorie"
#. module: hr_payroll
#: help:hr.payslip.input,code:0 help:hr.payslip.worked_days,code:0
+17 -1
View File
@@ -77,7 +77,17 @@
</search>
</field>
</record>
<record model="ir.actions.act_window" id="act_analytic_cost_revenue">
<field name="context">{'search_default_account_id': [active_id], 'default_account_id': active_id, 'search_default_group_date': 1, 'search_default_group_journal': 1}</field>
<field name="name">Costs &amp; Revenues</field>
<field name="res_model">account.analytic.line</field>
<field name="src_model">account.analytic.account</field>
<field name="view_mode">tree,form</field>
<field name="view_type">form</field>
</record>
<record id="account_analytic_account_timesheet_form" model="ir.ui.view">
<field name="name">account.analytic.account.invoice.form</field>
<field name="model">account.analytic.account</field>
@@ -87,6 +97,12 @@
<field name="use_timesheets"/>
<label for="use_timesheets"/>
</xpath>
<xpath expr='//div[@name="buttons"]' position='inside'>
<button string="Costs and Revenues"
name="%(act_analytic_cost_revenue)d"
type="action"/>
</xpath>
</field>
</record>
@@ -122,13 +122,13 @@
<field name="search_view_id" ref="account_analytic_line_to_invoice_view_filter"/>
</record>
<act_window
domain="[('invoice_id','=',False),('to_invoice','&lt;&gt;',False), ('journal_id.type', '=', 'general')]"
context="{'search_default_account_id': [active_id], 'default_account_id': active_id,'search_default_to_invoice': 1}"
id="act_acc_analytic_acc_2_report_acc_analytic_line_to_invoice"
name="Timesheet Lines to Invoice"
res_model="account.analytic.line"
src_model="account.analytic.account"/>
<record id="act_acc_analytic_acc_2_report_acc_analytic_line_to_invoice" model="ir.actions.act_window">
<field name="domain">[]</field>
<field name="context">{'search_default_account_id': [active_id], 'default_account_id': active_id,'search_default_to_invoice': 1}</field>
<field name="name">To Invoice</field>
<field name="res_model">account.analytic.line</field>
<field name="src_model">account.analytic.account</field>
</record>
</data>
</openerp>
+19 -17
View File
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-05-24 17:37+0000\n"
"Last-Translator: Numérigraphe <Unknown>\n"
"PO-Revision-Date: 2012-09-03 22:20+0000\n"
"Last-Translator: Nicolas JEUDY <njeudy@simplee.fr>\n"
"Language-Team: French <fr@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: 2012-08-28 06:42+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/import_sugarcrm.py:1105
@@ -38,7 +38,7 @@ msgstr "(Prochainement)"
#. module: import_sugarcrm
#: field:import.sugarcrm,document:0
msgid "Documents"
msgstr ""
msgstr "Documents"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
@@ -58,7 +58,7 @@ msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,contact:0
msgid "Contacts"
msgstr ""
msgstr "Contacts"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
@@ -79,7 +79,7 @@ msgstr "Nom de l'instance"
#. module: import_sugarcrm
#: field:import.sugarcrm,project_task:0
msgid "Project Tasks"
msgstr ""
msgstr "Tâches du projet"
#. module: import_sugarcrm
#: field:import.sugarcrm,email_from:0
@@ -134,27 +134,27 @@ msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,employee:0
msgid "Employee"
msgstr ""
msgstr "Employé"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Document"
msgstr ""
msgstr "Document"
#. module: import_sugarcrm
#: help:import.sugarcrm,document:0
msgid "Check this box to import sugarCRM Documents into OpenERP documents"
msgstr ""
msgstr "Cochez cette case pour importer les documents SugarCRM dans OpenERP"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Import Data From SugarCRM"
msgstr ""
msgstr "Importee les données de SugarCRM"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "CRM"
msgstr ""
msgstr "CRM"
#. module: import_sugarcrm
#: view:import.message:0
@@ -166,7 +166,7 @@ msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,call:0
msgid "Calls"
msgstr ""
msgstr "Appels"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
@@ -176,7 +176,7 @@ msgstr ""
#. module: import_sugarcrm
#: view:import.message:0
msgid "_Ok"
msgstr ""
msgstr "_Valider"
#. module: import_sugarcrm
#: help:import.sugarcrm,opportunity:0
@@ -184,11 +184,13 @@ msgid ""
"Check this box to import sugarCRM Leads and Opportunities into OpenERP Leads "
"and Opportunities"
msgstr ""
"Cochez cette case pour importer les Pistes et les Opportunités SugarCRM dans "
"OpenERP."
#. module: import_sugarcrm
#: field:import.sugarcrm,email_history:0
msgid "Email and Note"
msgstr ""
msgstr "Email et note"
#. module: import_sugarcrm
#: help:import.sugarcrm,url:0
@@ -208,12 +210,12 @@ msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "_Import"
msgstr ""
msgstr "_Importer"
#. module: import_sugarcrm
#: field:import.sugarcrm,user:0
msgid "User"
msgstr ""
msgstr "Utilisateur"
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/import_sugarcrm.py:1105
+5 -5
View File
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-09 00:36+0000\n"
"PO-Revision-Date: 2012-05-10 17:39+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2012-09-03 17:14+0000\n"
"Last-Translator: Erwin <Unknown>\n"
"Language-Team: Dutch <nl@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: mail
#: field:mail.compose.message,subtype:0 field:mail.message,subtype:0
@@ -196,7 +196,7 @@ msgstr "Ontvangers"
#. module: mail
#: model:ir.model,name:mail.model_mail_compose_message
msgid "Email composition wizard"
msgstr ""
msgstr "E-mail samenstellen wizard"
#. module: mail
#: field:mail.compose.message,res_id:0 field:mail.message,res_id:0
+5 -8
View File
@@ -28,12 +28,8 @@ from osv import fields
from tools.translate import _
class mail_group(osv.Model):
"""
A mail_group is a collection of users sharing messages in a discussion
group. Group users are users that follow the mail group, using the
subscription/follow mechanism of OpenSocial. A mail group has nothing
in common with res.users.group.
"""
""" A mail_group is a collection of users sharing messages in a discussion
group. The group mechanics are based on the followers. """
_description = 'Discussion group'
_name = 'mail.group'
_inherit = ['mail.thread']
@@ -131,9 +127,10 @@ class mail_group(osv.Model):
search_ref = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'mail', 'view_message_search')
params = {
'search_view_id': search_ref and search_ref[1] or False,
'domain': [('model','=','mail.group'),('res_id','=',mail_group_id)],
'domain': [('model','=','mail.group'), ('res_id','=',mail_group_id)],
'context': {'default_model': 'mail.group', 'default_res_id': mail_group_id},
'res_model': 'mail.message',
'thread_level': 2
'thread_level': 1,
}
cobj = self.pool.get('ir.actions.client')
newref = cobj.copy(cr, uid, ref[1], default={'params': str(params), 'name': vals['name']}, context=context)
+5 -5
View File
@@ -56,11 +56,11 @@
<field name="arch" type="xml">
<form string="Group Form" version="7.0">
<sheet class="openerp_mail_group_sheet">
<field name="image_small" widget='image' class="oe_avatar oe_left"/>
<field name="image" widget='image' class="oe_avatar oe_left" options='{"preview_image": "image_medium"}'/>
<div class="oe_title">
<div class="oe_edit_only">
<label for="name" string="Group Name"/>
</div>
<label for="name" string="Group Name"/>
</div>
<h1><field name="name"/></h1>
<div name="alias_box" colspan="4" attrs="{'invisible': [('alias_domain', '=', False)]}">
<field name="alias_id" invisible="1" required="0"/>
@@ -116,7 +116,7 @@
<!-- group record !-->
<record id="action_view_groups" model="ir.actions.act_window">
<field name="name">Groups</field>
<field name="name">Join a group</field>
<field name="res_model">mail.group</field>
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
@@ -125,6 +125,6 @@
<!-- left-side menu: Groups !-->
<menuitem id="mail_group_root" parent="mail_feeds_main" sequence="12" name="My Groups"/>
<menuitem id="mail_allgroups" parent="mail_feeds" sequence="12" action="action_view_groups"/>
<menuitem id="mail_allgroups" parent="mail_group_root" sequence="100" action="action_view_groups"/>
</data>
</openerp>
+1 -1
View File
@@ -12,7 +12,7 @@
<div>
by <field name="author_id" class="oe_inline" string="User"/> on <field name="date" class="oe_inline"/>
<button name="%(action_email_compose_message_wizard)d" string="Reply" type="action" icon="terp-mail-replied"
context="{'mail.compose.message.mode':'reply', 'message_id':active_id}" states='received,sent,exception,cancel'/>
context="{'default_composition_mode':'reply', 'default_parent_id': active_id}" states='received,sent,exception,cancel'/>
</div>
<notebook colspan="4">
<page string="Message Details">
+4 -2
View File
@@ -90,13 +90,15 @@
<record id="action_mail_all_feeds" model="ir.actions.client">
<field name="name">News Feed</field>
<field name="tag">mail.wall</field>
<field name="params" eval="&quot;{'domain': [('notification_ids.partner_id.user_ids', 'in', [uid])] }&quot;"/>
<field name="params" eval="&quot;{'domain': [('notification_ids.partner_id.user_ids', 'in', [uid])],
'context': {'default_model': 'res.users', 'default_res_id': uid} }&quot;"/>
</record>
<record id="action_mail_my_feeds" model="ir.actions.client">
<field name="name">My Feeds</field>
<field name="tag">mail.wall</field>
<field name="params" eval="&quot;{'domain': [('author_id.user_ids', 'in', [uid])]}&quot;"/>
<field name="params" eval="&quot;{'domain': [('author_id.user_ids', 'in', [uid])],
'context': {'default_model': 'res.users', 'default_res_id': uid} }&quot;"/>
</record>
</data>
</openerp>
+13 -3
View File
@@ -3,7 +3,7 @@
<data>
<!-- Top menu item -->
<menuitem name="Feeds"
<menuitem name="Home"
id="mail_feeds_main"
groups="base.group_user"
sequence="10"/>
@@ -11,8 +11,18 @@
<!-- Left-side menu: Feeds -->
<menuitem id="mail_feeds" name="Feeds" parent="mail_feeds_main" groups="base.group_user" sequence="10"/>
<menuitem id="mail_wallfeeds" name="News Feed" parent="mail_feeds" action="action_mail_all_feeds" sequence="10"/>
<menuitem id="mail_myfeeds" name="My Feeds" parent="mail_feeds" action="action_mail_my_feeds" sequence="11"/>
<record id="mail_wallfeeds" model="ir.ui.menu">
<field name="name">My Feeds</field>
<field name="sequence" eval="10"/>
<field name="action" ref="action_mail_all_feeds"/>
<field name="parent_id" ref="mail_feeds"/>
</record>
<record id="mail_myfeeds" model="ir.ui.menu">
<field name="name">My Posts</field>
<field name="sequence" eval="11"/>
<field name="action" ref="action_mail_my_feeds"/>
<field name="parent_id" ref="mail_feeds"/>
</record>
</data>
</openerp>
+4
View File
@@ -96,6 +96,10 @@ class res_users(osv.Model):
alias_pool.unlink(cr, uid, alias_ids, context=context)
return res
def message_post(self, cr, uid, thread_id, **kwargs):
partner_id = self.pool.get('res.users').browse(cr, uid, thread_id)[0].partner_id.id
return self.pool.get('res.partner').message_post(cr, uid, partner_id, **kwargs)
class res_users_mail_group(osv.Model):
""" Update of res.users class
- if adding groups to an user, check mail.groups linked to this user
+1 -5
View File
@@ -8,7 +8,7 @@
margin: 0;
}
.openerp .oe_mail_recthread ul, .openerp .oe_mail_recthread li {
.openerp .oe_chatter ul, .openerp .oe_chatter li {
list-style-type: none;
padding: 0;
margin: 0;
@@ -78,10 +78,6 @@
overflow: auto;
}
.openerp div.oe_mail_recthread {
/*overflow: auto;*/
}
.openerp div.oe_mail_recthread_main {
float: left;
width: 560px;
+121 -169
View File
@@ -17,9 +17,15 @@ openerp.mail = function(session) {
*/
session.web.FormView = session.web.FormView.extend({
// #FIXME TODO: CHECK WITH NEW BRANCH
// TDE FIXME TODO: CHECK WITH NEW BRANCH
do_action: function(action, on_close) {
if (action.res_model == 'mail.compose.message' && this.fields && this.fields.message_ids && this.fields.message_ids.view.get("actual_mode") != 'create') {
if (action.res_model == 'mail.compose.message' &&
this.fields && this.fields.message_ids &&
this.fields.message_ids.view.get("actual_mode") != 'create') {
// debug
console.groupCollapsed('FormView do_action on mail.compose.message');
console.log('message_ids field:', this.fields.message_ids);
console.groupEnd();
var record_thread = this.fields.message_ids;
var thread = record_thread.thread;
thread.instantiate_composition_form('comment', true, false, 0, action.context);
@@ -40,14 +46,11 @@ openerp.mail = function(session) {
* the various Chatter widgets.
*
* Some regular expressions not used anymore, kept because I want to
* - (^|\s)@((\w|@|\.)*): @login@log.log, supports inner '@' for
* logins that are emails
* - (^|\s)@((\w|@|\.)*): @login@log.log
* 1. '(void)'
* 2. login@log.log
* - (^|\s)\[(\w+).(\w+),(\d)\|*((\w|[@ .,])*)\]: [ir.attachment,3|My Label],
* for internal links to model ir.attachment, id=3, and with
* optional label 'My Label'. Note that having a '|Label' is not
* mandatory, because the regex should still be correct.
* for internal links
* 1. '(void)'
* 2. 'ir'
* 3. 'attachment'
@@ -62,7 +65,7 @@ openerp.mail = function(session) {
return session_prefix + '/web/binary/image?session_id=' + session_id + '&model=' + model + '&field=' + field + '&id=' + (id || '');
},
/** checks if tue current user is the message author */
/** check if the current user is the message author */
is_author: function (widget, message_user_id) {
return (widget.session && widget.session.uid != 0 && widget.session.uid == message_user_id);
},
@@ -71,7 +74,6 @@ openerp.mail = function(session) {
* - :name - shortcut to an image
*/
do_replace_expressions: function (string) {
var self = this;
var icon_list = ['al', 'pinky']
/* special shortcut: :name, try to find an icon if in list */
var regex_login = new RegExp(/(^|\s):((\w)*)/g);
@@ -93,8 +95,7 @@ openerp.mail = function(session) {
* ------------------------------------------------------------
*
* This widget handles the display of a form to compose a new message.
* This form is an OpenERP form_view, build on a mail.compose.message
* wizard.
* This form is a mail.compose.message form_view.
*/
mail.ComposeMessage = session.web.Widget.extend({
@@ -102,14 +103,10 @@ openerp.mail = function(session) {
/**
* @param {Object} parent parent
* @param {Object} [options]
* @param {Object} [options.context] context
* @param {String} [context.res_model] res_model of document [REQUIRED]
* @param {Number} [context.res_id] res_id of record [REQUIRED]
* @param {String} [context.composition_mode] mail.compose.message.mode
* (see composition wizard)
* @param {Number} [context.msg_id] id of a message in case we are in
* reply mode
* @param {Object} [options]
* @param {Object} [options.context] context passed to the
* mail.compose.message DataSetSearch. Please refer to this model
* for more details about fields and default values.
*/
init: function (parent, options) {
var self = this;
@@ -120,9 +117,9 @@ openerp.mail = function(session) {
this.options.form_xml_id = options.form_xml_id || 'email_compose_message_wizard_form_chatter';
this.options.form_view_id = options.form_view_id || false;
// debug
console.groupCollapsed('New ComposeMessage: model', this.options.context.default_res_model, ', id', this.options.context.default_res_id);
console.log('context:', this.options.context);
console.groupEnd();
// console.groupCollapsed('New ComposeMessage: model', this.options.context.default_res_model, ', id', this.options.context.default_res_id);
// console.log('context:', this.options.context);
// console.groupEnd();
},
start: function () {
@@ -132,33 +129,22 @@ openerp.mail = function(session) {
this.$el.find('img.oe_mail_icon').attr('src', user_avatar);
this.$el.find('div.oe_mail_msg_content').empty();
// create a context for the dataset and default_get of the wizard
var context = this._update_context({});
console.log(context);
var context = _.extend({}, this.options.context);
this.ds_compose = new session.web.DataSetSearch(this, 'mail.compose.message', context);
// find the id of the view to display in the chatter form
var data_ds = new session.web.DataSetSearch(this, 'ir.model.data');
return data_ds.call('get_object_reference', ['mail', this.options.form_xml_id]).pipe(this.proxy('create_form_view'));
},
/** Update the context of the compose wizard */
_update_context: function (dest_context) {
// TDE TOCHECK: after posting, back to reply mode !
_.extend(dest_context, this.options.context, {
'mail.compose.message.mode': this.options.context.composition_mode,
});
if (this.options.context.composition_mode == 'comment') {
// _.extend(dest_context, {'default_res_id': this.options.res_id});
if (this.options.form_view_id) {
return this.create_form_view();
}
else if (this.options.context.composition_mode == 'reply') {
_.extend(dest_context, {'active_id': this.options.context.msg_id});
else {
var data_ds = new session.web.DataSetSearch(this, 'ir.model.data');
return data_ds.call('get_object_reference', ['mail', this.options.form_xml_id]).pipe(this.proxy('create_form_view'));
}
return dest_context
},
/** Create a FormView, then append it to the to widget DOM. */
create_form_view: function (form_view_id) {
this.options.form_view_id = form_view_id[1] || false;
create_form_view: function (new_form_view_id) {
var self = this;
this.options.form_view_id = (new_form_view_id && new_form_view_id[1]) || this.options.form_view_id;
// destroy previous form_view if any
if (this.form_view) { this.form_view.destroy(); }
// create the FormView
@@ -177,14 +163,15 @@ openerp.mail = function(session) {
},
/**
* Reinitialize the widget field values to the default values. The
* purpose is to avoid to destroy and re-build a form view. Default
* values are therefore given as for an on_change. */
refresh: function (options_update_values) {
var self = this;
this.options.context = _.extend(this.options.context, options_update_values || {});
* Reinitialize the widget field values to the default values obtained
* using default_get on mail.compose.message. This allows to reinitialize
* the widget without having to rebuild a complete form view.
* @param {Object} new_context: context of the refresh */
refresh: function (new_context) {
if (! this.form_view) return;
this.ds_compose.context = this._update_context(this.ds_compose.context);
var self = this;
this.options.context = _.extend(this.options.context, new_context || {});
this.ds_compose.context = _.extend(this.ds_compose.context, this.options.context);
return this.ds_compose.call('default_get', [
['subject', 'body_text', 'body', 'attachment_ids', 'partner_ids', 'composition_mode',
'model', 'res_id', 'parent_id', 'content_subtype'],
@@ -192,13 +179,6 @@ openerp.mail = function(session) {
]).then( function (result) { self.form_view.on_processed_onchange({'value': result}, []); });
},
/**
* Override-hack of do_action: clean the form */
do_action: function(action, on_close) {
console.log('compose_message do_action', action, on_close);
return this._super(action, on_close);
},
/**
* Bind events in the widget. Each event is slightly described
* in the function. */
@@ -223,9 +203,6 @@ openerp.mail = function(session) {
* - - sub message (parent_id = root message)
* - - - sub sub message (parent id = sub message)
* - - sub message (parent_id = root message)
* This widget has 2 ways of initialization, either you give records
* to be rendered, either it will fetch [limit] messages related to
* [res_model]:[res_id].
*/
mail.Thread = session.web.Widget.extend({
@@ -234,71 +211,54 @@ openerp.mail = function(session) {
/**
* @param {Object} parent parent
* @param {Object} [options]
* @param {String} [options.res_model] res_model of document [REQUIRED]
* @param {Number} [options.res_id] res_id of record [REQUIRED]
* @param {Number} [options.uid] user id [REQUIRED]
* @param {Bool} [options.parent_id=false] parent_id of message
* @param {Number} [options.thread_level=0] number of levels in the thread
* (only 0 or 1 currently)
* @param {Bool} [options.is_wall=false] thread is displayed in the wall
* @param {Number} [options.msg_more_limit=150] number of character to
* @param {Object} [options.context] context of the thread. It should
contain at least default_model, default_res_id. Please refer to
the ComposeMessage widget for more information about it.
* @param {Number} [options.thread_level=0] number of thread levels
* @param {Number} [options.message_ids=null] ids for message_fetch
* @param {Number} [options.message_data=null] already formatted message
data, for subthreads getting data from their parent
* @param {Boolean} [options.composer] use the advanced composer, or
the default basic textarea if not set
* @param {Number} [options.truncate_limit=250] number of character to
* display before having a "show more" link; note that the text
* will not be truncated if it does not have 110% of the parameter
* (ex: 110 characters needed to be truncated and be displayed as
* a 100-characters message)
* @param {Number} [options.limit=100] maximum number of messages to fetch
* @param {Number} [options.offset=0] offset for fetching messages
* @param {Number} [options.records=null] records to show instead of fetching messages
*/
init: function(parent, options) {
console.log(parent);
this._super(parent);
// options
this.options = options || {};
this.options.domain = options.domain || [];
this.options.context = options.context || {};
// check in parents, should not define multiple times
this.options.context.res_model = options.context.res_model || 'mail.thread';
this.options.context.res_id = options.context.res_id || false;
this.options.context.parent_id = options.context.parent_id || false;
this.options.context = _.extend({
default_model: 'mail.thread',
default_res_id: 0,
default_parent_id: false }, options.context || {});
this.options.thread_level = options.thread_level || 0;
this.options.composer = options.composer || false;
// TDE: not sure, here for testing / compatibility
this.options.records = options.records || null;
this.options.ids = options.ids || null;
this.options.message_ids = options.message_ids || null;
this.options.message_data = options.message_data || null;
// datasets and internal vars
this.ds_post = new session.web.DataSetSearch(this, this.options.context.res_model);
this.ds_notif = new session.web.DataSetSearch(this, 'mail.notification');
this.ds_msg = new session.web.DataSetSearch(this, 'mail.message');
this.ds_thread = new session.web.DataSetSearch(this, this.options.context.default_model);
this.ds_notification = new session.web.DataSetSearch(this, 'mail.notification');
this.ds_message = new session.web.DataSetSearch(this, 'mail.message');
// display customization vars
this.display = {};
this.display.truncate_limit = options.truncate_limit || 250;
this.display.show_header_compose = options.show_header_compose || false;
this.display.show_reply = options.show_reply || false;
this.display.show_delete = options.show_delete || false;
this.display.show_hide = options.show_hide || false;
this.display.show_reply_by_email = options.show_reply_by_email || false;
this.display.show_more = options.show_more || false;
// for search view
this.search = {'domain': [], 'context': {}, 'groupby': {}}
this.search_results = {'domain': [], 'context': {}, 'groupby': {}}
// debug
console.groupCollapsed('New Thread: model', this.options.context.res_model, 'id', this.options.context.res_id, 'parent_id', this.options.context.parent_id, 'thread level', this.options.thread_level);
console.log('records:', this.options.records, 'ids:', this.options.ids);
console.log('options:', this.options);
console.log('display:', this.display);
console.groupEnd();
this.display = {
truncate_limit: options.truncate_limit || 250,
show_header_compose: options.show_header_compose || false,
show_reply: options.show_reply || false,
show_delete: options.show_delete || false,
show_hide: options.show_hide || false,
show_reply_by_email: options.show_reply_by_email || false,
show_more: options.show_more || false,
}
},
start: function() {
// TDE TODO: check for deferred, not sure it is correct
this._super.apply(this, arguments);
this.bind_events();
// display messages: either given by parent, either fetch new ones
if (this.options.records) var display_done = this.message_display(this.options.records);
else var display_done = this.message_fetch();
// customize display
this.display_user_avatar();
$.when(display_done).then(this.proxy('do_customize_display'));
// fetch and display message, using message_ids if set
var display_done = $.when(this.message_fetch(true, [], {})).then(this.proxy('do_customize_display'));
// add message composition form view
if (this.display.show_header_compose && this.options.composer) {
var compose_done = this.instantiate_composition_form();
@@ -309,6 +269,7 @@ openerp.mail = function(session) {
/** Customize the display
* - show_header_compose: show the composition form in the header */
do_customize_display: function() {
this.display_user_avatar();
if (this.display.show_header_compose) { this.$el.find('div.oe_mail_thread_action').eq(0).show(); }
},
@@ -366,7 +327,10 @@ openerp.mail = function(session) {
event.stopPropagation();
var msg_id = event.srcElement.dataset.msg_id;
if (! msg_id) return false;
self.compose_message_widget.refresh({'composition_mode': 'reply', 'msg_id': parseInt(msg_id)});
self.compose_message_widget.refresh({
'default_composition_mode': 'reply',
'default_parent_id': parseInt(msg_id),
'default_content_subtype': 'html'} );
});
},
@@ -375,24 +339,26 @@ openerp.mail = function(session) {
* Normally it should be called only when clicking on 'Post/Send'
* in the composition form. */
do_action: function(action, on_close) {
console.log('thread do_action', action, on_close, this);
this.message_clean();
this.message_fetch();
if (this.compose_message_widget) {
this.compose_message_widget.refresh(); }
this.compose_message_widget.refresh({
'default_composition_mode': 'comment',
'default_parent_id': this.options.default_parent_id,
'default_content_subtype': 'plain'} );
}
return this._super(action, on_close);
},
/** Instantiate the composition form, with parameters coming from thread parameters */
instantiate_composition_form: function(mode, formatting, msg_id, context) {
/** Instantiate the composition form, with every parameters in context
or in the widget context. */
instantiate_composition_form: function(context) {
if (this.compose_message_widget) {
this.compose_message_widget.destroy();
}
this.compose_message_widget = new mail.ComposeMessage(this, {
'context': {
'default_model': this.options.context.res_model, 'default_res_id': this.options.context.res_id,
'composition_mode': mode || 'comment', 'msg_id': msg_id }
});
'context': _.extend(context || {}, this.options.context),
});
var composition_node = this.$el.find('div.oe_mail_thread_action');
composition_node.empty();
var compose_done = this.compose_message_widget.appendTo(composition_node);
@@ -405,35 +371,33 @@ openerp.mail = function(session) {
},
/** Fetch messages
* @param {Array} additional_domain
* @param {Object} additional_context
* @param {Bool} initial_mode: initial mode: try to use message_data or
* message_ids, if nothing available perform a message_read; otherwise
* directly perform a message_read
* @param {Array} additional_domain: added to options.domain
* @param {Object} additional_context: added to options.context
*/
message_fetch: function (additional_domain, additional_context) {
message_fetch: function (initial_mode, additional_domain, additional_context) {
var self = this;
// Update the domain and context
this.search['domain'] = _.union(this.options.domain, this.search_results.domain);
this.search['context'] = _.extend(this.options.context, this.search_results.context);
if (additional_domain) var fetch_domain = this.search['domain'].concat(additional_domain);
else var fetch_domain = this.search['domain'];
if (additional_context) var fetch_context = _.extend(this.search['context'], additional_context);
else var fetch_context = this.search['context'];
// TODO first use: use IDS, otherwise set false
var read_defer = this.ds_msg.call('message_read',
[false, fetch_domain, this.options.thread_level, undefined, fetch_context]
// domain and context: options + additional
fetch_domain = _.flatten([this.options.domain, additional_domain || []], true)
fetch_context = _.extend(this.options.context, additional_context || {})
// if message_ids is set: try to use it
if (initial_mode && this.options.message_data) {
return this.message_display(this.options.message_data);
}
return this.ds_message.call('message_read',
[(initial_mode && this.options.message_ids) || false, fetch_domain, this.options.thread_level, undefined, fetch_context]
).then(this.proxy('message_display'));
return read_defer;
},
/* Display a list of records
* - */
* A specific case is done for 'expandable' messages that are messages
displayed under a 'show more' button form
*/
message_display: function (records) {
var self = this;
var _expendable = false;
console.groupCollapsed('message_display');
console.log('records', records)
console.groupEnd();
_(records).each(function (record) {
if (record.type == 'expandable') {
_expendable = true;
@@ -443,14 +407,19 @@ openerp.mail = function(session) {
}
else {
self.display_record(record);
// if (self.options.thread_level >= 0) {
self.thread = new mail.Thread(self, {
'context': { 'res_model': record.model, 'res_id': record.res_id, 'parent_id': record.id},
'context': {
'default_model': record.model,
'default_id': record.res_id,
'default_parent_id': record.id },
'message_data': record.child_ids, 'thread_level': self.options.thread_level-1,
'show_header_compose': false, 'show_reply': self.options.thread_level > 1,
'show_hide': self.display.show_hide, 'show_delete': self.display.show_delete,
'uid': self.options.uid, 'records': record.child_ids, 'thread_level': (self.options.thread_level-1),
});
self.$el.find('li.oe_mail_thread_msg:last').append('<div class="oe_mail_thread_subthread"/>');
self.thread.appendTo(self.$el.find('div.oe_mail_thread_subthread:last'));
// }
}
});
if (! _expendable) {
@@ -522,7 +491,7 @@ openerp.mail = function(session) {
/** Action: 'shows more' to fetch new messages */
do_message_fetch: function () {
return this.message_fetch(this.fetch_more_domain, this.fetch_more_context);
return this.message_fetch(false, this.fetch_more_domain, this.fetch_more_context);
},
// TDE: keep currently because need something similar
@@ -572,19 +541,18 @@ openerp.mail = function(session) {
/** mail_thread widget: thread of comments */
mail.RecordThread = session.web.form.AbstractField.extend({
// QWeb template to use when rendering the object
template: 'mail.record_thread',
init: function() {
this._super.apply(this, arguments);
this.options.domain = this.options.domain || [];
this.options.context = {'res_model': 'mail.thread', 'res_id': false, 'parent_id': false};
this.options.context = {'default_model': 'mail.thread', 'default_res_id': false};
this.options.thread_level = this.options.thread_level || 0;
this.thread_list = [];
},
start: function() {
// this._super.apply(this, arguments);
this._super.apply(this, arguments);
// NB: all the widget should be modified to check the actual_mode property on view, not use
// any other method to know if the view is in create mode anymore
this.view.on("change:actual_mode", this, this._check_visibility);
@@ -608,14 +576,14 @@ openerp.mail = function(session) {
return;
}
// update context
this.options.context['res_id'] = this.view.datarecord.id;
this.options.context['res_model'] = this.view.model;
_.extend(this.options.context, {
default_res_id: this.view.datarecord.id,
default_model: this.view.model });
// create and render Thread widget
this.$el.find('div.oe_mail_recthread_main').empty();
for (var i in this.thread_list) { this.thread_list[i].destroy(); }
console.log(this);
var thread = new mail.Thread(self, {
'context': this.options.context, 'uid': this.session.uid,
'context': this.options.context,
'thread_level': this.options.thread_level, 'show_header_compose': true,
'show_delete': true, 'composer': true });
this.thread_list.push(thread);
@@ -644,7 +612,7 @@ openerp.mail = function(session) {
* @param {Object} [options]
* @param {Number} [options.domain] domain on the Wall, is an array.
* @param {Number} [options.domain] context, is an object. It should
* contain res_model, res_id, parent_id, to give it to the threads.
* contain default_model, default_res_id, to give it to the threads.
*/
init: function (parent, options) {
this._super(parent);
@@ -653,7 +621,7 @@ openerp.mail = function(session) {
this.options.context = options.context || {};
this.options.thread_level = options.thread_level || 1;
this.thread_list = [];
this.ds_msg = new session.web.DataSet(this, 'mail.message');
this.ds_msg = new session.web.DataSetSearch(this, 'mail.message');
// for search view
this.search = {'domain': [], 'context': {}, 'groupby': {}}
this.search_results = {'domain': [], 'context': {}, 'groupby': {}}
@@ -662,29 +630,15 @@ openerp.mail = function(session) {
start: function () {
this._super.apply(this, arguments);
var search_view_ready = this.load_search_view({}, false);
var thread_displayed = this.display_thread();
var thread_displayed = this.message_display();
return (search_view_ready && thread_displayed);
},
destroy: function () {
for (var i in this.thrad_list) { this.thread_list[i].destroy(); }
for (var i in this.thread_list) { this.thread_list[i].destroy(); }
this._super.apply(this, arguments);
},
/**
* Override-hack of do_action: automatically reload the chatter.
* Normally it should be called only when clicking on 'Post/Send'
* in the composition form. */
//TDE: still useful ? TO CHECK
do_action: function(action, on_close) {
console.log('wall do_action');
if (this.compose_message_widget) {
this.compose_message_widget.refresh(); }
this.message_clean();
this.display_thread();
return this._super(action, on_close);
},
/**
* Load the mail.message search view
* @param {Object} defaults ??
@@ -717,7 +671,7 @@ openerp.mail = function(session) {
self.search_results['domain'] = results.domain;
self.search_results['groupby'] = results.group_by;
self.message_clean();
return self.display_thread();
return self.message_display();
});
},
@@ -726,14 +680,12 @@ openerp.mail = function(session) {
this.$el.find('ul.oe_mail_wall_threads').empty();
},
/** Display comments
* @param {Array} records tree structure of records
*/
display_thread: function () {
/** Display the Wall threads */
message_display: function () {
var render_res = session.web.qweb.render('mail.wall_thread_container', {});
$('<li class="oe_mail_wall_thread">').html(render_res).appendTo(this.$el.find('ul.oe_mail_wall_threads'));
var thread = new mail.Thread(this, {
'domain': this.options.domain, 'context': this.options.context, 'uid': this.session.uid,
'domain': this.options.domain, 'context': this.options.context,
'thread_level': this.options.thread_level, 'composer': true,
// display options
'show_header_compose': true, 'show_reply': this.options.thread_level > 0,
+1 -1
View File
@@ -47,7 +47,7 @@
Template used to display the communication history in documents
form view.
-->
<div t-name="mail.record_thread" class="oe_mail_recthread">
<div t-name="mail.record_thread">
<!-- <h4>History and Comments</h4> -->
<div class="oe_mail_recthread_main">
<!-- contains the document thread -->
+2 -2
View File
@@ -354,7 +354,7 @@ class test_mail(common.TransactionCase):
# CASE1: comment group_pigs with body_text and subject
compose_id = mail_compose.create(cr, uid,
{'subject': _subject, 'body_text': _body_text, 'partner_ids': [(4, p_c_id), (4, p_d_id)]},
{'mail.compose.message.mode': 'comment', 'default_model': 'mail.group', 'default_res_id': self.group_pigs_id})
{'default_composition_mode': 'comment', 'default_model': 'mail.group', 'default_res_id': self.group_pigs_id})
compose = mail_compose.browse(cr, uid, compose_id)
# Test: mail.compose.message: model, res_id
self.assertEqual(compose.model, 'mail.group', 'mail.compose.message incorrect model')
@@ -379,7 +379,7 @@ class test_mail(common.TransactionCase):
message.write({'subject': _subject})
compose_id = mail_compose.create(cr, uid,
{'attachment_ids': [(0, 0, _attachments[0]), (0, 0, _attachments[1])]},
{'mail.compose.message.mode': 'reply', 'default_model': 'mail.thread', 'default_res_id': self.group_pigs_id, 'active_id': message.id})
{'default_composition_mode': 'reply', 'default_model': 'mail.thread', 'default_res_id': self.group_pigs_id, 'default_parent_id': message.id})
compose = mail_compose.browse(cr, uid, compose_id)
# Test: form view methods
+4 -5
View File
@@ -35,8 +35,7 @@ class mail_compose_message(osv.TransientModel):
""" Generic message composition wizard. You may inherit from this wizard
at model and view levels to provide specific features.
The behavior of the wizard can be modified through the context key
mail.compose.message.mode:
The behavior of the wizard depends on the composition_mode field:
- 'reply': reply to a previous message. The wizard is pre-populated
via ``get_message_data``.
- 'comment': new post on a record. The wizard is pre-populated via
@@ -56,10 +55,11 @@ class mail_compose_message(osv.TransientModel):
- default_model or active_model
- default_res_id or active_id
- reply: active_id of a message the user replies to
- active_id: ID of a mail.message to which we are replying
- default_parent_id or message_id or active_id: ID of the
mail.message we reply to
- message.res_model or default_model
- message.res_id or default_res_id
- mass_mailing mode: model and IDs of records the user mass-mails
- mass_mail: model and IDs of records the user mass-mails
- active_ids: record IDs
- default_model or active_model
"""
@@ -118,7 +118,6 @@ class mail_compose_message(osv.TransientModel):
'body_text': lambda self,cr, uid, context={}: False,
'body': lambda self,cr, uid, context={}: '',
'subject': lambda self,cr, uid, context={}: False,
'partner_ids': [],
}
def notify(self, cr, uid, newid, context=None):
@@ -64,7 +64,7 @@
</record>
<!-- Tranisition -->
<!-- Transition -->
<record id="marketing_campaign_transition_0" model="marketing.campaign.transition">
<field model="marketing.campaign.activity" name="activity_from_id" ref = "marketing_campaign_activity_0"/>
<field model="marketing.campaign.activity" name="activity_to_id" ref = "marketing_campaign_activity_1"/>
-1
View File
@@ -46,7 +46,6 @@ invoice and send propositions for membership renewal.
'membership_view.xml',
'report/report_membership_view.xml',
'process/membership_process.xml',
'membership_data.xml'
],
'demo': ['membership_demo.xml'],
'test': ['test/test_membership.yml'],
+1 -9
View File
@@ -146,7 +146,7 @@ class membership_line(osv.osv):
'date_to': fields.date('To', readonly=True),
'date_cancel': fields.date('Cancel date'),
'date': fields.date('Join Date', help="Date on which member has joined the membership"),
'member_price': fields.float('Member Price', digits_compute= dp.get_precision('Product Price'), required=True, help='Amount for the membership'),
'member_price': fields.float('Membership Fee', digits_compute= dp.get_precision('Product Price'), required=True, help='Amount for the membership'),
'account_invoice_line': fields.many2one('account.invoice.line', 'Account Invoice line', readonly=True),
'account_invoice_id': fields.related('account_invoice_line', 'invoice_id', type='many2one', relation='account.invoice', string='Invoice', readonly=True),
'state': fields.function(_state,
@@ -444,14 +444,6 @@ class Partner(osv.osv):
Partner()
class product_template(osv.osv):
_inherit = 'product.template'
_columns = {
'member_price': fields.float('Member Price', digits_compute= dp.get_precision('Product Price')),
}
product_template()
class Product(osv.osv):
def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
-31
View File
@@ -1,31 +0,0 @@
<?xml version="1.0" ?>
<openerp>
<data noupdate="1">
<!--
Price type
-->
<record model="product.price.type" id="product_price_type_memberprice" >
<field name="name">Member Price</field>
<field name="field">member_price</field>
</record>
<!--
Price list
-->
<record model="product.pricelist" id="list1m">
<field name="name">Member Sale Pricelist</field>
<field name="type">sale</field>
</record>
<record model="product.pricelist.version" id="ver1m">
<field name="pricelist_id" ref="list1m"/>
<field name="name">Member Sale Pricelist Version</field>
</record>
<record model="product.pricelist.item" id="item1m">
<field name="price_version_id" ref="ver1m"/>
<field name="base" ref="product_price_type_memberprice" />
<field name="name">Member Sale Pricelist Line</field>
</record>
</data>
</openerp>
+2 -14
View File
@@ -88,11 +88,11 @@
<field name="arch" type="xml">
<page string="Information" position="after">
<page string="Membership">
<group>
<group col="1">
<group>
<field name="membership" readonly="0"/>
</group>
<group>
<group attrs="{'invisible':[('membership','=',False)]}">
<field name="membership_date_from" readonly="0" attrs="{'required':[('membership','=',True)]}"/>
<field name="membership_date_to" readonly="0" attrs="{'required':[('membership','=',True)]}"/>
</group>
@@ -270,17 +270,5 @@
<!-- MEMBERSHIP/REPORTING -->
<menuitem name="Reporting" id="base.menu_report_association" parent="base.menu_association" sequence="20"/>
<!-- View for product.product object inherited from product module -->
<record model="ir.ui.view" id="view_product_form_inherit1">
<field name="name">product.normal.form</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<field name="list_price" position="after">
<field name="member_price" groups="base.group_user"/>
</field>
</field>
</record>
</data>
</openerp>
+25 -32
View File
@@ -501,7 +501,7 @@
<field name="res_model">mrp.bom</field>
<field name="view_type">form</field>
<field name="view_id" ref="mrp_bom_component_tree_view"/>
<field name="domain">[('bom_id','!=',False)]</field>
<field name="domain">[]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a component to a bill of material.
@@ -524,6 +524,7 @@
action="mrp_bom_form_action2"
id="menu_mrp_bom_form_action2"
parent="menu_mrp_configuration"
groups="base.group_no_one"
sequence="20"/>
<record id="action2" model="ir.actions.act_window">
@@ -647,50 +648,42 @@
<field name="state" widget="statusbar" statusbar_visible="draft,ready,in_production,done" statusbar_colors='{"picking_except":"red","confirmed":"blue"}'/>
</header>
<sheet>
<label for="product_id" class="oe_edit_only"/>
<h1>
<field name="product_id" on_change="product_id_change(product_id)" domain="[('bom_ids','&lt;&gt;',False),('bom_ids.bom_id','=',False)]" class="oe_inline"/>
</h1>
<label for="product_qty" class="oe_edit_only"/>
<h2>
<field name="product_qty" class="oe_inline"/>
<field name="product_uom" groups="product.group_uom" class="oe_inline"/>
<button type="action"
icon="terp-accessories-archiver+"
name="%(mrp.action_change_production_qty)d"
string="Change Qty" states="ready,confirmed" class="oe_inline"/>
</h2>
<div groups="mrp.group_mrp_routings">
<label for="routing_id" class="oe_edit_only"/>
<h2><field name="routing_id" class="oe_inline"/></h2>
<div class="oe_title">
<h1>Manufacturing Order <field name="name" class="oe_inline"/></h1>
</div>
<group>
<group>
<field name="name"/>
<field name="date_planned"/>
<field name="origin"/>
</group>
<group>
<field name="user_id"/>
<field name="product_id" on_change="product_id_change(product_id)" domain="[('bom_ids','&lt;&gt;',False),('bom_ids.bom_id','=',False)]" class="oe_inline"/>
<label for="product_qty"/>
<div>
<field name="product_qty" class="oe_inline"/>
<field name="product_uom" groups="product.group_uom" class="oe_inline"/>
<button type="action"
icon="terp-accessories-archiver+"
name="%(mrp.action_change_production_qty)d"
string="(Update)" states="ready,confirmed" class="oe_edit_only oe_link"/>
</div>
<label for="product_uos_qty" groups="product.group_uos"/>
<div groups="product.group_uos">
<field name="product_uos_qty" class="oe_inline"/>
<label string="-" attrs="{'invisible':[('product_uos','=',False)]}" class="oe_inline"/>
<field name="product_uos" class="oe_inline"/>
</div>
<field name="date_planned"/>
</group>
<group>
<field name="bom_id" domain="[('product_id','=',product_id)]" context="{'default_product_id': product_id}" on_change="bom_id_change(bom_id)"/>
<field name="routing_id" class="oe_inline" groups="mrp.group_mrp_routings"/>
<field name="user_id"/>
<field name="origin"/>
</group>
<group groups="stock.group_locations">
<field name="location_src_id" domain="[('usage','=','internal')]" on_change="location_id_change(location_src_id,location_dest_id)"/>
<field name="location_dest_id" domain="[('usage','=','internal')]"/>
</group>
</group>
<notebook>
<page string="Consumed Products">
<group>
<group>
<field name="bom_id" domain="[('product_id','=',product_id)]" context="{'default_product_id': product_id}" on_change="bom_id_change(bom_id)"/>
</group>
<group groups="stock.group_locations">
<field name="location_src_id" domain="[('usage','=','internal')]" on_change="location_id_change(location_src_id,location_dest_id)"/>
<field name="location_dest_id" domain="[('usage','=','internal')]"/>
</group>
</group>
<group>
<group string="Products to Consume">
<field name="move_lines" domain="[('state','&lt;&gt;', ('done', 'cancel'))]" nolabel="1">
@@ -19,6 +19,5 @@
#
##############################################################################
import project_mailgate
import note
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -19,34 +19,45 @@
#
##############################################################################
{
'name': 'Tasks-Mail Integration',
'version': '1.1',
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
'category': 'Project Management',
'images': ['images/project_mailgate_task.jpeg'],
'depends': ['project', 'mail'],
'name': 'Notes',
'version': '0.1',
'category': 'Tools',
'description': """
This module can automatically create Project Tasks based on incoming emails.
============================================================================
This module allows users to create their own notes inside OpenERP
=================================================================
Allows creating tasks based on new emails arriving at a given mailbox,
similarly to what the CRM application has for Leads/Opportunities.
Use notes to write meeting minutes, organize ideas, organize personnal todo
lists, etc. Each user manages his own personnal notes. Notes are available to
their authors only, but they can share notes to others users so that several
people can work on the same note in real time. It's very efficient to share
meeting minutes.
There are two common alternatives to configure the mailbox integration:
-----------------------------------------------------------------------
* Install the ``fetchmail`` module and configure a new mailbox, then select
``Project Tasks`` as the target for incoming emails.
* Set it up manually on your mail server based on the 'mail gateway' script
provided in the ``mail`` module - and connect it to the `project.task` model.
""",
'data': [],
'demo': [],
Notes can be found in the 'Home' menu.
""",
'author': 'OpenERP SA',
'website': 'http://openerp.com',
'summary': 'Sticky Notes, Collaborative',
'depends': [
'base_tools',
'mail',
'pad',
],
'data': [
'security/note_security.xml',
'security/ir.model.access.csv',
'note_data.xml',
'note_view.xml',
],
'demo': [
'note_demo.xml',
],
'css': [
'static/src/css/note.css',
],
'installable': True,
'application': True,
'auto_install': False,
'certificate': '001075048780413258261',
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+90
View File
@@ -0,0 +1,90 @@
# -*- 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, fields
from tools.translate import _
class note_stage(osv.osv):
""" Category of Note """
_name = "note.stage"
_description = "Note Stage"
_columns = {
'name': fields.char('Category Name', size=64, required=True),
'sequence': fields.integer('Sequence', help="Used to order the note stages"),
'user_id': fields.many2one('res.users', 'Owner', help="Owner of the note stage.", required=True, readonly=True),
'fold': fields.boolean('Folded'),
}
_order = 'sequence asc'
_defaults = {
'fold': 0,
'user_id': lambda self, cr, uid, ctx: uid,
'sequence' : 1,
}
class note_note(osv.osv):
""" Note """
_name = 'note.note'
_inherit = ['mail.thread','pad.common']
_pad_fields = ['note_pad']
_description = "Note"
def _get_note_first_line(self, cr, uid, ids, name, args, context=None):
res = {}
for note in self.browse(cr, uid, ids, context=context):
res[note.id] = (note.note or '').strip().split('\n')[0]
return res
def _get_default_stage_id(self,cr,uid,context=None):
ids = self.pool.get('note.stage').search(cr,uid,[('user_id','=',uid)])
return ids and ids[0] or False
def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
access_rights_uid = access_rights_uid or uid
stage_obj = self.pool.get('note.stage')
# only show stage groups not folded and owned by user
search_domain = [('fold', '=', False),('user_id', '=', uid)]
stage_ids = stage_obj._search(cr, uid, search_domain, order=self._order, access_rights_uid=access_rights_uid, context=context)
result = stage_obj.name_get(cr, access_rights_uid, stage_ids, context=context)
return result
_columns = {
'name': fields.function(_get_note_first_line, string='Note Summary', type="text", store=True),
'note': fields.text('Pad Content'),
'note_pad_url': fields.char('Pad Url', size=250),
'sequence': fields.integer('Sequence'),
'stage_id': fields.many2one('note.stage', 'Stage'),
'active': fields.boolean('Active'),
'color': fields.integer('Color Index'),
# to be replaced by message_follower_ids
'follower_ids': fields.many2many('res.users', 'mail_subscription', 'res_id', 'user_id', 'Followers')
}
_defaults = {
'active' : 1,
'stage_id' : _get_default_stage_id,
'note_pad_url': lambda self, cr, uid, context: self.pad_generate_url(cr, uid, context),
}
_order = 'sequence asc'
_group_by_full = {
'stage_id' : _read_group_stage_ids,
}
+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="note.stage" id="note_stage_01">
<field name="name">Todo today</field>
<field name="sequence">1</field>
<field name="user_id" eval="ref('base.user_root')"/>
</record>
<record model="note.stage" id="note_stage_02">
<field name="name">Todo later</field>
<field name="sequence">2</field>
<field name="user_id" eval="ref('base.user_root')"/>
</record>
<record model="note.stage" id="note_stage_03">
<field name="name">For Info</field>
<field name="sequence">3</field>
<field name="user_id" eval="ref('base.user_root')"/>
</record>
</data>
</openerp>
+152
View File
@@ -0,0 +1,152 @@
<?xml version="1.0"?>
<openerp>
<data>
<record id="note_1" model="note.note">
<field name="note"><![CDATA[Buying list
* coffee
* fruits
* ice cream
* towels
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_01"/>
<field name="user_id" ref="base.user_root"/>
<field name="color">2</field>
</record>
<record id="note_2" model="note.note">
<field name="note"><![CDATA[Buying list
* more coffee
* tee
* sugar
* towels
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_01"/>
<field name="user_id" ref="base.user_root"/>
</record>
<record id="note_3" model="note.note">
<field name="note"><![CDATA[Idea to develop
* Phasellus vel eros lorem, vel tristique risus.
* Cras elementum risus ut massa bibendum ac sollicitudin quam feugiat.
* Phasellus ullamcorper mauris quis lectus volutpat non dignissim elit lacinia.
Nulla vitae metus risus, nec placerat diam.
Proin quis nunc sodales dolor tempus eleifend.
Praesent iaculis libero ut orci egestas a dapibus libero ornare.
* Proin at nisl sit amet ante feugiat euismod nec at orci.
* Nam aliquam massa id neque tincidunt eu pellentesque neque euismod.
* Proin eget mi sit amet erat tempus pellentesque.
* Phasellus congue est lectus, vitae semper arcu.
* Suspendisse sodales tortor ut odio volutpat fringilla.
* Vestibulum mattis est quis risus dignissim sit amet faucibus nisl mattis.
* Pellentesque ullamcorper neque neque, vitae rhoncus massa.
Ut id magna massa, quis scelerisque sapien.
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_01"/>
<field name="user_id" ref="base.user_root"/>
</record>
<record id="note_4" model="note.note">
<field name="note"><![CDATA[Read some documentation about OpenERP before diving into the code
* Open ERP Version 6: a modern approach to integrated business management
* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_02"/>
<field name="user_id" ref="base.user_root"/>
</record>
<record id="note_5" model="note.note">
<field name="note"><![CDATA[New computer specs
* Motherboard
according to processor
* Processor
need to decide
* Graphic card
with great performance for games !
* Hard drive
big, for lot of internet backups
* Tower
silent, better when watching films
* Blueray drive ?
is it interesting yet ?
* Screen
a big one, full of pixels, of course !
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_02"/>
<field name="user_id" ref="base.user_root"/>
<field name="color">3</field>
</record>
<record id="note_6" model="note.note">
<field name="note"><![CDATA[Read those books
* Open ERP Version 6: a modern approach to integrated business management
* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_02"/>
<field name="user_id" ref="base.user_root"/>
</record>
<record id="note_7" model="note.note">
<field name="note"><![CDATA[Read some documentation about OpenERP before diving into the code
* Open ERP Version 6: a modern approach to integrated business management
* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_03"/>
<field name="user_id" ref="base.user_root"/>
</record>
<record id="note_8" model="note.note">
<field name="note"><![CDATA[Read those books
* Open ERP Version 6: a modern approach to integrated business management
* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_03"/>
<field name="user_id" ref="base.user_root"/>
<field name="color">5</field>
</record>
<record id="note_9" model="note.note">
<field name="note"><![CDATA[Read some documentation about OpenERP before diving into the code
* Open ERP Version 6: a modern approach to integrated business management
* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_03"/>
<field name="user_id" ref="base.user_root"/>
<field name="color">7</field>
</record>
<record id="note_10" model="note.note">
<field name="note"><![CDATA[Read those books
* Open ERP Version 6: a modern approach to integrated business management
* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_03"/>
<field name="user_id" ref="base.user_root"/>
</record>
</data>
</openerp>
+136
View File
@@ -0,0 +1,136 @@
<?xml version="1.0"?>
<openerp>
<data>
<menuitem name="Organizer" id="note_my_stuff" parent="mail.mail_feeds_main"/>
<!-- Note Stage Form View -->
<record model="ir.ui.view" id="view_note_stage_form">
<field name="name">note.stage.form</field>
<field name="model">note.stage</field>
<field name="arch" type="xml">
<form string="Stage of Notes" version="7.0">
<group>
<field name="name"/>
</group>
</form>
</field>
</record>
<!-- Note Stage Tree View -->
<record model="ir.ui.view" id="view_note_stage_tree">
<field name="name">note.stage.tree</field>
<field name="model">note.stage</field>
<field name="field_parent"></field>
<field name="arch" type="xml">
<tree string="Stages of notes" editable="bottom">
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="fold"/>
</tree>
</field>
</record>
<!-- Note Stage Action -->
<record model="ir.actions.act_window" id="action_note_stage">
<field name="name">Stages</field>
<field name="res_model">note.stage</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('user_id','=',uid)]</field>
</record>
<menuitem name="Categories"
id="menu_notes_stage" parent="note_my_stuff" action="action_note_stage" sequence="40" groups="base.group_no_one"/>
<!-- New Note Kanban View -->
<record model="ir.ui.view" id="view_note_note_kanban">
<field name="name">note.note.kanban</field>
<field name="model">note.note</field>
<field name="arch" type="xml">
<kanban default_group_by="stage_id">
<field name="color"/>
<field name="sequence"/>
<field name="name"/>
<field name="stage_id"/>
<field name="active"/>
<field name="note"/>
<field name="follower_ids"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
<!-- dropdown menu -->
<div class="oe_dropdown_toggle oe_dropdown_kanban">
<span class="oe_e">í</span>
<ul class="oe_dropdown_menu">
<li><a type="edit">Edit...</a></li>
<li><a type="delete">Delete</a></li>
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
</ul>
</div>
<!-- kanban note -->
<div class="oe_kanban_content">
<!-- title -->
<field name="name"/>
</div>
<div class="oe_kanban_project_avatars">
<t t-foreach="record.follower_ids.raw_value" t-as="follower">
<img t-att-src="kanban_image('res.users', 'image_small', follower)" t-att-data-member_id="follower"/>
</t>
</div>
</div>
<div class="oe_clear"></div>
</t>
</templates>
</kanban>
</field>
</record>
<!-- New Note Form View -->
<record model="ir.ui.view" id="view_note_note_form">
<field name="name">note.note.form</field>
<field name="model">note.note</field>
<field name="arch" type="xml">
<form string="Note" version="7.0">
<header>
<field name="stage_id" domain="[('user_id','=',uid)]" widget="statusbar" clickable="1"/>
</header>
<field name="note"/>
<field name="note_pad_url" invisible="1"/>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<!-- Search Note -->
<record model="ir.ui.view" id="view_note_note_filter">
<field name="name">note.note.search</field>
<field name="model">note.note</field>
<field name="arch" type="xml">
<search string="Notes">
<field name="note" string="Note"/>
<field name="stage_id"/>
<group expand="0" string="Group By...">
<filter icon="terp-personal" string="Creator" help="By Creators" context="{'group_by':'create_uid'}"/>
<filter icon="terp-stock_symbol-selection" string="Stage" help="By Note Category" context="{'group_by':'stage_id'}"/>
</group>
</search>
</field>
</record>
<!-- Note Action -->
<record model="ir.actions.act_window" id="action_note_note">
<field name="name">Notes</field>
<field name="res_model">note.note</field>
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="search_view_id" ref="view_note_note_filter"/>
</record>
<menuitem name="Notes" id="note_notes" parent="note_my_stuff" sequence="20" action="action_note_note"/>
</data>
</openerp>
+3
View File
@@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_note_stage_user,note.stage user,model_note_stage,base.group_user,1,1,1,1
access_note_note_user,note.note user,model_note_note,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_note_stage_user note.stage user model_note_stage base.group_user 1 1 1 1
3 access_note_note_user note.note user model_note_note base.group_user 1 1 1 1
+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<openerp>
<data>
<record id="note_note_global" model="ir.rule">
<field name="name">My notes</field>
<field ref="model_note_note" name="model_id"/>
<field eval="1" name="global"/>
<field name="domain_force">[('follower_ids','=',user.id)]</field>
</record>
</data>
</openerp>
+3
View File
@@ -0,0 +1,3 @@
note.css: note.sass
sass -t expanded note.sass note.css
+81
View File
@@ -0,0 +1,81 @@
.openerp .oe_fold_column .oe_kanban_card {
text-decoration:none;
color:#000;
display:block;
padding:1em;
margin-right: 1em;
margin-bottom: 1em;
-moz-box-shadow:5px 5px 7px rgba(33,33,33,1);
-webkit-box-shadow: 5px 5px 7px rgba(33,33,33,.7);
box-shadow: 5px 5px 7px rgba(33,33,33,.7);
}
.oe_kanban_record .oe_kanban_card {
-webkit-transform: rotate(-2deg);
-o-transform: rotate(-2deg);
-moz-transform:rotate(-2deg);
}
.oe_kanban_record:nth-of-type(even) .oe_kanban_card {
-webkit-transform: rotate(1deg);
-o-transform: rotate(1deg);
-moz-transform:rotate(1deg);
}
.oe_kanban_record:nth-of-type(3n) .oe_kanban_card {
-webkit-transform: rotate(4deg);
-o-transform: rotate(4deg);
-moz-transform:rotate(4deg);
}
.oe_kanban_column:nth-of-type(even) .oe_kanban_record .oe_kanban_card {
-webkit-transform: rotate(2deg);
-o-transform: rotate(2deg);
-moz-transform:rotate(2deg);
}
.oe_kanban_column:nth-of-type(even) .oe_kanban_record:nth-of-type(even) .oe_kanban_card {
-webkit-transform: rotate(-3deg);
-o-transform: rotate(-3deg);
-moz-transform:rotate(-3deg);
}
.oe_kanban_column:nth-of-type(even) .oe_kanban_record:nth-of-type(3n) .oe_kanban_card {
-webkit-transform: rotate(1deg);
-o-transform: rotate(1deg);
-moz-transform:rotate(1deg);
}
.oe_kanban_column:nth-of-type(3n) .oe_kanban_record .oe_kanban_card {
-webkit-transform: rotate(-2deg);
-o-transform: rotate(-2deg);
-moz-transform:rotate(-2deg);
}
.oe_kanban_column:nth-of-type(3n) .oe_kanban_record:nth-of-type(even) .oe_kanban_card {
-webkit-transform: rotate(1deg);
-o-transform: rotate(1deg);
-moz-transform:rotate(1deg);
}
.oe_kanban_column:nth-of-type(3n) .oe_kanban_record:nth-of-type(3n) .oe_kanban_card {
-webkit-transform: rotate(-1deg);
-o-transform: rotate(-1deg);
-moz-transform:rotate(-1deg);
}
.openerp .oe_kanban_column .oe_fold_column .oe_kanban_card:hover,
.openerp .oe_kanban_column .oe_fold_column .oe_kanban_card:focus
{
box-shadow:10px 10px 7px rgba(0,0,0,.7);
-moz-box-shadow:10px 10px 7px rgba(0,0,0,.7);
-webkit-box-shadow: 10px 10px 7px rgba(0,0,0,.7);
-webkit-transform: rotate(0);
-moz-transform: rotate(0);
-o-transform: rotate(0);
position:relative;
z-index:5;
}
+137
View File
@@ -0,0 +1,137 @@
@charset "utf-8"
// Variables {{{
$section-title-color: #8786b7
$tag-bg-light: #f0f0fa
$tag-bg-dark: #8786b7
$tag-border: #afafb6
$tag-border-selected: #a6a6fe
$hover-background: #f0f0fa
$link-color: #8a89ba
$sheet-max-width: 860px
// }}}
// Mixins {{{
@font-face
font-family: 'mnmliconsRegular'
src: url('/web/static/src/font/mnmliconsv21-webfont.eot') format('eot')
src: url('/web/static/src/font/mnmliconsv21-webfont.woff') format('woff')
src: url('/web/static/src/font/mnmliconsv21-webfont.ttf') format('truetype')
src: url('/web/static/src/font/mnmliconsv21-webfont.svg') format('svg') active
font-weight: normal
font-style: normal
@font-face
font-family: 'EntypoRegular'
src: url('/web/static/src/font/entypo-webfont.eot') format('eot')
src: url('/web/static/src/font/entypo-webfont.eot?#iefix') format('embedded-opentype')
src: url('/web/static/src/font/entypo-webfont.woff') format('woff')
src: url('/web/static/src/font/entypo-webfont.ttf') format('truetype')
src: url('/web/static/src/font/entypo-webfont.svg') format('svg') active
font-weight: normal
font-style: normal
@mixin reset()
border: none
padding: 0
margin: 0
background: none
@include radius(none)
@include box-shadow(none)
@mixin vertical-gradient($startColor: #555, $endColor: #333)
background-color: $startColor
background-image: -webkit-gradient(linear, left top, left bottom, from($startColor), to($endColor)) /* Saf4+, Chrome */
background-image: -webkit-linear-gradient(top, $startColor, $endColor) /* Chrome 10+, Saf5.1+, iOS 5+ */
background-image: -moz-linear-gradient(top, $startColor, $endColor) /* FF3.6 */
background-image: -ms-linear-gradient(top, $startColor, $endColor) /* IE10 */
background-image: -o-linear-gradient(top, $startColor, $endColor) /* Opera 11.10+ */
background-image: linear-gradient(to bottom, $startColor, $endColor)
@mixin radial-gradient($gradient)
background-position: center center
background-image: -webkit-radial-gradient(circle, $gradient)
background-image: -moz-radial-gradient($gradient)
background-image: -ms-radial-gradient($gradient)
background-image: radial-gradient($gradient)
@mixin radius($radius: 5px)
-moz-border-radius: $radius
-webkit-border-radius: $radius
border-radius: $radius
@mixin box-shadow($bsval: 0px 1px 4px #777)
-moz-box-shadow: $bsval
-webkit-box-shadow: $bsval
box-shadow: $bsval
@mixin transition($transval: (border linear 0.2s, box-shadow linear 0.2s))
-webkit-transition: $transval
-moz-transition: $transval
-ms-transition: $transval
-o-transition: $transval
transition: $transval
@mixin opacity($opacity: .5)
filter: alpha(opacity=$opacity * 100)
opacity: $opacity
@mixin background-clip($clip: padding-box)
-webkit-background-clip: $clip
-moz-background-clip: $clip
background-clip: $clip
@mixin box-sizing($type: content)
// type = border || content || padding
-webkit-box-sizing: #{$type}-box
-moz-box-sizing: #{$type}-box
-ms-box-sizing: #{$type}-box
box-sizing: #{$type}-box
// Transforms the (readable) text of an inline element into an mmlicons icon,
// allows for actual readable text in-code (and in readers?) with iconic looks
@mixin text-to-icon($icon-name, $color: #404040)
font-size: 1px
letter-spacing: -1px
color: transparent
&:before
font: 21px "mnmliconsRegular"
content: $icon-name
color: $color
// }}}
// CSS animation bounces {{{
@-moz-keyframes bounce
0%
-moz-transform: scale(0)
opacity: 0
50%
-moz-transform: scale(1.3)
opacity: 0.4
75%
-moz-transform: scale(0.9)
opacity: 0.7
100%
-moz-transform: scale(1)
opacity: 1
@-webkit-keyframes bounce
0%
-webkit-transform: scale(0)
opacity: 0
50%
-webkit-transform: scale(1.3)
opacity: 0.4
75%
-webkit-transform: scale(0.9)
opacity: 0.7
100%
-webkit-transform: scale(1)
opacity: 1
// }}}
.oe_kanban_color_2
background-color:red
// au BufWritePost,FileWritePost *.sass :!sass --style expanded --line-numbers <afile> > "%:p:r.css"
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

+8 -7
View File
@@ -8,31 +8,32 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-06-22 08:03+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-09-03 22:22+0000\n"
"Last-Translator: Nicolas JEUDY <njeudy@simplee.fr>\n"
"Language-Team: French <fr@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: 2012-08-28 06:43+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: pad_project
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
"Erreur ! la date de fin de la tâche doit être supérieure a celle de début"
#. module: pad_project
#: model:ir.model,name:pad_project.model_project_task
msgid "Task"
msgstr ""
msgstr "Tâche"
#. module: pad_project
#: view:project.task:0
msgid "Pad"
msgstr ""
msgstr "Pad"
#. module: pad_project
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr ""
msgstr "Erreur ! Vous ne pouvez pas créer de tâches récursives."
+2 -1
View File
@@ -92,7 +92,8 @@ Main features:
'static/src/js/main.js',
],
'css': [
'static/src/css/pos.css',
'static/src/css/pos.css', # this is the default css with hover effects
#'static/src/css/pos_nohover.css', # this css has no hover effects (for resistive touchscreens)
'static/src/css/keyboard.css'
],
'qweb': ['static/src/xml/pos.xml'],
+2 -2
View File
@@ -1242,7 +1242,7 @@ import io, StringIO
class ean_wizard(osv.osv_memory):
_name = 'pos.ean_wizard'
_columns = {
'ean13_pattern': fields.char('Ean13 Pattern', size=32, required=True, translate=True),
'ean13_pattern': fields.char('Reference', size=32, required=True, translate=True),
}
def sanitize_ean13(self, cr, uid, ids, context):
for r in self.browse(cr,uid,ids):
@@ -1306,7 +1306,7 @@ class product_product(osv.osv):
def edit_ean(self, cr, uid, ids, context):
return {
'name': "Edit Ean",
'name': _("Assign a Custom EAN"),
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',
+15 -21
View File
@@ -608,35 +608,21 @@
<field name="domain">[('date_order','like',time.strftime('%Y-%m'))]</field>
</record>
<record id="product_normal_form_pos_view" model="ir.ui.view">
<field name="name">product.normal.pos.form.inherit</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<group name="status" position="after">
<group name="pos" string="Point of Sale">
<field name="pos_categ_id"/>
<field name="to_weight" />
</group>
</group>
</field>
</record>
<record id="product_normal_form_view" model="ir.ui.view">
<field name="name">product.normal.form.inherit</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/>
<field name="arch" type="xml">
<group name="misc" position="after">
<group name="pos" colspan="2" col="2">
<separator string="Point of Sale" colspan="2"/>
<group name="sale" position="inside">
<group name="pos" string="Point of Sale">
<field name="pos_categ_id"/>
<field name="to_weight" />
<field name="income_pdt"/>
<field name="expense_pdt"/>
</group>
</group>
<field name="ean13" position="after">
<button name="edit_ean" type="object" string="Edit" />
<button name="edit_ean" type="object" string="Set a Custom EAN" class="oe_link oe_edit_only"/>
</field>
</field>
</record>
@@ -1070,9 +1056,17 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Ean13 Generator" version="7.0">
<field name="ean13_pattern"/>
<p class="oe_grey">
Enter a reference for this product, it will be converted
automatically to a valid EAN number.
</p>
<group>
<field name="ean13_pattern" class="oe_inline"/>
</group>
<footer>
<button name="sanitize_ean13" type="object" string="Apply"/>
<button name="sanitize_ean13" type="object" string="Apply" class="oe_highlight"/> or
<button icon="gtk-stop" special="cancel"
string="Cancel" class="oe_link"/>
</footer>
</form>
</field>
+4 -2
View File
@@ -1072,12 +1072,14 @@
-webkit-transition-timing-function: ease-out;
}
.point-of-sale .pos-actionbar .button.disabled{
color:#AAA;
.point-of-sale .pos-actionbar .button.disabled *{
opacity: 0.5;
}
.point-of-sale .pos-actionbar .button.disabled:hover{
border: 1px solid #cacaca;
border-radius: 4px;
color: #555;
cursor: default;
background: #e2e2e2;
background: -webkit-linear-gradient(#f0f0f0, #e2e2e2);
File diff suppressed because it is too large Load Diff
+3 -2
View File
@@ -47,11 +47,12 @@ TODO AUG 20
v supprimer l'écran
v bloquer sur l'impression
v L'impression est foireuse
- description_sales
* CLIENT
- create a new branch
v create a new branch
- Self-checkout welcome screen
- removal of products for the root category
~ removal of products for the root category
- Terminal de payement
- Code à barres
- Vidanges
@@ -184,6 +184,8 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal
* price_with_tax: (number) the price paid for this orderline, tax included
* price_without_tax: (number) the price paid for this orderline, without taxes
* tax: (number) the price paid in taxes on this orderline
* product_description: (string) generic description of the product
* product_description_sale: (string) sales related information of the product
* }
* - paymentlines : list of paymentlines :
* {
+22 -13
View File
@@ -58,6 +58,21 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
// We fetch the backend data on the server asynchronously. this is done only when the pos user interface is launched,
// Any change on this data made on the server is thus not reflected on the point of sale until it is relaunched.
// when all the data has loaded, we compute some stuff, and declare the Pos ready to be used.
$.when(this.load_server_data())
.then(function(){
//self.log_loaded_data(); //Uncomment if you want to log the data to the console for easier debugging
self.ready.resolve();
},function(){
//we failed to load some backend data, or the backend was badly configured.
//the error messages will be displayed in PosWidget
self.ready.reject();
});
},
// loads all the needed data on the sever. returns a deferred indicating when all the data has loaded.
load_server_data: function(){
var self = this;
var loaded = fetch('res.users',['name','company_id'],[['id','=',this.session.uid]])
.pipe(function(users){
@@ -142,8 +157,9 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
return fetch(
'product.product',
['name', 'list_price','price','pos_categ_id', 'taxes_id', 'ean13', 'to_weight', 'uom_id', 'uos_id', 'uos_coeff', 'mes_type'],
[['pos_categ_id','!=', false]],
['name', 'list_price','price','pos_categ_id', 'taxes_id', 'ean13',
'to_weight', 'uom_id', 'uos_id', 'uos_coeff', 'mes_type', 'description_sale', 'description'],
[['pos_categ_id','!=', false],['sale_ok','=',true]],
{pricelist: self.get('shop').pricelist_id[0]} // context for price
);
}).pipe(function(products){
@@ -173,17 +189,8 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
}
self.set({'cashRegisters' : new module.CashRegisterCollection(self.get('bank_statements'))});
});
// when all the data has loaded, we compute some stuff, and declare the Pos ready to be used.
$.when(loaded)
.then(function(){
//self.log_loaded_data(); //Uncomment if you want to log the data to the console for easier debugging
self.ready.resolve();
},function(){
//we failed to load some backend data, or the backend was badly configured.
//the error messages will be displayed in PosWidget
self.ready.reject();
});
return loaded;
},
// logs the usefull posmodel data to the console for debug purposes
@@ -417,6 +424,8 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
price_with_tax : this.get_price_with_tax(),
price_without_tax: this.get_price_without_tax(),
tax: this.get_tax(),
product_description: this.get_product().get('description'),
product_description_sale: this.get_product().get('description_sale'),
};
},
get_price_without_tax: function(){
@@ -735,11 +735,14 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
this.validate_button = this.add_action_button({
label: 'Validate',
name: 'validation',
icon: '/point_of_sale/static/src/img/icons/png48/validate.png',
click: function(){
self.validateCurrentOrder();
},
});
this.updatePaymentSummary();
},
close: function(){
this._super();
@@ -806,6 +809,9 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
this.$('#payment-paid-total').html(paidTotal.toFixed(2));
this.$('#payment-remaining').html(remaining.toFixed(2));
this.$('#payment-change').html(change.toFixed(2));
if(this.pos_widget.action_bar){
this.pos_widget.action_bar.set_button_disabled('validation', remaining > 0);
}
},
set_numpad_state: function(numpadState) {
if (this.numpadState) {
+21 -3
View File
@@ -370,14 +370,21 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
this.label = options.label || 'button';
this.rightalign = options.rightalign || false;
this.click_action = options.click;
this.disabled = options.disabled || false;
if(options.icon){
this.icon = options.icon;
this.template = this.icon_template;
}
},
set_disabled: function(disabled){
if(this.disabled != disabled){
this.disabled = !!disabled;
this.renderElement();
}
},
renderElement: function(){
this._super();
if(this.click_action){
if(this.click_action && !this.disabled){
this.$el.click(_.bind(this.click_action, this));
}
},
@@ -388,12 +395,12 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
init: function(parent, options){
this._super(parent,options);
this.button_list = [];
this.fake_buttons = {};
this.buttons = {};
this.visibility = {};
},
set_element_visible: function(element, visible, action){
if(visible != this.visibility[element]){
this.visibility[element] = visible;
this.visibility[element] = !!visible;
if(visible){
this.$('.'+element).show();
}else{
@@ -401,14 +408,22 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
}
}
if(visible && action){
this.action[element] = action;
this.$('.'+element).off('click').click(action);
}
},
set_button_disabled: function(name, disabled){
var b = this.buttons[name];
if(b){
b.set_disabled(disabled);
}
},
destroy_buttons:function(){
for(var i = 0; i < this.button_list.length; i++){
this.button_list[i].destroy();
}
this.button_list = [];
this.buttons = {};
return this;
},
get_button_count: function(){
@@ -417,6 +432,9 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
add_new_button: function(button_options){
var button = new module.ActionButtonWidget(this,button_options);
this.button_list.push(button);
if(button_options.name){
this.buttons[button_options.name] = button;
}
button.appendTo(this.$('.pos-actionbar-button-list'));
return button;
},
+2 -2
View File
@@ -540,7 +540,7 @@
</t>
<t t-name="ActionButtonWidget">
<li t-att-class=" 'button '+ (widget.rightalign ? 'rightalign ' : '')">
<li t-att-class=" 'button '+ (widget.rightalign ? 'rightalign ' : '') + (widget.disabled ? 'disabled ' : '')">
<div class='label'>
<t t-esc="widget.label" />
</div>
@@ -548,7 +548,7 @@
</t>
<t t-name="ActionButtonWidgetWithIcon">
<li t-att-class=" 'button '+ (widget.rightalign ? 'rightalign ' : '')">
<li t-att-class=" 'button '+ (widget.rightalign ? 'rightalign ' : '') + (widget.disabled ? 'disabled ' : '')">
<div class='icon'>
<img t-att-src="widget.icon" />
<div class='iconlabel'><t t-esc="widget.label" /></div>
@@ -9,13 +9,21 @@
<field name="model">make.procurement</field>
<field name="arch" type="xml">
<form string="Procurement Request" version="7.0">
<group col="4" string="This wizard will plan the procurement for this product. This procurement may generate task, production orders or purchase orders."/>
<group>
<field name="product_id" on_change="onchange_product_id(product_id)"/>
<field name="qty"/>
<field name="uom_id" groups="product.group_uom"/>
<field name="date_planned"/>
<p class="oe_gray">
Fill is this for to launch a procurement request for this
product. According to the product configuration, this may
trigger a draft purchase order, a manufacturing order or
a new task.
</p>
<group>
<field name="warehouse_id" groups="stock.group_locations"/>
<field name="product_id" on_change="onchange_product_id(product_id)"/>
<label for="qty"/>
<div>
<field name="qty" class="oe_inline"/>
<field name="uom_id" groups="product.group_uom"/>
</div>
<field name="date_planned"/>
</group>
<footer>
<button name="make_procurement" string="Ask New Products" type="object" class="oe_highlight" />
@@ -26,13 +34,13 @@
</field>
</record>
<act_window name="Procurement Request"
res_model="make.procurement"
src_model="product.product"
view_mode="form"
target="new"
key2="client_action_multi"
id="act_make_procurement"/>
<record model="ir.actions.act_window" id="act_make_procurement">
<field name="name">Procurement Request</field>
<field name="res_model">make.procurement</field>
<field name="src_model">product.product</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>
+6 -6
View File
@@ -288,13 +288,13 @@ class product_template(osv.osv):
'rental': fields.boolean('Can be Rent'),
'categ_id': fields.many2one('product.category','Category', required=True, change_default=True, domain="[('type','=','normal')]" ,help="Select category for the current product"),
'list_price': fields.float('Sale Price', digits_compute=dp.get_precision('Product Price'), help="Base price for computing the customer price. Sometimes called the catalog price."),
'standard_price': fields.float('Cost Price', required=True, digits_compute=dp.get_precision('Product Price'), help="Product's cost for accounting stock valuation. It is the base price for the supplier price.", groups="base.group_user"),
'standard_price': fields.float('Cost', digits_compute=dp.get_precision('Product Price'), help="Product's cost for accounting stock valuation. It is the base price for the supplier price.", groups="base.group_user"),
'volume': fields.float('Volume', help="The volume in m3."),
'weight': fields.float('Gross Weight', digits_compute=dp.get_precision('Stock Weight'), help="The gross weight in Kg."),
'weight_net': fields.float('Net Weight', digits_compute=dp.get_precision('Stock Weight'), help="The net weight in Kg."),
'cost_method': fields.selection([('standard','Standard Price'), ('average','Average Price')], 'Costing Method', required=True,
help="Standard Price: the cost price is fixed and recomputed periodically (usually at the end of the year), Average Price: the cost price is recomputed at each reception of products."),
'warranty': fields.float('Warranty (months)'),
'warranty': fields.float('Warranty'),
'sale_ok': fields.boolean('Can be Sold', help="Determines if the product can be visible in the list of product within a selection from a sale order line."),
'purchase_ok': fields.boolean('Can be Purchased', help="Determine if the product is visible in the list of products within a selection from a purchase order line."),
'state': fields.selection([('',''),
@@ -302,7 +302,7 @@ class product_template(osv.osv):
('sellable','Normal'),
('end','End of Lifecycle'),
('obsolete','Obsolete')], 'Status', help="Tells the user if he can use the product or not."),
'uom_id': fields.many2one('product.uom', 'Default Unit of Measure', required=True, help="Default Unit of Measure used for all stock operation."),
'uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True, help="Default Unit of Measure used for all stock operation."),
'uom_po_id': fields.many2one('product.uom', 'Purchase Unit of Measure', required=True, help="Default Unit of Measure used for purchase orders. It must be in the same category than the default unit of measure."),
'uos_id' : fields.many2one('product.uom', 'Unit of Sale',
help='Used by companies that manage two units of measure: invoicing and inventory management. For example, in food industries, you will manage a stock of ham but invoice in Kg. Keep empty to use the default Unit of Measure.'),
@@ -354,7 +354,7 @@ class product_template(osv.osv):
'list_price': lambda *a: 1,
'cost_method': lambda *a: 'standard',
'supply_method': lambda *a: 'buy',
'standard_price': lambda *a: 1,
'standard_price': lambda *a: 0.0,
'sale_ok': lambda *a: 1,
'sale_delay': lambda *a: 7,
'produce_delay': lambda *a: 1,
@@ -535,9 +535,9 @@ class product_product(osv.osv):
'outgoing_qty': fields.function(_product_outgoing_qty, type='float', string='Outgoing'),
'price': fields.function(_product_price, type='float', string='Pricelist', digits_compute=dp.get_precision('Product Price')),
'lst_price' : fields.function(_product_lst_price, type='float', string='Public Price', digits_compute=dp.get_precision('Product Price')),
'code': fields.function(_product_code, type='char', string='Reference'),
'code': fields.function(_product_code, type='char', string='Internal Reference'),
'partner_ref' : fields.function(_product_partner_ref, type='char', string='Customer ref'),
'default_code' : fields.char('Reference', size=64, select=True),
'default_code' : fields.char('Internal Reference', size=64, select=True),
'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the product without removing it."),
'variants': fields.char('Variants', size=64),
'product_tmpl_id': fields.many2one('product.template', 'Product Template', required=True, ondelete="cascade"),
+89 -72
View File
@@ -12,8 +12,6 @@
<filter string="Services" icon="terp-accessories-archiver" domain="[('type','=','service')]"/>
<filter string="Products" icon="terp-accessories-archiver" domain="['|',('type','=','product'),('type','=','consu')]" help="Both stockable and consumable products"/>
<separator/>
<filter string="To Sell" name="filter_to_sell" icon="terp-accessories-archiver-minus" domain="[('sale_ok','=',1)]"/>
<separator/>
<filter name="filter_to_purchase" string="To Purchase" icon="terp-accessories-archiver+" domain="[('purchase_ok', '=', 1)]"/>
<filter string="Can be Sold" name="filter_to_sell" icon="terp-accessories-archiver-minus" domain="[('sale_ok','=',1)]"/>
<filter name="filter_to_purchase" string="Can be Purchased" icon="terp-accessories-archiver+" domain="[('purchase_ok', '=', 1)]"/>
@@ -71,6 +69,12 @@
</h1>
<label for="categ_id" class="oe_edit_only"/>
<h2><field name="categ_id"/></h2>
<div name="options" groups="base.group_user">
<field name="sale_ok"/>
<label for="sale_ok"/>
<field name="purchase_ok"/>
<label for="purchase_ok"/>
</div>
</div>
<div class="oe_right oe_button_box" name="buttons">
</div>
@@ -78,57 +82,77 @@
<page string="Information">
<group>
<group>
<field name="default_code"/>
<field name="ean13" placeholder="e.g. 5901234123457"/>
<field groups="product.group_product_variant" name="variants"/>
</group>
<group groups="base.group_user">
<field name="sale_ok"/>
<field name="purchase_ok"/>
</group>
<group string="Procurement">
<field name="type"/>
<field name="procure_method" groups="base.group_user" attrs="{'invisible':[('type','=', 'service')]}"/>
</group>
<group string="Prices">
<field name="uom_id" on_change="onchange_uom(uom_id,uom_po_id)" groups="product.group_uom"/>
<field name="list_price"/>
<field name="cost_method" groups="product.group_costing_method"/>
<field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}"/>
</group>
<group>
<field name="default_code"/>
<label for="ean13"/>
<div name="ean">
<field name="ean13" placeholder="e.g. 5901234123457"/>
</div>
</group>
<group>
<field groups="product.group_product_variant" name="variants"/>
<field name="price_margin" groups="product.group_product_variant"/>
<field name="price_extra" groups="product.group_product_variant"/>
</group>
</group>
<field name="description" placeholder="describe the product's characteristics for internal use..."/>
</page>
<page string="Procurements" groups="base.group_user">
<group name="procurement">
<group>
<field name="procure_method" groups="base.group_user" attrs="{'invisible':[('type','=', 'service')]}"/>
<field name="cost_method" groups="product.group_costing_method"/>
<field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}"/>
</group>
<group>
<field name="uom_po_id" groups="product.group_uom"/>
</group>
</group>
<separator string="Notes for Suppliers"/>
<field name="description_purchase" placeholder="This note will be displayed on requests for quotation..."/>
</page>
<page string="Inventory" groups="base.group_user">
<group name="inventory">
<group name="status" string="Status">
<field name="state"/>
<field name="product_manager"/>
</group>
<group name="store" string="Storage Localisation">
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
<field name="loc_rack" attrs="{'invisible':[('type','=','service')]}"/>
<field name="loc_row" attrs="{'invisible':[('type','=','service')]}"/>
<field name="loc_case" attrs="{'invisible':[('type','=','service')]}"/>
</group>
<group groups="product.group_stock_packaging" string="Weights">
<field digits="(14, 3)" name="volume" attrs="{'readonly':[('type','=','service')]}"/>
<field name="weight" attrs="{'readonly':[('type','=','service')]}"/>
<field name="weight_net" attrs="{'readonly':[('type','=','service')]}"/>
</group>
<group name="uom" groups="product.group_uom" string="Unit of Measure">
<field name="uom_id" on_change="onchange_uom(uom_id,uom_po_id)"/>
<field name="uom_po_id"/>
</group>
</page>
<page string="Sales" attrs="{'readonly':[('sale_ok','=',0)]}">
<group name="sale">
<group string="Sale Conditions">
<label for="sale_delay"/>
<div>
<field name="sale_delay" class="oe_inline"/> days
</div>
<label for="warranty"/>
<div>
<field name="warranty" class="oe_inline"/> months
</div>
</group>
<group groups="product.group_uos" string="Unit of Measure">
<field name="uos_id"/>
<field name="uos_coeff"/>
<field name="mes_type"/>
</group>
<group name="status" string="Status">
<field name="state"/>
<field name="product_manager"/>
</group>
</group>
</page>
<page string="Descriptions" groups="base.group_user">
<separator string="Description"/>
<field name="description"/>
<separator string="Sale Description"/>
<field name="description_sale" placeholder="This note will be displayed on quotations..."/>
<separator string="Purchase Description"/>
<field name="description_purchase" placeholder="This note will be displayed on requests for quotation..."/>
</page>
<page groups="product.group_stock_packaging" string="Packaging">
<field name="packaging">
<field name="packaging" groups="product.group_stock_packaging">
<form string="Packaging" version="7.0">
<group col="4">
<field name="ean"/>
@@ -150,6 +174,8 @@
<field name="name"/>
</form>
</field>
<separator string="Notes on Quotations"/>
<field name="description_sale" placeholder="note to be displayed on quotations..."/>
</page>
</notebook>
</sheet>
@@ -162,42 +188,30 @@
</record>
<!-- Product Kanban View -->
<record model="ir.ui.view" id="product_kanban_view">
<record model="ir.ui.view" id="product.product_kanban_view">
<field name="name">Product Kanban</field>
<field name="model">product.product</field>
<field name="arch" type="xml">
<kanban>
<field name="color"/>
<field name="type"/>
<field name="image_medium"/>
<field name="image_small"/>
<field name="list_price"/>
<templates>
<t t-name="kanban-box">
<t t-if="record.type.raw_value!='service' and record.qty_available.raw_value lte 0" t-set="border">oe_kanban_color_red</t>
<div t-attf-class="#{kanban_color(record.color.raw_value)} #{border || ''}">
<div class="oe_kanban_box oe_kanban_color_border">
<div class="oe_kanban_box_header oe_kanban_color_bgdark oe_kanban_color_border oe_kanban_draghandle oe_kanban_title">
<field name="name"/>
</div>
<div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger">
<img t-att-src="kanban_image('product.product', 'image_medium', record.id.value)" width="48" style="float: left; padding: 0 4px 4px 0"/>
Code: <field name="code"/>
<div t-if="record.type.raw_value == 'service'">No Stock</div>
<t t-if="record.type.raw_value != 'service'">
<div>Stock: <field name="qty_available"/> on hand, <field name="virtual_available"/> available</div>
<div t-if="record.list_price.raw_value != 0">Public Price: <field name="lst_price"/></div>
<!-- TODO would deserve to be hidden at the field level -->
<div groups="base.group_user">Cost : <field name="standard_price"/></div>
</t>
<div class="oe_kanban_clear"/>
</div>
<div class="oe_kanban_buttons_set oe_kanban_color_border oe_kanban_color_bglight oe_kanban_box_show_onclick">
<div class="oe_kanban_left">
<a string="Edit" icon="gtk-edit" type="edit"/>
<a string="Change Color" icon="color-picker" type="color" name="color"/>
</div>
<div class="oe_kanban_clear"/>
</div>
<div class="oe_kanban_vignette">
<a type="open"><img t-att-src="kanban_image('product.product', 'image_small', record.id.value)" class="oe_kanban_image"/></a>
<div class="oe_kanban_details">
<h4>
<a type="open">
<t t-if="record.code.raw_value">[<field name="code"/>]</t> <field name="name"/>
</a>
</h4>
<div name="tags"/>
<ul>
<li>Price: <field name="lst_price"></field></li>
</ul>
</div>
</div>
</t>
@@ -227,7 +241,7 @@
<field name="name">Products</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.product</field>
<field name="view_mode">tree,form,kanban</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_type">form</field>
<field name="context">{"search_default_filter_to_sell":1}</field>
<field name="view_id" ref="product_product_tree_view"/>
@@ -250,7 +264,7 @@
<record id="open_view_product_tree1" model="ir.actions.act_window.view">
<field name="sequence" eval="2"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="product_product_tree_view"/>
<field name="view_id" ref="product_product_tree_view"/>
<field name="act_window_id" ref="product_normal_action_sell"/>
</record>
@@ -264,8 +278,8 @@
<record id="open_view_product_kanban1" model="ir.actions.act_window.view">
<field name="sequence" eval="1"/>
<field name="view_mode">kanban</field>
<field name="view_id" ref="product_kanban_view"/>
<field name="act_window_id" ref="product_normal_action"/>
<field name="view_id" ref="product_kanban_view"/>
<field name="act_window_id" ref="product_normal_action_sell"/>
</record>
<menuitem id="base.menu_product" name="Products" parent="base.menu_base_partner" sequence="9"/>
@@ -534,7 +548,7 @@
<field name="model">product.packaging</field>
<field name="arch" type="xml">
<tree string="Packaging">
<field name="sequence" invisible="1"/>
<field name="sequence" widget="handle"/>
<field name="ean"/>
<field name="qty"/>
<field name="ul"/>
@@ -606,7 +620,7 @@
<field name="model">product.supplierinfo</field>
<field name="arch" type="xml">
<tree string="Supplier Information">
<field name="sequence" string="Seq"/>
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="delay"/>
<field name="min_qty"/>
@@ -716,7 +730,10 @@
<group>
<group name="delay" string="Delays">
<field name="sale_delay" attrs="{'readonly':[('sale_ok','=',0)]}"/>
<field name="produce_delay"/>
<label for="produce_delay"/>
<div>
<field name="produce_delay" class="oe_inline"/> days
</div>
<field name="warranty"/>
</group>
<group name="store" string="Storage Localisation">
@@ -21,14 +21,14 @@
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view" />
<field name="arch" type="xml">
<notebook position="inside">
<page string="Dates">
<group name="inventory">
<group string="Dates">
<field name="life_time" />
<field name="use_time" />
<field name="removal_time" />
<field name="alert_time" />
</page>
</notebook>
</group>
</group>
</field>
</record>
</data>
@@ -7,23 +7,21 @@
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view" />
<field name="arch" type="xml">
<notebook position="inside">
<page string="Manufacturer">
<group string="Manufacturer">
<field name="manufacturer" />
<field name="manufacturer_pname"/>
<field name="manufacturer_pref"/>
</group>
<group string="Attributes">
<field name="attribute_ids" colspan="4" nolabel="1">
<tree string="Product Attributes" editable="bottom">
<field name="name"/>
<field name="value"/>
</tree>
</field>
</group>
</page>
</notebook>
<group name="procurement" position="inside">
<group string="Manufacturer">
<field name="manufacturer" />
<field name="manufacturer_pname"/>
<field name="manufacturer_pref"/>
</group>
<group string="Attributes">
<field name="attribute_ids" colspan="4" nolabel="1">
<tree string="Product Attributes" editable="bottom">
<field name="name"/>
<field name="value"/>
</tree>
</field>
</group>
</group>
</field>
</record>
+39
View File
@@ -1159,6 +1159,45 @@ class task(base_stage, osv.osv):
result += "\n"
return result
# ---------------------------------------------------
# mail gateway
# ---------------------------------------------------
def message_new(self, cr, uid, msg, custom_values=None, context=None):
""" Override to updates the document according to the email. """
if custom_values is None: custom_values = {}
custom_values.update({
'name': subject,
'planned_hours': 0.0,
'subject': msg.get('subject'),
})
return super(project_tasks,self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
def message_update(self, cr, uid, ids, msg, update_vals=None, context=None):
""" Override to update the task according to the email. """
if update_vals is None: update_vals = {}
act = False
maps = {
'cost':'planned_hours',
}
for line in msg['body'].split('\n'):
line = line.strip()
res = tools.misc.command_re.match(line)
if res:
match = res.group(1).lower()
field = maps.get(match)
if field:
try:
update_vals[field] = float(res.group(2).lower())
except (ValueError, TypeError):
pass
elif match.lower() == 'state' \
and res.group(2).lower() in ['cancel','close','draft','open','pending']:
act = 'do_%s' % res.group(2).lower()
if act:
getattr(self,act)(cr, uid, ids, context=context)
return super(project_tasks,self).message_update(cr, uid, msg, update_vals=update_vals, context=context)
# ---------------------------------------------------
# OpenChatter methods and notifications
# ---------------------------------------------------
+1 -1
View File
@@ -218,7 +218,7 @@
<field name="name">project.project.kanban</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<kanban>
<kanban version="7.0" class="oe_background_grey">
<field name="effective_hours"/>
<field name="planned_hours"/>
<field name="name"/>
-102
View File
@@ -1,102 +0,0 @@
# Arabic translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-01-12 21:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic <ar@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "معلومات المحفوظات"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "مهمة"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "خطأ ! لا يمكنك انشاء مهام رجعية."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "الرسائل"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "مسودة"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr "خطأ! يجب ان يكون تاريخ انتهاء المهمة اكبر من تاريخ البداية"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "إلغاء"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "تم"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "فتح"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "معلّق"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "محفوظات"
#~ msgid "Attachments"
#~ msgstr "مرفقات"
#~ msgid "Details"
#~ msgstr "تفاصيل"
#~ msgid "Project MailGateWay"
#~ msgstr "مدخل بريد المشروع"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "هذه الوحدة هي تفاعل التي تتزامن البريد مع مهام مشروع OpenERP .\n"
#~ "وهي تسمح بإنشاء المهام في اقرب وقت كما يصل البريد الجديد في خادم البريد الذي "
#~ "تم ضبطه.\n"
#~ "علاوة على ذلك, تستمر في تعقب المزيد من كل الاتصالات وحالات المهمة.\n"
#~ " "
-106
View File
@@ -1,106 +0,0 @@
# Catalan translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2011-02-06 21:57+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan <ca@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Informació històrica"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Tasca"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Error! No podeu crear tasques recursives."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Missatges"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Esborrany"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
"Error ! La data final de la tasca ha de ser major que la data d'inici"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Canceŀla"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Realitzat"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Obre"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Pendent"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Històric"
#~ msgid "Project MailGateWay"
#~ msgstr "Ruta d'enllaç del projecte"
#~ msgid "Attachments"
#~ msgstr "Adjunts"
#~ msgid "Details"
#~ msgstr "Detalls"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "Aquest mòdul proporciona una interfície per sincronitzar correus amb les "
#~ "tasques de projectes d'OpenERP.\n"
#~ "\n"
#~ "Permet crear tasques tan aviat com arriba un nou correu en el nostre "
#~ "servidor de correu prèviament configurat.\n"
#~ "A més realitza un seguiment de totes les comunicacions addicionals i estats "
#~ "de la tasca.\n"
#~ " "
-78
View File
@@ -1,78 +0,0 @@
# Czech translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-04-06 06:41+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Informace historie"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Úkol"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Chyba ! Nemůžete vytvořit rekurzivní úkoly."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Zprávy"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Koncept"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr "Chyba ! Datum ukončení úkolu musí být větší než počáteční datum"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Zrušit"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Dokončené"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Otevřené"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Čekající"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Historie"
-78
View File
@@ -1,78 +0,0 @@
# Danish translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-01-27 06:33+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Danish <da@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr ""
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr ""
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr ""
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr ""
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr ""
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr ""
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr ""
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr ""
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr ""
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr ""
-106
View File
@@ -1,106 +0,0 @@
# German translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2010-12-31 10:37+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\n"
"Language-Team: German <de@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Information Historie"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Aufgabe"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Fehler ! Sie können keine rekursiven Aufgaben definieren."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Nachrichten"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Entwurf"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr "Fehler! Aufgaben End-Datum muss größer als Aufgaben-Beginn sein"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Abbrechen"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Erledigt"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Offen"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Im Wartezustand"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Historie"
#~ msgid "Project MailGateWay"
#~ msgstr "Projekte Mailgateway"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "Dieses Modul ermöglicht die Synchronisation von Email mit openERP "
#~ "Projektaufgaben.\n"
#~ "\n"
#~ "Es ermöglicht die Erstellung einer neuen Aufgabe sobald eine neue EMail von "
#~ "Ihrem Mailserver empfangen wird.\n"
#~ "Ausserdem können Sie dann alle weitere Korrespondenz und Kommunikation "
#~ "rückverfolgen sowie den Status der Aufgabe überwachen.\n"
#~ " "
#~ msgid "Details"
#~ msgstr "Details"
#~ msgid "Attachments"
#~ msgstr "Anhänge"
-106
View File
@@ -1,106 +0,0 @@
# Spanish translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2010-12-28 08:35+0000\n"
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
"<jesteve@zikzakmedia.com>\n"
"Language-Team: Spanish <es@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Información histórica"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Tarea"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "¡Error! No puede crear tareas recursivas."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Mensajes"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Borrador"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
"¡ Error ! La fecha final de la tarea debe ser mayor que la fecha de inicio"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Cancelar"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Realizado"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Abrir"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Pendiente"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Historial"
#~ msgid "Project MailGateWay"
#~ msgstr "Ruta de enlace del proyecto"
#~ msgid "Details"
#~ msgstr "Detalles"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "Este módulo proporciona una interfaz para sincronizar correos con las tareas "
#~ "de proyectos de OpenERP.\n"
#~ "Permite crear tareas tan pronto como llega un nuevo correo en nuestro "
#~ "servidor de correo previamente configurado.\n"
#~ "Además realiza un seguimiento de todas las comunicaciones adicionales y "
#~ "estados de la tarea.\n"
#~ " "
#~ msgid "Attachments"
#~ msgstr "Adjuntos"
-107
View File
@@ -1,107 +0,0 @@
# Spanish translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-02-17 00:30+0000\n"
"Last-Translator: Carlos Vásquez (CLEARCORP) "
"<carlos.vasquez@clearcorp.co.cr>\n"
"Language-Team: Spanish <es@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"Language: es\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Información histórica"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Tarea"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "¡Error! No puede crear tareas recursivas."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Mensajes"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Borrador"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
"¡ Error ! La fecha final de la tarea debe ser mayor que la fecha de inicio"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Cancelar"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Realizado"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Abrir"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Pendiente"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Historial"
#~ msgid "Project MailGateWay"
#~ msgstr "Ruta de enlace del proyecto"
#~ msgid "Details"
#~ msgstr "Detalles"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "Este módulo proporciona una interfaz para sincronizar correos con las tareas "
#~ "de proyectos de OpenERP.\n"
#~ "Permite crear tareas tan pronto como llega un nuevo correo en nuestro "
#~ "servidor de correo previamente configurado.\n"
#~ "Además realiza un seguimiento de todas las comunicaciones adicionales y "
#~ "estados de la tarea.\n"
#~ " "
#~ msgid "Attachments"
#~ msgstr "Adjuntos"
-108
View File
@@ -1,108 +0,0 @@
# Spanish translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2010-12-28 08:35+0000\n"
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
"<jesteve@zikzakmedia.com>\n"
"Language-Team: Spanish <es@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: 2011-09-05 05:56+0000\n"
"X-Generator: Launchpad (build 13830)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Información histórica"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Tarea"
#. module: project_mailgate
#: model:ir.module.module,description:project_mailgate.module_meta_information
msgid ""
"This module is an interface that synchronises mails with OpenERP Project "
"Task.\n"
"\n"
"It allows creating tasks as soon as a new mail arrives in our configured "
"mail server.\n"
"Moreover, it keeps track of all further communications and task states.\n"
" "
msgstr ""
"Este módulo proporciona una interfaz para sincronizar correos con las tareas "
"de proyectos de OpenERP.\n"
"Permite crear tareas tan pronto como llega un nuevo correo en nuestro "
"servidor de correo previamente configurado.\n"
"Además realiza un seguimiento de todas las comunicaciones adicionales y "
"estados de la tarea.\n"
" "
#. module: project_mailgate
#: view:project.task:0
msgid "Attachments"
msgstr "Adjuntos"
#. module: project_mailgate
#: model:ir.module.module,shortdesc:project_mailgate.module_meta_information
msgid "Project MailGateWay"
msgstr "Ruta de enlace del proyecto"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "¡Error! No puede crear tareas recursivas."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Mensajes"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:123
#, python-format
msgid "Draft"
msgstr "Borrador"
#. module: project_mailgate
#: view:project.task:0
msgid "Details"
msgstr "Detalles"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:149
#, python-format
msgid "Cancel"
msgstr "Cancelar"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:143
#, python-format
msgid "Done"
msgstr "Realizado"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:129
#, python-format
msgid "Open"
msgstr "Abrir"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:135
#, python-format
msgid "Pending"
msgstr "Pendiente"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Historial"
-108
View File
@@ -1,108 +0,0 @@
# Spanish translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2010-12-28 08:35+0000\n"
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
"<jesteve@zikzakmedia.com>\n"
"Language-Team: Spanish <es@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: 2011-09-05 05:56+0000\n"
"X-Generator: Launchpad (build 13830)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Información histórica"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Tarea"
#. module: project_mailgate
#: model:ir.module.module,description:project_mailgate.module_meta_information
msgid ""
"This module is an interface that synchronises mails with OpenERP Project "
"Task.\n"
"\n"
"It allows creating tasks as soon as a new mail arrives in our configured "
"mail server.\n"
"Moreover, it keeps track of all further communications and task states.\n"
" "
msgstr ""
"Este módulo proporciona una interfaz para sincronizar correos con las tareas "
"de proyectos de OpenERP.\n"
"Permite crear tareas tan pronto como llega un nuevo correo en nuestro "
"servidor de correo previamente configurado.\n"
"Además realiza un seguimiento de todas las comunicaciones adicionales y "
"estados de la tarea.\n"
" "
#. module: project_mailgate
#: view:project.task:0
msgid "Attachments"
msgstr "Adjuntos"
#. module: project_mailgate
#: model:ir.module.module,shortdesc:project_mailgate.module_meta_information
msgid "Project MailGateWay"
msgstr "Ruta de enlace del proyecto"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "¡Error! No puede crear tareas recursivas."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Mensajes"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:123
#, python-format
msgid "Draft"
msgstr "Borrador"
#. module: project_mailgate
#: view:project.task:0
msgid "Details"
msgstr "Detalles"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:149
#, python-format
msgid "Cancel"
msgstr "Cancelar"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:143
#, python-format
msgid "Done"
msgstr "Realizado"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:129
#, python-format
msgid "Open"
msgstr "Abrir"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:135
#, python-format
msgid "Pending"
msgstr "Pendiente"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Historial"
-88
View File
@@ -1,88 +0,0 @@
# Finnish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2011-06-22 10:01+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish <fi@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Historiatiedot"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Tehtävä"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Virhe ! Et voi luoda rekursiivisiä tehtäviä."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Viestit"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Luonnos"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
"Virhe! Tehtävän lopetuspäivän tulee olla myöhäisempi kuin aloituspäivä"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Peruuta"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Valmis"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Auki"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Odottava"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Historia"
#~ msgid "Project MailGateWay"
#~ msgstr "Projektin sähköpostivälittäjä"
#~ msgid "Attachments"
#~ msgstr "Liitteet"
#~ msgid "Details"
#~ msgstr "Yksityiskohdat"
-106
View File
@@ -1,106 +0,0 @@
# French translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2011-01-13 23:14+0000\n"
"Last-Translator: lholivier <olivier.lenoir@free.fr>\n"
"Language-Team: French <fr@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Historique"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Tâche"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Erreur ! Vous ne pouvez pas créer de tâches récursives."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Messages"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Brouillon"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
"Erreur ! La date de fin de la tâche doit être postérieure à la date de "
"démarrage"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Annuler"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Terminé"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Ouvert"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "En attente"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Historique"
#~ msgid "Attachments"
#~ msgstr "Pièces jointes"
#~ msgid "Details"
#~ msgstr "Détails"
#~ msgid "Project MailGateWay"
#~ msgstr "Messagerie de Projet"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "Ce module est un interface de synchronisation des emails avec la gestion de "
#~ "projet d'OpenERP.\n"
#~ "\n"
#~ "Il permet la création de tâches sur l'arrivée de nouveaux emails dans le "
#~ "serveur de messagerie configuré.\n"
#~ "De plus, il conserve les échanges ultérieurs et l'état des tâches.\n"
#~ " "
-105
View File
@@ -1,105 +0,0 @@
# Galician translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2011-05-10 08:39+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Galician <gl@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Información histórica"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Tarefa"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Erro! Non pode crear tarefas recorrentes."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Mensaxes"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Borrador"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
"Erro! A data de remate da tarefa debe ser posterior á data de inicio da "
"tarefa"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Anular"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Feito"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Abrir"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Pendente"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Historial"
#~ msgid "Project MailGateWay"
#~ msgstr "Ruta de enlace do proxecto"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "Este módulo proporciona unha interface para sincronizar correos coas tarefas "
#~ "de proxectos de OpenERP. Permite crear tarefas tan pronto como chegue un "
#~ "novo correo no noso servidor de correo previamente configurado. Ademais "
#~ "realiza un seguimento de tódalas comunicacións adicionais e dos estados da "
#~ "tarefa.\n"
#~ " "
#~ msgid "Attachments"
#~ msgstr "Anexos"
#~ msgid "Details"
#~ msgstr "Detalles"
-104
View File
@@ -1,104 +0,0 @@
# Croatian translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2011-12-12 08:56+0000\n"
"Last-Translator: Tomislav Bosnjakovic <Unknown>\n"
"Language-Team: Croatian <hr@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Informacije o povjesti"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Zadatak"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Greška! Ne možete kreirati rekurzivne zadatke."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Poruke"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Nacrt"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Odustani"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Izvršeno"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Otvoreno"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Na čekanju"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Povijest"
#~ msgid "Project MailGateWay"
#~ msgstr "MailGateWay projekta"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "Ovaj modul je sučelje za sinhronizaciju poruka sa OpenERP projektnim "
#~ "zadacima.\n"
#~ "\n"
#~ "Omogućava kreiranje zadataka čim stigne novi e-mail na naš konfigurirani "
#~ "mail poslužitelj.\n"
#~ "Štoviše, čuva zapise o svim kasnijim komunikacijama i statusima zadataka.\n"
#~ " "
#~ msgid "Attachments"
#~ msgstr "Privici"
#~ msgid "Details"
#~ msgstr "Pojedinosti"
-84
View File
@@ -1,84 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * project_mailgate
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2011-01-25 13:21+0000\n"
"Last-Translator: NOVOTRADE RENDSZERHÁZ ( novotrade.hu ) "
"<openerp@novotrade.hu>\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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Előzmény"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Feladat"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Hiba! Nem hozhat létre rekurzív feladatokat."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Üzenetek"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Tervezet"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Mégsem"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Kész"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Nyitott"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Függőben lévő"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Előzmény"
#~ msgid "Attachments"
#~ msgstr "Mellékletek"
#~ msgid "Details"
#~ msgstr "Részletek"
-106
View File
@@ -1,106 +0,0 @@
# Italian translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2011-04-22 09:54+0000\n"
"Last-Translator: simone.sandri <lexluxsox@hotmail.it>\n"
"Language-Team: Italian <it@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Storico informazioni"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Attività"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Errore ! Non è possibile creare attività ricorsive."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Messaggi"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Bozza"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
"Errore ! La data finale della mansione deve essere più vecchia di quella "
"iniziale"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Annulla"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Completato"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Apri"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "In sospeso"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Storico"
#~ msgid "Attachments"
#~ msgstr "Allegati"
#~ msgid "Details"
#~ msgstr "Dettagli"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "Questo modulo è una infertaccia che sincronizza mail con le attività di "
#~ "progetto di OpenERP.\n"
#~ "\n"
#~ "Esso permette di creare attività non appena una nuova mail arriva nel mail "
#~ "server configurato.\n"
#~ "Inoltre, tiene traccia di tutte le comunicazioni e lo stato delle attività.\n"
#~ " "
#~ msgid "Project MailGateWay"
#~ msgstr "Ingresso Mail di Progetto"
-78
View File
@@ -1,78 +0,0 @@
# Japanese translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-06-10 03:13+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "履歴情報"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "タスク"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "エラー。再帰的なタスクを作成することはできません。"
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "メッセージ"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "ドラフト"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr "エラー。タスクの終了日は開始日以降の日付に設定しなければなりません。"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "キャンセル"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "完了"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "開く"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "保留中"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "履歴"
-87
View File
@@ -1,87 +0,0 @@
# Latvian translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2010-12-31 10:38+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Latvian <lv@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Vēstures informācija"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Uzdevums"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Kļūda! Nedrīkst veidot rekursīvus uzdevumus."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Ziņojumi"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Melnraksts"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Atcelt"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Pabeigts"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Atvērt"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Neizlemts"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Vēsture"
#~ msgid "Project MailGateWay"
#~ msgstr "Projekta MailGateWay"
#~ msgid "Attachments"
#~ msgstr "Piesaistnes"
#~ msgid "Details"
#~ msgstr "Sīkāka informācija"
-85
View File
@@ -1,85 +0,0 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2010-12-21 13:53+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Mongolian <mn@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Түүх"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Ажил"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Алдаа ! Та рекурсив цэс үүсгэж болохгүй!"
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Мессежүүд"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Ноорог"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
"Алдаа ! Даалгаврын дуусах хугацаа нь эхлэх хугацаанаасаа хойно байх ёстой"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Болих"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Хийсэн"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Нээх"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Хүлээгдэж буй"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Түүх"
#~ msgid "Project MailGateWay"
#~ msgstr "MailGateWay Төсөл"
#~ msgid "Details"
#~ msgstr "Нарийвчлал"
-104
View File
@@ -1,104 +0,0 @@
# Dutch translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2011-01-18 20:55+0000\n"
"Last-Translator: Douwe Wullink (Dypalio) <Unknown>\n"
"Language-Team: Dutch <nl@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Historie informatie"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Taak"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Fout! U kunt geen recursieve taken aanmaken."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Berichten"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Concept"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr "Fout! Einddatum taak moet groter zijn dat begindatum taak"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Annuleren"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Gereed"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Open"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Wachtend"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Geschiedenis"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "Deze module is een interface dat mail synchroniseert met OpenERP Project "
#~ "taak.\n"
#~ "\n"
#~ "Het maakt nieuwe taken aan zodra mail binnenkomt op de ingestelde "
#~ "mailserver.\n"
#~ "Daarbij houdt het alle verdere communicaties en taak statussen bij.\n"
#~ " "
#~ msgid "Attachments"
#~ msgstr "Bijlagen"
#~ msgid "Details"
#~ msgstr "Details"
#~ msgid "Project MailGateWay"
#~ msgstr "Project MailGateWay"
-105
View File
@@ -1,105 +0,0 @@
# Dutch (Belgium) translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-03-01 15:19+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch (Belgium) <nl_BE@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Historiekinformatie"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Taak"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "U kunt niet dezelfde taken maken."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Berichten"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Voorlopig"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
"Let op: de einddatum van de taak moet na de begindatum van de taak liggen"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Annuleren"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Gereed"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Open"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Wachtend"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Historiek"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "Deze module is een interface waarmee mails met OpenERP-projecttaken worden "
#~ "gesynchroniseerd.\n"
#~ "\n"
#~ "Hiermee worden taken gemaakt zodra een nieuwe mail binnenkomt via de "
#~ "ingestelde mailserver.\n"
#~ "Bovendien worden alle communicatie en taakstatussen bijgehouden.\n"
#~ " "
#~ msgid "Attachments"
#~ msgstr "Bijlagen"
#~ msgid "Project MailGateWay"
#~ msgstr "Projectmailgateway"
#~ msgid "Details"
#~ msgstr "Details"
-102
View File
@@ -1,102 +0,0 @@
# Polish translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2010-11-28 12:29+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Polish <pl@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Informacja o historii"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Zadanie"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr ""
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Wiadomosći"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Projekt"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Anuluj"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Wykonano"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Otwórz"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Oczekujące"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Historia"
#~ msgid "Project MailGateWay"
#~ msgstr "MailGateWay dla projektu"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "Ten moduł jest interfejsem do synchronizacji poczty z zadaniami w projektach "
#~ "OpenERP.\n"
#~ "\n"
#~ "Pozwala tworzyć projekty po otrzymaniu wiadomości przez odpowiednio "
#~ "skonfigurowany\n"
#~ "server pocztowy. Co więcej, utrzymuje on w jednym miejscu dalszą komunikację "
#~ "i stany zadań.\n"
#~ " "
#~ msgid "Details"
#~ msgstr "Szczegóły"
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * project_mailgate
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 6.1rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-02-08 00:37+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr ""
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr ""
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr ""
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr ""
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr ""
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr ""
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr ""
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr ""
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr ""
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr ""
-84
View File
@@ -1,84 +0,0 @@
# Portuguese translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2010-12-12 10:12+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Portuguese <pt@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Informação do Histórico"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Tarefa"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Erro ! Não se pode criar tarefas recursivas"
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Mensagens"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Rascunho"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr "Erro !Data final da tarefa dever ser posterior à data inicial"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Cancelar"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Concluído"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Abrir"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Pendente"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Histórico"
#~ msgid "Details"
#~ msgstr "Detalhes"
#~ msgid "Attachments"
#~ msgstr "Anexos"
-105
View File
@@ -1,105 +0,0 @@
# Brazilian Portuguese translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2011-01-17 11:53+0000\n"
"Last-Translator: Emerson <Unknown>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Informação Histórica"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Tarefa"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Erro! Você não pode criar tarefas recursivas."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Mensagens"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Provisório"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr "Erro ! A data final deve ser maior do que a data inicial"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Cancelar"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Concluído"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Abrir"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Pendente"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Histórico"
#~ msgid "Details"
#~ msgstr "Detalhes"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "Este módulo é uma interface que sincroniza emails com as Tarefas de Projetos "
#~ "OpenERP.\n"
#~ "\n"
#~ "Permite a criação de tarefas tão logo um novo email chegue no nosso servidor "
#~ "de email configurado.\n"
#~ "Além disso, mantém o controle de todas as demais comunicações e estados das "
#~ "tarefas.\n"
#~ " "
#~ msgid "Project MailGateWay"
#~ msgstr "Projeto Gateway de Email"
#~ msgid "Attachments"
#~ msgstr "Anexos"
-107
View File
@@ -1,107 +0,0 @@
# Romanian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-01-13 11:48+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Romanian <ro@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: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Istoric Informatii"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Sarcina"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "Eroare ! Nu puteti crea sarcini recursive."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Mesaje"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Ciorna"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
"Eroare ! Data de sfarsit a sarcinii trebuie sa fie mai mare decat data de "
"inceput"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Anulati"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Efectuat"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Deschideti"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "In asteptare"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Istoric"
#~ msgid "Project MailGateWay"
#~ msgstr "MailGAteWay Proiect"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "Acest modul este o interfată care sincronizează email-urile cu Activitatea "
#~ "de Proiect OpenERP.\n"
#~ "\n"
#~ "Permite crearea de sarcini de indată ce un nou email soseste in serverul de "
#~ "mail configurat.\n"
#~ "In plus, tine evidenta tuturor comunicatiilor viitoare si a stărilor "
#~ "activitătilor.\n"
#~ " "
#~ msgid "Attachments"
#~ msgstr "Atașamente"
#~ msgid "Details"
#~ msgstr "Detalii"

Some files were not shown because too many files have changed in this diff Show More