[Merge] Merge to get update of crm from bth's branch for social chatter.
bzr revid: jra@tinyerp.com-20120319070700-dvv1ild5nwuzozlx
This commit is contained in:
@@ -8,19 +8,19 @@ msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
||||
"PO-Revision-Date: 2011-11-03 22:52+0000\n"
|
||||
"PO-Revision-Date: 2012-03-13 16:49+0000\n"
|
||||
"Last-Translator: Milan Milosevic <Unknown>\n"
|
||||
"Language-Team: Serbian latin <sr@latin@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-02-09 06:32+0000\n"
|
||||
"X-Generator: Launchpad (build 14763)\n"
|
||||
"X-Launchpad-Export-Date: 2012-03-14 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 14933)\n"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,revenue_per_hour:0
|
||||
msgid "Revenue per Time (real)"
|
||||
msgstr ""
|
||||
msgstr "Prihod po vremenu (realnom)"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,remaining_ca:0
|
||||
@@ -38,11 +38,13 @@ msgid ""
|
||||
"The contracts to be renewed because the deadline is passed or the working "
|
||||
"hours are higher than the allocated hours"
|
||||
msgstr ""
|
||||
"Ugovor treba da se obnovi jer je rok pređen, ili ima više radnih sati od "
|
||||
"određenih sati"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Pending contracts to renew with your customer"
|
||||
msgstr ""
|
||||
msgstr "Ugovori na čekanju za potvrdu sa Vašom strankom"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,hours_qtt_non_invoiced:0
|
||||
@@ -50,26 +52,28 @@ msgid ""
|
||||
"Number of time (hours/days) (from journal of type 'general') that can be "
|
||||
"invoiced if you invoice based on analytic account."
|
||||
msgstr ""
|
||||
"Broj vremena (dana/sati) (iz dnevnika tipa 'opšte') koji se može fakturisati "
|
||||
"ako Vam je fakturisanje bazirano na analitičkom kontu."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Analytic Accounts with a past deadline in one month."
|
||||
msgstr ""
|
||||
msgstr "Analitička konta sa pređenim rokom u jednom mesecu."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Group By..."
|
||||
msgstr ""
|
||||
msgstr "Grupiši po..."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "End Date"
|
||||
msgstr ""
|
||||
msgstr "Datum završetka"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Create Invoice"
|
||||
msgstr ""
|
||||
msgstr "Napravi fakturu"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,last_invoice_date:0
|
||||
@@ -87,16 +91,18 @@ msgid ""
|
||||
"Number of time you spent on the analytic account (from timesheet). It "
|
||||
"computes quantities on all journal of type 'general'."
|
||||
msgstr ""
|
||||
"Vreme potrošeno na analitički konto (s vremenske tabele). Obračunava "
|
||||
"kvantitete na sve dnevnike tipa 'opšte'."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Contracts in progress"
|
||||
msgstr ""
|
||||
msgstr "Ugovori u toku"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,is_overdue_quantity:0
|
||||
msgid "Overdue Quantity"
|
||||
msgstr ""
|
||||
msgstr "Preloraečnja"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,help:account_analytic_analysis.action_account_analytic_overdue
|
||||
@@ -108,6 +114,11 @@ msgid ""
|
||||
"pending accounts and reopen or close the according to the negotiation with "
|
||||
"the customer."
|
||||
msgstr ""
|
||||
"Naći ćete ovde ugovore koje treba obnoviti jer je rok istekao, ili su radni "
|
||||
"sati veći od određenih. OpenERP automatski postavlja ta analitička konta na "
|
||||
"stanje 'na čekanju', da bi se iznelo upozorenje za vreme sačuvavanja u "
|
||||
"tabelama vremena. Prodavci bi trebalo da provere sva konta na čekanju i "
|
||||
"zatvore ili ih ponovo otvore, u zavisnosti od dogovora sa strankama."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,ca_theorical:0
|
||||
@@ -117,7 +128,7 @@ msgstr "Teoretski prihod"
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,hours_qtt_non_invoiced:0
|
||||
msgid "Uninvoiced Time"
|
||||
msgstr ""
|
||||
msgstr "Neobračunato vreme"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,last_worked_invoiced_date:0
|
||||
@@ -131,7 +142,7 @@ msgstr ""
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "To Renew"
|
||||
msgstr ""
|
||||
msgstr "Za obnovu"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,last_worked_date:0
|
||||
@@ -141,24 +152,25 @@ msgstr "Datum poslednje Cene / Rada"
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,hours_qtt_invoiced:0
|
||||
msgid "Invoiced Time"
|
||||
msgstr ""
|
||||
msgstr "Obračunato vreme"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid ""
|
||||
"A contract in OpenERP is an analytic account having a partner set on it."
|
||||
msgstr ""
|
||||
"Ugovor u OpenERP-u je analitički konto sa partnerom koji mu je pripisan."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,remaining_hours:0
|
||||
msgid "Remaining Time"
|
||||
msgstr ""
|
||||
msgstr "Preostalo vreme"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_overdue
|
||||
msgid "Contracts to Renew"
|
||||
msgstr ""
|
||||
msgstr "Ugovori za obnovu"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,theorical_margin:0
|
||||
@@ -168,7 +180,7 @@ msgstr "Teoretska stopa marže"
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid " +1 Month"
|
||||
msgstr ""
|
||||
msgstr " +1 mesec"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,ca_theorical:0
|
||||
@@ -183,7 +195,7 @@ msgstr ""
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
msgstr "Na čekanju"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,ca_to_invoice:0
|
||||
@@ -198,7 +210,7 @@ msgstr "Izračunato pomoću formule: Fakturisani iznos - Ukupni troškovi."
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Parent"
|
||||
msgstr ""
|
||||
msgstr "Parent"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,user_ids:0
|
||||
@@ -214,7 +226,7 @@ msgstr "Izračunava se pomoću formule: (Realna marža / ukupni troškovi) * 100
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.model,name:account_analytic_analysis.model_account_analytic_analysis_summary_user
|
||||
msgid "Hours Summary by User"
|
||||
msgstr "Ukupno sati po Korisniku"
|
||||
msgstr "Ukupno sati po korisniku"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,ca_invoiced:0
|
||||
@@ -229,7 +241,7 @@ msgstr "Datum poslednjeg obračunatog troška"
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Contract"
|
||||
msgstr ""
|
||||
msgstr "Ugovor"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,real_margin_rate:0
|
||||
@@ -264,7 +276,7 @@ msgstr "Preostali prihod"
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,remaining_hours:0
|
||||
msgid "Computed using the formula: Maximum Time - Total Time"
|
||||
msgstr ""
|
||||
msgstr "Obračunato koristeći formulu: Maksimalno vreme - ukupno vreme"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,hours_qtt_invoiced:0
|
||||
@@ -272,6 +284,8 @@ msgid ""
|
||||
"Number of time (hours/days) that can be invoiced plus those that already "
|
||||
"have been invoiced."
|
||||
msgstr ""
|
||||
"Trajanje vremena (dani/sati) koji se mogu obračunati, plus ono koje je već "
|
||||
"obračunato."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,ca_to_invoice:0
|
||||
@@ -285,7 +299,7 @@ msgstr ""
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,revenue_per_hour:0
|
||||
msgid "Computed using the formula: Invoiced Amount / Total Time"
|
||||
msgstr ""
|
||||
msgstr "Izračunato koristeći formulu: obračunat iznos / ukupno vreme"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,total_cost:0
|
||||
@@ -304,18 +318,18 @@ msgstr "Mesec"
|
||||
#: field:account_analytic_analysis.summary.user,account_id:0
|
||||
#: model:ir.model,name:account_analytic_analysis.model_account_analytic_account
|
||||
msgid "Analytic Account"
|
||||
msgstr "Analitički nalog"
|
||||
msgstr "Analitički konto"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue_all
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_overdue_all
|
||||
msgid "Contracts"
|
||||
msgstr ""
|
||||
msgstr "Ugovori"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
msgstr "Rukovodilac"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_hr_tree_invoiced_all
|
||||
@@ -326,22 +340,22 @@ msgstr "Sve neobračunate stavke"
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,last_invoice_date:0
|
||||
msgid "If invoice from the costs, this is the date of the latest invoiced."
|
||||
msgstr ""
|
||||
msgstr "ako se obračunava iz troškova, ovo je datum poslednjeg obračuna."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Associated Partner"
|
||||
msgstr ""
|
||||
msgstr "Povezani partner"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
msgstr "Otvori"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Contracts that are not assigned to an account manager."
|
||||
msgstr ""
|
||||
msgstr "Ugovori koji oš nisu pripisani rukovodiocu naloga."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,hours_quantity:0
|
||||
|
||||
@@ -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:35+0000\n"
|
||||
"PO-Revision-Date: 2012-03-07 18:50+0000\n"
|
||||
"PO-Revision-Date: 2012-03-13 16:55+0000\n"
|
||||
"Last-Translator: Milan Milosevic <Unknown>\n"
|
||||
"Language-Team: Serbian Latin <sr@latin@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-03-08 04:43+0000\n"
|
||||
"X-Generator: Launchpad (build 14914)\n"
|
||||
"X-Launchpad-Export-Date: 2012-03-14 04:43+0000\n"
|
||||
"X-Generator: Launchpad (build 14933)\n"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: view:account.bank.statement.line:0
|
||||
@@ -274,7 +274,7 @@ msgstr "Podređeni kodovi"
|
||||
#. module: account_bank_statement_extensions
|
||||
#: view:confirm.statement.line:0
|
||||
msgid "Are you sure you want to confirm the selected Bank Statement lines ?"
|
||||
msgstr "Da li zaista želite da izabrane redove izvoda banke?"
|
||||
msgstr "Da li zaista želite sa potvrdite izabrane redove izvoda banke?"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: constraint:account.bank.statement.line:0
|
||||
@@ -300,82 +300,82 @@ msgstr "Nacrt redova izvoda."
|
||||
#. module: account_bank_statement_extensions
|
||||
#: view:account.bank.statement.line:0
|
||||
msgid "Glob. Am."
|
||||
msgstr ""
|
||||
msgstr "Glob.izn."
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line
|
||||
msgid "Bank Statement Line"
|
||||
msgstr ""
|
||||
msgstr "Red izvoda banke"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: field:account.bank.statement.line.global,code:0
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
msgstr "Kod"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: field:account.bank.statement.line,counterparty_name:0
|
||||
msgid "Counterparty Name"
|
||||
msgstr ""
|
||||
msgstr "Ime druge strane"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: field:account.bank.statement.line.global,name:0
|
||||
msgid "Communication"
|
||||
msgstr ""
|
||||
msgstr "Komunikacija"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: model:ir.model,name:account_bank_statement_extensions.model_res_partner_bank
|
||||
msgid "Bank Accounts"
|
||||
msgstr ""
|
||||
msgstr "Bankovni računi"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: constraint:account.bank.statement:0
|
||||
msgid "The journal and period chosen have to belong to the same company."
|
||||
msgstr ""
|
||||
msgstr "Dnevnik i izabrani period treba da pripadaju istom preduzeću."
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement
|
||||
msgid "Bank Statement"
|
||||
msgstr ""
|
||||
msgstr "Izvod banke"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: view:account.bank.statement.line:0
|
||||
msgid "Statement Line"
|
||||
msgstr ""
|
||||
msgstr "Red izvoda"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: sql_constraint:account.bank.statement.line.global:0
|
||||
msgid "The code must be unique !"
|
||||
msgstr ""
|
||||
msgstr "Kod mora biti jedinstven !"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: field:account.bank.statement.line.global,bank_statement_line_ids:0
|
||||
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_bank_statement_line
|
||||
#: model:ir.ui.menu,name:account_bank_statement_extensions.bank_statement_line
|
||||
msgid "Bank Statement Lines"
|
||||
msgstr ""
|
||||
msgstr "Redovi izvoda banke"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: view:account.bank.statement.line.global:0
|
||||
msgid "Child Batch Payments"
|
||||
msgstr ""
|
||||
msgstr "Podređena grupna plaćanja"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: view:cancel.statement.line:0
|
||||
#: view:confirm.statement.line:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Otkaži"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: view:account.bank.statement.line:0
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
msgstr "Redovi izvoda"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: view:account.bank.statement.line:0
|
||||
msgid "Total Amount"
|
||||
msgstr ""
|
||||
msgstr "Ukupan iznos"
|
||||
|
||||
#. module: account_bank_statement_extensions
|
||||
#: field:account.bank.statement.line,globalisation_id:0
|
||||
msgid "Globalisation ID"
|
||||
msgstr ""
|
||||
msgstr "ID globalizacije"
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
# Gujarati 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-03-12 15:04+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Gujarati <gu@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-03-13 05:08+0000\n"
|
||||
"X-Generator: Launchpad (build 14933)\n"
|
||||
|
||||
#. module: base_iban
|
||||
#: constraint:res.partner.bank:0
|
||||
msgid ""
|
||||
"\n"
|
||||
"Please define BIC/Swift code on bank for bank type IBAN Account to make "
|
||||
"valid payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_iban
|
||||
#: code:addons/base_iban/base_iban.py:139
|
||||
#, python-format
|
||||
msgid "This IBAN does not pass the validation check, please verify it"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_iban
|
||||
#: model:res.partner.bank.type,format_layout:base_iban.bank_iban
|
||||
msgid "%(bank_name)s: IBAN %(acc_number)s - BIC %(bank_bic)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_iban
|
||||
#: model:res.partner.bank.type.field,name:base_iban.bank_swift_field
|
||||
msgid "bank_bic"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_iban
|
||||
#: model:res.partner.bank.type.field,name:base_iban.bank_zip_field
|
||||
msgid "zip"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_iban
|
||||
#: help:res.partner.bank,iban:0
|
||||
msgid "International Bank Account Number"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_iban
|
||||
#: model:ir.model,name:base_iban.model_res_partner_bank
|
||||
msgid "Bank Accounts"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_iban
|
||||
#: model:res.partner.bank.type.field,name:base_iban.bank_country_field
|
||||
msgid "country_id"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_iban
|
||||
#: code:addons/base_iban/base_iban.py:136
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The IBAN does not seem to be correct. You should have entered something like "
|
||||
"this %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_iban
|
||||
#: field:res.partner.bank,iban:0
|
||||
msgid "IBAN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_iban
|
||||
#: code:addons/base_iban/base_iban.py:140
|
||||
#, python-format
|
||||
msgid "The IBAN is invalid, it should begin with the country code"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_iban
|
||||
#: model:res.partner.bank.type,name:base_iban.bank_iban
|
||||
msgid "IBAN Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_iban
|
||||
#: constraint:res.partner.bank:0
|
||||
msgid "The RIB and/or IBAN is not valid"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Invalid XML for View Architecture!"
|
||||
#~ msgstr "દ્રશ્ય બંધારણ માટે અમાન્ય એક્સ.એમ.એલ!"
|
||||
@@ -258,19 +258,37 @@ class crm_base(object):
|
||||
data.update(self.onchange_partner_address_id(cr, uid, ids, addr['contact'])['value'])
|
||||
return {'value': data}
|
||||
|
||||
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||
return ''
|
||||
|
||||
def case_open_send_note(self, cr, uid, ids, context=None):
|
||||
for id in ids:
|
||||
msg = '%s has been <b>opened</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||
self.message_append_note(cr, uid, [id], 'System Notification', msg, context=context)
|
||||
return True
|
||||
|
||||
def case_close_send_note(self, cr, uid, ids, context=None):
|
||||
for id in ids:
|
||||
msg = '%s has been <b>closed</b>.'% (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||
self.message_append_note(cr, uid, [id], 'System Notification', msg, context=context)
|
||||
return True
|
||||
|
||||
def case_cancel_send_note(self, cr, uid, ids, context=None):
|
||||
for id in ids:
|
||||
msg = '%s has been <b>canceled</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||
self.message_append_note(cr, uid, [id], 'System Notification', msg, context=context)
|
||||
return True
|
||||
|
||||
def case_pending_send_note(self, cr, uid, ids, context=None):
|
||||
for id in ids:
|
||||
msg = '%s is now <b>pending</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||
self.message_append_note(cr, uid, [id], 'System Notification', msg, context=context)
|
||||
return True
|
||||
|
||||
def case_reset_send_note(self, cr, uid, ids, context=None):
|
||||
for id in ids:
|
||||
msg = '%s has been <b>renewed</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||
self.message_append_note(cr, uid, [id], 'System Notification', msg, context=context)
|
||||
return True
|
||||
|
||||
def case_open(self, cr, uid, ids, context=None):
|
||||
@@ -483,6 +501,7 @@ class crm_case(crm_base):
|
||||
cases = self.browse(cr, uid, ids)
|
||||
cases[0].state # to fill the browse record cache
|
||||
self.write(cr, uid, ids, {'state': state, 'active': True})
|
||||
self.case_reset_send_note(cr, uid, ids, context=context)
|
||||
self._action(cr, uid, cases, state)
|
||||
return True
|
||||
|
||||
|
||||
+32
-54
@@ -226,7 +226,7 @@ class crm_lead(crm_case, osv.osv):
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
obj_id = super(crm_lead, self).create(cr, uid, vals, context)
|
||||
self.case_create_send_note(cr, uid, [obj_id], context=context)
|
||||
self.create_send_note(cr, uid, [obj_id], context=context)
|
||||
return obj_id
|
||||
|
||||
|
||||
@@ -271,41 +271,30 @@ class crm_lead(crm_case, osv.osv):
|
||||
def stage_find_won(self, cr, uid, section_id):
|
||||
return self.stage_find_percent(cr, uid, 100.0, section_id)
|
||||
|
||||
def get_needaction_user_id(self, cr, uid, ids, name, arg, context=None):
|
||||
result = {}
|
||||
def get_needaction_user_ids(self, cr, uid, ids, context=None):
|
||||
result = dict.fromkeys(ids, [])
|
||||
for obj in self.browse(cr, uid, ids, context=context):
|
||||
result[obj.id] = False
|
||||
if (obj.state == 'draft' and obj.user_id):
|
||||
result[obj.id] = obj.user_id.id
|
||||
if obj.state == 'draft' and obj.user_id:
|
||||
result[obj.id] = [obj.user_id.id]
|
||||
return result
|
||||
|
||||
def case_reset_send_note(self, cr, uid, ids, context=None):
|
||||
for lead in self.browse(cr, uid, ids, context=context):
|
||||
message = _("%s has been <b>renewed</b>.") % ('Opportunity' if lead.type == 'opportunity' else 'Lead')
|
||||
lead.message_append_note('' ,message)
|
||||
return True
|
||||
def message_get_subscribers(self, cr, uid, ids, context=None):
|
||||
sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context);
|
||||
for obj in self.browse(cr, uid, ids, context=context):
|
||||
if obj.user_id:
|
||||
sub_ids.append(obj.user_id.id)
|
||||
return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
|
||||
|
||||
def case_create_send_note(self, cr, uid, ids, context=None):
|
||||
for lead in self.browse(cr, uid, ids, context=context):
|
||||
self.message_subscribe(cr, uid, ids, [lead.user_id.id], context=context)
|
||||
message = _("%s has been <b>created</b>.") % ('Opportunity' if lead.type == 'opportunity' and lead.state == 'draft' else 'Lead')
|
||||
self.message_append_note(cr, uid, ids, _('System notification'),
|
||||
def create_send_note(self, cr, uid, ids, context=None):
|
||||
for id in ids:
|
||||
message = _("%s has been <b>created</b>.")% (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||
self.message_append_note(cr, uid, [id], _('System notification'),
|
||||
message, type='notification', context=context)
|
||||
return True
|
||||
|
||||
def case_open_send_note(self, cr, uid, ids, context=None):
|
||||
for lead in self.browse(cr, uid, ids, context=context):
|
||||
if lead.state == 'draft' and lead.state == 'pending':
|
||||
return False
|
||||
message = _("%s has been <b>opened</b>.") % ('Opportunity' if lead.type == 'opportunity' else 'Lead')
|
||||
lead.message_append_note('' ,message)
|
||||
return True
|
||||
|
||||
def case_close_send_note(self, cr, uid, ids, context=None):
|
||||
for lead in self.browse(cr, uid, ids, context=context):
|
||||
message = _("%s has been <b>closed</b>.") % ('Opportunity' if lead.type == 'opportunity' else 'Lead')
|
||||
lead.message_append_note('' ,message)
|
||||
return True
|
||||
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||
lead = self.browse(cr, uid, [id], context=context)[0]
|
||||
return ('Opportunity' if lead.type == 'opportunity' else 'Lead')
|
||||
|
||||
def case_mark_lost_send_note(self, cr, uid, ids, context=None):
|
||||
for opportunity in self.browse(cr, uid, ids, context=context):
|
||||
@@ -319,44 +308,33 @@ class crm_lead(crm_case, osv.osv):
|
||||
opportunity.message_append_note('' ,message)
|
||||
return True
|
||||
|
||||
def case_cancel_send_note(self, cr, uid, ids, context=None):
|
||||
for lead in self.browse(cr, uid, ids, context=context):
|
||||
message = _("%s has been <b>cancelled</b>.") % ('Opportunity' if lead.type == 'opportunity' else 'Lead')
|
||||
lead.message_append_note('' ,message)
|
||||
return True
|
||||
|
||||
def case_pending_send_note(self, cr, uid, ids, context=None):
|
||||
for lead in self.browse(cr, uid, ids, context=context):
|
||||
message = _("%s is <b>pending</b>.") % ('Opportunity' if lead.type == 'opportunity' else 'Lead')
|
||||
lead.message_append_note('' ,message)
|
||||
return True
|
||||
|
||||
def case_escalate_send_note(self, cr, uid, ids, context=None):
|
||||
for lead in self.browse(cr, uid, ids, context=context):
|
||||
message = _("Lead has been <b>escalated</b>.")
|
||||
lead.message_append_note('' ,message)
|
||||
return True
|
||||
|
||||
def case_phonecall_send_note(self, cr, uid, ids, case, phonecall, action, context=None):
|
||||
def schedule_phonecall_send_note(self, cr, uid, ids, case, phonecall, action, context=None):
|
||||
for obj in phonecall.browse(cr, uid, ids, context=context):
|
||||
message = _("<b>%s a call</b> for the <em>%s</em>.") % (action, obj.date)
|
||||
case.message_append_note('', message)
|
||||
|
||||
def case_partner_send_note(self, cr, uid, ids, context=None):
|
||||
def _lead_set_partner_send_note(self, cr, uid, ids, context=None):
|
||||
for lead in self.browse(cr, uid, ids, context=context):
|
||||
message = _("Partner has been <b>created</b>")
|
||||
lead.message_append_note('' ,message)
|
||||
return True
|
||||
|
||||
def case_open(self, cr, uid, ids, context=None):
|
||||
res = super(crm_lead, self).case_open(cr, uid, ids, context)
|
||||
for lead in self.browse(cr, uid, ids, context=context):
|
||||
value = {'date_open': time.strftime('%Y-%m-%d %H:%M:%S')}
|
||||
self.write(cr, uid, [lead.id], value)
|
||||
if lead.type == 'opportunity' and not lead.stage_id:
|
||||
stage_id = self.stage_find(cr, uid, lead.section_id.id or False, [('sequence','>',0)])
|
||||
if stage_id:
|
||||
self.stage_set(cr, uid, [lead.id], stage_id)
|
||||
if lead.state == 'draft':
|
||||
value = {'date_open': time.strftime('%Y-%m-%d %H:%M:%S')}
|
||||
self.write(cr, uid, [lead.id], value)
|
||||
if lead.type == 'opportunity' and not lead.stage_id:
|
||||
stage_id = self.stage_find(cr, uid, lead.section_id.id or False, [('sequence','>',0)])
|
||||
if stage_id:
|
||||
self.stage_set(cr, uid, [lead.id], stage_id)
|
||||
res = super(crm_lead, self).case_open(cr, uid, ids, context)
|
||||
return res
|
||||
|
||||
def case_close(self, cr, uid, ids, context=None):
|
||||
@@ -376,7 +354,6 @@ class crm_lead(crm_case, osv.osv):
|
||||
"""
|
||||
res = super(crm_lead, self).case_reset(cr, uid, ids, context)
|
||||
self.write(cr, uid, ids, {'stage_id': False, 'probability': 0.0})
|
||||
self.case_reset_send_note(cr, uid, ids, context=context)
|
||||
return res
|
||||
|
||||
def case_mark_lost(self, cr, uid, ids, context=None):
|
||||
@@ -505,7 +482,7 @@ class crm_lead(crm_case, osv.osv):
|
||||
|
||||
subject = subject[0] + ", ".join(subject[1:])
|
||||
details = "\n\n".join(details)
|
||||
return opportunity.message_append_note(subject, body=details)
|
||||
return self.message_append_note(cr, uid, [opportunity_id], subject, body=details)
|
||||
|
||||
def _merge_opportunity_history(self, cr, uid, opportunity_id, opportunities, context=None):
|
||||
message = self.pool.get('mail.message')
|
||||
@@ -661,7 +638,8 @@ class crm_lead(crm_case, osv.osv):
|
||||
res_partner.write(cr, uid, partner_id, {'section_id': lead.section_id.id or False})
|
||||
contact_id = res_partner.address_get(cr, uid, [partner_id])['default']
|
||||
res = lead.write({'partner_id' : partner_id, 'partner_address_id': contact_id}, context=context)
|
||||
self.case_partner_send_note(cr, uid, [lead.id], context)
|
||||
self._lead_set_partner_send_note(cr, uid, [lead.id], context)
|
||||
|
||||
return res
|
||||
|
||||
def _lead_create_partner_address(self, cr, uid, lead, partner_id, context=None):
|
||||
@@ -767,7 +745,7 @@ class crm_lead(crm_case, osv.osv):
|
||||
if action == 'log':
|
||||
phonecall.case_close(cr, uid, [new_id])
|
||||
phonecall_dict[lead.id] = new_id
|
||||
self.case_phonecall_send_note(cr, uid, [new_id], lead, phonecall, action, context=context)
|
||||
self.schedule_phonecall_send_note(cr, uid, [new_id], lead, phonecall, action, context=context)
|
||||
return phonecall_dict
|
||||
|
||||
|
||||
|
||||
@@ -77,10 +77,6 @@
|
||||
icon="gtk-go-forward" context="{'stage_type': 'lead'}" />
|
||||
</group>
|
||||
<field name="type" invisible="1"/>
|
||||
<label colspan="6" string=""/>
|
||||
<button string="Send New Email"
|
||||
name="%(mail.action_email_compose_message_wizard)d"
|
||||
icon="terp-mail-message-new" type="action"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Lead">
|
||||
@@ -279,7 +275,10 @@
|
||||
<field name="company_currency"/>
|
||||
</t>
|
||||
</td>
|
||||
<td valign="top" width="22"><img t-att-src="kanban_gravatar(record.user_email.value, 22)" class="oe_kanban_gravatar" t-att-title="record.user_id.value"/></td>
|
||||
<td valign="top" width="22">
|
||||
<img t-att-src="kanban_image('res.users', 'avatar_mini', record.user_id.raw_value[0])" t-att-title="record.user_id.value"
|
||||
width="22" height="22" class="oe_kanban_gravatar"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -440,10 +439,6 @@
|
||||
<field name="priority" string="Priority"/>
|
||||
<newline/>
|
||||
<field name="type" invisible="1"/>
|
||||
<label colspan="6" string=""/>
|
||||
<button string="Send New Email"
|
||||
name="%(mail.action_email_compose_message_wizard)d"
|
||||
icon="terp-mail-message-new" type="action"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Opportunity">
|
||||
|
||||
@@ -82,7 +82,7 @@ class crm_meeting(crm_base, osv.osv):
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
obj_id = super(crm_meeting, self).create(cr, uid, vals, context=context)
|
||||
self.case_create_send_note(cr, uid, [obj_id], context=context)
|
||||
self.create_send_note(cr, uid, [obj_id], context=context)
|
||||
return obj_id
|
||||
|
||||
def get_needaction_user_id(self, cr, uid, ids, name, arg, context=None):
|
||||
@@ -93,7 +93,7 @@ class crm_meeting(crm_base, osv.osv):
|
||||
result[obj.id] = obj.user_id.id
|
||||
return result
|
||||
|
||||
def case_create_send_note(self, cr, uid, ids, context=None):
|
||||
def create_send_note(self, cr, uid, ids, context=None):
|
||||
lead_obj = self.pool.get('crm.lead')
|
||||
phonecall_obj = self.pool.get('crm.phonecall')
|
||||
for obj in self.browse(cr, uid, ids, context=context):
|
||||
|
||||
@@ -91,6 +91,9 @@ class crm_phonecall(crm_base, osv.osv):
|
||||
'active': 1,
|
||||
}
|
||||
|
||||
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||
return ''
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
obj_id = super(crm_phonecall, self).create(cr, uid, vals, context)
|
||||
for phonecall in self.browse(cr, uid, [obj_id], context=context):
|
||||
@@ -137,7 +140,7 @@ class crm_phonecall(crm_base, osv.osv):
|
||||
phonecall.message_append_note('' ,message)
|
||||
return True
|
||||
|
||||
def case_partner_send_note(self, cr, uid, ids, context=None):
|
||||
def set_partner_send_note(self, cr, uid, ids, context=None):
|
||||
for phonecall in self.browse(cr, uid, ids, context=context):
|
||||
message = _("Partner has been <b>created</b>")
|
||||
phonecall.message_append_note('' ,message)
|
||||
@@ -231,7 +234,7 @@ class crm_phonecall(crm_base, osv.osv):
|
||||
|
||||
def _call_set_partner(self, cr, uid, ids, partner_id, context=None):
|
||||
self.write(cr, uid, ids, {'partner_id' : partner_id}, context=context)
|
||||
self.case_partner_send_note(cr, uid, ids, context)
|
||||
self.set_partner_send_note(cr, uid, ids, context)
|
||||
|
||||
def _call_create_partner_address(self, cr, uid, phonecall, partner_id, context=None):
|
||||
address = self.pool.get('res.partner.address')
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
CRM kanban avatar specs
|
||||
=======================
|
||||
|
||||
Kanban view of opportunities has been updated to use the newly-introduced avatar_mini field of res.users. The avatar is placed in the right-side of the containing kanban box.
|
||||
@@ -0,0 +1,6 @@
|
||||
:orphan:
|
||||
|
||||
CRM module documentation
|
||||
========================
|
||||
|
||||
.. include:: index.rst.inc
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
CRM Module
|
||||
''''''''''
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
crm_kanban_avatar
|
||||
@@ -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-02-15 20:06+0000\n"
|
||||
"PO-Revision-Date: 2012-03-12 08:00+0000\n"
|
||||
"Last-Translator: Carlos @ smile-iberia <Unknown>\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-02-16 05:06+0000\n"
|
||||
"X-Generator: Launchpad (build 14781)\n"
|
||||
"X-Launchpad-Export-Date: 2012-03-13 05:08+0000\n"
|
||||
"X-Generator: Launchpad (build 14933)\n"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim.report,nbr:0
|
||||
@@ -254,7 +254,7 @@ msgstr "Acción siguiente"
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "My Sales Team(s)"
|
||||
msgstr ""
|
||||
msgstr "Mi(s) equipo(s) de ventas"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:crm.case.stage,name:crm_claim.stage_claim3
|
||||
@@ -475,7 +475,7 @@ msgstr "Junio"
|
||||
#. module: crm_claim
|
||||
#: view:res.partner:0
|
||||
msgid "Partners Claim"
|
||||
msgstr ""
|
||||
msgstr "Reclamaciones de empresas"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,partner_phone:0
|
||||
@@ -490,7 +490,7 @@ msgstr "Usuario"
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,active:0
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
msgstr "Activo"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,month:0
|
||||
@@ -786,7 +786,7 @@ msgstr "ID"
|
||||
#. module: crm_claim
|
||||
#: constraint:res.partner:0
|
||||
msgid "Error ! You cannot create recursive associated members."
|
||||
msgstr ""
|
||||
msgstr "¡Error! No puede crear miembros asociados recursivamente."
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
|
||||
@@ -37,6 +37,7 @@ It defines a new kind of service products that offers you the possibility to cho
|
||||
'depends': ['event','sale','sale_crm'],
|
||||
'update_xml': [
|
||||
'event_sale_view.xml',
|
||||
'event_demo.xml',
|
||||
],
|
||||
'test':['test/confirm.yml'],
|
||||
'installable': True,
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="event_technical_training" model="event.event">
|
||||
<field name="name">Technical training in Grand-Rosiere</field>
|
||||
<field eval="(DateTime.now() + timedelta(15)).strftime('%Y-%m-%d 7:00:00')" name="date_begin"/>
|
||||
<field eval="(DateTime.now() + timedelta(20)).strftime('%Y-%m-%d 16:00:00')" name="date_end"/>
|
||||
<field name="type" ref="event.event_type_4"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
|
||||
<record id="event_product" model="product.product">
|
||||
<field name="name">Technical Training</field>
|
||||
<field name="event_ok">True</field>
|
||||
<field name="event_type_id" ref="event.event_type_4"/>
|
||||
<field name="categ_id" ref="product.cat1"/>
|
||||
<field name="type">service</field>
|
||||
<field name="list_price">2500.0</field>
|
||||
<field name="standard_price">1000.0</field>
|
||||
<field name="supply_method">produce</field>
|
||||
<field name="uom_id" ref="product.product_uom_unit"/>
|
||||
<field name="uom_po_id" ref="product.product_uom_unit"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -0,0 +1,21 @@
|
||||
# -*- 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/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
# -*- 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/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
'name': 'Events Sales layout',
|
||||
'version': '0.1',
|
||||
'category': 'Tools',
|
||||
'complexity': "easy",
|
||||
'description': """
|
||||
This module ensures the compatibility of the changes made on the sale.order.line form view in event_sale with the sale_layout module (that is replacing the whole field in the view by another one). Its installation is automatically triggered when both modules are installed.
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'depends': ['event_sale','sale_layout'],
|
||||
'update_xml': [
|
||||
'event_sale_layout.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install':True,
|
||||
'category': 'Hidden',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
@@ -0,0 +1,18 @@
|
||||
<openerp>
|
||||
<data>
|
||||
<record model="ir.ui.view" id="view_order_form_inherit_1">
|
||||
<field name="name">event.sale.order</field>
|
||||
<field name="model">sale.order</field>
|
||||
<field name="type">form</field>
|
||||
<field name="priority">10000</field>
|
||||
<field name="inherit_id" ref="sale.view_order_form" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='discount']" position="after">
|
||||
<field name="event_id" colspan="3" domain="[('type', 'in', list(set((event_type_id,False))))]" attrs="{'invisible': [('event_ok', '=', False)],'required': [('event_ok', '!=', False)]}"/>
|
||||
<field name="event_type_id" invisible='1'/>
|
||||
<field name="event_ok" invisible='1'/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -0,0 +1,120 @@
|
||||
# French 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-03-12 21:03+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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-03-13 05:08+0000\n"
|
||||
"X-Generator: Launchpad (build 14933)\n"
|
||||
|
||||
#. module: google_base_account
|
||||
#: field:res.users,gmail_user:0
|
||||
msgid "Username"
|
||||
msgstr "Utilisateur"
|
||||
|
||||
#. module: google_base_account
|
||||
#: model:ir.actions.act_window,name:google_base_account.act_google_login_form
|
||||
msgid "Google Login"
|
||||
msgstr ""
|
||||
|
||||
#. module: google_base_account
|
||||
#: code:addons/google_base_account/wizard/google_login.py:29
|
||||
#, python-format
|
||||
msgid "Google Contacts Import Error!"
|
||||
msgstr ""
|
||||
|
||||
#. module: google_base_account
|
||||
#: view:res.users:0
|
||||
msgid " Synchronization "
|
||||
msgstr " Synchronisation "
|
||||
|
||||
#. module: google_base_account
|
||||
#: sql_constraint:res.users:0
|
||||
msgid "You can not have two users with the same login !"
|
||||
msgstr "Vous ne pouvez pas avoir deux utilisateurs avec le même login !"
|
||||
|
||||
#. module: google_base_account
|
||||
#: code:addons/google_base_account/wizard/google_login.py:75
|
||||
#, python-format
|
||||
msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
||||
#. module: google_base_account
|
||||
#: view:google.login:0
|
||||
msgid "Google login"
|
||||
msgstr "Login Google"
|
||||
|
||||
#. module: google_base_account
|
||||
#: model:ir.model,name:google_base_account.model_res_users
|
||||
msgid "res.users"
|
||||
msgstr "res.users"
|
||||
|
||||
#. module: google_base_account
|
||||
#: field:google.login,password:0
|
||||
msgid "Google Password"
|
||||
msgstr "Mot de passe Google"
|
||||
|
||||
#. module: google_base_account
|
||||
#: view:google.login:0
|
||||
msgid "_Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#. module: google_base_account
|
||||
#: view:res.users:0
|
||||
msgid "Google Account"
|
||||
msgstr "Compte Google"
|
||||
|
||||
#. module: google_base_account
|
||||
#: field:google.login,user:0
|
||||
msgid "Google Username"
|
||||
msgstr ""
|
||||
|
||||
#. module: google_base_account
|
||||
#: code:addons/google_base_account/wizard/google_login.py:29
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please install gdata-python-client from http://code.google.com/p/gdata-"
|
||||
"python-client/downloads/list"
|
||||
msgstr ""
|
||||
|
||||
#. module: google_base_account
|
||||
#: model:ir.model,name:google_base_account.model_google_login
|
||||
msgid "Google Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: google_base_account
|
||||
#: view:google.login:0
|
||||
msgid "_Login"
|
||||
msgstr ""
|
||||
|
||||
#. module: google_base_account
|
||||
#: constraint:res.users:0
|
||||
msgid "The chosen company is not in the allowed companies for this user"
|
||||
msgstr "La société choisie n'est pas autorisée pour cet utilisateur."
|
||||
|
||||
#. module: google_base_account
|
||||
#: field:res.users,gmail_password:0
|
||||
msgid "Password"
|
||||
msgstr "Mot de passe"
|
||||
|
||||
#. module: google_base_account
|
||||
#: code:addons/google_base_account/wizard/google_login.py:75
|
||||
#, python-format
|
||||
msgid "Authentication fail check the user and password !"
|
||||
msgstr ""
|
||||
"Echec de l'uthentification, vérifier l'utilisateur et le mot de passe!"
|
||||
|
||||
#. module: google_base_account
|
||||
#: view:google.login:0
|
||||
msgid "ex: user@gmail.com"
|
||||
msgstr "ex: nom.prenom@gmail.com"
|
||||
@@ -0,0 +1,8 @@
|
||||
HR photo specs
|
||||
==============
|
||||
|
||||
This revision modifies the photo for HR employees. Two fields now exist in the hr.employee model:
|
||||
- photo, a binary field holding the image
|
||||
- photo_mini, a binary field holding an automatically resized version of the avatar. Dimensions of the resized avatar are 180x150.
|
||||
|
||||
Employee photo should be used only when dealing with employees, using the photo_mini field. When dealing with users, use the res.users avatar_mini field instead.
|
||||
@@ -0,0 +1,6 @@
|
||||
:orphan:
|
||||
|
||||
HR module documentation
|
||||
=======================
|
||||
|
||||
.. include:: index.rst.inc
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
HR Module
|
||||
'''''''''
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
hr_employee_img
|
||||
+21
-17
@@ -149,24 +149,28 @@ class hr_employee(osv.osv):
|
||||
_description = "Employee"
|
||||
_inherits = {'resource.resource': "resource_id"}
|
||||
|
||||
def onchange_photo_mini(self, cr, uid, ids, value, context=None):
|
||||
return {'value': {'photo': value, 'photo_mini': self._photo_resize(cr, uid, value) } }
|
||||
|
||||
def _set_photo_mini(self, cr, uid, id, name, value, args, context=None):
|
||||
return self.write(cr, uid, [id], {'photo': value}, context=context)
|
||||
|
||||
def _photo_resize(self, cr, uid, photo, context=None):
|
||||
image_stream = io.BytesIO(photo.decode('base64'))
|
||||
img = Image.open(image_stream)
|
||||
img.thumbnail((180, 150), Image.ANTIALIAS)
|
||||
img_stream = StringIO.StringIO()
|
||||
img.save(img_stream, "JPEG")
|
||||
return img_stream.getvalue().encode('base64')
|
||||
|
||||
def _get_photo_mini(self, cr, uid, ids, name, args, context=None):
|
||||
result = {}
|
||||
for obj in self.browse(cr, uid, ids, context=context):
|
||||
if not obj.photo:
|
||||
result[obj.id] = False
|
||||
continue
|
||||
|
||||
image_stream = io.BytesIO(obj.photo.decode('base64'))
|
||||
img = Image.open(image_stream)
|
||||
img.thumbnail((180, 150), Image.ANTIALIAS)
|
||||
img_stream = StringIO.StringIO()
|
||||
img.save(img_stream, "JPEG")
|
||||
result[obj.id] = img_stream.getvalue().encode('base64')
|
||||
for hr_empl in self.browse(cr, uid, ids, context=context):
|
||||
if not hr_empl.photo:
|
||||
result[hr_empl.id] = False
|
||||
else:
|
||||
result[hr_empl.id] = self._photo_resize(cr, uid, hr_empl.photo, context=context)
|
||||
return result
|
||||
|
||||
def _set_photo_mini(self, cr, uid, id, name, value, args, context=None):
|
||||
self.write(cr, uid, [id], {'photo': value}, context=context)
|
||||
return True
|
||||
|
||||
_columns = {
|
||||
'country_id': fields.many2one('res.country', 'Nationality'),
|
||||
@@ -244,11 +248,11 @@ class hr_employee(osv.osv):
|
||||
|
||||
def _get_photo(self, cr, uid, context=None):
|
||||
photo_path = addons.get_module_resource('hr','images','photo.png')
|
||||
return open(photo_path, 'rb').read().encode('base64')
|
||||
return self._photo_resize(cr, uid, open(photo_path, 'rb').read().encode('base64'))
|
||||
|
||||
_defaults = {
|
||||
'active': 1,
|
||||
'photo': _get_photo,
|
||||
'photo_mini': _get_photo,
|
||||
'marital': 'single',
|
||||
'color': 0,
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
<field name="parent_id" />
|
||||
</group>
|
||||
<group colspan="2" col="1">
|
||||
<field name="photo_mini" widget='image' nolabel="1"/>
|
||||
<field name="photo_mini" widget='image' nolabel="1" on_change="onchange_photo_mini(photo_mini)"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook colspan="6">
|
||||
@@ -135,7 +135,7 @@
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_employee_vignette">
|
||||
<div class="oe_employee_image">
|
||||
<a type="edit"><img t-att-src="kanban_image('hr.employee', 'photo', record.id.value)" class="oe_employee_picture"/></a>
|
||||
<a type="edit"><img t-att-src="kanban_image('hr.employee', 'photo_mini', record.id.value)" class="oe_employee_picture"/></a>
|
||||
</div>
|
||||
<div class="oe_employee_details">
|
||||
<h4><a type="edit"><field name="name"/> (<field name="login"/>)</a></h4>
|
||||
|
||||
@@ -358,12 +358,18 @@ class hr_holidays(osv.osv):
|
||||
# OpenChatter and notifications
|
||||
# -----------------------------
|
||||
|
||||
def get_needaction_user_id(self, cr, uid, ids, name, arg, context=None):
|
||||
result = {}
|
||||
def get_needaction_user_ids(self, cr, uid, ids, context=None):
|
||||
result = dict.fromkeys(ids, [])
|
||||
for obj in self.browse(cr, uid, ids, context=context):
|
||||
result[obj.id] = False
|
||||
if (obj.state == 'confirm' and obj.employee_id.parent_id):
|
||||
result[obj.id] = obj.employee_id.parent_id.user_id.id
|
||||
if obj.state == 'confirm' and obj.employee_id.parent_id:
|
||||
result[obj.id] = [obj.employee_id.parent_id.user_id.id]
|
||||
elif obj.state == 'validate1' or obj.state == 'validate':
|
||||
# get group_hr_manager: everyone will be warned of second validation
|
||||
res = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base', 'group_hr_manager') or False
|
||||
obj_id = res and res[1] or False
|
||||
if obj_id:
|
||||
hr_manager_group = self.pool.get('res.groups').read(cr, uid, [obj_id], ['users'], context=context)[0]
|
||||
result[obj.id] = hr_manager_group['users']
|
||||
return result
|
||||
|
||||
def message_get_subscribers(self, cr, uid, ids, context=None):
|
||||
@@ -377,37 +383,37 @@ class hr_holidays(osv.osv):
|
||||
def create_notificate(self, cr, uid, ids, context=None):
|
||||
for obj in self.browse(cr, uid, ids, context=context):
|
||||
self.message_append_note(cr, uid, ids, _('System notification'),
|
||||
_("The %s request has been created and is waiting confirmation")
|
||||
_("The %s request has been <b>created</b> and is waiting confirmation")
|
||||
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
|
||||
return True
|
||||
|
||||
def holidays_confirm_notificate(self, cr, uid, ids, context=None):
|
||||
for obj in self.browse(cr, uid, ids):
|
||||
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
||||
_("The %s request has been confirmed and is waiting for validation by the manager.")
|
||||
_("The %s request has been <b>confirmed</b> and is waiting for validation by the manager.")
|
||||
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification')
|
||||
|
||||
def holidays_validate_notificate(self, cr, uid, ids, context=None):
|
||||
for obj in self.browse(cr, uid, ids):
|
||||
if obj.holiday_status_id.double_validation:
|
||||
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
||||
_("The %s request has been validated. A second validation is necessary and is now pending.")
|
||||
_("The %s request has been <b>validated</b>. A second validation is necessary and is now pending.")
|
||||
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
|
||||
else:
|
||||
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
||||
_("The %s request has been validated. The validation process is now over.")
|
||||
_("The %s request has been <b>validated</b>. The validation process is now over.")
|
||||
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
|
||||
|
||||
def holidays_valid2_notificate(self, cr, uid, ids, context=None):
|
||||
for obj in self.browse(cr, uid, ids):
|
||||
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
||||
_("The %s request has been double validated. The validation process is now over.")
|
||||
_("The %s request has been <b>double validated</b>. The validation process is now over.")
|
||||
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
|
||||
|
||||
def holidays_refuse_notificate(self, cr, uid, ids, approval, context=None):
|
||||
for obj in self.browse(cr, uid, ids):
|
||||
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
||||
_("The %s request has been refused. The validation process is now over.")
|
||||
_("The %s request has been <b>refused</b>. The validation process is now over.")
|
||||
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
|
||||
|
||||
hr_holidays()
|
||||
|
||||
@@ -95,9 +95,6 @@
|
||||
<button string="Approved" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_user"/>
|
||||
<button string="Set to Draft" name="set_to_draft" states="refuse,validate" type="object" icon="gtk-convert" groups="base.group_hr_user"/>
|
||||
</group>
|
||||
<separator string="Temporary Need Action" colspan="4"/>
|
||||
<field name="need_action_user_id"/>
|
||||
<newline/>
|
||||
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
|
||||
</page>
|
||||
</notebook>
|
||||
|
||||
@@ -516,7 +516,7 @@ class hr_timesheet_line(osv.osv):
|
||||
store={
|
||||
'hr_timesheet_sheet.sheet': (_get_hr_timesheet_sheet, ['employee_id', 'date_from', 'date_to'], 10),
|
||||
'account.analytic.line': (_get_account_analytic_line, ['user_id', 'date'], 10),
|
||||
'hr.analytic.timesheet': (lambda self,cr,uid,ids,context=None: ids, ['line_id'], 10),
|
||||
'hr.analytic.timesheet': (lambda self,cr,uid,ids,context=None: ids, None, 10),
|
||||
},
|
||||
),
|
||||
}
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
- account_id: account.analytic_sednacom
|
||||
date: !eval time.strftime('%Y-%m-%d')
|
||||
name: 'Develop yaml for hr module'
|
||||
user_id: base.user_qdp
|
||||
unit_amount: 6.00
|
||||
amount: -90.00
|
||||
product_id: product.product_consultant
|
||||
@@ -96,6 +97,7 @@
|
||||
date: !eval time.strftime('%Y-%m-%d')
|
||||
name: 'Develop yaml for hr module'
|
||||
unit_amount: 2.00
|
||||
user_id: base.user_qdp
|
||||
amount: -90.00
|
||||
product_id: product.product_consultant
|
||||
general_account_id: account.a_expense
|
||||
|
||||
@@ -61,7 +61,7 @@ class mail_thread(osv.osv):
|
||||
'''
|
||||
_name = 'mail.thread'
|
||||
_description = 'Email Thread'
|
||||
_inherit = ['res.needaction']
|
||||
_inherit = ['base.needaction']
|
||||
|
||||
def _get_message_ids(self, cr, uid, ids, name, arg, context=None):
|
||||
res = {}
|
||||
@@ -73,7 +73,8 @@ class mail_thread(osv.osv):
|
||||
# OpenSocial: message_ids_social is a dummy field that should not be used
|
||||
_columns = {
|
||||
'message_ids_social': fields.function(_get_message_ids, method=True,
|
||||
type='one2many', obj='mail.message', string='Temp messages'),
|
||||
type='one2many', obj='mail.message', string='Temp messages',
|
||||
_fields_id = 'res_id'),
|
||||
}
|
||||
|
||||
#------------------------------------------------------
|
||||
@@ -144,8 +145,8 @@ class mail_thread(osv.osv):
|
||||
# parse message to get requested users
|
||||
user_to_push_ids += self.message_parse_users(cr, uid, [msg_id], vals['body_text'], context=context)
|
||||
# push to need_action_user_id if set
|
||||
if thread_obj.need_action_user_id and thread_obj.need_action_user_id.id not in user_to_push_ids:
|
||||
user_to_push_ids.append(thread_obj.need_action_user_id.id)
|
||||
#if thread_obj.need_action_user_id and thread_obj.need_action_user_id.id not in user_to_push_ids:
|
||||
#user_to_push_ids.append(thread_obj.need_action_user_id.id)
|
||||
|
||||
# effectively push message to users
|
||||
for id in user_to_push_ids:
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
# Slovenian 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-03-13 10:50+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Slovenian <sl@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-03-14 04:43+0000\n"
|
||||
"X-Generator: Launchpad (build 14933)\n"
|
||||
|
||||
#. module: pad_project
|
||||
#: constraint:project.task:0
|
||||
msgid "Error ! Task end-date must be greater then task start-date"
|
||||
msgstr ""
|
||||
|
||||
#. module: pad_project
|
||||
#: model:ir.model,name:pad_project.model_project_task
|
||||
msgid "Task"
|
||||
msgstr ""
|
||||
|
||||
#. module: pad_project
|
||||
#: view:project.task:0
|
||||
msgid "Pad"
|
||||
msgstr ""
|
||||
|
||||
#. module: pad_project
|
||||
#: constraint:project.task:0
|
||||
msgid "Error ! You cannot create recursive tasks."
|
||||
msgstr ""
|
||||
@@ -43,5 +43,4 @@
|
||||
I test that the total of the attached invoice is correct
|
||||
-
|
||||
!assert {model: pos.order, id: pos_order_pos1, string: Invoice not correct}:
|
||||
- bool(invoice_id)
|
||||
- invoice_id.amount_total == (450*2 + 300*3*1.05)*0.95
|
||||
- amount_total == (450*2 + 300*3*1.05)*0.95
|
||||
|
||||
@@ -0,0 +1,285 @@
|
||||
# Gujarati 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-12 15:08+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Gujarati <gu@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-03-13 05:08+0000\n"
|
||||
"X-Generator: Launchpad (build 14933)\n"
|
||||
|
||||
#. module: product_margin
|
||||
#: view:product.product:0
|
||||
#: field:product.product,turnover:0
|
||||
msgid "Turnover"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.product,expected_margin_rate:0
|
||||
msgid "Expected Margin (%)"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.margin,from_date:0
|
||||
msgid "From"
|
||||
msgstr "તરફથી"
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,sale_expected:0
|
||||
msgid ""
|
||||
"Sum of Multification of Sale Catalog price and quantity of Customer Invoices"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,total_margin:0
|
||||
msgid "Turnorder - Standard price"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.margin,to_date:0
|
||||
msgid "To"
|
||||
msgstr "પ્રતિ"
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.product,date_to:0
|
||||
msgid "To Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.product,date_from:0
|
||||
msgid "From Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: selection:product.margin,invoice_state:0
|
||||
#: selection:product.product,invoice_state:0
|
||||
msgid "Draft, Open and Paid"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.product,purchase_avg_price:0
|
||||
#: field:product.product,sale_avg_price:0
|
||||
msgid "Avg. Unit Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: model:ir.model,name:product_margin.model_product_product
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: view:product.product:0
|
||||
msgid "Catalog Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: selection:product.margin,invoice_state:0
|
||||
#: selection:product.product,invoice_state:0
|
||||
msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,sales_gap:0
|
||||
msgid "Expected Sale - Turn Over"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.product,sale_expected:0
|
||||
msgid "Expected Sale"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: view:product.product:0
|
||||
msgid "Standard Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,purchase_num_invoiced:0
|
||||
msgid "Sum of Quantity in Supplier Invoices"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,normal_cost:0
|
||||
msgid "Sum of Multification of Cost price and quantity of Supplier Invoices"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,expected_margin:0
|
||||
msgid "Expected Sale - Normal Cost"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.product,purchase_num_invoiced:0
|
||||
#: field:product.product,sale_num_invoiced:0
|
||||
msgid "# Invoiced"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: view:product.product:0
|
||||
#: field:product.product,total_cost:0
|
||||
msgid "Total Cost"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.product,expected_margin:0
|
||||
msgid "Expected Margin"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: view:product.product:0
|
||||
msgid "#Purchased"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,turnover:0
|
||||
msgid ""
|
||||
"Sum of Multification of Invoice price and quantity of Customer Invoices"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,expected_margin_rate:0
|
||||
msgid "Expected margin * 100 / Expected Sale"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,sale_avg_price:0
|
||||
msgid "Avg. Price in Customer Invoices)"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,total_cost:0
|
||||
msgid ""
|
||||
"Sum of Multification of Invoice price and quantity of Supplier Invoices "
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.margin,invoice_state:0
|
||||
#: field:product.product,invoice_state:0
|
||||
msgid "Invoice State"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,purchase_gap:0
|
||||
msgid "Normal Cost - Total Cost"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.product,total_margin:0
|
||||
msgid "Total Margin"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: view:product.product:0
|
||||
#: field:product.product,sales_gap:0
|
||||
msgid "Sales Gap"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.product,normal_cost:0
|
||||
msgid "Normal Cost"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: view:product.product:0
|
||||
msgid "Purchases"
|
||||
msgstr "ખરીદીઓ"
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,purchase_avg_price:0
|
||||
msgid "Avg. Price in Supplier Invoices "
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: view:product.margin:0
|
||||
msgid "Properties categories"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,total_margin_rate:0
|
||||
msgid "Total margin * 100 / Turnover"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: view:product.product:0
|
||||
msgid "Analysis Criteria"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: selection:product.margin,invoice_state:0
|
||||
#: selection:product.product,invoice_state:0
|
||||
msgid "Open and Paid"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: view:product.product:0
|
||||
msgid "Sales"
|
||||
msgstr "વેચાણ"
|
||||
|
||||
#. module: product_margin
|
||||
#: code:addons/product_margin/wizard/product_margin.py:73
|
||||
#: model:ir.actions.act_window,name:product_margin.product_margin_act_window
|
||||
#: model:ir.ui.menu,name:product_margin.menu_action_product_margin
|
||||
#: view:product.product:0
|
||||
#, python-format
|
||||
msgid "Product Margins"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: view:product.margin:0
|
||||
msgid "General Information"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: constraint:product.product:0
|
||||
msgid "Error: Invalid ean code"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.product,purchase_gap:0
|
||||
msgid "Purchase Gap"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.product,total_margin_rate:0
|
||||
msgid "Total Margin (%)"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: view:product.margin:0
|
||||
msgid "Open Margins"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: view:product.margin:0
|
||||
msgid "Cancel"
|
||||
msgstr "રદ કરો"
|
||||
|
||||
#. module: product_margin
|
||||
#: view:product.product:0
|
||||
msgid "Margins"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,sale_num_invoiced:0
|
||||
msgid "Sum of Quantity in Customer Invoices"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_margin
|
||||
#: model:ir.model,name:product_margin.model_product_margin
|
||||
msgid "Product Margin"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Reporting"
|
||||
#~ msgstr "અહેવાલીકરણ"
|
||||
|
||||
#~ msgid "Invalid XML for View Architecture!"
|
||||
#~ msgstr "દ્રશ્ય બંધારણ માટે અમાન્ય એક્સ.એમ.એલ!"
|
||||
@@ -67,9 +67,6 @@ Dashboard for project members that includes:
|
||||
'test/project_process.yml',
|
||||
'test/task_process.yml',
|
||||
],
|
||||
'css': [
|
||||
'static/src/css/project_task.css',
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'application': True,
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
:orphan:
|
||||
|
||||
Project module documentation
|
||||
============================
|
||||
|
||||
.. include:: index.rst.inc
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
Project Module
|
||||
''''''''''''''
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
task_kanban_avatar
|
||||
@@ -0,0 +1,4 @@
|
||||
Task kanban avatar specs
|
||||
========================
|
||||
|
||||
Kanban view of tasks has been updated to use the newly-introduced avatar_mini field of res.users. The avatar is placed in the right-side of the containing kanban box.
|
||||
@@ -346,46 +346,45 @@
|
||||
<t t-if="record.kanban_state.raw_value === 'done'" t-set="border">oe_kanban_color_green</t>
|
||||
<div t-attf-class="#{kanban_color(record.color.raw_value)} #{border || ''}">
|
||||
<div class="oe_kanban_box oe_kanban_color_border">
|
||||
<div class="oe_proj_task_avatar_box">
|
||||
<img t-att-src="kanban_image('res.users', 'avatar_mini', record.user_id.raw_value[0])" class="oe_kanban_avatar" t-att-title="record.user_id.value"/>
|
||||
</div>
|
||||
<div class="oe_proj_task_content_box">
|
||||
<table class="oe_kanban_table oe_kanban_box_header oe_kanban_color_bgdark oe_kanban_color_border oe_kanban_draghandle">
|
||||
<tr>
|
||||
<td align="left" valign="middle" width="16">
|
||||
<a t-if="record.priority.raw_value == 1" icon="star-on" type="object" name="set_normal_priority"/>
|
||||
<a t-if="record.priority.raw_value != 1" icon="star-off" type="object" name="set_high_priority" style="opacity:0.6; filter:alpha(opacity=60);"/>
|
||||
</td>
|
||||
<td align="left" valign="middle" class="oe_kanban_title" tooltip="task_details">
|
||||
<field name="name"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger">
|
||||
<div class="oe_kanban_description">
|
||||
<t t-esc="kanban_text_ellipsis(record.description.value, 160)"/>
|
||||
<i t-if="record.date_deadline.raw_value">
|
||||
<t t-if="record.description.raw_value">, </t>
|
||||
<field name="date_deadline"/>
|
||||
</i>
|
||||
<span class="oe_kanban_project_times" style="white-space: nowrap; padding-left: 5px;">
|
||||
<t t-set="hours" t-value="record.remaining_hours.raw_value"/>
|
||||
<t t-set="times" t-value="[
|
||||
[1, (hours gte 1 and hours lt 2)]
|
||||
,[2, (hours gte 2 and hours lt 5)]
|
||||
,[5, (hours gte 5 and hours lt 10)]
|
||||
,[10, (hours gte 10)]
|
||||
]"/>
|
||||
<t t-foreach="times" t-as="time"
|
||||
><a t-if="!time[1]" t-attf-data-name="set_remaining_time_#{time[0]}"
|
||||
type="object" class="oe_kanban_button"><t t-esc="time[0]"/></a
|
||||
><b t-if="time[1]" class="oe_kanban_button oe_kanban_button_active"><t t-esc="Math.round(hours)"/></b
|
||||
></t>
|
||||
<a name="do_open" states="draft" string="Validate planned time and open task" type="object" class="oe_kanban_button oe_kanban_button_active">!</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="oe_kanban_clear"/>
|
||||
<table class="oe_kanban_table oe_kanban_box_header oe_kanban_color_bgdark oe_kanban_color_border oe_kanban_draghandle">
|
||||
<tr>
|
||||
<td align="left" valign="middle" width="16">
|
||||
<a t-if="record.priority.raw_value == 1" icon="star-on" type="object" name="set_normal_priority"/>
|
||||
<a t-if="record.priority.raw_value != 1" icon="star-off" type="object" name="set_high_priority" style="opacity:0.6; filter:alpha(opacity=60);"/>
|
||||
</td>
|
||||
<td align="left" valign="middle" class="oe_kanban_title" tooltip="task_details">
|
||||
<field name="name"/>
|
||||
</td>
|
||||
<td valign="top" width="22">
|
||||
<img t-att-src="kanban_image('res.users', 'avatar_mini', record.user_id.raw_value[0])" t-att-title="record.user_id.value"
|
||||
width="22" height="22" class="oe_kanban_gravatar"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger">
|
||||
<div class="oe_kanban_description">
|
||||
<t t-esc="kanban_text_ellipsis(record.description.value, 160)"/>
|
||||
<i t-if="record.date_deadline.raw_value">
|
||||
<t t-if="record.description.raw_value">, </t>
|
||||
<field name="date_deadline"/>
|
||||
</i>
|
||||
<span class="oe_kanban_project_times" style="white-space: nowrap; padding-left: 5px;">
|
||||
<t t-set="hours" t-value="record.remaining_hours.raw_value"/>
|
||||
<t t-set="times" t-value="[
|
||||
[1, (hours gte 1 and hours lt 2)]
|
||||
,[2, (hours gte 2 and hours lt 5)]
|
||||
,[5, (hours gte 5 and hours lt 10)]
|
||||
,[10, (hours gte 10)]
|
||||
]"/>
|
||||
<t t-foreach="times" t-as="time"
|
||||
><a t-if="!time[1]" t-attf-data-name="set_remaining_time_#{time[0]}"
|
||||
type="object" class="oe_kanban_button"><t t-esc="time[0]"/></a
|
||||
><b t-if="time[1]" class="oe_kanban_button oe_kanban_button_active"><t t-esc="Math.round(hours)"/></b
|
||||
></t>
|
||||
<a name="do_open" states="draft" string="Validate planned time and open task" type="object" class="oe_kanban_button oe_kanban_button_active">!</a>
|
||||
</span>
|
||||
</div>
|
||||
<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">
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
.openerp .oe_proj_task_content_box {
|
||||
margin-right: 41px;
|
||||
}
|
||||
|
||||
.openerp .oe_proj_task_avatar_box {
|
||||
float: right;
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
.openerp .oe_kanban_avatar {
|
||||
display: block;
|
||||
width: 40px;
|
||||
height: auto;
|
||||
clip: rect(5px, 40px, 45px, 0px);
|
||||
}
|
||||
|
||||
.openerp .oe_kanban_avatar_wide {
|
||||
height: 40px;
|
||||
width: auto;
|
||||
clip: rect(0px, 45px, 40px, 05px);
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
# Gujarati 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-12 15:08+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Gujarati <gu@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-03-13 05:08+0000\n"
|
||||
"X-Generator: Launchpad (build 14933)\n"
|
||||
|
||||
#. module: project_mrp
|
||||
#: sql_constraint:sale.order:0
|
||||
msgid "Order Reference must be unique per Company!"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: model:process.node,note:project_mrp.process_node_procuretasktask0
|
||||
msgid "For each product, on type service and on order"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: model:process.transition,name:project_mrp.process_transition_procuretask0
|
||||
msgid "Procurement Task"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: model:ir.model,name:project_mrp.model_sale_order
|
||||
msgid "Sales Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: field:procurement.order,sale_line_id:0
|
||||
msgid "Sale order line"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: model:process.transition,note:project_mrp.process_transition_createtask0
|
||||
msgid "Product type is service, then its creates the task."
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: model:process.transition,note:project_mrp.process_transition_procuretask0
|
||||
msgid "if product type is 'service' then it creates the task."
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: constraint:project.task:0
|
||||
msgid "Error ! Task end-date must be greater then task start-date"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: model:process.node,name:project_mrp.process_node_saleordertask0
|
||||
msgid "Sale Order Task"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: model:ir.model,name:project_mrp.model_product_product
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: constraint:product.product:0
|
||||
msgid "Error: Invalid ean code"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: field:product.product,project_id:0
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: model:ir.model,name:project_mrp.model_procurement_order
|
||||
#: field:project.task,procurement_id:0
|
||||
msgid "Procurement"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: model:ir.model,name:project_mrp.model_project_task
|
||||
#: model:process.node,name:project_mrp.process_node_mrptask0
|
||||
#: model:process.node,name:project_mrp.process_node_procuretasktask0
|
||||
#: field:procurement.order,task_id:0
|
||||
msgid "Task"
|
||||
msgstr "કાર્ય"
|
||||
|
||||
#. module: project_mrp
|
||||
#: model:process.node,note:project_mrp.process_node_mrptask0
|
||||
msgid "A task is created to provide the service."
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: model:process.transition,name:project_mrp.process_transition_ordertask0
|
||||
msgid "Order Task"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: constraint:project.task:0
|
||||
msgid "Error ! You cannot create recursive tasks."
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: model:process.transition,name:project_mrp.process_transition_createtask0
|
||||
msgid "Create Task"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: model:process.transition,note:project_mrp.process_transition_ordertask0
|
||||
msgid "If procurement method is Make to order and supply method is produce"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: model:process.node,note:project_mrp.process_node_saleordertask0
|
||||
msgid "In case you sell services on sale order"
|
||||
msgstr ""
|
||||
|
||||
#. module: project_mrp
|
||||
#: field:project.task,sale_line_id:0
|
||||
msgid "Sale Order Line"
|
||||
msgstr ""
|
||||
@@ -7,14 +7,14 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
|
||||
"PO-Revision-Date: 2011-11-25 14:47+0000\n"
|
||||
"Last-Translator: lholivier <olivier.lenoir@free.fr>\n"
|
||||
"PO-Revision-Date: 2012-03-12 08:37+0000\n"
|
||||
"Last-Translator: Numérigraphe <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-02-09 06:06+0000\n"
|
||||
"X-Generator: Launchpad (build 14763)\n"
|
||||
"X-Launchpad-Export-Date: 2012-03-13 05:08+0000\n"
|
||||
"X-Generator: Launchpad (build 14933)\n"
|
||||
|
||||
#. module: project_scrum
|
||||
#: view:project.scrum.backlog.assign.sprint:0
|
||||
@@ -549,7 +549,7 @@ msgstr "Mois"
|
||||
#. module: project_scrum
|
||||
#: view:project.scrum.product.backlog:0
|
||||
msgid "Draft Backlogs"
|
||||
msgstr "Retards Brouillon"
|
||||
msgstr "Arriérés brouillons"
|
||||
|
||||
#. module: project_scrum
|
||||
#: field:project.scrum.meeting,question_blocks:0
|
||||
@@ -798,7 +798,7 @@ msgstr "Informations"
|
||||
#: code:addons/project_scrum/wizard/project_scrum_backlog_sprint.py:57
|
||||
#, python-format
|
||||
msgid "Product Backlog '%s' is converted into Task %d."
|
||||
msgstr ""
|
||||
msgstr "L'arriéré sur le produit '%s' a été converti en la tâche %d."
|
||||
|
||||
#. module: project_scrum
|
||||
#: view:project.scrum.product.backlog:0
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
<field name="product_uom" ref="product.product_uom_unit"/>
|
||||
<field name="product_uom_qty">15</field>
|
||||
<field name="price_unit">250</field>
|
||||
<field name="type">make_to_order</field>
|
||||
<field name="type">make_to_stock</field>
|
||||
<field name="delay">15</field>
|
||||
</record>
|
||||
<record id="order7_line1" model="sale.order.line">
|
||||
@@ -256,7 +256,7 @@
|
||||
<field name="product_uom" ref="product.product_uom_unit"/>
|
||||
<field name="product_uom_qty">5</field>
|
||||
<field name="price_unit">500</field>
|
||||
<field name="type">make_to_order</field>
|
||||
<field name="type">make_to_stock</field>
|
||||
<field name="delay">15</field>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -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-03-05 14:29+0000\n"
|
||||
"Last-Translator: gde (OpenERP) <Unknown>\n"
|
||||
"PO-Revision-Date: 2012-03-12 08:35+0000\n"
|
||||
"Last-Translator: Numérigraphe <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-03-06 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 14900)\n"
|
||||
"X-Launchpad-Export-Date: 2012-03-13 05:07+0000\n"
|
||||
"X-Generator: Launchpad (build 14933)\n"
|
||||
|
||||
#. module: stock
|
||||
#: field:stock.inventory.line,product_uom:0
|
||||
@@ -105,7 +105,7 @@ msgstr "Mouvements du produit"
|
||||
#. module: stock
|
||||
#: model:ir.ui.menu,name:stock.menu_stock_uom_categ_form_action
|
||||
msgid "UoM Categories"
|
||||
msgstr ""
|
||||
msgstr "Catégories des UdM"
|
||||
|
||||
#. module: stock
|
||||
#: model:ir.actions.act_window,name:stock.action_stock_move_report
|
||||
@@ -1231,7 +1231,7 @@ msgstr "Mars"
|
||||
#: model:ir.model,name:stock.model_stock_inventory_line_split
|
||||
#: view:stock.inventory:0 view:stock.inventory.line:0
|
||||
msgid "Split inventory lines"
|
||||
msgstr "Eclater les lignes d'inventaire"
|
||||
msgstr "Diviser les lignes d'inventaire"
|
||||
|
||||
#. module: stock
|
||||
#: view:stock.inventory:0
|
||||
|
||||
Reference in New Issue
Block a user