[Merge] Merge with main addons.

bzr revid: mdi@tinyerp.com-20121128042501-z1xmyu5mmown0ac0
This commit is contained in:
Divyesh Makwana (Open ERP) 2012-11-28 09:55:01 +05:30
commit 39c47913a8
146 changed files with 5043 additions and 3067 deletions

View File

@ -457,7 +457,7 @@ class account_invoice(osv.osv):
invoice_addr_id = res['invoice']
p = self.pool.get('res.partner').browse(cr, uid, partner_id)
if company_id:
if p.property_account_receivable.company_id.id != company_id and p.property_account_payable.company_id.id != company_id:
if (p.property_account_receivable.company_id and (p.property_account_receivable.company_id.id != company_id)) and (p.property_account_payable.company_id and (p.property_account_payable.company_id.id != company_id)):
property_obj = self.pool.get('ir.property')
rec_pro_id = property_obj.search(cr,uid,[('name','=','property_account_receivable'),('res_id','=','res.partner,'+str(partner_id)+''),('company_id','=',company_id)])
pay_pro_id = property_obj.search(cr,uid,[('name','=','property_account_payable'),('res_id','=','res.partner,'+str(partner_id)+''),('company_id','=',company_id)])
@ -958,9 +958,14 @@ class account_invoice(osv.osv):
})
date = inv.date_invoice or time.strftime('%Y-%m-%d')
part = inv.partner_id.id
line = map(lambda x:(0,0,self.line_get_convert(cr, uid, x, part, date, context=ctx)),iml)
#if the chosen partner is not a company and has a parent company, use the parent for the journal entries
#because you want to invoice 'Agrolait, accounting department' but the journal items are for 'Agrolait'
part = inv.partner_id
if part.parent_id and not part.is_company:
part = part.parent_id
line = map(lambda x:(0,0,self.line_get_convert(cr, uid, x, part.id, date, context=ctx)),iml)
line = self.group_lines(cr, uid, iml, line, inv)

View File

@ -61,7 +61,7 @@
<group>
<field domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '&lt;&gt;', 'view')]" name="account_id" on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)" groups="account.group_account_user"/>
<field name="invoice_line_tax_id" context="{'type':parent.type}" domain="[('parent_id','=',False),('company_id', '=', parent.company_id)]" widget="many2many_tags"/>
<field domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]" name="account_analytic_id" groups="analytic.group_analytic_accounting"/>
<field domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id)]" name="account_analytic_id" groups="analytic.group_analytic_accounting"/>
<field name="company_id" groups="base.group_multi_company" readonly="1"/>
</group>
</group>
@ -95,7 +95,7 @@
<field name="name"/>
<field name="sequence"/>
<field name="account_id" groups="account.group_account_user"/>
<field name="account_analytic_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]" groups="analytic.group_analytic_accounting"/>
<field name="account_analytic_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id)]" groups="analytic.group_analytic_accounting"/>
<field name="manual"/>
<field name="amount"/>
<field name="base" readonly="0"/>
@ -199,7 +199,7 @@
domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '!=', 'view')]"
on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)"/>
<field name="account_analytic_id" groups="analytic.group_analytic_accounting"
domain="[('type','!=','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]"/>
domain="[('type','!=','view'), ('company_id', '=', parent.company_id)]"/>
<field name="quantity"/>
<field name="uos_id" groups="product.group_uom"
on_change="uos_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/>
@ -229,7 +229,7 @@
<tree editable="bottom" string="Taxes">
<field name="name"/>
<field name="account_id" groups="account.group_account_invoice"/>
<field name="account_analytic_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]" groups="analytic.group_analytic_accounting"/>
<field name="account_analytic_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id)]" groups="analytic.group_analytic_accounting"/>
<field name="base" on_change="base_change(base,parent.currency_id,parent.company_id,parent.date_invoice)" readonly="1"/>
<field name="amount" on_change="amount_change(amount,parent.currency_id,parent.company_id,parent.date_invoice)"/>
@ -292,7 +292,7 @@
<form string="Invoice" version="7.0">
<header>
<button name="action_invoice_sent" type="object" string="Send by Email" attrs="{'invisible':['|',('sent','=',True), ('state', '!=', 'open')]}" class="oe_highlight" groups="base.group_user"/>
<button name="invoice_print" string="Print Invoice" type="object" attrs="{'invisible':['|',('sent','=',True), ('state', '!=', 'open')]}" class="oe_highlight" groups="base.group_user"/>
<button name="invoice_print" string="Print" type="object" attrs="{'invisible':['|',('sent','=',True), ('state', '!=', 'open')]}" class="oe_highlight" groups="base.group_user"/>
<button name="action_invoice_sent" type="object" string="Send by Email" attrs="{'invisible':['|',('sent','=',False), ('state', '!=', 'open')]}" groups="base.group_user"/>
<button name="invoice_print" string="Print Invoice" type="object" attrs="{'invisible':['|',('sent','=',False), ('state', '!=', 'open')]}" groups="base.group_user"/>
<button name="invoice_open" states="draft" string="Validate" class="oe_highlight" groups="base.group_user"/>
@ -354,7 +354,7 @@
domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '!=', 'view')]"
on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)"/>
<field name="account_analytic_id" groups="analytic.group_analytic_accounting"
domain="[('type','!=','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]"/>
domain="[('type','!=','view'), ('company_id', '=', parent.company_id)]"/>
<field name="quantity"/>
<field name="uos_id" groups="product.group_uom"
on_change="uos_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/>

View File

@ -166,28 +166,35 @@ class account_move_line(osv.osv):
del data[f]
return data
def _prepare_analytic_line(self, cr, uid, obj_line, context=None):
"""
Prepare the values given at the create() of account.analytic.line upon the validation of a journal item having
an analytic account. This method is intended to be extended in other modules.
:param obj_line: browse record of the account.move.line that triggered the analytic line creation
"""
return {'name': obj_line.name,
'date': obj_line.date,
'account_id': obj_line.analytic_account_id.id,
'unit_amount': obj_line.quantity,
'product_id': obj_line.product_id and obj_line.product_id.id or False,
'product_uom_id': obj_line.product_uom_id and obj_line.product_uom_id.id or False,
'amount': (obj_line.credit or 0.0) - (obj_line.debit or 0.0),
'general_account_id': obj_line.account_id.id,
'journal_id': obj_line.journal_id.analytic_journal_id.id,
'ref': obj_line.ref,
'move_id': obj_line.id,
'user_id': uid,
}
def create_analytic_lines(self, cr, uid, ids, context=None):
acc_ana_line_obj = self.pool.get('account.analytic.line')
for obj_line in self.browse(cr, uid, ids, context=context):
if obj_line.analytic_account_id:
if not obj_line.journal_id.analytic_journal_id:
raise osv.except_osv(_('No Analytic Journal !'),_("You have to define an analytic journal on the '%s' journal!") % (obj_line.journal_id.name, ))
amt = (obj_line.credit or 0.0) - (obj_line.debit or 0.0)
vals_lines = {
'name': obj_line.name,
'date': obj_line.date,
'account_id': obj_line.analytic_account_id.id,
'unit_amount': obj_line.quantity,
'product_id': obj_line.product_id and obj_line.product_id.id or False,
'product_uom_id': obj_line.product_uom_id and obj_line.product_uom_id.id or False,
'amount': amt,
'general_account_id': obj_line.account_id.id,
'journal_id': obj_line.journal_id.analytic_journal_id.id,
'ref': obj_line.ref,
'move_id': obj_line.id,
'user_id': uid
}
acc_ana_line_obj.create(cr, uid, vals_lines)
vals_line = self._prepare_analytic_line(cr, uid, obj_line, context=context)
acc_ana_line_obj.create(cr, uid, vals_line)
return True
def _default_get_move_form_hook(self, cursor, user, data):

View File

@ -1227,6 +1227,7 @@
<field name="model">account.move.line</field>
<field name="arch" type="xml">
<search string="Search Journal Items">
<field name="name" filter_domain="['|', ('name','ilike',self), ('ref','ilike',self)]" string="Move"/>
<field name="date"/>
<filter icon="terp-document-new" string="Unbalanced" domain="[('state','=','draft')]" help="Unbalanced Journal Items"/>
<separator/>
@ -1717,8 +1718,8 @@
<field name="search_view_id" ref="view_model_search"/>
</record>
<menuitem
action="action_model_form" id="menu_action_model_form" sequence="5"
parent="account.menu_configuration_misc"/>
action="action_model_form" name="Models" id="menu_action_model_form" sequence="5"
parent="account.menu_finance_recurrent_entries"/>
<!--
# Payment Terms
@ -2064,7 +2065,7 @@
<menuitem
id="account_template_folder"
name="Templates"
parent="menu_finance_accounting"
parent="account_account_menu"
groups="account.group_account_manager"/>
<menuitem
id="account_template_taxes"
@ -2083,28 +2084,23 @@
<field name="model">account.account.template</field>
<field name="arch" type="xml">
<form string="Account Template" version="7.0">
<notebook>
<page string="General Information">
<group col="4">
<field name="name"/>
<field name="code"/>
<newline/>
<field name="parent_id"/>
<field name="shortcut"/>
<field name="type"/>
<field name="user_type"/>
<group col="4">
<field name="name"/>
<field name="code"/>
<newline/>
<field name="parent_id"/>
<field name="shortcut"/>
<field name="type"/>
<field name="user_type"/>
<field name="currency_id" groups="base.group_multi_currency"/>
<field name="reconcile"/>
<field name="chart_template_id"/>
</group>
<separator string="Default Taxes"/>
<field name="tax_ids"/>
</page>
<page string="Notes">
<field name="note"/>
</page>
</notebook>
<field name="currency_id" groups="base.group_multi_currency"/>
<field name="reconcile"/>
<field name="chart_template_id"/>
</group>
<separator string="Default Taxes"/>
<field name="tax_ids"/>
<separator string="Notes"/>
<field name="note" placeholder="Internal notes..."/>
</form>
</field>
</record>

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-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-24 10:58+0000\n"
"Last-Translator: Eric Vernichon <evernichon@fiefmanage.ch>\n"
"PO-Revision-Date: 2012-11-26 11:52+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-11-25 05:54+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:23+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: account
#: code:addons/account/wizard/account_fiscalyear_close.py:41
@ -3399,8 +3399,8 @@ msgid ""
"The quantity is not a legal requirement but is very useful for some reports."
msgstr ""
"La quantité facultative correspondant à cette ligne, par exemple le nombre "
"de produits vendus. La quantité n'est pas obligatoire en droit, mais elle "
"est très utile dans certains rapports."
"d'articles vendus. La quantité n'est pas obligatoire en droit, mais elle est "
"très utile dans certains rapports."
#. module: account
#: view:account.payment.term.line:0
@ -4096,7 +4096,7 @@ msgstr "Continuer"
#: view:account.invoice.report:0
#: field:account.invoice.report,categ_id:0
msgid "Category of Product"
msgstr "Catégorie de produit"
msgstr "Catégorie de produits"
#. module: account
#: code:addons/account/account.py:987
@ -4142,6 +4142,7 @@ msgstr "Détail"
#: help:account.config.settings,default_purchase_tax:0
msgid "This purchase tax will be assigned by default on new products."
msgstr ""
"Cette taxe d'achat sera attribuée par défaut à tous les nouveaux produits."
#. module: account
#: report:account.invoice:0
@ -4769,9 +4770,9 @@ msgid ""
"Analytic costs (timesheets, some purchased products, ...) come from analytic "
"accounts. These generate draft supplier invoices."
msgstr ""
"Les coûts analytiques (feuilles de temps, dépenses, achats, ...) proviennent "
"des comptes analytiques. Cela permet d'éditer des factures fournisseurs en "
"état \"brouillon\"."
"Les coûts analytiques (feuilles de temps, achats de certains articles, ...) "
"proviennent des comptes analytiques. Cela permet d'éditer des factures "
"fournisseurs en état \"brouillon\"."
#. module: account
#: view:account.bank.statement:0
@ -4828,7 +4829,7 @@ msgstr ""
#: view:analytic.entries.report:0
#: field:analytic.entries.report,product_uom_id:0
msgid "Product Unit of Measure"
msgstr ""
msgstr "Unité de mesure d'article"
#. module: account
#: field:res.company,paypal_account:0
@ -5600,7 +5601,7 @@ msgid ""
"Check this if the price you use on the product and invoices includes this "
"tax."
msgstr ""
"Cochez cette case si le prix que vous utilisez pour le produit et les "
"Cochez cette case si le prix que vous utilisez pour l'article et les "
"factures inclut cette taxe."
#. module: account
@ -6121,7 +6122,7 @@ msgstr "Lignes d'abonnement"
#. module: account
#: field:account.entries.report,quantity:0
msgid "Products Quantity"
msgstr "Quantité de produits"
msgstr "Quantité d'articles"
#. module: account
#: view:account.entries.report:0
@ -9686,7 +9687,7 @@ msgstr ""
#. module: account
#: view:account.analytic.line:0
msgid "Product Information"
msgstr "Information du produit"
msgstr "Information de l'article"
#. module: account
#: report:account.analytic.account.journal:0
@ -9743,7 +9744,7 @@ msgid ""
"Analytic costs (timesheets, some purchased products, ...) come from analytic "
"accounts. These generate draft invoices."
msgstr ""
"Les coûts analytiques (feuilles de temps, quelques produits achetés, ...) "
"Les coûts analytiques (feuilles de temps, certains articles achetés, ...) "
"viennent des comptes analytiques. Ils génèrent des brouillons de facture."
#. module: account
@ -10626,7 +10627,7 @@ msgstr "Factures fournisseur"
#: field:report.account.sales,product_id:0
#: field:report.account_type.sales,product_id:0
msgid "Product"
msgstr "Produit"
msgstr "Article"
#. module: account
#: model:ir.actions.act_window,help:account.action_validate_account_move
@ -11237,7 +11238,7 @@ msgstr "novembre"
#. module: account
#: help:account.invoice.line,account_id:0
msgid "The income or expense account related to the selected product."
msgstr "Le compte de revenu ou de dépense associé au produit sélectionné."
msgstr "Le compte de revenu ou de dépense associé à l'article sélectionné."
#. module: account
#: view:account.config.settings:0
@ -11478,7 +11479,7 @@ msgstr "Plan comptable analytiques"
#. module: account
#: field:account.chart.template,property_account_expense:0
msgid "Expense Account on Product Template"
msgstr "Compte de Dépense sur les Modèles de Produits"
msgstr "Compte de dépense sur les modèles d'article"
#. module: account
#: help:accounting.report,label_filter:0

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-26 04:41+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0

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-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-24 12:49+0000\n"
"PO-Revision-Date: 2012-11-26 15:09+0000\n"
"Last-Translator: Kaare Pettersen <Unknown>\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-11-25 05:57+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -310,7 +310,7 @@ msgstr ""
#. module: account
#: field:account.config.settings,sale_refund_sequence_next:0
msgid "Next credit note number"
msgstr ""
msgstr "Neste kredit notat nummer."
#. module: account
#: help:account.config.settings,module_account_voucher:0
@ -731,7 +731,7 @@ msgstr "Hovedsekvensen må være anderledes en gjeldende"
#: code:addons/account/wizard/account_change_currency.py:70
#, python-format
msgid "Current currency is not configured properly."
msgstr ""
msgstr "Dagens valuta er ikke riktig konfigurert."
#. module: account
#: field:account.journal,profit_account_id:0
@ -763,6 +763,10 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p>\n"
"Ingen tidsskriftet elementer funnet.\n"
"</ p>\n"
" "
#. module: account
#: code:addons/account/account.py:1606
@ -826,7 +830,7 @@ msgstr "Debitorkonti"
#. module: account
#: view:account.config.settings:0
msgid "Configure your company bank accounts"
msgstr ""
msgstr "Konfigurer bedriftens bankkonto."
#. module: account
#: constraint:account.move.line:0
@ -964,7 +968,7 @@ msgstr "Kontoanalyse Journal"
#. module: account
#: view:account.invoice:0
msgid "Send by Email"
msgstr ""
msgstr "Send med e-post."
#. module: account
#: help:account.central.journal,amount_currency:0
@ -984,12 +988,12 @@ msgstr "J.C./Move name"
#. module: account
#: view:account.account:0
msgid "Account Code and Name"
msgstr ""
msgstr "Konto kode og navn."
#. module: account
#: model:mail.message.subtype,name:account.mt_invoice_new
msgid "created"
msgstr ""
msgstr "Opprettet."
#. module: account
#: selection:account.entries.report,month:0
@ -1052,7 +1056,7 @@ msgstr "Forfall"
#. module: account
#: field:account.config.settings,purchase_journal_id:0
msgid "Purchase journal"
msgstr ""
msgstr "Kjøp journal."
#. module: account
#: code:addons/account/account.py:1374
@ -1168,7 +1172,7 @@ msgstr "Kode"
#. module: account
#: view:account.config.settings:0
msgid "Features"
msgstr ""
msgstr "Funksjoner."
#. module: account
#: code:addons/account/account.py:2323
@ -1257,7 +1261,7 @@ msgstr ""
#. module: account
#: view:account.invoice:0
msgid "Refund "
msgstr ""
msgstr "Tilbakebetaling. "
#. module: account
#: help:account.config.settings,company_footer:0
@ -1320,7 +1324,7 @@ msgstr "Periodestart"
#. module: account
#: view:account.tax:0
msgid "Refunds"
msgstr ""
msgstr "Tilbakebetaling."
#. module: account
#: model:process.transition,name:account.process_transition_confirmstatementfromdraft0
@ -1390,7 +1394,7 @@ msgstr "Utgående valutakurs"
#. module: account
#: field:account.config.settings,chart_template_id:0
msgid "Template"
msgstr ""
msgstr "Mal."
#. module: account
#: selection:account.analytic.journal,type:0
@ -1565,7 +1569,7 @@ msgstr ""
#. module: account
#: field:account.config.settings,sale_sequence_prefix:0
msgid "Invoice sequence"
msgstr ""
msgstr "Faktura sekvens."
#. module: account
#: model:ir.model,name:account.model_account_entries_report
@ -1588,7 +1592,7 @@ msgstr ""
#. module: account
#: field:account.invoice.report,state:0
msgid "Invoice Status"
msgstr ""
msgstr "Fakturastatus."
#. module: account
#: view:account.invoice.report:0
@ -1864,7 +1868,7 @@ msgstr "Regnskapsåret sekvens"
#. module: account
#: field:account.config.settings,group_analytic_accounting:0
msgid "Analytic accounting"
msgstr ""
msgstr "Analytisk regnskap."
#. module: account
#: report:account.overdue:0
@ -2049,7 +2053,7 @@ msgstr ""
#. module: account
#: model:account.journal.view,name:account.account_journal_bank_view
msgid "Bank/Cash Journal View"
msgstr ""
msgstr "Bank/kontanter journal vis."
#. module: account
#: report:account.journal.period.print.sale.purchase:0
@ -2084,7 +2088,7 @@ msgstr ""
#. module: account
#: view:account.period:0
msgid "Duration"
msgstr ""
msgstr "Varighet."
#. module: account
#: view:account.bank.statement:0
@ -2143,7 +2147,7 @@ msgstr "Utkast kontoutdrag"
#. module: account
#: field:account.config.settings,module_account_check_writing:0
msgid "Pay your suppliers by check"
msgstr ""
msgstr "Betal dine leverandører med sjekk."
#. module: account
#: field:account.move.line.reconcile,credit:0
@ -2154,7 +2158,7 @@ msgstr "Kreditbeløp"
#: field:account.bank.statement,message_ids:0
#: field:account.invoice,message_ids:0
msgid "Messages"
msgstr ""
msgstr "Meldinger."
#. module: account
#: view:account.vat.declaration:0
@ -2298,7 +2302,7 @@ msgstr ""
#. module: account
#: field:account.config.settings,currency_id:0
msgid "Default company currency"
msgstr ""
msgstr "Standard selskapet valuta."
#. module: account
#: field:account.invoice,move_id:0
@ -2351,7 +2355,7 @@ msgstr "Gyldig"
#: field:account.bank.statement,message_follower_ids:0
#: field:account.invoice,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "Følgere."
#. module: account
#: model:ir.actions.act_window,name:account.action_account_print_journal

View File

@ -7,14 +7,14 @@
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<notebook position="inside">
<page string="Accounting" groups="account.group_account_user">
<page string="Accounting" groups="account.group_account_invoice">
<group name="properties">
<group>
<field name="property_account_income" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]" attrs="{'readonly':[('sale_ok','=',0)]}"/>
<field name="property_account_income" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]" groups="account.group_account_user"/>
<field name="taxes_id" colspan="2" attrs="{'readonly':[('sale_ok','=',0)]}" widget="many2many_tags"/>
</group>
<group>
<field name="property_account_expense" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]" />
<field name="property_account_expense" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]" groups="account.group_account_user"/>
<field name="supplier_taxes_id" colspan="2" widget="many2many_tags"/>
</group>
</group>

View File

@ -103,6 +103,6 @@ class journal_print(report_sxw.rml_parse, common_report_header):
return True
return data['form']['amount_currency']
report_sxw.report_sxw('report.account.central.journal', 'account.journal.period', 'addons/account/report/account_central_journal.rml', parser=journal_print, header='internal')
report_sxw.report_sxw('report.account.central.journal', 'account.journal.period', 'addons/account/report/account_central_journal.rml', parser=journal_print, header='external')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -102,11 +102,11 @@ class account_invoice_report(osv.osv):
'due_delay': fields.float('Avg. Due Delay', readonly=True, group_operator="avg"),
}
_order = 'date desc'
def init(self, cr):
tools.drop_view_if_exists(cr, 'account_invoice_report')
cr.execute("""
create or replace view account_invoice_report as (
select min(ail.id) as id,
def _select(self):
select_str = """
SELECT min(ail.id) as id,
ai.date_invoice as date,
to_char(ai.date_invoice, 'YYYY') as year,
to_char(ai.date_invoice, 'MM') as month,
@ -183,15 +183,30 @@ class account_invoice_report(osv.osv):
where a.id=ai.id)
ELSE 1
END) / cr.rate as residual
from account_invoice_line as ail
"""
return select_str
def _where(self):
where_str = """
WHERE cr.id in (select id from res_currency_rate cr2 where (cr2.currency_id = ai.currency_id)
and ((ai.date_invoice is not null and cr.name <= ai.date_invoice) or (ai.date_invoice is null and cr.name <= NOW())) order by name desc limit 1)
"""
return where_str
def _from(self):
from_str = """
FROM account_invoice_line as ail
left join account_invoice as ai ON (ai.id=ail.invoice_id)
left join product_product pr on (pr.id=ail.product_id)
left join product_template pt on (pt.id=pr.product_tmpl_id)
left join product_uom u on (u.id=ail.uos_id),
res_currency_rate cr
where cr.id in (select id from res_currency_rate cr2 where (cr2.currency_id = ai.currency_id)
and ((ai.date_invoice is not null and cr.name <= ai.date_invoice) or (ai.date_invoice is null and cr.name <= NOW())) order by name desc limit 1)
group by ail.product_id,
"""
return from_str
def _group_by(self):
group_by_str = """
GROUP BY ail.product_id,
ai.date_invoice,
ai.id,
cr.rate,
@ -218,8 +233,15 @@ class account_invoice_report(osv.osv):
ai.amount_total,
u.uom_type,
u.category_id
)
""")
"""
return group_by_str
def init(self, cr):
# self._table = account_invoice_report
tools.drop_view_if_exists(cr, self._table)
cr.execute("CREATE or REPLACE VIEW %s as (%s %s %s %s)" % (
self._table,
self._select(), self._from(), self._where(), self._group_by()))
account_invoice_report()

View File

@ -195,7 +195,7 @@ class journal_print(report_sxw.rml_parse, common_report_header):
return 'Reference Number'
return 'Date'
report_sxw.report_sxw('report.account.journal.period.print', 'account.journal.period', 'addons/account/report/account_journal.rml', parser=journal_print, header='internal')
report_sxw.report_sxw('report.account.journal.period.print.sale.purchase', 'account.journal.period', 'addons/account/report/account_journal_sale_purchase.rml', parser=journal_print, header='internal')
report_sxw.report_sxw('report.account.journal.period.print', 'account.journal.period', 'addons/account/report/account_journal.rml', parser=journal_print, header='external')
report_sxw.report_sxw('report.account.journal.period.print.sale.purchase', 'account.journal.period', 'addons/account/report/account_journal_sale_purchase.rml', parser=journal_print, header='external')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -32,8 +32,8 @@
import time
date = self._get_date(cr, uid, {'lang': u'en_US', 'normal_view': False, 'active_model': 'ir.ui.menu',
'search_default_journal_id': 1, 'journal_type': 'sale', 'search_default_period_id': 6, 'journal_id': 1, 'view_mode': False,
'visible_id': 1, 'period_id': 6, 'tz': False, 'active_ids': [ref('menu_eaction_account_moves_sale')],
'search_default_posted': 0, 'active_id': ref('menu_eaction_account_moves_sale')})
'visible_id': 1, 'period_id': 6, 'tz': False, 'active_ids': [ref('menu_action_account_moves_all')],
'search_default_posted': 0, 'active_id': ref('menu_action_account_moves_all')})
partner = self.onchange_partner_id(cr, uid, [], False, ref('base.res_partner_12'), ref('account.cash'), debit=0, credit=2000, date=date, journal=False)
account = self.onchange_account_id(cr, uid, [], account_id=ref('account.a_recv'), partner_id= ref('base.res_partner_12'))
vals = {
@ -62,11 +62,11 @@
!python {model: account.move.line}: |
ids = self._balance_search(cr, uid, self, 'balance', [('balance', '=', 2000.0)], None, {'lang': u'en_US', 'tz': False, 'active_model': 'ir.ui.menu',
'search_default_journal_id': 1, 'journal_type': 'sale', 'search_default_period_id': 6, 'view_mode': False, 'visible_id': 1,
'active_ids': [ref('menu_eaction_account_moves_sale')], 'search_default_posted': 0, 'active_id': ref('menu_eaction_account_moves_sale')})
'active_ids': [ref('menu_action_account_moves_all')], 'search_default_posted': 0, 'active_id': ref('menu_action_account_moves_all')})
bal = self._balance(cr, uid, ids[0][2], 'balance', None,{'lang': u'en_US', 'tz': False, 'active_model': 'ir.ui.menu',
'search_default_journal_id': 1, 'journal_type': 'sale', 'search_default_period_id': 6, 'view_mode': False,
'visible_id': 1, 'active_ids': [ref('menu_eaction_account_moves_sale')], 'search_default_posted': 0,
'active_id': ref('menu_eaction_account_moves_sale')})
'visible_id': 1, 'active_ids': [ref('menu_action_account_moves_all')], 'search_default_posted': 0,
'active_id': ref('menu_action_account_moves_all')})
assert bal, 'Balance has not been computed correctly'
-
I check that Initially account move state is "Draft"

View File

@ -56,6 +56,9 @@
<field name="reconciled"/>
<field name="unreconciled"/>
</group>
<footer>
<button string="Close" class="oe_highlight" special="cancel"/>
</footer>
</form>
</field>
</record>

View File

@ -12,51 +12,5 @@
</field>
</record>
<record id="action_account_moves_sale" model="ir.actions.act_window">
<field name="name">Journal Items</field>
<field name="res_model">account.move.journal</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_account_move_journal_form"/>
<field name="context">{'journal_type':'sale','view_mode':False}</field>
<field name="target">new</field>
<field name="help">This view is used by accountants in order to record entries massively in OpenERP. If you want to record a customer invoice, select the journal and the period in the search toolbar. Then, start by recording the entry line of the income account. OpenERP will propose to you automatically the Tax related to this account and the counter-part "Account receivable".</field>
</record>
<menuitem action="action_account_moves_sale" sequence="16" id="menu_eaction_account_moves_sale"
parent="menu_finance_receivables" icon="STOCK_JUSTIFY_FILL" groups="group_account_user,group_account_manager"/>
<record id="action_account_moves_purchase" model="ir.actions.act_window">
<field name="name">Journal Items</field>
<field name="res_model">account.move.journal</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_account_move_journal_form"/>
<field name="context">{'journal_type':'purchase','view_mode':False}</field>
<field name="target">new</field>
<field name="help">This view is used by accountants in order to record entries massively in OpenERP. If you want to record a supplier invoice, start by recording the line of the expense account, OpenERP will propose to you automatically the Tax related to this account and the counter-part "Account Payable".</field>
</record>
<menuitem action="action_account_moves_purchase"
id="menu_eaction_account_moves_purchase"
parent="menu_finance_payables"
icon="STOCK_JUSTIFY_FILL"
sequence="16"
groups="group_account_user,group_account_manager"/>
<record id="action_account_moves_bank" model="ir.actions.act_window">
<field name="name">Journal Items</field>
<field name="res_model">account.move.journal</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_account_move_journal_form"/>
<field name="context">{'journal_type':'bank','view_mode':False}</field>
<field name="target">new</field>
<field name="help">This view is used by accountants in order to record entries massively in OpenERP. Journal items are created by OpenERP if you use Bank Statements, Cash Registers, or Customer/Supplier payments.</field>
</record>
<menuitem
action="action_account_moves_bank"
icon="STOCK_JUSTIFY_FILL"
id="menu_action_account_moves_bank"
parent="account.menu_finance_bank_and_cash"
sequence="16"
groups="group_account_user,group_account_manager"
/>
</data>
</openerp>

View File

@ -19,18 +19,6 @@
</field>
</record>
<record id="action_view_account_use_model" model="ir.actions.act_window">
<field name="name">Manual Recurring</field>
<field name="res_model">account.use.model</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_account_use_model"/>
<field name="target">new</field>
<field name="context">{'model_line':'model_line'}</field>
</record>
<menuitem name="Manual Recurring" action="action_view_account_use_model" id="menu_action_manual_recurring" sequence="10" parent="account.menu_finance_recurrent_entries"/>
<record id="view_account_use_model_create_entry" model="ir.ui.view">
<field name="name">account.use.model.create.entry.form</field>
<field name="model">account.use.model</field>

View File

@ -1,39 +1,24 @@
# Spanish translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# Spanish (Mexico) 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>, 2010.
# 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: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2010-12-26 08:18+0000\n"
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
"<jesteve@zikzakmedia.com>\n"
"Language-Team: Spanish <es@li.org>\n"
"POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-11-26 08:57+0000\n"
"Last-Translator: Alejandro Negrin [ Vauxoo ] ..:: http://www.vauxoo.com ::.. "
"<anegrinm@gmail.com>\n"
"Language-Team: Spanish (Mexico) <es_MX@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:54+0000\n"
"X-Generator: Launchpad (build 13830)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: account_accountant
#: model:ir.module.module,description:account_accountant.module_meta_information
msgid ""
"\n"
"This module gives the admin user the access to all the accounting features "
"like the journal\n"
"items and the chart of accounts.\n"
" "
msgstr ""
"\n"
"Este módulo proporciona al usuario admin el acceso a todas las "
"funcionalidades de contabilidad como\n"
"los asientos y el plan contable.\n"
" "
#. module: account_accountant
#: model:ir.module.module,shortdesc:account_accountant.module_meta_information
msgid "Accountant"
msgstr "Contable"
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr "Menú Contabilidad"

View File

@ -296,11 +296,14 @@ class account_analytic_account(osv.osv):
def _timesheet_ca_invoiced_calc(self, cr, uid, ids, name, arg, context=None):
lines_obj = self.pool.get('account.analytic.line')
res = {}
inv_ids = []
for account in self.browse(cr, uid, ids, context=context):
res[account.id] = 0.0
line_ids = lines_obj.search(cr, uid, [('account_id','=', account.id), ('invoice_id','!=',False), ('to_invoice','!=', False), ('journal_id.type', '=', 'general')], context=context)
for line in lines_obj.browse(cr, uid, line_ids, context=context):
res[account.id] += line.invoice_id.amount_untaxed
if line.invoice_id not in inv_ids:
inv_ids.append(line.invoice_id)
res[account.id] += line.invoice_id.amount_untaxed
return res
def _remaining_ca_calc(self, cr, uid, ids, name, arg, context=None):

View File

@ -60,14 +60,13 @@
or view
</span>
<span attrs="{'invisible': [('fix_price_to_invoice','&lt;&gt;',0.0)]}" class="oe_grey">
<span attrs="{'invisible': ['|',('fix_price_to_invoice','&lt;&gt;',0.0 ),('partner_id','=',False)]}" class="oe_grey">
No order to invoice, create
</span>
<button name="%(action_sales_order)d" string="Sale Orders"
type="action"
class="oe_link"
context="{'default_partner_id': [partner_id], 'search_default_partner_id': [partner_id],'search_default_project_id': [active_id],'default_project_id': [active_id]}"
/>
/></span>
</td>
</tr><tr>
<td class="oe_timesheet_grey">

View File

@ -1,28 +1,29 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_chart
# Spanish (Mexico) 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: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2010-12-26 07:52+0000\n"
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
"<jesteve@zikzakmedia.com>\n"
"Language-Team: \n"
"PO-Revision-Date: 2012-11-26 07:17+0000\n"
"Last-Translator: Alejandro Negrin [ Vauxoo ] ..:: http://www.vauxoo.com ::.. "
"<anegrinm@gmail.com>\n"
"Language-Team: Spanish (Mexico) <es_MX@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:43+0000\n"
"X-Generator: Launchpad (build 13830)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: account_chart
#: model:ir.module.module,description:account_chart.module_meta_information
msgid "Remove minimal account chart"
msgstr "Elimina plan contable mínimo"
msgstr "Eliminar plan contable mínimo"
#. module: account_chart
#: model:ir.module.module,shortdesc:account_chart.module_meta_information
msgid "Charts of Accounts"
msgstr "Planes contables"
msgstr "Catálogos de cuentas"

View File

@ -174,7 +174,7 @@
<field name="view_id" ref="view_voucher_form"/>
<field name="act_window_id" ref="action_voucher_list"/>
</record>
<menuitem action="action_voucher_list" id="menu_encode_entries_by_voucher" parent="account.menu_finance_entries" sequence="6"/>
<menuitem action="action_voucher_list" id="menu_encode_entries_by_voucher" parent="account.menu_finance_entries" sequence="6" groups="base.group_no_one"/>
<act_window
id="act_journal_voucher_open"

View File

@ -101,7 +101,7 @@
<field name="tax_id"
on_change="onchange_price(line_cr_ids, tax_id, partner_id)"
widget="selection" nolabel="1"
placeholder="Select tax..."
placeholder="Tax"
domain="[('type_tax_use','in',('sale','all')), ('parent_id', '=', False)]"/>
<field name="tax_amount" nolabel="1"/>
<div class="oe_subtotal_footer_separator">
@ -264,7 +264,7 @@
<field name="tax_id"
on_change="onchange_price(line_dr_ids, tax_id, partner_id)"
widget="selection" nolabel="1"
placeholder="Select tax..."
placeholder="Tax"
domain="[('type_tax_use','in',('purchase','all')), ('parent_id', '=', False)]"
/>

View File

@ -136,6 +136,7 @@ class account_analytic_account(osv.osv):
'name': name,
'view_type': 'form',
'view_mode': 'tree,form',
'context':{'analytic_account':ids[0]},
'domain' : domain,
'res_model': 'hr.expense.expense',
'nodestroy': True,

View File

@ -1,15 +1,15 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record id="provider_openerp" model="auth.oauth.provider">
<field name="name">OpenERP Accounts</field>
<field name="name">OpenERP.com Accounts</field>
<field name="auth_endpoint">https://accounts.openerp.com/oauth2/auth</field>
<field name="scope">userinfo</field>
<field name="validation_endpoint">https://accounts.openerp.com/oauth2/tokeninfo</field>
<field name="data_endpoint"></field>
<field name="css_class">zocial openerp</field>
<field name="body">Sign in with OpenERP account</field>
<field name="body">Log in with OpenERP.com</field>
<field name="enabled" eval="True"/>
</record>
<record id="provider_facebook" model="auth.oauth.provider">
<field name="name">Facebook Graph</field>
@ -18,7 +18,7 @@
<field name="validation_endpoint">https://graph.facebook.com/me/permissions</field>
<field name="data_endpoint"></field>
<field name="css_class">zocial facebook</field>
<field name="body">Sign in with facebook</field>
<field name="body">Log in with facebook</field>
</record>
<record id="provider_google" model="auth.oauth.provider">
<field name="name">Google OAuth2</field>
@ -27,9 +27,10 @@
<field name="validation_endpoint">https://www.googleapis.com/oauth2/v1/tokeninfo</field>
<field name="data_endpoint">https://www.googleapis.com/oauth2/v1/userinfo</field>
<field name="css_class">zocial google</field>
<field name="body">Sign in with google</field>
<field name="body">Log in with google</field>
</record>
<!-- <record id="provider_twitter" model="auth.oauth.provider">
<!--
<record id="provider_twitter" model="auth.oauth.provider">
<field name="name">Twitter OAuth</field>
<field name="auth_endpoint">https://api.twitter.com/oauth/request_token</field>
<field name="scope"></field>
@ -37,7 +38,7 @@
<field name="data_endpoint"></field>
<field name="css_class">zocial twitter</field>
<field name="body">Sign in with twitter</field>
</record> -->
</record>
-->
</data>
</openerp>

View File

@ -45,6 +45,25 @@ class res_users(osv.Model):
validation.update(data)
return validation
def _auth_oauth_signin(self, cr, uid, provider, validation, params, context=None):
""" retrieve and sign in the user corresponding to provider and validated access token
:param provider: oauth provider id (int)
:param validation: result of validation of access token (dict)
:param params: oauth parameters (dict)
:return: user login (str)
:raise: openerp.exceptions.AccessDenied if signin failed
This method can be overridden to add alternative signin methods.
"""
oauth_uid = validation['user_id']
user_ids = self.search(cr, uid, [("oauth_uid", "=", oauth_uid), ('oauth_provider_id', '=', provider)])
if not user_ids:
raise openerp.exceptions.AccessDenied()
assert len(user_ids) == 1
user = self.browse(cr, uid, user_ids[0], context=context)
user.write({'oauth_access_token': params['access_token']})
return user.login
def auth_oauth(self, cr, uid, provider, params, context=None):
# Advice by Google (to avoid Confused Deputy Problem)
# if validation.audience != OUR_CLIENT_ID:
@ -53,39 +72,15 @@ class res_users(osv.Model):
# continue with the process
access_token = params.get('access_token')
validation = self._auth_oauth_validate(cr, uid, provider, access_token)
# required
oauth_uid = validation['user_id']
if not oauth_uid:
# required check
if not validation.get('user_id'):
raise openerp.exceptions.AccessDenied()
email = validation.get('email', 'provider_%d_user_%d' % (provider, oauth_uid))
login = email
# optional
name = validation.get('name', email)
res = self.search(cr, uid, [("oauth_uid", "=", oauth_uid), ('oauth_provider_id', '=', provider)])
if res:
assert len(res) == 1
user = self.browse(cr, uid, res[0], context=context)
login = user.login
user.write({'oauth_access_token': access_token})
else:
# New user if signup module available
if not hasattr(self, '_signup_create_user'):
raise openerp.exceptions.AccessDenied()
new_user = {
'name': name,
'login': login,
'user_email': email,
'oauth_provider_id': provider,
'oauth_uid': oauth_uid,
'oauth_access_token': access_token,
'active': True,
}
# TODO pass signup token to allow attach new user to right partner
self._signup_create_user(cr, uid, new_user)
credentials = (cr.dbname, login, access_token)
return credentials
# retrieve and sign in user
login = self._auth_oauth_signin(cr, uid, provider, validation, params, context=context)
if not login:
raise openerp.exceptions.AccessDenied()
# return user credentials
return (cr.dbname, login, access_token)
def check_credentials(self, cr, uid, password):
try:

View File

@ -9,7 +9,6 @@
}
.openerp a.zocial.openerp {
float: right;
border: 1px solid #222222;
color: white;
margin: 0;

View File

@ -35,27 +35,30 @@ openerp.auth_oauth = function(instance) {
on_oauth_sign_in: function(ev) {
ev.preventDefault();
var index = $(ev.target).data('index');
var p = this.oauth_providers[index];
var ret = _.str.sprintf('%s//%s/auth_oauth/signin', location.protocol, location.host);
var provider = this.oauth_providers[index];
var return_url = _.str.sprintf('%s//%s/auth_oauth/signin', location.protocol, location.host);
if (instance.session.debug) {
ret += '?debug';
return_url += '?debug';
}
var dbname = self.$("form [name=db]").val();
var state_object = {
d: dbname,
p: p.id
};
var state = JSON.stringify(state_object);
var state = this._oauth_state(provider);
var params = {
response_type: 'token',
client_id: p.client_id,
redirect_uri: ret,
scope: p.scope,
state: state,
client_id: provider.client_id,
redirect_uri: return_url,
scope: provider.scope,
state: JSON.stringify(state),
};
var url = p.auth_endpoint + '?' + $.param(params);
var url = provider.auth_endpoint + '?' + $.param(params);
window.location = url;
},
_oauth_state: function(provider) {
// return the state object sent back with the redirected uri
var dbname = this.$("form [name=db]").val();
return {
d: dbname,
p: provider.id,
};
},
});
};

View File

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2012-today OpenERP SA (<http://www.openerp.com>)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>
#
##############################################################################
import res_users

View File

@ -0,0 +1,39 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2010-2012 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'Signup with OAuth2 Authentication',
'version': '1.0',
'category': 'Hidden',
'description': """
Allow users to sign up through OAuth2 Provider.
===============================================
""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
'depends': ['auth_oauth', 'auth_signup'],
'data': [],
'js': ['static/src/js/auth_oauth_signup.js'],
'css': [],
'qweb': [],
'installable': True,
'auto_install': True,
}

View File

@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2010-2012 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import logging
import simplejson
import openerp
from openerp.osv import osv, fields
_logger = logging.getLogger(__name__)
class res_users(osv.Model):
_inherit = 'res.users'
def _auth_oauth_signin(self, cr, uid, provider, validation, params, context=None):
# overridden to use signup method if regular oauth signin fails
try:
login = super(res_users, self)._auth_oauth_signin(cr, uid, provider, validation, params, context=context)
except openerp.exceptions.AccessDenied:
state = simplejson.loads(params['state'])
token = state.get('t')
oauth_uid = validation['user_id']
email = validation.get('email', 'provider_%d_user_%d' % (provider, oauth_uid))
name = validation.get('name', email)
values = {
'name': name,
'login': email,
'email': email,
'oauth_provider_id': provider,
'oauth_uid': oauth_uid,
'oauth_access_token': params['access_token'],
'active': True,
}
_, login, _ = self.signup(cr, uid, values, token, context=context)
return login

View File

@ -0,0 +1,14 @@
openerp.auth_oauth_signup = function(instance) {
// override Login._oauth_state to add the signup token in the state
instance.web.Login.include({
_oauth_state: function(provider) {
var state = this._super.apply(this, arguments);
if (this.params.token) {
state.t = this.params.token;
}
return state;
},
});
};

View File

@ -37,6 +37,5 @@ Allow users to sign up.
'res_users_view.xml',
],
'js': ['static/src/js/auth_signup.js'],
'css' : ['static/src/css/base.css'],
'qweb': ['static/src/xml/auth_signup.xml'],
}

View File

@ -1,3 +0,0 @@
base.css: base.sass
sass --trace -t expanded base.sass base.css

View File

@ -1,10 +0,0 @@
@charset "utf-8";
.openerp .oe_login .oe_signup_show {
display: none;
}
.openerp .oe_login_signup .oe_signup_show {
display: block !important;
}
.openerp .oe_login_signup .oe_signup_hide {
display: none;
}

View File

@ -1,13 +0,0 @@
@charset "utf-8"
.openerp
// Regular login form
.oe_login
.oe_signup_show
display: none
// Signup form
.oe_login_signup
.oe_signup_show
display: block !important
.oe_signup_hide
display: none

View File

@ -7,12 +7,15 @@ openerp.auth_signup = function(instance) {
var self = this;
var d = this._super();
self.$(".oe_signup_show").hide();
// to switch between the signup and regular login form
this.$('a.oe_signup_signup').click(function(ev) {
if (ev) {
ev.preventDefault();
}
self.$el.addClass("oe_login_signup");
self.$(".oe_signup_show").show();
self.$(".oe_signup_hide").hide();
return false;
});
this.$('a.oe_signup_back').click(function(ev) {
@ -20,6 +23,8 @@ openerp.auth_signup = function(instance) {
ev.preventDefault();
}
self.$el.removeClass("oe_login_signup");
self.$(".oe_signup_show").hide();
self.$(".oe_signup_hide").show();
delete self.params.token;
return false;
});

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- vim:fdl=1: -->
<!-- vim:fdl=1:
-->
<templates id="template" xml:space="preserve">
<t t-extend="Login">
@ -16,12 +17,12 @@
<li class="oe_signup_show"><input name="confirm_password" type="password"/></li>
</t>
<t t-jquery="form ul:first li:has(button[name=submit])" t-operation="replace">
<li class="oe_signup_hide"><button name="submit">Log in</button></li>
<li class="oe_signup_show"><button name="submit">Sign in</button></li>
</t>
<t t-jquery="form ul:first li:last" t-operation="after">
<li><a class="oe_signup_hide oe_signup_signup" href="#">Sign Up</a></li>
<li><a class="oe_signup_show oe_signup_back" href="#">Back to Login</a></li>
<li>
<button class="oe_signup_hide" name="submit">Log in</button>
<button class="oe_signup_show" name="submit">Sign up</button>
<a class="oe_signup_hide oe_signup_signup" href="#">Sign Up</a>
<a class="oe_signup_show oe_signup_back" href="#">Back to Login</a>
</li>
</t>
</t>

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-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-05-10 17:33+0000\n"
"Last-Translator: Wei \"oldrev\" Li <oldrev@gmail.com>\n"
"PO-Revision-Date: 2012-11-27 02:28+0000\n"
"Last-Translator: Joshua Jan(SHINEIT) <popkar77@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:09+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: base_report_designer
#: model:ir.model,name:base_report_designer.model_base_report_sxw
@ -175,7 +175,7 @@ msgstr "取消"
#. module: base_report_designer
#: view:base.report.sxw:0
msgid "or"
msgstr ""
msgstr "or"
#. module: base_report_designer
#: model:ir.model,name:base_report_designer.model_ir_actions_report_xml

View File

@ -202,9 +202,7 @@ class base_stage(object):
def case_escalate(self, cr, uid, ids, context=None):
""" Escalates case to parent level """
cases = self.browse(cr, uid, ids, context=context)
cases[0].state # fill browse record cache, for _action having old and new values
for case in cases:
for case in self.browse(cr, uid, ids, context=context):
data = {'active': True}
if case.section_id.parent_id:
data['section_id'] = case.section_id.parent_id.id
@ -215,8 +213,6 @@ class base_stage(object):
raise osv.except_osv(_('Error!'), _("You are already at the top level of your sales-team category.\nTherefore you cannot escalate furthermore."))
self.write(cr, uid, [case.id], data, context=context)
case.case_escalate_send_note(case.section_id.parent_id, context=context)
cases = self.browse(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'escalate', context=context)
return True
def case_open(self, cr, uid, ids, context=None):
@ -256,8 +252,7 @@ class base_stage(object):
def case_set(self, cr, uid, ids, new_state_name=None, values_to_update=None, new_stage_id=None, context=None):
""" Generic method for setting case. This methods wraps the update
of the record, as well as call to _action and browse_record
case setting to fill the cache.
of the record.
:params new_state_name: the new state of the record; this method
will call ``stage_set_with_state_name``
@ -271,7 +266,6 @@ class base_stage(object):
update when writing values to the record.
"""
cases = self.browse(cr, uid, ids, context=context)
cases[0].state # fill browse record cache, for _action having old and new values
# 1. update the stage
if new_state_name:
self.stage_set_with_state_name(cr, uid, cases, new_state_name, context=context)
@ -280,13 +274,14 @@ class base_stage(object):
# 2. update values
if values_to_update:
self.write(cr, uid, ids, values_to_update, context=context)
# 3. call _action for base action rule
if new_state_name:
self._action(cr, uid, cases, new_state_name, context=context)
elif not (new_stage_id is None):
new_state_name = self.read(cr, uid, ids, ['state'], context=context)[0]['state']
self._action(cr, uid, cases, new_state_name, context=context)
return True
def write(self, cr, uid, ids, vals, context=None):
res = super(base_stage,self).write(cr, uid, ids, vals, context)
if vals.get('stage_id'):
for case in self.browse(cr, uid, ids, context=context):
self._action(cr, uid, case, case.stage_id.state, context=context)
return res
def _action(self, cr, uid, cases, state_to, scrit=None, context=None):
if context is None:

View File

@ -0,0 +1,37 @@
# Spanish 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-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-27 01:35+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: contacts
#: model:ir.actions.act_window,help:contacts.action_contacts
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to add a contact in your address book.\n"
" </p><p>\n"
" OpenERP helps you easily track all activities related to\n"
" a customer; discussions, history of business opportunities,\n"
" documents, etc.\n"
" </p>\n"
" "
msgstr ""
#. module: contacts
#: model:ir.actions.act_window,name:contacts.action_contacts
#: model:ir.ui.menu,name:contacts.menu_contacts
msgid "Contacts"
msgstr ""

View File

@ -43,7 +43,7 @@ Thanks,
</record>
<record id="filter_draft_lead" model="ir.filters">
<field name="name">Filter on leads which are draft.</field>
<field name="name">Draft Leads</field>
<field name="model_id">crm.lead</field>
<field name="domain">[('state','=','draft')]</field>
<field name="user_id" eval="False"/>
@ -62,7 +62,7 @@ Thanks,
</record>
<record id="filter_usa_lead" model="ir.filters">
<field name="name">Filter on leads which come from USA.</field>
<field name="name">Leads from USA</field>
<field name="model_id">crm.lead</field>
<field name="domain">[('country_id','=','United States')]</field>
<field name="user_id" eval="False"/>

View File

@ -210,7 +210,7 @@
<field name="company_id"
groups="base.group_multi_company"
widget="selection" colspan="2"/>
<field name="type_id" widget="selection"/>
<field name="type_id"/>
<field name="channel_id" widget="selection"/>
<field name="referred"/>
<field name="state" groups="base.group_no_one"/>
@ -498,7 +498,7 @@
</group>
<group string="Categorization">
<field name="type_id" widget="selection"/>
<field name="type_id" />
<field name="channel_id" widget="selection"/>
</group>
<group string="Mailings">

View File

@ -127,6 +127,8 @@ class crm_phonecall(base_state, osv.osv):
section_id = call.section_id and call.section_id.id or False
if not user_id:
user_id = call.user_id and call.user_id.id or False
if not schedule_time:
schedule_time = call.date
vals = {
'name' : call_summary,
'user_id' : user_id or False,

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-26 04:41+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:23+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: crm
#: view:crm.lead.report:0

View File

@ -15,20 +15,6 @@
</field>
</record>
<record id="view_partners_form_crm3" model="ir.ui.view">
<field name="name">view.res.partner.search.crm.inherited3</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_res_partner_filter"/>
<field eval="18" name="priority"/>
<field name="arch" type="xml">
<xpath expr="//group[@string='Group By...']" position="after">
<group string="Display">
<filter string="Show Sales Team" context="{'invisible_section': False}"/>
</group>
</xpath>
</field>
</record>
<!-- open meetings related to given partner -->
<record id="crm_meeting_partner" model="ir.actions.act_window">
<field name="name">Meetings</field>

View File

@ -2,12 +2,6 @@
<openerp>
<data>
<!-- Top menu item -->
<menuitem name="Project"
id="base.menu_main_pm"
groups="base.group_sale_salesman"
sequence="40"/>
<menuitem id="base.menu_aftersale" name="After-Sale Services"
groups="base.group_sale_salesman"
parent="base.menu_base_partner" sequence="2" />
@ -50,8 +44,6 @@
parent="base.menu_aftersale" action="crm_case_categ_claim0" sequence="1"/>
<!-- Claim Stages -->
<menuitem id="base.menu_definitions" name="Configuration" parent="base.menu_main_pm" sequence="60"/>
<menuitem id="base.menu_project_config_project" name="Stages" parent="base.menu_definitions" sequence="1"/>
<menuitem id="menu_claim_stage_view" name="Stages" action="crm_claim_stage_act" parent="menu_config_claim" sequence="20"/>
</data>

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-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-02-17 03:58+0000\n"
"Last-Translator: 开阖软件 Jeff Wang <jeff@osbzr.com>\n"
"PO-Revision-Date: 2012-11-27 02:01+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:32+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: crm_todo
#: model:ir.model,name:crm_todo.model_project_task
@ -30,7 +30,7 @@ msgstr "时间箱"
#. module: crm_todo
#: view:crm.lead:0
msgid "Lead"
msgstr ""
msgstr "线索"
#. module: crm_todo
#: view:crm.lead:0
@ -77,7 +77,7 @@ msgstr "取消"
#. module: crm_todo
#: model:ir.model,name:crm_todo.model_crm_lead
msgid "Lead/Opportunity"
msgstr ""
msgstr "线索/商机"
#. module: crm_todo
#: field:project.task,lead_id:0

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-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-02 01:52+0000\n"
"Last-Translator: Joshua Jan(SHINEIT) <popkar77@gmail.com>\n"
"PO-Revision-Date: 2012-11-27 03:04+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:42+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:23+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: delivery
#: report:sale.shipping:0
@ -29,7 +29,7 @@ msgstr "由post送货"
#. module: delivery
#: view:delivery.grid.line:0
msgid " in Function of "
msgstr ""
msgstr " 在功能 "
#. module: delivery
#: view:delivery.carrier:0
@ -64,7 +64,7 @@ msgstr "体积"
#. module: delivery
#: view:delivery.carrier:0
msgid "Zip"
msgstr ""
msgstr "邮政编码"
#. module: delivery
#: field:delivery.grid,line_ids:0
@ -100,12 +100,23 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" 单击 定义一个新的运输方法 \n"
" </p><p>\n"
" 每个承运商人 (比如UPS顺风)可以几种运输方法 \n"
" (例如UPS Express, UPS Standard ) ,每种方法可\n"
" 以有一个定价规则.\n"
" </p><p>\n"
" 在销售订单(基于报价单)或者发票(基于发运单),\n"
" 这些方法可以根据你的设置自动计算运输价格;\n"
" </p>\n"
" "
#. module: delivery
#: code:addons/delivery/delivery.py:221
#, python-format
msgid "No line matched this product or order in the chosen delivery grid."
msgstr ""
msgstr "在选择运输网络里,没有一行匹配这个产品或者订单。"
#. module: delivery
#: model:ir.actions.act_window,name:delivery.action_picking_tree4
@ -145,6 +156,13 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" 单击 为指定区域创建运输价格表.\n"
" </p><p>\n"
" 运输价格表允许 根据产品的重量和其他条件,计算运输的成本和销售价格.\n"
" 你能为每种运输方法定义几种价格表:为每个国家,或者在特定国家根据邮政编码的定义的一个区域.\n"
" </p>\n"
" "
#. module: delivery
#: report:sale.shipping:0
@ -164,7 +182,7 @@ msgstr "金额"
#. module: delivery
#: view:sale.order:0
msgid "Add in Quote"
msgstr ""
msgstr "添加引用"
#. module: delivery
#: selection:delivery.grid.line,price_type:0
@ -217,7 +235,7 @@ msgstr "网络定义"
#: code:addons/delivery/stock.py:89
#, python-format
msgid "Warning!"
msgstr ""
msgstr "警告!"
#. module: delivery
#: field:delivery.grid.line,operator:0
@ -237,14 +255,14 @@ msgstr "销售订单"
#. module: delivery
#: model:ir.model,name:delivery.model_stock_picking_out
msgid "Delivery Orders"
msgstr ""
msgstr "送货单"
#. module: delivery
#: view:sale.order:0
msgid ""
"If you don't 'Add in Quote', the exact price will be computed when invoicing "
"based on delivery order(s)."
msgstr ""
msgstr "如果你没有“添加引用”,当基于送货单开票时,将计算精确的价格。"
#. module: delivery
#: field:delivery.carrier,partner_id:0
@ -293,7 +311,7 @@ msgstr "免费送货的订单金额,以公司本位币显示"
#. module: delivery
#: field:delivery.carrier,free_if_more_than:0
msgid "Free If Order Total Amount Is More Than"
msgstr ""
msgstr "当订单总额多于 时,免费"
#. module: delivery
#: field:delivery.grid.line,grid_id:0
@ -409,7 +427,7 @@ msgstr "条件"
#. module: delivery
#: constraint:stock.move:0
msgid "You must assign a serial number for this product."
msgstr ""
msgstr "你必须为这个产品指定序列号"
#. module: delivery
#: field:delivery.grid.line,standard_price:0
@ -419,7 +437,7 @@ msgstr "成本价"
#. module: delivery
#: constraint:stock.move:0
msgid "You cannot move products from or to a location of the type view."
msgstr ""
msgstr "你不能从视图类型的库位移动"
#. module: delivery
#: selection:delivery.grid.line,price_type:0
@ -474,7 +492,7 @@ msgstr "订单号必须在一个公司范围内唯一"
#. module: delivery
#: model:ir.model,name:delivery.model_stock_picking_in
msgid "Incoming Shipments"
msgstr ""
msgstr "入库"
#. module: delivery
#: selection:delivery.grid.line,operator:0
@ -484,7 +502,7 @@ msgstr "<="
#. module: delivery
#: constraint:stock.move:0
msgid "You try to assign a lot which is not from the same product."
msgstr ""
msgstr "您企图为不一样的产品创建批号"
#. module: delivery
#: report:sale.shipping:0
@ -558,7 +576,7 @@ msgstr "承运方"
#: model:ir.actions.act_window,name:delivery.action_delivery_carrier_form
#: model:ir.ui.menu,name:delivery.menu_action_delivery_carrier_form
msgid "Delivery Methods"
msgstr ""
msgstr "运输方法"
#. module: delivery
#: field:sale.order,id:0
@ -589,7 +607,7 @@ msgstr "销售价格"
#. module: delivery
#: view:stock.picking.out:0
msgid "Print Delivery Order"
msgstr ""
msgstr "打印送货单"
#. module: delivery
#: view:delivery.grid:0

View File

@ -31,10 +31,10 @@ class sale_order(osv.osv):
'id': fields.integer('ID', readonly=True,invisible=True),
}
def onchange_partner_id(self, cr, uid, ids, part):
result = super(sale_order, self).onchange_partner_id(cr, uid, ids, part)
def onchange_partner_id(self, cr, uid, ids, part, context=None):
result = super(sale_order, self).onchange_partner_id(cr, uid, ids, part, context=context)
if part:
dtype = self.pool.get('res.partner').browse(cr, uid, part).property_delivery_carrier.id
dtype = self.pool.get('res.partner').browse(cr, uid, part, context=context).property_delivery_carrier.id
result['value']['carrier_id'] = dtype
return result

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-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-20 17:33+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-11-26 14:59+0000\n"
"Last-Translator: Kaare Pettersen <Unknown>\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-11-25 06:17+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: document
#: field:document.directory,parent_id:0
@ -41,7 +41,7 @@ msgstr ""
#. module: document
#: sql_constraint:document.directory:0
msgid "Directory must have a parent or a storage."
msgstr ""
msgstr "Katalog må ha en overordnede eller en lagringsplass."
#. module: document
#: view:document.directory:0
@ -54,6 +54,8 @@ msgid ""
"Field to be used as name on resource directories. If empty, the \"name\" "
"will be used."
msgstr ""
"Feltet for å bli brukt som navn på ressurs kataloger. Hvis tomt, vil "
"\"navn\" benyttes."
#. module: document
#: view:document.directory:0
@ -64,7 +66,7 @@ msgstr "Grupper etter ..."
#. module: document
#: model:ir.model,name:document.model_document_directory_content_type
msgid "Directory Content Type"
msgstr ""
msgstr "Katalog Innholdstype."
#. module: document
#: view:document.directory:0
@ -142,7 +144,7 @@ msgstr "Filtrere på mine dokumenter."
#: view:ir.attachment:0
#: field:ir.attachment,index_content:0
msgid "Indexed Content"
msgstr ""
msgstr "Indeksert innhold."
#. module: document
#: help:document.directory,resource_find_all:0
@ -150,6 +152,8 @@ msgid ""
"If true, all attachments that match this resource will be located. If "
"false, only ones that have this as parent."
msgstr ""
"Hvis sant, vil alle vedlegg som samsvarer denne ressursen bli plassert. Hvis "
"falsk, eneste som har dette som overordnede."
#. module: document
#: view:document.directory:0
@ -273,7 +277,7 @@ msgstr "Innholdstype"
#. module: document
#: view:ir.attachment:0
msgid "Modification"
msgstr ""
msgstr "Endring."
#. module: document
#: view:document.directory:0
@ -288,7 +292,7 @@ msgstr "Type"
#: code:addons/document/document_directory.py:234
#, python-format
msgid "%s (copy)"
msgstr ""
msgstr "%s (kopi)"
#. module: document
#: help:document.directory,ressource_type_id:0
@ -306,7 +310,7 @@ msgstr ""
#. module: document
#: constraint:document.directory:0
msgid "Error! You cannot create recursive directories."
msgstr ""
msgstr "Feil! Du kan ikke opprette rekursive kataloger."
#. module: document
#: field:document.directory,resource_field:0
@ -316,7 +320,7 @@ msgstr "Felt navn."
#. module: document
#: field:document.directory,dctx_ids:0
msgid "Context fields"
msgstr ""
msgstr "Kontekst felt."
#. module: document
#: field:ir.attachment,store_fname:0
@ -347,13 +351,13 @@ msgstr "Utvidelse"
#. module: document
#: field:document.directory,content_ids:0
msgid "Virtual Files"
msgstr ""
msgstr "Virtuelle filer."
#. module: document
#: code:addons/document/document_storage.py:635
#, python-format
msgid "Error at doc write!"
msgstr ""
msgstr "Feil på doc skrive!"
#. module: document
#: view:document.directory:0
@ -394,12 +398,12 @@ msgstr "Siste endring bruker."
#: model:ir.actions.act_window,name:document.action_view_files_by_user_graph
#: view:report.document.user:0
msgid "Files by User"
msgstr ""
msgstr "Filene etter bruker."
#. module: document
#: view:ir.attachment:0
msgid "on"
msgstr ""
msgstr "på."
#. module: document
#: field:document.directory,domain:0
@ -455,11 +459,12 @@ msgstr "Definere ord i sammenheng, for alle underordnede kataloger og filer."
msgid ""
"If not checked, media is currently offline and its contents not available"
msgstr ""
"Hvis det ikke er merket, er media offline og dens innhold ikke tilgjengelig."
#. module: document
#: field:report.document.user,user:0
msgid "unknown"
msgstr ""
msgstr "Ukjent."
#. module: document
#: view:document.directory:0
@ -505,12 +510,12 @@ msgstr ""
#: model:ir.actions.act_window,name:document.open_board_document_manager
#: model:ir.ui.menu,name:document.menu_reports_document
msgid "Knowledge"
msgstr ""
msgstr "Kunnskap."
#. module: document
#: view:document.storage:0
msgid "Document Storage"
msgstr ""
msgstr "Dokument lager."
#. module: document
#: view:document.configuration:0
@ -552,7 +557,7 @@ msgstr ""
#: code:addons/document/static/src/js/document.js:6
#, python-format
msgid "Attachment(s)"
msgstr ""
msgstr "Vedlegg(s)"
#. module: document
#: selection:report.document.user,month:0
@ -562,7 +567,7 @@ msgstr "August"
#. module: document
#: view:ir.attachment:0
msgid "My Document(s)"
msgstr ""
msgstr "Mine dokumenter."
#. module: document
#: sql_constraint:document.directory:0
@ -648,7 +653,7 @@ msgstr "Katalogen Navnet må være unikt!"
#. module: document
#: view:ir.attachment:0
msgid "Attachments"
msgstr ""
msgstr "Vedlegg."
#. module: document
#: field:document.directory,create_uid:0
@ -690,17 +695,17 @@ msgstr "Underordnede"
#. module: document
#: view:board.board:0
msgid "Files by user"
msgstr ""
msgstr "Filer av bruker."
#. module: document
#: selection:document.storage,type:0
msgid "External file storage"
msgstr ""
msgstr "Ekstern fillagring."
#. module: document
#: help:document.storage,path:0
msgid "For file storage, the root path of the storage"
msgstr ""
msgstr "For fil lagring, rotbanen Av lagring."
#. module: document
#: field:document.directory.dctx,field:0
@ -752,7 +757,7 @@ msgstr "ir.vedlegg"
#. module: document
#: view:report.document.user:0
msgid "Users File"
msgstr ""
msgstr "Brukerens fil."
#. module: document
#: view:document.directory:0
@ -795,7 +800,7 @@ msgstr "Navn"
#. module: document
#: sql_constraint:document.storage:0
msgid "The storage path must be unique!"
msgstr ""
msgstr "Lagrings stien må være unik!"
#. module: document
#: view:document.directory:0
@ -805,7 +810,7 @@ msgstr "Felter"
#. module: document
#: help:document.storage,readonly:0
msgid "If set, media is for reading only"
msgstr ""
msgstr "Hvis innstilt, er media for lesing bare."
#. module: document
#: selection:report.document.user,month:0
@ -821,7 +826,7 @@ msgstr "# av filer."
#. module: document
#: view:document.storage:0
msgid "Search Document Storage"
msgstr ""
msgstr "Søk dokument lagring."
#. module: document
#: view:document.directory:0
@ -837,7 +842,7 @@ msgstr ""
#: code:addons/document/static/src/js/document.js:17
#, python-format
msgid "%s (%s)"
msgstr ""
msgstr "%s (%s)"
#. module: document
#: field:document.directory.content,sequence:0
@ -847,7 +852,7 @@ msgstr "Sekvens"
#. module: document
#: field:document.directory.content,name:0
msgid "Content Name"
msgstr ""
msgstr "Innhold navn."
#. module: document
#: field:report.document.user,datas_fname:0
@ -857,7 +862,7 @@ msgstr "Filnavn"
#. module: document
#: selection:document.storage,type:0
msgid "Internal File storage"
msgstr ""
msgstr "Intern Fillagring."
#. module: document
#: view:document.configuration:0
@ -886,7 +891,7 @@ msgstr "Lagringsmedium"
#. module: document
#: field:document.directory.content,extension:0
msgid "Document Type"
msgstr ""
msgstr "Dokumenttype."
#~ msgid "Files per Month"
#~ msgstr "Filer per måned."

View File

@ -11,10 +11,9 @@
<attribute name="string">Knowledge Application Configuration</attribute>
</form>
<group string="res_config_contents" position="replace">
<group string="Configure Directories">
<label string="OpenERP's Document Management System supports mapping virtual folders with documents. The virtual folder of a document can be used to manage the files attached to the document, or to print and download any report. This tool will create directories automatically according to modules installed."/>
<label align="0.0" string="When executing this wizard, it will configure your directories automatically according to modules installed."/>
</group>
<separator string="Configure Directories"/>
<p>OpenERP's Document Management System supports mapping virtual folders with documents. The virtual folder of a document can be used to manage the files attached to the document, or to print and download any report. This tool will create directories automatically according to modules installed.</p>
<p>When executing this wizard, it will configure your directories automatically according to modules installed.</p>
</group>
</data>
</field>

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-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-24 21:29+0000\n"
"PO-Revision-Date: 2012-11-26 20:16+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <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-11-25 05:44+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:23+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: event
#: view:event.event:0
@ -61,7 +61,7 @@ msgstr ""
#: code:addons/event/event.py:305
#, python-format
msgid "Event has been <b>cancelled</b>."
msgstr ""
msgstr "Evenement is <b>geannuleerd</b>"
#. module: event
#: field:event.registration,date_open:0
@ -112,12 +112,12 @@ msgstr "Bedrijf"
#: field:event.event,email_confirmation_id:0
#: field:event.type,default_email_event:0
msgid "Event Confirmation Email"
msgstr ""
msgstr "Evenement bevestign e-mail"
#. module: event
#: field:event.type,default_registration_max:0
msgid "Default Maximum Registration"
msgstr ""
msgstr "Standaard maximum registraties"
#. module: event
#: help:event.event,message_unread:0
@ -139,7 +139,7 @@ msgstr "Evenementregistratie"
#. module: event
#: model:ir.module.category,description:event.module_category_event_management
msgid "Helps you manage your Events."
msgstr ""
msgstr "Helpt u ik het beheersen van evenementen."
#. module: event
#: view:report.event.registration:0
@ -349,7 +349,7 @@ msgstr "Georganiseerd door"
#. module: event
#: view:event.event:0
msgid "Register with this event"
msgstr ""
msgstr "Registreer voor dit benemend."
#. module: event
#: help:event.type,default_email_registration:0
@ -424,7 +424,7 @@ msgstr "Aanmaakdatum"
#: view:report.event.registration:0
#: field:report.event.registration,user_id:0
msgid "Event Responsible"
msgstr ""
msgstr "Evenement verantwoordelijke."
#. module: event
#: view:event.event:0
@ -477,7 +477,7 @@ msgstr "Spreker welke een speech zal geven tijdens het evenement"
#: code:addons/event/event.py:457
#, python-format
msgid "Registration has been <b>created</b>."
msgstr ""
msgstr "Registratie is <b>aangemaakt</b>."
#. module: event
#: view:event.event:0
@ -488,7 +488,7 @@ msgstr "Annuleer evenement"
#: code:addons/event/event.py:398
#, python-format
msgid "State set to Done"
msgstr ""
msgstr "Status ingesteld op 'Gereed'"
#. module: event
#: model:ir.actions.act_window,name:event.act_event_reg
@ -509,7 +509,7 @@ msgstr "Onbevestigde inschrijvingen"
#. module: event
#: model:ir.actions.client,name:event.action_client_event_menu
msgid "Open Event Menu"
msgstr ""
msgstr "Open menu Evenementen"
#. module: event
#: view:report.event.registration:0
@ -546,7 +546,7 @@ msgstr " # aantal voorlopige inschrijvingen"
#: field:event.event,email_registration_id:0
#: field:event.type,default_email_registration:0
msgid "Registration Confirmation Email"
msgstr ""
msgstr "Registratie bevestiging e-mail"
#. module: event
#: view:report.event.registration:0
@ -557,12 +557,12 @@ msgstr "Maand"
#. module: event
#: field:event.registration,date_closed:0
msgid "Attended Date"
msgstr ""
msgstr "Datum deelname"
#. module: event
#: view:event.event:0
msgid "Finish Event"
msgstr ""
msgstr "Evenement einde"
#. module: event
#: model:ir.actions.server,name:event.actions_server_event_event_unread
@ -599,13 +599,13 @@ msgstr ""
#. module: event
#: help:res.partner,speaker:0
msgid "Check this box if this contact is a speaker."
msgstr ""
msgstr "Vink dit aan als het contactpersoon een spreker is."
#. module: event
#: code:addons/event/event.py:116
#, python-format
msgid "No Tickets Available!"
msgstr ""
msgstr "Geen tickets beschikbaar."
#. module: event
#: help:event.event,state:0
@ -686,7 +686,7 @@ msgstr "Evenementen in de 'Nieuw' status"
#: code:addons/event/event.py:404
#, python-format
msgid "State set to Cancel"
msgstr ""
msgstr "Status ingesteld op 'Geannuleerd'"
#. module: event
#: view:event.event:0
@ -797,7 +797,7 @@ msgstr ""
#. module: event
#: view:event.event:0
msgid "(confirmed:"
msgstr ""
msgstr "(bevestigd:"
#. module: event
#: view:event.registration:0
@ -865,13 +865,13 @@ msgstr "Email instellingen"
#. module: event
#: field:event.type,default_registration_min:0
msgid "Default Minimum Registration"
msgstr ""
msgstr "Standaard minimaal aantal registraties."
#. module: event
#: code:addons/event/event.py:368
#, python-format
msgid "Registration confirmed."
msgstr ""
msgstr "Registratie bevestigd."
#. module: event
#: field:event.event,address_id:0
@ -894,7 +894,7 @@ msgstr ""
#. module: event
#: view:event.event:0
msgid "Attended the Event"
msgstr ""
msgstr "Was aanwezig bij dit evenement."
#. module: event
#: constraint:event.event:0
@ -921,7 +921,7 @@ msgstr "Afgerond"
#. module: event
#: view:report.event.registration:0
msgid "Show Confirmed Registrations"
msgstr ""
msgstr "Toon bevestigde registraties."
#. module: event
#: view:event.confirm:0
@ -931,7 +931,7 @@ msgstr "Annuleren"
#. module: event
#: field:event.registration,reply_to:0
msgid "Reply-to Email"
msgstr ""
msgstr "Antwoord aan e-mail."
#. module: event
#: code:addons/event/event.py:114
@ -948,7 +948,7 @@ msgstr ""
#. module: event
#: view:event.registration:0
msgid "Set To Unconfirmed"
msgstr ""
msgstr "Stel in op 'Onbevestigd'"
#. module: event
#: view:event.event:0

View File

@ -23,7 +23,7 @@
{
'name' : 'Email Gateway',
'version' : '1.0',
'depends' : ['base', 'mail'],
'depends' : ['mail'],
'author' : 'OpenERP SA',
'category': 'Tools',
'description': """

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-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-23 16:03+0000\n"
"PO-Revision-Date: 2012-11-27 03:49+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:23+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: fetchmail
#: selection:fetchmail.server,state:0
@ -96,7 +96,7 @@ msgstr "本地服务器"
#. module: fetchmail
#: field:fetchmail.server,state:0
msgid "Status"
msgstr ""
msgstr "状态"
#. module: fetchmail
#: model:ir.model,name:fetchmail.model_fetchmail_server
@ -116,7 +116,7 @@ msgstr "SSL"
#. module: fetchmail
#: model:ir.model,name:fetchmail.model_fetchmail_config_settings
msgid "fetchmail.config.settings"
msgstr ""
msgstr "fetchmail.config.settings"
#. module: fetchmail
#: field:fetchmail.server,date:0
@ -184,6 +184,8 @@ msgid ""
"Here is what we got instead:\n"
" %s."
msgstr ""
"这里被替换为:\n"
" %s."
#. module: fetchmail
#: view:fetchmail.server:0
@ -226,7 +228,7 @@ msgstr "是否应该下载附件。如果不勾这里,收到的邮件会在被
#. module: fetchmail
#: model:ir.model,name:fetchmail.model_mail_mail
msgid "Outgoing Mails"
msgstr ""
msgstr "发出邮件"
#. module: fetchmail
#: field:fetchmail.server,priority:0

View File

@ -9,7 +9,6 @@
sequence="90"/>
<menuitem id="menu_hr_main" parent="menu_hr_root" name="Human Resources" sequence="0"/>
<menuitem id="menu_hr_configuration" name="Configuration" parent="hr.menu_hr_root" groups="base.group_hr_manager" sequence="50"/>
<menuitem id="menu_hr_management" name="Human Resources" parent="hr.menu_hr_configuration" groups="base.group_no_one" sequence="25"/>
<menuitem id="menu_hr_reporting_timesheet" name="Reports"
parent="menu_hr_reporting" sequence="6"/>
@ -228,6 +227,7 @@
<field name="department_id"/>
<field name="job_id"/>
<field name="coach_id" invisible="1"/>
<field name="parent_id" invisible="1"/>
</tree>
</field>
</record>
@ -288,7 +288,7 @@
</record>
<record id="open_view_categ_form" model="ir.actions.act_window">
<field name="name">Categories of Employees</field>
<field name="name">Employee Tags</field>
<field name="res_model">hr.employee.category</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
@ -297,14 +297,6 @@
<menuitem action="open_view_categ_form" id="menu_view_employee_category_form"
parent="hr.menu_hr_configuration" sequence="1" groups="base.group_no_one"/>
<record id="open_view_categ_tree" model="ir.actions.act_window">
<field name="name">Categories Structure</field>
<field name="res_model">hr.employee.category</field>
<field name="view_type">tree</field>
<field name="view_id" ref="view_employee_category_tree"/>
<field name="domain">[('parent_id','=',False)]</field>
</record>
<record id="hr_employee_normal_action_tree" model="ir.actions.act_window">
<field name="name">Employees</field>
<field name="type">ir.actions.act_window</field>
@ -321,9 +313,6 @@
<field eval="'ir.actions.act_window,%d'%hr_employee_normal_action_tree" name="value"/>
</record>
<menuitem action="open_view_categ_tree"
id="menu_view_employee_category_tree" parent="menu_hr_management" groups="base.group_no_one" sequence="2"/>
<record id="view_hr_job_form" model="ir.ui.view">
<field name="name">hr.job.form</field>
<field name="model">hr.job</field>

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-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-11-25 19:55+0000\n"
"PO-Revision-Date: 2012-11-26 20:53+0000\n"
"Last-Translator: Lovro Lazarin <lovro.lazarin@slobodni-programi.hr>\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-11-26 04:42+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
"Language: hr\n"
#. module: hr
@ -258,7 +258,7 @@ msgstr "Žensko"
#: model:ir.actions.act_window,name:hr.open_view_categ_form
#: model:ir.ui.menu,name:hr.menu_view_employee_category_form
msgid "Categories of Employees"
msgstr ""
msgstr "Kategorije radnika"
#. module: hr
#: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_new_config
@ -289,7 +289,7 @@ msgstr "Lokacija ureda"
#. module: hr
#: field:hr.job,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "Pratitelji"
#. module: hr
#: view:hr.employee:0
@ -310,6 +310,9 @@ msgid ""
"image, with aspect ratio preserved. Use this field anywhere a small image is "
"required."
msgstr ""
"Mala fotografija radnika. Fotografija je automatski prilagođena na dimenzije "
"64x64px, omjer dimenzija je pritom očuvan. Koristite ovo polje gdje je "
"potrebna mala slika."
#. module: hr
#: field:hr.employee,birthday:0
@ -319,12 +322,12 @@ msgstr "Datum rođenja"
#. module: hr
#: help:hr.job,no_of_recruitment:0
msgid "Number of new employees you expect to recruit."
msgstr ""
msgstr "Broj novih radnika koje planirate zaposliti."
#. module: hr
#: model:ir.actions.client,name:hr.action_client_hr_menu
msgid "Open HR Menu"
msgstr ""
msgstr "Otvori HR meni"
#. module: hr
#: help:hr.job,message_summary:0
@ -332,6 +335,8 @@ msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
"Sadrži sažetak konverzacije (broj poruka,..). Ovaj sažetak je u html formatu "
"da bi mogao biti ubačen u kanban pogled."
#. module: hr
#: help:hr.config.settings,module_account_analytic_analysis:0
@ -339,6 +344,8 @@ msgid ""
"This installs the module account_analytic_analysis, which will install sales "
"management too."
msgstr ""
"Ovo instalira modul account_analytic_analysis, koji će također instalirati "
"upravljanje prodajom."
#. module: hr
#: view:board.board:0
@ -355,7 +362,7 @@ msgstr "Posao"
#. module: hr
#: field:hr.job,no_of_employee:0
msgid "Current Number of Employees"
msgstr ""
msgstr "Trenutni broj radnika"
#. module: hr
#: field:hr.department,member_ids:0
@ -370,13 +377,14 @@ msgstr "Konfiguracija"
#. module: hr
#: field:hr.config.settings,module_hr_expense:0
msgid "Manage employees expenses"
msgstr ""
msgstr "Upravljaj troškovima radnika"
#. module: hr
#: help:hr.job,expected_employees:0
msgid ""
"Expected number of employees for this job position after new recruitment."
msgstr ""
"Očekivani broj radnika za ovo radno mjesto nakon novog procesa zapošljavanja."
#. module: hr
#: view:hr.employee:0

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-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-10-25 16:29+0000\n"
"Last-Translator: fenshuajiang <openerp@126.com>\n"
"PO-Revision-Date: 2012-11-27 04:57+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:13+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: hr
#: model:process.node,name:hr.process_node_openerpuser0
@ -24,7 +24,7 @@ msgstr "系统用户"
#. module: hr
#: field:hr.config.settings,module_hr_timesheet_sheet:0
msgid "Allow timesheets validation by managers"
msgstr ""
msgstr "允许管理人员核准工时单"
#. module: hr
#: field:hr.job,requirements:0
@ -58,12 +58,12 @@ msgid ""
"Medium-sized photo of the employee. It is automatically resized as a "
"128x128px image, with aspect ratio preserved. Use this field in form views "
"or some kanban views."
msgstr ""
msgstr "员工的中等尺寸照片。保留纵横比例自动缩放为128x128px的图片。这个字段用在表单视图和某些看板视图。"
#. module: hr
#: view:hr.config.settings:0
msgid "Time Tracking"
msgstr ""
msgstr "考勤跟踪"
#. module: hr
#: view:hr.employee:0
@ -84,7 +84,7 @@ msgstr "这个工作岗位上现有的员工人数"
#. module: hr
#: field:hr.config.settings,module_hr_evaluation:0
msgid "Organize employees periodic evaluation"
msgstr ""
msgstr "组织员工定期评估"
#. module: hr
#: view:hr.department:0
@ -105,12 +105,12 @@ msgstr "工作Email"
msgid ""
"This field holds the image used as photo for the employee, limited to "
"1024x1024px."
msgstr ""
msgstr "这个字段保存员工的照片,限制为 1024x1024px"
#. module: hr
#: help:hr.config.settings,module_hr_holidays:0
msgid "This installs the module hr_holidays."
msgstr ""
msgstr "为此要安装模块 hr_holidays."
#. module: hr
#: view:hr.job:0
@ -125,7 +125,7 @@ msgstr "正在招聘"
#. module: hr
#: field:hr.job,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "未读信息"
#. module: hr
#: field:hr.department,company_id:0
@ -143,32 +143,32 @@ msgstr "招聘人数"
#. module: hr
#: field:res.users,employee_ids:0
msgid "Related employees"
msgstr ""
msgstr "相关的员工"
#. module: hr
#: constraint:hr.employee.category:0
msgid "Error! You cannot create recursive Categories."
msgstr ""
msgstr "错误!你不能创建递归的分类。"
#. module: hr
#: help:hr.config.settings,module_hr_recruitment:0
msgid "This installs the module hr_recruitment."
msgstr ""
msgstr "为此要安装模块hr_recruitment."
#. module: hr
#: view:hr.employee:0
msgid "Birth"
msgstr ""
msgstr "生日"
#. module: hr
#: field:hr.employee,last_login:0
msgid "Latest Connection"
msgstr ""
msgstr "最近连接时间"
#. module: hr
#: view:hr.job:0
msgid "Launch Recruitement"
msgstr ""
msgstr "开始招聘"
#. module: hr
#: model:process.transition,name:hr.process_transition_employeeuser0
@ -193,22 +193,22 @@ msgstr "已婚"
#. module: hr
#: field:hr.job,message_ids:0
msgid "Messages"
msgstr ""
msgstr "消息"
#. module: hr
#: view:hr.config.settings:0
msgid "Talent Management"
msgstr ""
msgstr "人才管理"
#. module: hr
#: help:hr.config.settings,module_hr_timesheet_sheet:0
msgid "This installs the module hr_timesheet_sheet."
msgstr ""
msgstr "为此要安装模块hr_timesheet_sheet."
#. module: hr
#: view:hr.employee:0
msgid "Mobile:"
msgstr ""
msgstr "手机:"
#. module: hr
#: view:hr.employee:0
@ -218,7 +218,7 @@ msgstr "职位"
#. module: hr
#: help:hr.job,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
msgstr "如果要求你关注新消息,勾选此项"
#. module: hr
#: field:hr.employee,color:0
@ -235,7 +235,7 @@ msgstr "系统用户的员工字段(包括他的权限)。"
#. module: hr
#: field:hr.employee,image_medium:0
msgid "Medium-sized photo"
msgstr ""
msgstr "中等尺寸图片"
#. module: hr
#: field:hr.employee,identification_id:0
@ -251,7 +251,7 @@ msgstr "女性"
#: model:ir.actions.act_window,name:hr.open_view_categ_form
#: model:ir.ui.menu,name:hr.menu_view_employee_category_form
msgid "Categories of Employees"
msgstr ""
msgstr "员工分类"
#. module: hr
#: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_new_config
@ -282,7 +282,7 @@ msgstr "办公地点"
#. module: hr
#: field:hr.job,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "关注者"
#. module: hr
#: view:hr.employee:0
@ -302,7 +302,7 @@ msgid ""
"Small-sized photo of the employee. It is automatically resized as a 64x64px "
"image, with aspect ratio preserved. Use this field anywhere a small image is "
"required."
msgstr ""
msgstr "小尺寸的员工照片。保留纵横比自动缩放为64x64px。用在任何需要小图片的场合"
#. module: hr
#: field:hr.employee,birthday:0
@ -317,21 +317,21 @@ msgstr "您计划招聘的新员工数。"
#. module: hr
#: model:ir.actions.client,name:hr.action_client_hr_menu
msgid "Open HR Menu"
msgstr ""
msgstr "打开 人力资源 菜单"
#. module: hr
#: help:hr.job,message_summary:0
msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
msgstr "保留复杂的摘要(消息数量,……等)。为了插入到看板视图这一摘要直接是是HTML格式。"
#. module: hr
#: help:hr.config.settings,module_account_analytic_analysis:0
msgid ""
"This installs the module account_analytic_analysis, which will install sales "
"management too."
msgstr ""
msgstr "为此要安装模块 account_analytic_analysis, 也将安装销售管理"
#. module: hr
#: view:board.board:0
@ -348,7 +348,7 @@ msgstr "职务"
#. module: hr
#: field:hr.job,no_of_employee:0
msgid "Current Number of Employees"
msgstr ""
msgstr "当前员工数量"
#. module: hr
#: field:hr.department,member_ids:0
@ -363,7 +363,7 @@ msgstr "设置"
#. module: hr
#: field:hr.config.settings,module_hr_expense:0
msgid "Manage employees expenses"
msgstr ""
msgstr "管理员工的费用"
#. module: hr
#: help:hr.job,expected_employees:0
@ -374,7 +374,7 @@ msgstr "新的招聘后这个工作岗位上期望的员工人数"
#. module: hr
#: view:hr.employee:0
msgid "Tel:"
msgstr ""
msgstr "电话:"
#. module: hr
#: selection:hr.employee,marital:0
@ -389,7 +389,7 @@ msgstr "上级分类"
#. module: hr
#: sql_constraint:res.users:0
msgid "OAuth UID must be unique per provider"
msgstr ""
msgstr "OAuth UID必须是每个提供者唯一的"
#. module: hr
#: view:hr.department:0
@ -425,6 +425,15 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" 单击定义个一个新的工作岗位.\n"
" </p><p>\n"
" 工作岗位用来定义工作和他们的要求。\n"
" 你能跟踪跟踪每个工作岗位员工数,并且根据你未来的计划跟进变化。\n"
" </p><p>\n"
" 你能附加一个调查表到工作岗位. 用在招聘流程中评估这个岗位的申请人.\n"
" </p>\n"
" "
#. module: hr
#: selection:hr.employee,gender:0
@ -437,26 +446,28 @@ msgid ""
"$('.oe_employee_picture').load(function() { if($(this).width() > "
"$(this).height()) { $(this).addClass('oe_employee_picture_wide') } });"
msgstr ""
"$('.oe_employee_picture').load(function() { if($(this).width() > "
"$(this).height()) { $(this).addClass('oe_employee_picture_wide') } });"
#. module: hr
#: help:hr.config.settings,module_hr_evaluation:0
msgid "This installs the module hr_evaluation."
msgstr ""
msgstr "为此要安装模块 hr_evaluation."
#. module: hr
#: constraint:hr.employee:0
msgid "Error! You cannot create recursive hierarchy of Employee(s)."
msgstr ""
msgstr "错误!,你不能创建递归的员工层次"
#. module: hr
#: help:hr.config.settings,module_hr_attendance:0
msgid "This installs the module hr_attendance."
msgstr ""
msgstr "为此要安装模块 hr_attendance."
#. module: hr
#: field:hr.employee,image_small:0
msgid "Smal-sized photo"
msgstr ""
msgstr "小尺寸照片"
#. module: hr
#: view:hr.employee.category:0
@ -467,12 +478,12 @@ msgstr "员工分类"
#. module: hr
#: field:hr.employee,category_ids:0
msgid "Tags"
msgstr ""
msgstr "标签"
#. module: hr
#: help:hr.config.settings,module_hr_contract:0
msgid "This installs the module hr_contract."
msgstr ""
msgstr "为此要安装模块hr_contract."
#. module: hr
#: view:hr.employee:0
@ -482,7 +493,7 @@ msgstr "相关用户"
#. module: hr
#: view:hr.config.settings:0
msgid "or"
msgstr ""
msgstr "or"
#. module: hr
#: field:hr.employee.category,name:0
@ -492,12 +503,12 @@ msgstr "分类"
#. module: hr
#: view:hr.job:0
msgid "Stop Recruitment"
msgstr ""
msgstr "停止招聘"
#. module: hr
#: field:hr.config.settings,module_hr_attendance:0
msgid "Install attendances feature"
msgstr ""
msgstr "安装 出勤率特性"
#. module: hr
#: help:hr.employee,bank_account_id:0
@ -527,7 +538,7 @@ msgstr "联系信息"
#. module: hr
#: field:hr.config.settings,module_hr_holidays:0
msgid "Manage holidays, leaves and allocation requests"
msgstr ""
msgstr "管理假期、请假和分配请求"
#. module: hr
#: field:hr.department,child_ids:0
@ -554,12 +565,12 @@ msgstr "员工合约"
#. module: hr
#: view:hr.config.settings:0
msgid "Contracts"
msgstr ""
msgstr "合同列表"
#. module: hr
#: help:hr.job,message_ids:0
msgid "Messages and communication history"
msgstr ""
msgstr "消息和通信历史"
#. module: hr
#: field:hr.employee,ssnid:0
@ -569,12 +580,12 @@ msgstr "员工号"
#. module: hr
#: field:hr.job,message_is_follower:0
msgid "Is a Follower"
msgstr ""
msgstr "是一个关注者"
#. module: hr
#: field:hr.config.settings,module_hr_recruitment:0
msgid "Manage the recruitment process"
msgstr ""
msgstr "管理招聘流程"
#. module: hr
#: view:hr.employee:0
@ -584,12 +595,12 @@ msgstr "生效"
#. module: hr
#: view:hr.config.settings:0
msgid "Human Resources Management"
msgstr ""
msgstr "人力资源管理"
#. module: hr
#: view:hr.config.settings:0
msgid "Install your country's payroll"
msgstr ""
msgstr "安装你所在国家的工资表"
#. module: hr
#: field:hr.employee,bank_account_id:0
@ -604,7 +615,7 @@ msgstr "公司"
#. module: hr
#: field:hr.job,message_summary:0
msgid "Summary"
msgstr ""
msgstr "摘要"
#. module: hr
#: model:process.transition,note:hr.process_transition_contactofemployee0
@ -627,21 +638,29 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" 单击 添加新的员工.\n"
" </p><p>\n"
" 在OpenERP员工界面快速浏览一下你\n"
" 能很容易看到你需要的每人的信息:\n"
" 包括 联系人数据、工作岗位、可用性等等.\n"
" </p>\n"
" "
#. module: hr
#: view:hr.employee:0
msgid "HR Settings"
msgstr ""
msgstr "人力资源设置"
#. module: hr
#: view:hr.employee:0
msgid "Citizenship & Other Info"
msgstr ""
msgstr "国籍和其他信息"
#. module: hr
#: constraint:hr.department:0
msgid "Error! You cannot create recursive departments."
msgstr ""
msgstr "错误!你不能创建递归的部门"
#. module: hr
#: sql_constraint:res.users:0
@ -656,7 +675,7 @@ msgstr "工作地址"
#. module: hr
#: view:hr.employee:0
msgid "Public Information"
msgstr ""
msgstr "公开信息"
#. module: hr
#: field:hr.employee,marital:0
@ -681,7 +700,7 @@ msgstr "相片"
#. module: hr
#: view:hr.config.settings:0
msgid "Cancel"
msgstr ""
msgstr "取消"
#. module: hr
#: model:ir.actions.act_window,help:hr.open_module_tree_department
@ -700,13 +719,13 @@ msgstr ""
#. module: hr
#: help:hr.config.settings,module_hr_timesheet:0
msgid "This installs the module hr_timesheet."
msgstr ""
msgstr "为此要安装模块hr_timesheet."
#. module: hr
#: field:hr.job,message_comment_ids:0
#: help:hr.job,message_comment_ids:0
msgid "Comments and emails"
msgstr ""
msgstr "评论和电子邮件"
#. module: hr
#: model:ir.actions.act_window,help:hr.view_department_form_installer
@ -745,13 +764,13 @@ msgstr "办公手机"
#. module: hr
#: selection:hr.job,state:0
msgid "Recruitement in Progress"
msgstr ""
msgstr "招聘进行中"
#. module: hr
#: field:hr.config.settings,module_account_analytic_analysis:0
msgid ""
"Allow invoicing based on timesheets (the sale application will be installed)"
msgstr ""
msgstr "允许基于计工单开票(销售应用模块将被安装)"
#. module: hr
#: view:hr.employee.category:0
@ -771,7 +790,7 @@ msgstr "家庭地址"
#. module: hr
#: field:hr.config.settings,module_hr_timesheet:0
msgid "Manage timesheets"
msgstr ""
msgstr "管理计工单"
#. module: hr
#: model:ir.actions.act_window,name:hr.open_view_categ_tree
@ -802,12 +821,12 @@ msgstr "在职"
#. module: hr
#: help:hr.config.settings,module_hr_payroll:0
msgid "This installs the module hr_payroll."
msgstr ""
msgstr "为此要安装模块 hr_payroll."
#. module: hr
#: field:hr.config.settings,module_hr_contract:0
msgid "Record contracts per employee"
msgstr ""
msgstr "记录每个员工的联系人"
#. module: hr
#: view:hr.department:0
@ -822,7 +841,7 @@ msgstr "国籍"
#. module: hr
#: view:hr.config.settings:0
msgid "Additional Features"
msgstr ""
msgstr "附加特性"
#. module: hr
#: field:hr.employee,notes:0
@ -875,23 +894,23 @@ msgstr "部门名称"
#. module: hr
#: model:ir.ui.menu,name:hr.menu_hr_reporting_timesheet
msgid "Reports"
msgstr ""
msgstr "报表"
#. module: hr
#: field:hr.config.settings,module_hr_payroll:0
msgid "Manage payroll"
msgstr ""
msgstr "管理工资单"
#. module: hr
#: view:hr.config.settings:0
#: model:ir.actions.act_window,name:hr.action_human_resources_configuration
msgid "Configure Human Resources"
msgstr ""
msgstr "配置人力资源"
#. module: hr
#: selection:hr.job,state:0
msgid "No Recruitment"
msgstr ""
msgstr "没有招聘"
#. module: hr
#: help:hr.employee,ssnid:0
@ -911,7 +930,7 @@ msgstr "登录名"
#. module: hr
#: field:hr.job,expected_employees:0
msgid "Total Forecasted Employees"
msgstr ""
msgstr "预计员工数合计"
#. module: hr
#: help:hr.job,state:0
@ -923,7 +942,7 @@ msgstr ""
#. module: hr
#: model:ir.model,name:hr.model_res_users
msgid "Users"
msgstr ""
msgstr "用户"
#. module: hr
#: model:ir.actions.act_window,name:hr.action_hr_job
@ -964,12 +983,12 @@ msgstr "每个公司里的任一职位名称都必须唯一"
#. module: hr
#: help:hr.config.settings,module_hr_expense:0
msgid "This installs the module hr_expense."
msgstr ""
msgstr "为此要安装模块hr_expense."
#. module: hr
#: model:ir.model,name:hr.model_hr_config_settings
msgid "hr.config.settings"
msgstr ""
msgstr "hr.config.settings"
#. module: hr
#: field:hr.department,manager_id:0
@ -981,7 +1000,7 @@ msgstr "经理"
#. module: hr
#: constraint:res.users:0
msgid "Error: Invalid ean code"
msgstr ""
msgstr "错误:无效的(EAN)条码"
#. module: hr
#: selection:hr.employee,marital:0
@ -996,7 +1015,7 @@ msgstr "下属"
#. module: hr
#: view:hr.config.settings:0
msgid "Apply"
msgstr ""
msgstr "接受"
#~ msgid "Group name"
#~ msgstr "组名"

View File

@ -38,7 +38,7 @@
}
.oe_employee_details {
width: 220px;
width: 210px;
font-size: 13px;
padding: 2px 5px;
color: #4c4c4c;

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-11-24 02:53+0000\n"
"PO-Revision-Date: 2012-01-23 10:05+0000\n"
"Last-Translator: Wei \"oldrev\" Li <oldrev@gmail.com>\n"
"PO-Revision-Date: 2012-11-27 03:09+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:10+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: hr_contract
#: field:hr.contract,wage:0
@ -102,7 +102,7 @@ msgstr "合同类型"
#. module: hr_contract
#: view:hr.employee:0
msgid "Medical Exam"
msgstr ""
msgstr "体检"
#. module: hr_contract
#: field:hr.contract,date_end:0
@ -162,7 +162,7 @@ msgstr "工作安排"
#. module: hr_contract
#: view:hr.contract:0
msgid "Salary and Advantages"
msgstr ""
msgstr "工资和机会"
#. module: hr_contract
#: field:hr.contract,job_id:0
@ -172,7 +172,7 @@ msgstr "职务名称"
#. module: hr_contract
#: constraint:hr.contract:0
msgid "Error! Contract start-date must be less than contract end-date."
msgstr ""
msgstr "错误!联系人开始日期必须小于结束日期"
#. module: hr_contract
#: field:hr.employee,manager:0
@ -197,7 +197,7 @@ msgstr "签证号"
#. module: hr_contract
#: field:hr.employee,vehicle_distance:0
msgid "Home-Work Dist."
msgstr ""
msgstr "家里和工作场所的距离"
#. module: hr_contract
#: field:hr.employee,place_of_birth:0
@ -207,7 +207,7 @@ msgstr "出生地"
#. module: hr_contract
#: view:hr.contract:0
msgid "Trial Period Duration"
msgstr ""
msgstr "试用期"
#. module: hr_contract
#: view:hr.contract:0
@ -227,7 +227,7 @@ msgstr "体检日期"
#. module: hr_contract
#: constraint:hr.employee:0
msgid "Error! You cannot create recursive hierarchy of Employee(s)."
msgstr ""
msgstr "错误!,你不能创建递归的员工层次"
#. module: hr_contract
#: view:hr.contract.type:0

View File

@ -305,11 +305,9 @@
'default_subject': 'Reminder to fill up Survey' }"/>
</div>
<group>
<group col="3" colspan="1">
<group>
<field name="survey_id"/>
<button name="action_print_survey" string="Print Survey" type="object" states="draft" icon="gtk-print" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0}" attrs="{'readonly':[('survey_id','=',False)]}" class="oe_highlight"/>
<field name="user_to_review_id"/>
<label string=""/>
<field name="user_id" string="Interviewer"/>
</group>
<group>

View File

@ -85,7 +85,7 @@
</group>
<notebook>
<page string="Description">
<field name="line_ids" context="{'currency_id': currency_id}">
<field name="line_ids" context="{'currency_id': currency_id, 'default_analytic_account': context.get('analytic_account')}">
<form string="Expense Lines" version="7.0">
<group>
<group>
@ -211,7 +211,7 @@
<field name="search_view_id" ref="product.product_search_form_view"/>
</record>
<menuitem id="menu_hr_product" name="Type of Expenses" parent="hr.menu_hr_configuration" action="hr_expense_product"/>
<menuitem id="menu_hr_product" name="Types of Expenses" parent="hr.menu_hr_configuration" action="hr_expense_product"/>
<menuitem id="next_id_49" name="Expenses" sequence="15" parent="hr.menu_hr_root"/>
<menuitem action="expense_all" id="menu_expense_all" name="Expenses" parent="next_id_49"/>

View File

@ -79,7 +79,7 @@ class hr_holidays_status(osv.osv):
'categ_id': fields.many2one('crm.meeting.type', 'Meeting Type',
help='Once a leave is validated, OpenERP will create a corresponding meeting of this type in the calendar.'),
'color_name': fields.selection([('red', 'Red'),('blue','Blue'), ('lightgreen', 'Light Green'), ('lightblue','Light Blue'), ('lightyellow', 'Light Yellow'), ('magenta', 'Magenta'),('lightcyan', 'Light Cyan'),('black', 'Black'),('lightpink', 'Light Pink'),('brown', 'Brown'),('violet', 'Violet'),('lightcoral', 'Light Coral'),('lightsalmon', 'Light Salmon'),('lavender', 'Lavender'),('wheat', 'Wheat'),('ivory', 'Ivory')],'Color in Report', required=True, help='This color will be used in the leaves summary located in Reporting\Leaves by Department.'),
'limit': fields.boolean('Allow to Override Limit', help='If you select this checkbox, the system allows the employees to take more leaves than the available ones for this type.'),
'limit': fields.boolean('Allow to Override Limit', help='If you select this check box, the system allows the employees to take more leaves than the available ones for this type and take them into account for the "Remaining Legal Leaves" defined on the employee form.'),
'active': fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the leave type without removing it."),
'max_leaves': fields.function(_user_left_days, string='Maximum Allowed', help='This value is given by the sum of all holidays requests with a positive value.', multi='user_left_days'),
'leaves_taken': fields.function(_user_left_days, string='Leaves Already Taken', help='This value is given by the sum of all holidays requests with a negative value.', multi='user_left_days'),
@ -143,18 +143,18 @@ class hr_holidays(osv.osv):
'date_from': fields.datetime('Start Date', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, select=True),
'date_to': fields.datetime('End Date', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'holiday_status_id': fields.many2one("hr.holidays.status", "Leave Type", required=True,readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'employee_id': fields.many2one('hr.employee', "Employee", select=True, invisible=False, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, help='Leave Manager can let this field empty if this leave request/allocation is for every employee'),
'employee_id': fields.many2one('hr.employee', "Employee", select=True, invisible=False, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'manager_id': fields.many2one('hr.employee', 'First Approval', invisible=False, readonly=True, help='This area is automatically filled by the user who validate the leave'),
'notes': fields.text('Reasons',readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'number_of_days_temp': fields.float('Number of Days', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'number_of_days_temp': fields.float('Allocation', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'number_of_days': fields.function(_compute_number_of_days, string='Number of Days', store=True),
'meeting_id': fields.many2one('crm.meeting', 'Meeting'),
'type': fields.selection([('remove','Leave Request'),('add','Allocation Request')], 'Request Type', required=True, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, help="Choose 'Leave Request' if someone wants to take an off-day. \nChoose 'Allocation Request' if you want to increase the number of leaves available for someone", select=True),
'parent_id': fields.many2one('hr.holidays', 'Parent'),
'linked_request_ids': fields.one2many('hr.holidays', 'parent_id', 'Linked Requests',),
'department_id':fields.related('employee_id', 'department_id', string='Department', type='many2one', relation='hr.department', readonly=True, store=True),
'category_id': fields.many2one('hr.employee.category', "Category", help='Category of Employee', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'holiday_type': fields.selection([('employee','By Employee'),('category','By Employee Category')], 'Allocation Mode', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, help='By Employee: Allocation/Request for individual Employee, By Employee Category: Allocation/Request for group of employees in category', required=True),
'category_id': fields.many2one('hr.employee.category', "Employee Tag", help='Category of Employee', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'holiday_type': fields.selection([('employee','By Employee'),('category','By Employee Tag')], 'Allocation Mode', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, help='By Employee: Allocation/Request for individual Employee, By Employee Tag: Allocation/Request for group of employees in category', required=True),
'manager_id2': fields.many2one('hr.employee', 'Second Approval', readonly=True, help='This area is automaticly filled by the user who validate the leave with second level (If Leave type need second validation)'),
'double_validation': fields.related('holiday_status_id', 'double_validation', type='boolean', relation='hr.holidays.status', string='Apply Double Validation'),
}
@ -541,7 +541,7 @@ class hr_employee(osv.osv):
return result
_columns = {
'remaining_leaves': fields.function(_get_remaining_days, string='Remaining Legal Leaves', fnct_inv=_set_remaining_days, type="float", help='Total number of legal leaves allocated to this employee, change this value to create allocation/leave requests.'),
'remaining_leaves': fields.function(_get_remaining_days, string='Remaining Legal Leaves', fnct_inv=_set_remaining_days, type="float", help='Total number of legal leaves allocated to this employee, change this value to create allocation/leave request. Total based on all the leave types without overriding limit.'),
'current_leave_state': fields.function(_get_leave_status, multi="leave_status", string="Current Leave Status", type="selection",
selection=[('draft', 'New'), ('confirm', 'Waiting Approval'), ('refuse', 'Refused'),
('validate1', 'Waiting Second Approval'), ('validate', 'Approved'), ('cancel', 'Cancelled')]),

View File

@ -146,7 +146,10 @@
<group>
<field name="name" required="1" attrs="{'readonly':[('state','!=','draft'),('state','!=','confirm')]}"/>
<field name="holiday_status_id" context="{'employee_id':employee_id}"/>
<field name="number_of_days_temp"/>
<label for="number_of_days_temp"/>
<div>
<field name="number_of_days_temp" class="oe_inline"/> days
</div>
</group>
<group>
<field name="holiday_type" on_change="onchange_type(holiday_type)"/>
@ -176,7 +179,7 @@
<field name="department_id" invisible="1"/>
<field name="holiday_status_id"/>
<field name="name"/>
<field name="number_of_days" string="Number of Days" sum="Remaining Days"/>
<field name="number_of_days" string="Allocated Days" sum="Remaining Days"/>
<field name="manager_id" invisible="1"/>
<field name="user_id" invisible="1"/>
<!--field name="type"/-->
@ -257,12 +260,12 @@
<menuitem name="Leaves" parent="hr.menu_hr_root" id="menu_open_ask_holidays" sequence="20"/>
<record model="ir.actions.act_window" id="open_ask_holidays">
<field name="name">My Leave Requests</field>
<field name="name">Leave Requests</field>
<field name="res_model">hr.holidays</field>
<field name="view_type">form</field>
<field name="view_id" ref="edit_holiday_new"/>
<field name="context">{}</field>
<field name="domain">[('type','=','remove'),('employee_id.user_id','=', uid)]</field>
<field name="context">{'default_type': 'remove', 'search_default_my_leaves':1}</field>
<field name="domain">[('type','=','remove')]</field>
<field name="search_view_id" ref="view_hr_holidays_filter"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
@ -297,10 +300,10 @@
<field name="act_window_id" ref="open_ask_holidays"/>
</record>
<menuitem name="My Leave Requests" parent="menu_open_ask_holidays" id="menu_open_ask_holidays_new" action="open_ask_holidays"/>
<menuitem parent="menu_open_ask_holidays" id="menu_open_ask_holidays_new" action="open_ask_holidays"/>
<record model="ir.actions.act_window" id="request_approve_holidays">
<field name="name">Requests Approve</field>
<field name="name">Requests to Approve</field>
<field name="res_model">hr.holidays</field>
<field name="view_type">form</field>
<field name="context">{'default_type': 'remove', 'search_default_approve':1}</field>
@ -326,11 +329,11 @@
<menuitem name="Leave Requests to Approve" parent="menu_open_ask_holidays" id="menu_request_approve_holidays" action="request_approve_holidays" groups="base.group_hr_user"/>
<record model="ir.actions.act_window" id="open_allocation_holidays">
<field name="name">My Allocation Requests</field>
<field name="name">Allocation Requests</field>
<field name="res_model">hr.holidays</field>
<field name="view_type">form</field>
<field name="context">{'default_type':'add'}</field>
<field name="domain">[('type','=','add'),('employee_id.user_id','=', uid)]</field>
<field name="context">{'default_type':'add', 'search_default_my_leaves':1}</field>
<field name="domain">[('type','=','add')]</field>
<field name="view_id" ref="allocation_leave_new"/>
<field name="search_view_id" ref="view_hr_holidays_filter"/>
</record>
@ -349,7 +352,7 @@
<field name="act_window_id" ref="open_allocation_holidays"/>
</record>
<menuitem name="My Allocation Requests" parent="menu_open_ask_holidays" id="menu_open_allocation_holidays" action="open_allocation_holidays"/>
<menuitem parent="menu_open_ask_holidays" id="menu_open_allocation_holidays" action="open_allocation_holidays"/>
<record model="ir.actions.act_window" id="request_approve_allocation">
<field name="name">Allocation Requests to Approve</field>
@ -476,7 +479,7 @@
</record>
<menuitem sequence="3" id="hr.menu_open_view_attendance_reason_config" parent="hr.menu_hr_configuration" name="Leaves"/>
<menuitem name="Leave Type" action="open_view_holiday_status" id="menu_open_view_holiday_status" parent="hr.menu_hr_configuration" sequence="10"/>
<menuitem name="Leaves Types" action="open_view_holiday_status" id="menu_open_view_holiday_status" parent="hr.menu_hr_configuration" sequence="10"/>
<!-- Holiday on resource leave -->
<record id="resource_calendar_leave_form_inherit" model="ir.ui.view">
@ -541,7 +544,7 @@
<group string="Leaves">
<label for="remaining_leaves"/>
<div>
<field name="remaining_leaves" class="oe_inline"/>
<field name="remaining_leaves" class="oe_inline"/> days
</div>
</group>
</xpath>

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-11-24 02:53+0000\n"
"PO-Revision-Date: 2012-02-15 05:24+0000\n"
"Last-Translator: 开阖软件 Jeff Wang <jeff@osbzr.com>\n"
"PO-Revision-Date: 2012-11-27 03:05+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:24+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: hr_payroll_account
#: field:hr.salary.rule,account_credit:0
@ -103,7 +103,7 @@ msgstr "设置错误!"
#. module: hr_payroll_account
#: constraint:hr.contract:0
msgid "Error! Contract start-date must be less than contract end-date."
msgstr ""
msgstr "错误!联系人开始日期必须小于结束日期"
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_salary_rule

View File

@ -195,7 +195,7 @@ class account_analytic_account(osv.osv):
_inherit = 'account.analytic.account'
_description = 'Analytic Account'
_columns = {
'use_timesheets': fields.boolean('Use Timesheets', help="Check this field if this project manages timesheets"),
'use_timesheets': fields.boolean('Timesheets', help="Check this field if this project manages timesheets"),
}
def on_change_template(self, cr, uid, ids, template_id, context=None):

View File

@ -127,31 +127,6 @@
</field>
</record>
<!-- Menus -->
<record id="action_hr_analytic_timesheet_open_tree" model="ir.actions.act_window">
<field name="name">Invoice Tasks Work</field>
<field name="res_model">account.analytic.line</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[]</field>
<field name="context">{'search_default_to_invoice': 1}</field>
<field name="search_view_id" ref="account.view_account_analytic_line_filter"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add some tasks work to be invoiced.
</p><p>
This list shows every task you can invoice to the customer.
Select the lines and invoice from the '<i>more...</i>' contextual
menu to generate invoices automatically.
</p>
</field>
</record>
<menuitem
action="action_hr_analytic_timesheet_open_tree"
id="menu_hr_analytic_timesheet_tree"
parent="account.menu_finance_periodical_processing_billing"
sequence="1"/>
<record id="view_hr_timesheet_invoice_factor_search" model="ir.ui.view">
<field name="name">hr_timesheet_invoice.factor.search</field>
<field name="model">hr_timesheet_invoice.factor</field>

View File

@ -62,16 +62,12 @@ class account_analytic_line(osv.osv):
if data is None:
data = {}
account_ids = {}
for line in self.pool.get('account.analytic.line').browse(cr, uid, ids, context=context):
account_ids[line.account_id.id] = True
account_ids = account_ids.keys() #data['accounts']
account_ids = [line.account_id.id for line in self.pool.get('account.analytic.line').browse(cr, uid, ids, context=context)]
for account in analytic_account_obj.browse(cr, uid, account_ids, context=context):
partner = account.partner_id
if (not partner) or not (account.pricelist_id):
raise osv.except_osv(_('Analytic Account incomplete !'),
_('Please fill in the Partner or Customer and Sale Pricelist fields in the Analytic Account:\n%s.') % (account.name,))
_('Contract incomplete. Please fill in the Customer and Pricelist fields.'))
@ -106,18 +102,18 @@ class account_analytic_line(osv.osv):
last_invoice = invoice_obj.create(cr, uid, curr_invoice, context=context2)
invoices.append(last_invoice)
cr.execute("SELECT product_id, user_id, to_invoice, sum(unit_amount), product_uom_id, name " \
cr.execute("SELECT product_id, user_id, to_invoice, sum(unit_amount), product_uom_id " \
"FROM account_analytic_line as line " \
"WHERE account_id = %s " \
"AND id IN %s AND to_invoice IS NOT NULL " \
"GROUP BY product_id, user_id, to_invoice, product_uom_id, name", (account.id, tuple(ids),))
"GROUP BY product_id, user_id, to_invoice, product_uom_id", (account.id, tuple(ids),))
for product_id, user_id, factor_id, qty, uom, line_name in cr.fetchall():
for product_id, user_id, factor_id, qty, uom in cr.fetchall():
if data.get('product'):
product_id = data['product'][0]
product = product_obj.browse(cr, uid, product_id, context=context2)
if not product:
raise osv.except_osv(_('Error!'), _('There is no product defined for the line %s. Please select one or force the product through the wizard.') % (line_name))
raise osv.except_osv(_('Error!'), _('There is no product defined. Please select one or force the product through the wizard.'))
factor = invoice_factor_obj.browse(cr, uid, factor_id, context=context2)
factor_name = product_obj.name_get(cr, uid, [product_id], context=context2)[0][1]
if factor.customer_name:

View File

@ -14,6 +14,7 @@ openerp.hr_timesheet_sheet = function(instance) {
date_to: false,
date_from: false,
});
this.updating = true;
this.field_manager.on("field_changed:timesheet_ids", this, this.query_sheets);
this.field_manager.on("field_changed:date_from", this, function() {
this.set({"date_from": instance.web.str_to_date(this.field_manager.get_field_value("date_from"))});

View File

@ -54,16 +54,10 @@
<div t-if="widget.accounts.length == 0">
<div class="oe_view_nocontent">
<p class="oe_view_nocontent_create">
Click to add projects/analytic accounts you worked on.
Click to add projects, contracts or analytic accounts.
</p><p>
You will be able to register your working hours and
activities.
</p><p>
By default, you record timesheets on analytic accounts.
But if an analytic account represents a customer
contract, you can change the type of the analytic
account to 'Contract or Project' to setup the invoicing
options.
</p>
</div>
</div>

View File

@ -68,20 +68,20 @@ class idea_idea(osv.osv):
def idea_cancel(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, { 'state': 'cancel' })
self.message_post(cr, uid, ids, body=_('Idea canceled.'), context=context)
self.message_post(cr, uid, ids, body=_('Idea has been refused.'), context=context)
return True
def idea_open(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state': 'open'}, context=context)
self.message_post(cr, uid, ids, body=_('Idea accepted.'), context=context)
self.message_post(cr, uid, ids, body=_('Idea has been opened.'), context=context)
return True
def idea_close(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state': 'close'}, context=context)
self.message_post(cr, uid, ids, body=_('Idea closed.'), context=context)
self.message_post(cr, uid, ids, body=_('Idea has been accepted.'), context=context)
return True
def idea_draft(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state': 'draft'}, context=context)
self.message_post(cr, uid, ids, body=_('Idea reset to draft.'), context=context)
self.message_post(cr, uid, ids, body=_('Idea has been created.'), context=context)
return True

View File

@ -8,52 +8,52 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:53+0000\n"
"PO-Revision-Date: 2011-01-13 19:01+0000\n"
"Last-Translator: Wei \"oldrev\" Li <oldrev@gmail.com>\n"
"PO-Revision-Date: 2012-11-26 13:46+0000\n"
"Last-Translator: hifly <Unknown>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:25+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: knowledge
#: view:knowledge.config.settings:0
msgid "Documents"
msgstr ""
msgstr "文档"
#. module: knowledge
#: model:ir.model,name:knowledge.model_knowledge_config_settings
msgid "knowledge.config.settings"
msgstr ""
msgstr "knowledge.config.settings"
#. module: knowledge
#: help:knowledge.config.settings,module_document_webdav:0
msgid ""
"Access your documents in OpenERP through WebDAV.\n"
" This installs the module document_webdav."
msgstr ""
msgstr "在OpenERP中通过WebDAV访问你的文档。"
#. module: knowledge
#: help:knowledge.config.settings,module_document_page:0
msgid "This installs the module document_page."
msgstr ""
msgstr "安装模块document_page."
#. module: knowledge
#: model:ir.ui.menu,name:knowledge.menu_document2
msgid "Collaborative Content"
msgstr "协作编辑"
msgstr "协作内容"
#. module: knowledge
#: model:ir.actions.act_window,name:knowledge.action_knowledge_configuration
#: view:knowledge.config.settings:0
msgid "Configure Knowledge"
msgstr ""
msgstr "配置知识库"
#. module: knowledge
#: view:knowledge.config.settings:0
msgid "Knowledge and Documents Management"
msgstr ""
msgstr "知识和文档管理"
#. module: knowledge
#: help:knowledge.config.settings,module_document:0
@ -63,16 +63,19 @@ msgid ""
"and a document dashboard.\n"
" This installs the module document."
msgstr ""
"这是一个完整的文档管理系统,\n"
"包含用户认证全文搜索目前不支持pptx和docx和一个文档控制台。\n"
"需要安装document模块。"
#. module: knowledge
#: field:knowledge.config.settings,module_document_page:0
msgid "Create static web pages"
msgstr ""
msgstr "创建静态页面"
#. module: knowledge
#: field:knowledge.config.settings,module_document_ftp:0
msgid "Share repositories (FTP)"
msgstr ""
msgstr "共享库(FTP)"
#. module: knowledge
#: field:knowledge.config.settings,module_document:0

View File

@ -215,7 +215,7 @@
<field name="name">account.coda.tree</field>
<field name="model">account.coda</field>
<field name="arch" type="xml">
<tree string="CODA Files">
<tree string="CODA Files" create="false">
<field name="coda_creation_date"/>
<field name="name"/>
<field name="date"/>
@ -229,7 +229,7 @@
<field name="name">account.coda.form</field>
<field name="model">account.coda</field>
<field name="arch" type="xml">
<form string="CODA File" version="7.0">
<form string="CODA File" version="7.0" create="false">
<sheet>
<group col="4">
<field name="coda_creation_date"/>
@ -282,7 +282,7 @@
<field name="name">coda.bank.statement.list</field>
<field name="model">coda.bank.statement</field>
<field name="arch" type="xml">
<tree colors="red:balance_end_real!=balance_end;blue:state=='draft' and (balance_end_real==balance_end)" string="CODA Bank Statements">
<tree colors="red:balance_end_real!=balance_end;blue:state=='draft' and (balance_end_real==balance_end)" string="CODA Bank Statements" create="false">
<field name="name"/>
<field name="date"/>
<field name="period_id"/>
@ -299,7 +299,7 @@
<field name="name">coda.bank.statement.form</field>
<field name="model">coda.bank.statement</field>
<field name="arch" type="xml">
<form string="CODA Bank Statement" version="7.0">
<form string="CODA Bank Statement" version="7.0" create="false">
<sheet>
<group col="4">
<field name="name"/>
@ -396,7 +396,7 @@
<field name="name">coda.bank.statement.line.list</field>
<field name="model">coda.bank.statement.line</field>
<field name="arch" type="xml">
<tree editable="bottom" string="CODA Statement Lines">
<tree string="CODA Statement Lines" create="false">
<field name="sequence" readonly="1" invisible="1"/>
<field name="coda_bank_account_id" readonly="1"/>
<field name="date" readonly="1"/>
@ -418,7 +418,7 @@
<field name="name">coda.bank.statement.line.form</field>
<field name="model">coda.bank.statement.line</field>
<field name="arch" type="xml">
<form string="CODA Statement Line" version="7.0">
<form string="CODA Statement Line" version="7.0" create="false">
<group col="4">
<field name="statement_id"/>
<field name="coda_bank_account_id"/>

View File

@ -7,7 +7,7 @@
<field name="inherit_id" ref="account.invoice_supplier_form"/>
<field name="arch" type="xml">
<field name="partner_id" position="replace">
<field name="partner_id"
<field string="Supplier" name="partner_id"
on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank_id)"
/>
</field>
@ -21,7 +21,7 @@
<field name="priority" eval="18"/>
<field name="arch" type="xml">
<field name="partner_bank_id" position="replace">
<field name="partner_bank_id"
<field string="Supplier" name="partner_bank_id"
domain="[('partner_id', '=', partner_id)]"
on_change="onchange_partner_bank(partner_bank_id)"/>
</field>
@ -33,7 +33,7 @@
<field name="inherit_id" ref="account.invoice_form"/>
<field name="arch" type="xml">
<field name="partner_bank_id" position="replace">
<field name="partner_bank_id"
<field string="Supplier" name="partner_bank_id"
domain="[('partner_id.ref_companies', 'in', [company_id])]"/>
</field>
</field>

View File

@ -67,7 +67,7 @@ class account_invoice(osv.osv):
_columns = {
### BVR reference type BVR or FREE
'reference_type': fields.selection(_get_reference_type,
'Reference Type', required=True),
'Payment Reference', required=True),
### Partner bank link between bank and partner id
'partner_bank_id': fields.many2one('res.partner.bank', 'Bank Account',
help='The partner bank account to pay\nKeep empty to use the default'

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-11-24 02:53+0000\n"
"PO-Revision-Date: 2012-05-10 18:07+0000\n"
"Last-Translator: 开阖软件 Jeff Wang <jeff@osbzr.com>\n"
"PO-Revision-Date: 2012-11-26 13:13+0000\n"
"Last-Translator: youring <youring@gmail.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:29+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: lunch
#: field:lunch.product,category_id:0
@ -26,17 +26,17 @@ msgstr "分类"
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_order_by_supplier_form
msgid "Today's Orders by Supplier"
msgstr ""
msgstr "今天的餐单(按供餐单位分类)"
#. module: lunch
#: view:lunch.order:0
msgid "My Orders"
msgstr ""
msgstr "我的订餐单"
#. module: lunch
#: selection:lunch.order,state:0
msgid "Partially Confirmed"
msgstr ""
msgstr "部分已确认"
#. module: lunch
#: view:lunch.cashmove:0
@ -47,13 +47,13 @@ msgstr "分组..."
#. module: lunch
#: field:lunch.alert,sunday:0
msgid "Sunday"
msgstr ""
msgstr "周日"
#. module: lunch
#: field:lunch.order.line,supplier:0
#: field:lunch.product,supplier:0
msgid "Supplier"
msgstr ""
msgstr "供餐单位"
#. module: lunch
#: view:lunch.order.line:0
@ -73,7 +73,7 @@ msgstr ""
#. module: lunch
#: field:lunch.alert,friday:0
msgid "Friday"
msgstr ""
msgstr "周五"
#. module: lunch
#: view:lunch.validation:0
@ -95,12 +95,12 @@ msgstr "日"
#: view:lunch.order.line:0
#: selection:lunch.order.line,state:0
msgid "Received"
msgstr ""
msgstr "已接收"
#. module: lunch
#: view:lunch.order.line:0
msgid "By Supplier"
msgstr ""
msgstr "按供餐单位"
#. module: lunch
#: model:ir.actions.act_window,help:lunch.action_lunch_order_tree
@ -121,13 +121,13 @@ msgstr ""
#. module: lunch
#: view:lunch.order.line:0
msgid "Not Received"
msgstr ""
msgstr "未收到"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_order_by_supplier_form
#: model:ir.ui.menu,name:lunch.menu_lunch_control_suppliers
msgid "Orders by Supplier"
msgstr ""
msgstr "订餐单(按供餐单位分)"
#. module: lunch
#: view:lunch.validation:0
@ -167,14 +167,14 @@ msgstr "品种列表"
#. module: lunch
#: view:lunch.order.line:0
msgid "By Date"
msgstr ""
msgstr "按日期"
#. module: lunch
#: selection:lunch.order,state:0
#: view:lunch.order.line:0
#: selection:lunch.order.line,state:0
msgid "Cancelled"
msgstr ""
msgstr "已取消"
#. module: lunch
#: view:lunch.cashmove:0

View File

@ -389,7 +389,7 @@
<field name="name">cashmove tree</field>
<field name="model">lunch.cashmove</field>
<field name="arch" type="xml">
<tree string="cashmove tree">
<tree string="cashmove tree" create="false">
<field name="date"/>
<field name="user_id"/>
<field name="description"/>

View File

@ -21,7 +21,7 @@
<field name="interval_type">weeks</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall" />
<field eval="'ir.module.module'" name="model" />
<field eval="'publisher_warranty.contract'" name="model" />
<field eval="'update_notification'" name="function" />
<field eval="'(None,)'" name="args" />
<field name="priority">1000</field>

View File

@ -67,7 +67,7 @@
'read_action': 'read', }&quot;"/>
<field name="help" type="html">
<p>
<b>No todo!</b>
<b>No todo.</b>
</p><p>
When you process messages in your inbox, you can mark some
as <i>todo</i>. From this menu, you can process all your todo.
@ -80,8 +80,7 @@
<field name="tag">mail.wall</field>
<field name="context">{
'default_model': 'res.users',
'default_res_id': uid,
'search_default_message_read': True
'default_res_id': uid
}</field>
<field name="params" eval="&quot;{
'domain': ['|', ('notification_ids.partner_id.user_ids', 'in', [uid]), ('author_id.user_ids', 'in', [uid])],

View File

@ -1,5 +1,19 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record id="action_client_marketing_menu" model="ir.actions.client">
<field name="name">Open Marketing Menu</field>
<field name="tag">reload</field>
<field name="params" eval="{'menu_id': ref('base.marketing_menu')}"/>
</record>
<record id="base.open_menu" model="ir.actions.todo">
<field name="action_id" ref="action_client_marketing_menu"/>
<field name="state">open</field>
</record>
</data>
<data>
<menuitem name="Configuration" id="menu_marketing_configuration" parent="base.marketing_menu" sequence="1"/>

View File

@ -7,20 +7,20 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-05-24 17:38+0000\n"
"PO-Revision-Date: 2012-11-26 14:52+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-11-25 05:40+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:23+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: mrp
#: field:mrp.bom,product_uos:0
#: field:mrp.production.product.line,product_uos:0
msgid "Product UOS"
msgstr "UdV du produit"
msgstr "UdV de l'article"
#~ msgid "Product UoM"
#~ msgstr "UdM du produit"
@ -86,7 +86,7 @@ msgstr "Coût horaire"
#. module: mrp
#: view:mrp.production:0
msgid "Scrap Products"
msgstr "Rebuts"
msgstr "Mettre au rebut"
#. module: mrp
#: view:mrp.workcenter:0
@ -107,7 +107,7 @@ msgstr "Rechercher une nomenclature"
#. module: mrp
#: model:process.node,note:mrp.process_node_stockproduct1
msgid "For stockable products and consumables"
msgstr "Pour les produits stockables et les consommables"
msgstr "Pour les articles stockables et les consommables"
#. module: mrp
#: help:mrp.bom,message_unread:0
@ -197,13 +197,13 @@ msgid ""
"In case the Supply method of the product is Produce, the system creates a "
"production order."
msgstr ""
"Dans le cas où la méthode de fourniture de ce produit est \"Produire\", le "
"Dans le cas où la méthode de fourniture de cet article est \"Produire\", le "
"système crée un ordre de fabrication."
#. module: mrp
#: field:change.production.qty,product_qty:0
msgid "Product Qty"
msgstr "Qté de Produit"
msgstr "Qté d'articles"
#. module: mrp
#: view:mrp.production:0
@ -271,7 +271,7 @@ msgstr ""
#: view:mrp.production:0
#: field:mrp.production,move_created_ids2:0
msgid "Produced Products"
msgstr "Produits produis"
msgstr "Articles produits"
#. module: mrp
#: report:mrp.production.order:0
@ -342,7 +342,7 @@ msgstr "Erreur ! Vous ne pouvez pas créer de nomenclature récursive."
#. module: mrp
#: constraint:stock.move:0
msgid "You must assign a serial number for this product."
msgstr ""
msgstr "Vous devez attribuer un numéro de série pour cet article."
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_routing_workcenter
@ -352,7 +352,7 @@ msgstr "Utilisation du poste de charge"
#. module: mrp
#: model:process.transition,name:mrp.process_transition_procurestockableproduct0
msgid "Procurement of stockable Product"
msgstr "Approvisionnement de produit stocké"
msgstr "Approvisionnement d'article stockable"
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_production_action
@ -399,12 +399,12 @@ msgstr ""
#. module: mrp
#: field:mrp.workcenter,product_id:0
msgid "Work Center Product"
msgstr "Produit pour les postes de charges"
msgstr "Article de poste de charge"
#. module: mrp
#: view:mrp.production:0
msgid "Confirm Production"
msgstr "Confirmer la Production"
msgstr "Confirmer la production"
#. module: mrp
#: model:process.transition,note:mrp.process_transition_stockproduct0
@ -413,7 +413,7 @@ msgid ""
"quantity and the products parameters."
msgstr ""
"Le système crée un ordre (de fabrication ou d'achat), en fonction de la "
"quantité vendue et des paramètres des produits."
"quantité vendue et des paramètres des articles."
#. module: mrp
#: model:process.transition,note:mrp.process_transition_servicemts0
@ -429,7 +429,7 @@ msgstr ""
#: field:mrp.production,product_qty:0
#: field:mrp.production.product.line,product_qty:0
msgid "Product Quantity"
msgstr "Quantité de produit"
msgstr "Quantité d'article"
#. module: mrp
#: help:mrp.production,picking_id:0
@ -522,7 +522,7 @@ msgstr ""
#. module: mrp
#: model:process.node,note:mrp.process_node_serviceproduct0
msgid "Product type is service"
msgstr "le produit est de type Service"
msgstr "L'article est de type \"service\""
#. module: mrp
#: sql_constraint:res.company:0
@ -572,7 +572,7 @@ msgstr ""
#: view:mrp.production:0
#: field:mrp.production,move_created_ids:0
msgid "Products to Produce"
msgstr "Produits à produire"
msgstr "Articles à produire"
#. module: mrp
#: view:mrp.config.settings:0
@ -598,7 +598,7 @@ msgstr "Valeur du stock"
#. module: mrp
#: model:ir.actions.act_window,name:mrp.action_product_bom_structure
msgid "Product BoM Structure"
msgstr "Structure de la Nomenclature des Produits"
msgstr "Structure de la nomemclature"
#. module: mrp
#: view:mrp.production:0
@ -677,7 +677,7 @@ msgstr "Gamme matière"
#: field:mrp.production,move_lines2:0
#: report:mrp.production.order:0
msgid "Consumed Products"
msgstr "Produits consommés"
msgstr "Articles consommés"
#. module: mrp
#: model:ir.actions.act_window,name:mrp.action_mrp_workcenter_load_wizard
@ -690,7 +690,7 @@ msgstr "Occupation du poste de charge"
#: code:addons/mrp/procurement.py:44
#, python-format
msgid "No BoM defined for this product !"
msgstr "Pas de nomenclature définie pour ce produit !"
msgstr "Pas de nomenclature définie pour cet article !"
#. module: mrp
#: model:ir.actions.act_window,name:mrp.mrp_bom_form_action2
@ -757,8 +757,8 @@ msgstr ""
#: constraint:mrp.bom:0
msgid "BoM line product should not be same as BoM product."
msgstr ""
"la ligne de nomemclature de produit ne doit pas être la même que la "
"nomemclature du produit."
"L'article de la ligne de la nomenclature ne devrait pas être le même article "
"que celui de la nomenclature."
#. module: mrp
#: view:mrp.production:0
@ -858,7 +858,7 @@ msgstr ""
#. module: mrp
#: report:bom.structure:0
msgid "Product Name"
msgstr "Nom du Produit"
msgstr "Nom de l'article"
#. module: mrp
#: help:mrp.bom,product_efficiency:0
@ -922,7 +922,7 @@ msgstr ""
"En fonction de la méthode de fourniture du service, l'approvisionnement va "
"générer un appel d'offres pour une commande de sous-traitance, ou va "
"attendre jusqu'à ce que le service soit effectué (= la livraison des "
"produits)."
"articles)."
#. module: mrp
#: selection:mrp.production,priority:0
@ -1016,8 +1016,8 @@ msgstr "Type de Nomenclature"
msgid ""
"Procurement '%s' has an exception: 'No BoM defined for this product !'"
msgstr ""
"L'approvisionnement '%s' possède une exception : pas de nomenclature définie "
"pour ce produit !"
"L'approvisionnement \"%s\" rencontre un incident : pas de nomenclature "
"définie pour cet article !"
#. module: mrp
#: view:mrp.property:0
@ -1042,7 +1042,7 @@ msgid ""
"manufacturing order."
msgstr ""
"Vous devez d'abord annuler les mouvements de stock internes attachés à cet "
"ordre de production."
"ordre de fabrication."
#. module: mrp
#: model:process.node,name:mrp.process_node_minimumstockrule0
@ -1062,7 +1062,7 @@ msgstr "Coût total de %s %s"
#: model:process.node,name:mrp.process_node_stockproduct1
#: model:process.process,name:mrp.process_process_stockableproductprocess0
msgid "Stockable Product"
msgstr "Produit Stockable"
msgstr "Article stockable"
#. module: mrp
#: code:addons/mrp/report/price.py:130
@ -1138,7 +1138,7 @@ msgstr "Nom de la nomenclature"
#. module: mrp
#: constraint:stock.move:0
msgid "You try to assign a lot which is not from the same product."
msgstr ""
msgstr "Vous tentez d'assigner un lot qui n'appartient pas au même article."
#. module: mrp
#: model:ir.actions.act_window,name:mrp.act_product_manufacturing_open
@ -1172,7 +1172,7 @@ msgstr "Nom"
#. module: mrp
#: report:mrp.production.order:0
msgid "Production Order N° :"
msgstr "Ordre de Production N° :"
msgstr "Ordre de production n°"
#. module: mrp
#: field:mrp.product.produce,mode:0
@ -1229,7 +1229,7 @@ msgstr ""
#. module: mrp
#: model:ir.actions.act_window,name:mrp.mrp_production_action4
msgid "Manufacturing Orders Waiting Products"
msgstr "Ordres de fabrication en attente de produits"
msgstr "Ordres de fabrication en attente d'articles"
#. module: mrp
#: view:mrp.bom:0
@ -1305,8 +1305,8 @@ msgid ""
"The system waits for the products to be available in the stock. These "
"products are typically procured manually or through a minimum stock rule."
msgstr ""
"Le système attend que les produits soient disponibles en stock. Typiquement, "
"les approvisionnements de ces produits sont traités manuellement ou avec une "
"Le système attend que les articles soient disponibles en stock. Typiquement, "
"les approvisionnements de ces articles sont traités manuellement ou avec une "
"règle de stock minimum."
#. module: mrp
@ -1343,7 +1343,7 @@ msgstr "Sélectionner l'unité de temps"
#: model:ir.ui.menu,name:mrp.menu_mrp_product_form
#: view:mrp.config.settings:0
msgid "Products"
msgstr ""
msgstr "Articles"
#. module: mrp
#: view:report.workcenter.load:0
@ -1363,8 +1363,8 @@ msgid ""
"will be automatically pre-completed."
msgstr ""
"Une gamme présente tous les postes de charge utilisés, en temps et/ou en "
"cycles. Si une gamme est initialisée, la table des ordres de fabrication "
"(postes de charge) sera automatiquement pré-remplie."
"cycles. Si une gamme est indiquée, le troisième onglet des ordres de "
"fabrication (postes de charge) sera automatiquement pré-remplie."
#. module: mrp
#: code:addons/mrp/mrp.py:521
@ -1379,10 +1379,10 @@ msgid ""
"maxi quantity. It's available in the Inventory management menu and "
"configured by product."
msgstr ""
"La règle du stock minimum est une règle de gestion automatique des "
"Une règle de stock minimum est une règle de gestion automatique des "
"approvisionnements, basée sur des quantités minimum et maximum. Cette règle "
"est disponible dans le menu de gestion des stocks, et paramétrable pour "
"chaque produit."
"chaque article."
#. module: mrp
#: code:addons/mrp/report/price.py:187
@ -1422,7 +1422,7 @@ msgstr ""
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_production_product_line
msgid "Production Scheduled Product"
msgstr "Produit géré en Plan Directeur"
msgstr "Produits dont la fabrication est prévue."
#. module: mrp
#: code:addons/mrp/report/price.py:204
@ -1453,8 +1453,8 @@ msgid ""
"In case the Supply method of the product is Buy, the system creates a "
"purchase order."
msgstr ""
"Dans le cas où la méthode de fourniture est \"Acheter\", le système va créer "
"un ordre d'achat."
"Dans le cas où la méthode de fourniture de l'article est \"Acheter\", le "
"système va créer un ordre d'achat."
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_property_action
@ -1476,6 +1476,22 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Cliquez pour créer une nouvelle propriété.\n"
" </p><p>\n"
" Dans OpenERP, les propriétés permettent de choisir le bonne "
"nomenclature\n"
" pour fabriquer un article lorsque celui-ci peut être "
"assemblé de plusieurs\n"
" manières. Vous pouvez assigner plusieurs\n"
" propriétés à chaque nomenclature. Lorsqu'un vendeur\n"
" créer une commande de vente, il peut lui faire correspondre "
"plusieurs propriétés\n"
" et OpenERP choisira automatiquement la nomenclature à "
"utiliser en fonction\n"
" des besoins.\n"
" </p>\n"
" "
#. module: mrp
#: model:ir.model,name:mrp.model_procurement_order
@ -1491,7 +1507,7 @@ msgstr ""
#: model:ir.actions.act_window,name:mrp.action_view_mrp_product_price_wizard
#: view:mrp.product_price:0
msgid "Product Cost Structure"
msgstr "Structure de Coût du Produit"
msgstr "Structure de coût d'article"
#. module: mrp
#: code:addons/mrp/report/price.py:139
@ -1529,7 +1545,7 @@ msgstr "Compte Horaire"
#: field:mrp.production,product_uom:0
#: field:mrp.production.product.line,product_uom:0
msgid "Product Unit of Measure"
msgstr ""
msgstr "Unité de mesure d'article"
#. module: mrp
#: view:mrp.production:0
@ -1609,7 +1625,7 @@ msgstr "Informations supplémentaires"
#. module: mrp
#: model:ir.model,name:mrp.model_change_production_qty
msgid "Change Quantity of Products"
msgstr "Modifier les quantités de produit"
msgstr "Modifier les quantités d'articles"
#. module: mrp
#: model:process.node,note:mrp.process_node_productionorder0
@ -1699,7 +1715,7 @@ msgstr "Capacité par Cycle"
#: report:mrp.production.order:0
#: field:mrp.production.product.line,product_id:0
msgid "Product"
msgstr "Produit"
msgstr "Article"
#. module: mrp
#: view:mrp.production:0
@ -1715,12 +1731,12 @@ msgstr "Emplacement de matière première"
#. module: mrp
#: view:mrp.product_price:0
msgid "Print Cost Structure of Product."
msgstr "Imprimer la structure des coûts du produit"
msgstr "Imprimer la structure des coûts de l'article"
#. module: mrp
#: view:mrp.production:0
msgid "Consume Products"
msgstr "Produits consommés"
msgstr "Consommer les articles"
#. module: mrp
#: model:ir.actions.act_window,name:mrp.act_mrp_product_produce
@ -1765,7 +1781,7 @@ msgstr ""
#. module: mrp
#: field:mrp.production,product_uos:0
msgid "Product UoS"
msgstr "UdV du produit"
msgstr "UdV de l'article"
#. module: mrp
#: selection:mrp.production,priority:0
@ -1780,7 +1796,7 @@ msgid ""
"operations and to plan future loads on work centers based on production "
"planning."
msgstr ""
"La liste des opérations (liste des postes de charge) pour produire le "
"La liste des opérations (liste des postes de charge) pour fabriquer le "
"produit fini. La gamme est principalement utilisée pour calculer les coûts "
"des postes de charge pendant les opérations et pour planifier leur charge "
"future en fonction du planning de production."
@ -1844,11 +1860,11 @@ msgid ""
"the quantity selected and it will finish the production order when total "
"ordered quantities are produced."
msgstr ""
"Le mode \"Consommer seulement\" ne fera que consommer les produits dans les "
"quantités spécifiées.\n"
"Le mode \"Consommer & Produire\" consommera et produira les produits dans "
"les quantités spécifiées et terminera l'ordre de production dès que les "
"quantités totales planifiées auront été produites."
"Le mode \"Consommer seulement\" ne fera que consommer les articles dans les "
"quantités indiquées.\n"
"Le mode \"Consommer & produire\" consommera et produira les articles dans "
"les quantités indiquées et terminera l'ordre de fabrication dès que les "
"quantités totales prévues auront été produites."
#. module: mrp
#: model:ir.ui.menu,name:mrp.menu_mrp_production_order_action
@ -1901,8 +1917,8 @@ msgid ""
"are products themselves) can also have their own Bill of Material (multi-"
"level)."
msgstr ""
"La nomenclature est la décomposition du produits. Les composants (qui sont "
"eux-mêmes des produits) peuvent aussi avoir leur propre nomenclature (multi-"
"La nomenclature est la décomposition du articles. Les composants (qui sont "
"eux-mêmes des articles) peuvent aussi avoir leur propre nomenclature (multi-"
"niveaux)"
#. module: mrp
@ -1931,7 +1947,7 @@ msgstr "Temps pour 1 cycle (en heures)"
#: model:process.node,name:mrp.process_node_production0
#: model:process.node,name:mrp.process_node_productionorder0
msgid "Production Order"
msgstr "Ordre de Production"
msgstr "Ordre de fabrication"
#. module: mrp
#: model:process.node,note:mrp.process_node_productminimumstockrule0
@ -2005,7 +2021,7 @@ msgstr ""
#. module: mrp
#: field:mrp.bom,product_uos_qty:0
msgid "Product UOS Qty"
msgstr "Qté du produit en UdV"
msgstr "Qté d'articles en UdV"
#. module: mrp
#: field:mrp.production,move_prod_id:0
@ -2020,7 +2036,7 @@ msgid ""
"orders."
msgstr ""
"La variation hebdomadaire du stock vous permet de tracer lévolution liée a "
"l'activité de production, aux réceptions produits et aux livraisons."
"l'activité de production, aux réceptions et aux livraisons."
#. module: mrp
#: view:mrp.product.produce:0
@ -2056,7 +2072,7 @@ msgstr ""
#. module: mrp
#: field:mrp.bom,product_rounding:0
msgid "Product Rounding"
msgstr "Arrondi de produit"
msgstr "Arrondi d'article"
#. module: mrp
#: selection:mrp.production,state:0
@ -2123,13 +2139,13 @@ msgstr "Ordre d'approvisionnement"
#. module: mrp
#: help:mrp.bom,product_rounding:0
msgid "Rounding applied on the product quantity."
msgstr "Arrondi appliqué sur la quantité des produits."
msgstr "Arrondi appliqué sur la quantité des articles."
#. module: mrp
#: model:process.node,note:mrp.process_node_stock0
msgid "Assignment from Production or Purchase Order."
msgstr ""
"Affectation à partir d'un ordre de fabrication ou d'un bon de commande."
"Affectation à partir d'un ordre de fabrication ou d'une commande d'achat."
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_bom_form_action
@ -2149,6 +2165,21 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Cliquez pour créer une nomenclature. \n"
" </p><p>\n"
" Les nomenclatures permettent de définir la liste des "
"matières\n"
" premières nécessaires pour fabriquer un produit fini, grâce "
"à un ordre\n"
" de fabrication ou un kit d'article.\n"
" </p><p>\n"
" OpenERP utilise les nomenclatures pour proposer "
"automatiquement\n"
" des ordres de fabrication en fonction des besoins "
"d'approvisionnement.\n"
" </p>\n"
" "
#. module: mrp
#: field:mrp.routing.workcenter,routing_id:0
@ -2279,7 +2310,7 @@ msgstr ""
#. module: mrp
#: model:process.node,note:mrp.process_node_stockproduct0
msgid "Product type is Stockable or Consumable."
msgstr "Le type produit est stockable ou consommable."
msgstr "Le type d'article est stockable ou consommable."
#. module: mrp
#: selection:mrp.production,state:0
@ -2289,7 +2320,7 @@ msgstr "Production démarrée"
#. module: mrp
#: model:process.node,name:mrp.process_node_procureproducts0
msgid "Procure Products"
msgstr "Approvisionner les produits"
msgstr "Approvisionner les articles"
#. module: mrp
#: field:mrp.product.produce,product_qty:0
@ -2348,8 +2379,8 @@ msgid ""
"Product UOS (Unit of Sale) is the unit of measurement for the invoicing and "
"promotion of stock."
msgstr ""
"L'UdV (unité de Vente) du produit est l'unité de mesure pour la facturation "
"et la valorisation du stock"
"L'UdV (unité de vente) de l'article est l'unité de mesure pour la "
"facturation et la valorisation du stock."
#. module: mrp
#: view:mrp.production:0
@ -2371,7 +2402,7 @@ msgstr "Approvisionnements en exception"
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_product_price
msgid "Product Price"
msgstr "Prix produit"
msgstr "Prix article"
#. module: mrp
#: view:change.production.qty:0
@ -2382,7 +2413,7 @@ msgstr "Changer la quantité"
#: view:change.production.qty:0
#: model:ir.actions.act_window,name:mrp.action_change_production_qty
msgid "Change Product Qty"
msgstr "Changer la Qté de Produits"
msgstr "Changer la qté. d'articles"
#. module: mrp
#: field:mrp.routing,note:0
@ -2394,7 +2425,7 @@ msgstr "Description"
#. module: mrp
#: view:board.board:0
msgid "Manufacturing board"
msgstr "Tableau de bord de production"
msgstr "Tableau de bord de fabrication"
#. module: mrp
#: code:addons/mrp/wizard/change_production_qty.py:68
@ -2405,7 +2436,7 @@ msgstr ""
#. module: mrp
#: model:process.node,note:mrp.process_node_procureproducts0
msgid "The way to procurement depends on the product type."
msgstr "Le moyen dapprovisionnement dépend du type de produit"
msgstr "Le moyen dapprovisionnement dépend du type d'article"
#. module: mrp
#: model:ir.actions.act_window,name:mrp.open_board_manufacturing
@ -2466,8 +2497,8 @@ msgid ""
"Depending on the chosen method to supply the stockable products, the "
"procurement order creates a RFQ, a production order, ... "
msgstr ""
"Selon la méthode de fourniture choisie pour les produits suivis en stock, "
"l'approvisionnement générera un appel d'offres, un ordre de fabrication, ... "
"Selon la méthode de fourniture choisie pour les articles stockables, "
"l'approvisionnement génére un appel d'offres, un ordre de fabrication, ... "
#. module: mrp
#: help:mrp.workcenter,time_stop:0
@ -2512,7 +2543,7 @@ msgid ""
"Specify quantity of products to produce or buy. Report of Cost structure "
"will be displayed base on this quantity."
msgstr ""
"Spécifie la quantité de produits à fabriquer ou à acheter. Le rapport sur la "
"Spécifie la quantité d'articles à fabriquer ou à acheter. Le rapport sur la "
"structure du coût de revient sera basé sur cette quantité."
#. module: mrp
@ -2548,7 +2579,7 @@ msgstr ""
#: field:mrp.production,move_lines:0
#: report:mrp.production.order:0
msgid "Products to Consume"
msgstr "Produits à consommer"
msgstr "Articles à consommer"
#~ msgid "Change Qty"
#~ msgstr "Changer la quantité"

View File

@ -470,7 +470,7 @@ class mrp_production(osv.osv):
'workcenter_lines': fields.one2many('mrp.production.workcenter.line', 'production_id', 'Work Centers Utilisation',
readonly=True, states={'draft':[('readonly',False)]}),
'state': fields.selection(
[('draft', 'New'), ('cancel', 'Cancelled'), ('picking_except', 'Picking Exception'), ('confirmed', 'Waiting Goods'),
[('draft', 'New'), ('cancel', 'Cancelled'), ('picking_except', 'Picking Exception'), ('confirmed', 'Awaiting Raw Materials'),
('ready', 'Ready to Produce'), ('in_production', 'Production Started'), ('done', 'Done')],
string='Status', readonly=True,
help="When the production order is created the status is set to 'Draft'.\n\

View File

@ -347,7 +347,7 @@
<form string="Bill of Material" version="7.0">
<group>
<group>
<field name="product_id" on_change="onchange_product_id(product_id, name, context)" class="oe_inline"/>
<field name="product_id" on_change="onchange_product_id(product_id, name, context)" context="{'default_supply_method':'produce'}" class="oe_inline"/>
<label for="product_qty" string="Quantity"/>
<div>
<field name="product_qty" class="oe_inline"/>
@ -380,7 +380,7 @@
<page string="Components">
<field name="bom_lines" widget="one2many_list">
<tree string="Components" editable="bottom">
<field name="product_id" on_change="onchange_product_id(product_id, name)"/>
<field name="product_id" context="{'default_supply_method':'produce'}" on_change="onchange_product_id(product_id, name)"/>
<field name="product_qty"/>
<field name="product_uom" on_change="onchange_uom(product_id, product_uom)" groups="product.group_uom"/>
<field name="name" invisible="1"/>

View File

@ -7,15 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:53+0000\n"
"PO-Revision-Date: 2011-01-13 02:28+0000\n"
"Last-Translator: Maxime Chambreuil (http://www.savoirfairelinux.com) "
"<maxime.chambreuil@savoirfairelinux.com>\n"
"PO-Revision-Date: 2012-11-26 13:58+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-11-25 06:17+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: mrp_byproduct
#: help:mrp.subproduct,subproduct_type:0
@ -53,8 +52,8 @@ msgstr "Ordre de fabrication"
#: constraint:mrp.bom:0
msgid "BoM line product should not be same as BoM product."
msgstr ""
"Le produit de la ligne de la nomenclature ne devrait pas être le même "
"produit que celui de la nomenclature."
"L'article de la ligne de la nomenclature ne devrait pas être le même article "
"que celui de la nomenclature."
#. module: mrp_byproduct
#: sql_constraint:mrp.bom:0

View File

@ -115,10 +115,10 @@ class mrp_repair(osv.osv):
return result.keys()
_columns = {
'name': fields.char('Repair Reference',size=24, required=True),
'name': fields.char('Repair Reference',size=24, required=True, states={'confirmed':[('readonly',True)]}),
'product_id': fields.many2one('product.product', string='Product to Repair', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'partner_id' : fields.many2one('res.partner', 'Partner', select=True, help='Choose partner for whom the order will be invoiced and delivered.'),
'address_id': fields.many2one('res.partner', 'Delivery Address', domain="[('parent_id','=',partner_id)]"),
'partner_id' : fields.many2one('res.partner', 'Partner', select=True, help='Choose partner for whom the order will be invoiced and delivered.', states={'confirmed':[('readonly',True)]}),
'address_id': fields.many2one('res.partner', 'Delivery Address', domain="[('parent_id','=',partner_id)]", states={'confirmed':[('readonly',True)]}),
'default_address_id': fields.function(_get_default_address, type="many2one", relation="res.partner"),
'prodlot_id': fields.many2one('stock.production.lot', 'Lot Number', select=True, states={'draft':[('readonly',False)]},domain="[('product_id','=',product_id)]"),
'state': fields.selection([
@ -137,10 +137,10 @@ class mrp_repair(osv.osv):
\n* The \'To be Invoiced\' status is used to generate the invoice before or after repairing done. \
\n* The \'Done\' status is set when repairing is completed.\
\n* The \'Cancelled\' status is used when user cancel repair order.'),
'location_id': fields.many2one('stock.location', 'Current Location', select=True, readonly=True, states={'draft':[('readonly',False)]}),
'location_dest_id': fields.many2one('stock.location', 'Delivery Location', readonly=True, states={'draft':[('readonly',False)]}),
'location_id': fields.many2one('stock.location', 'Current Location', select=True, readonly=True, states={'draft':[('readonly',False)], 'confirmed':[('readonly',True)]}),
'location_dest_id': fields.many2one('stock.location', 'Delivery Location', readonly=True, states={'draft':[('readonly',False)], 'confirmed':[('readonly',True)]}),
'move_id': fields.many2one('stock.move', 'Move',required=True, domain="[('product_id','=',product_id)]", readonly=True, states={'draft':[('readonly',False)]}),
'guarantee_limit': fields.date('Warranty Expiration', help="The warranty expiration limit is computed as: last move date + warranty defined on selected product. If the current date is below the warranty expiration limit, each operation and fee you will add will be set as 'not to invoiced' by default. Note that you can change manually afterwards."),
'guarantee_limit': fields.date('Warranty Expiration', help="The warranty expiration limit is computed as: last move date + warranty defined on selected product. If the current date is below the warranty expiration limit, each operation and fee you will add will be set as 'not to invoiced' by default. Note that you can change manually afterwards.", states={'confirmed':[('readonly',True)]}),
'operations' : fields.one2many('mrp.repair.line', 'repair_id', 'Operation Lines', readonly=True, states={'draft':[('readonly',False)]}),
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', help='Pricelist of the selected partner.'),
'partner_invoice_id':fields.many2one('res.partner', 'Invoicing Address'),
@ -156,7 +156,7 @@ class mrp_repair(osv.osv):
'internal_notes': fields.text('Internal Notes'),
'quotation_notes': fields.text('Quotation Notes'),
'company_id': fields.many2one('res.company', 'Company'),
'deliver_bool': fields.boolean('Deliver', help="Check this box if you want to manage the delivery once the product is repaired and create a picking with selected product. Note that you can select the locations in the Info tab, if you have the extended view."),
'deliver_bool': fields.boolean('Deliver', help="Check this box if you want to manage the delivery once the product is repaired and create a picking with selected product. Note that you can select the locations in the Info tab, if you have the extended view.", states={'confirmed':[('readonly',True)]}),
'invoiced': fields.boolean('Invoiced', readonly=True),
'repaired': fields.boolean('Repaired', readonly=True),
'amount_untaxed': fields.function(_amount_untaxed, string='Untaxed Amount',

View File

@ -46,9 +46,9 @@
<group>
<field name="product_id" on_change="onchange_product_id(product_id)" domain="[('type','!=','service')]"/>
<field name="partner_id" on_change="onchange_partner_id(partner_id,address_id)" attrs="{'required':[('invoice_method','!=','none')]}"/>
<field name="address_id" attrs="{'readonly':[('deliver_bool','=', False)]}" groups="sale.group_delivery_invoice_address"/>
<field name="address_id" groups="sale.group_delivery_invoice_address"/>
<field name="move_id" on_change="onchange_move_id(product_id, move_id)" context="{'default_product_id':product_id}"/>
<field name="location_id" attrs="{'readonly':[('deliver_bool','=', False)], 'required':[('deliver_bool','=', True)]}" groups="stock.group_locations"/>
<field name="location_id" attrs="{'required':[('deliver_bool','=', True)]}" groups="stock.group_locations"/>
<field name="prodlot_id" on_change="onchange_lot_id(prodlot_id,product_id)" groups="stock.group_production_lot" string="Serial Number"/>
</group>
<group>
@ -109,9 +109,13 @@
<group class="oe_subtotal_footer oe_right">
<field name="amount_untaxed" sum="Untaxed amount"/>
<field name="amount_tax"/>
<field name="amount_total" sum="Total amount" class="oe_subtotal_footer_separator"/>
<div class="oe_subtotal_footer_separator oe_inline">
<label for="amount_total" />
<button name="button_dummy"
states="draft" string="(update)" type="object" class="oe_edit_only oe_link"/>
</div>
<field name="amount_total" nolabel="1" sum="Total amount" class="oe_subtotal_footer_separator"/>
</group>
<button name="button_dummy" states="draft" string="Compute" type="object" icon="terp-stock_format-scientific"/>
<div class="oe_clear"/>
</page>
<page string="Invoicing">
@ -173,7 +177,7 @@
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
</group>
<group>
<field name="location_dest_id" attrs="{'readonly':[('deliver_bool','=', False)], 'required':[('deliver_bool','=', True)]}" groups="stock.group_locations"/>
<field name="location_dest_id" attrs="{'required':[('deliver_bool','=', True)]}" groups="stock.group_locations"/>
</group>
</group>
</page>

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-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-11-25 09:14+0000\n"
"Last-Translator: Joshua Jan(SHINEIT) <popkar77@gmail.com>\n"
"PO-Revision-Date: 2012-11-27 01:57+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-26 04:42+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: note
#: sql_constraint:res.users:0
@ -288,7 +288,7 @@ msgstr "错误:无效的(EAN)条码"
#. module: note
#: field:base.config.settings,group_note_fancy:0
msgid "Use fancy layouts for notes"
msgstr "为便签使用花式布局"
msgstr "为便签使用拟物化布局"
#. module: note
#: field:note.stage,user_id:0

View File

@ -11,9 +11,9 @@
<attribute name="string">Install Outlook Plug-In</attribute>
</form>
<xpath expr="//footer" position="replace">
<footer>
<button string="Close" special="Cancel" class="oe_highlight"/>
</footer>
<footer>
<button string="Close" class="oe_link" special="cancel" />
</footer>
</xpath>
<xpath expr="//separator[@string='title']" position="after" version="7.0">
<group>

View File

@ -11,9 +11,9 @@
<attribute name="string">Install Thunderbird Plug-In</attribute>
</form>
<xpath expr="//footer" position="replace">
<footer>
<button string="Close" special="Cancel" class="oe_highlight"/>
</footer>
<footer>
<button string="Close" class="oe_link" special="cancel" />
</footer>
</xpath>
<xpath expr="//separator[@string='title']" position="after">
<group>

View File

@ -618,9 +618,10 @@ class pos_order(osv.osv):
return session_ids and session_ids[0] or False
def _default_pricelist(self, cr, uid, context=None):
res = self.pool.get('sale.shop').search(cr, uid, [], context=context)
if res:
shop = self.pool.get('sale.shop').browse(cr, uid, res[0], context=context)
session_ids = self._default_session(cr, uid, context)
if session_ids:
session_record = self.pool.get('pos.session').browse(cr, uid, session_ids, context=context)
shop = self.pool.get('sale.shop').browse(cr, uid, session_record.config_id.shop_id.id, context=context)
return shop.pricelist_id and shop.pricelist_id.id or False
return False

View File

@ -30,7 +30,7 @@
<field name="name"/>
<field name="date_order"/>
<field name="session_id" required="1"/>
<field name="partner_id" on_change="onchange_partner_id(partner_id)" context="{'search_default_customer':1}" attrs="{'readonly': [('state','=','invoiced')]}"/>
<field name="partner_id" on_change="onchange_partner_id(partner_id, context)" context="{'search_default_customer':1}" attrs="{'readonly': [('state','=','invoiced')]}"/>
</group>
<notebook colspan="4">
<page string="Products">
@ -1060,7 +1060,7 @@
<field name="arch" type="xml">
<form string="Ean13 Generator" version="7.0">
<p class="oe_grey">
Enter a reference for this product, it will be converted
Enter a reference, it will be converted
automatically to a valid EAN number.
</p>
<group>

View File

@ -19,7 +19,7 @@ class res_users(osv.osv):
def edit_ean(self, cr, uid, ids, context):
return {
'name': "Edit Ean",
'name': "Edit EAN",
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',

View File

@ -23,7 +23,7 @@
<group>
<field name="pos_config" />
<field name="ean13" />
<button name="edit_ean" type="object" string="Edit" />
<button name="edit_ean" type="object" string="Edit EAN" class="oe_edit_only" />
</group>
</page>
</notebook>

View File

@ -202,7 +202,7 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal
* {
* quantity: (number) the number of items, or the weight,
* unit_name: (string) the name of the item's unit (kg, dozen, ...)
* list_price: (number) the price of one unit of the item before discount
* price: (number) the price of one unit of the item before discount
* discount: (number) the discount on the product in % [0,100]
* product_name: (string) the name of the product
* price_with_tax: (number) the price paid for this orderline, tax included

View File

@ -342,7 +342,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
this.pos = options.pos;
this.order = options.order;
this.product = options.product;
this.price = options.product.get('list_price');
this.price = options.product.get('price');
this.quantity = 1;
this.discount = 0;
this.type = 'unit';
@ -396,11 +396,11 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
return this.product;
},
// return the base price of this product (for this orderline)
get_list_price: function(){
get_price: function(){
return this.price;
},
// changes the base price of the product for this orderline
set_list_price: function(price){
set_price: function(price){
this.price = price;
this.trigger('change');
},
@ -434,7 +434,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
export_as_JSON: function() {
return {
qty: this.get_quantity(),
price_unit: this.get_list_price(),
price_unit: this.get_price(),
discount: this.get_discount(),
product_id: this.get_product().get('id'),
};
@ -444,7 +444,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
return {
quantity: this.get_quantity(),
unit_name: this.get_unit().name,
list_price: this.get_list_price(),
price: this.get_price(),
discount: this.get_discount(),
product_name: this.get_product().get('name'),
price_with_tax : this.get_price_with_tax(),
@ -589,7 +589,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
line.set_quantity(options.quantity);
}
if(options.price !== undefined){
line.set_list_price(options.price);
line.set_price(options.price);
}
var last_orderline = this.getLastOrderline();
@ -625,7 +625,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
},
getDiscountTotal: function() {
return (this.get('orderLines')).reduce((function(sum, orderLine) {
return sum + (orderLine.get_list_price() * (orderLine.get_discount()/100) * orderLine.get_quantity());
return sum + (orderLine.get_price() * (orderLine.get_discount()/100) * orderLine.get_quantity());
}), 0);
},
getTotalTaxExcluded: function() {

View File

@ -535,7 +535,7 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
},
get_product_price: function(){
var product = this.get_product();
return (product ? product.get('list_price') : 0) || 0;
return (product ? product.get('price') : 0) || 0;
},
get_product_weight: function(){
return this.weight || 0;

View File

@ -184,8 +184,8 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
order.getSelectedLine().set_quantity(val);
}else if( mode === 'discount'){
order.getSelectedLine().set_discount(val);
}else if( mode === 'list_price'){
order.getSelectedLine().set_list_price(val);
}else if( mode === 'price'){
order.getSelectedLine().set_price(val);
}
} else {
this.pos.get('selectedOrder').destroy();

View File

@ -85,7 +85,7 @@
<button class="input-button number-char">7</button>
<button class="input-button number-char">8</button>
<button class="input-button number-char">9</button>
<button class="mode-button" data-mode='list_price'>Price</button>
<button class="mode-button" data-mode='price'>Price</button>
<br />
<button class="input-button" id="numpad-minus" >+/-</button>
<button class="input-button number-char">0</button>
@ -387,12 +387,12 @@
<img src='' /> <!-- the product thumbnail -->
<t t-if="!widget.model.get('to_weight')">
<span class="price-tag">
<t t-esc="widget.format_currency(widget.model.get('list_price'))"/>
<t t-esc="widget.format_currency(widget.model.get('price'))"/>
</span>
</t>
<t t-if="widget.model.get('to_weight')">
<span class="price-tag">
<t t-esc="widget.format_currency(widget.model.get('list_price'))+'/Kg'"/>
<t t-esc="widget.format_currency(widget.model.get('price'))+'/Kg'"/>
</span>
</t>
</div>
@ -510,7 +510,7 @@
</em>
<t t-esc="widget.model.get_unit().name" />
at
<t t-esc="widget.format_currency(widget.model.get_list_price())" />
<t t-esc="widget.format_currency(widget.model.get_price())" />
/
<t t-esc="widget.model.get_unit().name" />
</li>
@ -584,7 +584,7 @@
<t t-esc="order.get_quantity().toFixed(0)"/>
</td>
<td class="pos-right-align">
<t t-esc="widget.format_currency(order.get_list_price() * (1 - order.get_discount()/100) * order.get_quantity().toFixed(2))"/>
<t t-esc="widget.format_currency(order.get_price() * (1 - order.get_discount()/100) * order.get_quantity().toFixed(2))"/>
</td>
</tr>
</table>

View File

@ -0,0 +1,42 @@
# Chinese (Simplified) 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-11-24 02:53+0000\n"
"PO-Revision-Date: 2012-11-27 02:00+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: portal_claim
#: model:ir.actions.act_window,help:portal_claim.crm_case_categ_claim0
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to register a new claim. \n"
" </p><p>\n"
" You can track your claims from this menu and the action we\n"
" will take.\n"
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" 单击 登记一个新的索赔。 \n"
" </p><p>\n"
" 从这个菜单,你能跟踪你的索赔和我们需要采取的行动。\n"
" </p>\n"
" "
#. module: portal_claim
#: model:ir.actions.act_window,name:portal_claim.crm_case_categ_claim0
#: model:ir.ui.menu,name:portal_claim.portal_after_sales_claims
msgid "Claims"
msgstr "索赔"

View File

@ -0,0 +1,23 @@
# Spanish 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-11-24 02:53+0000\n"
"PO-Revision-Date: 2012-11-26 22:11+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: portal_project
#: model:ir.ui.menu,name:portal_project.portal_services_tasks
msgid "Tasks"
msgstr "Tareas"

View File

@ -0,0 +1,23 @@
# Swedish 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-11-24 02:53+0000\n"
"PO-Revision-Date: 2012-11-26 22:11+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Swedish <sv@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-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: portal_project
#: model:ir.ui.menu,name:portal_project.portal_services_tasks
msgid "Tasks"
msgstr ""

View File

@ -0,0 +1,432 @@
# Spanish 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-11-24 02:54+0000\n"
"PO-Revision-Date: 2012-11-26 22:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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-11-27 05:24+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: portal_sale
#: sql_constraint:sale.order:0
msgid "Order Reference must be unique per Company!"
msgstr ""
#. module: portal_sale
#: model:ir.actions.act_window,help:portal_sale.product_normal_action
msgid "There are no public products."
msgstr ""
#. module: portal_sale
#: model:ir.actions.act_window,help:portal_sale.action_picking_tree
msgid "You don't have any delivery order."
msgstr ""
#. module: portal_sale
#: model:email.template,report_name:portal_sale.email_template_edi_sale
msgid ""
"${(object.name or '').replace('/','_')}_${object.state == 'draft' and "
"'draft' or ''}"
msgstr ""
#. module: portal_sale
#: model:res.groups,name:portal_sale.group_payment_options
msgid "View Online Payment Options"
msgstr ""
#. module: portal_sale
#: field:account.config.settings,group_payment_options:0
msgid "Show payment buttons to employees too"
msgstr ""
#. module: portal_sale
#: model:email.template,subject:portal_sale.email_template_edi_sale
msgid ""
"${object.company_id.name} ${object.state in ('draft', 'sent') and "
"'Quotation' or 'Order'} (Ref ${object.name or 'n/a' })"
msgstr ""
#. module: portal_sale
#: model:ir.model,name:portal_sale.model_account_config_settings
msgid "account.config.settings"
msgstr ""
#. module: portal_sale
#: model:email.template,body_html:portal_sale.email_template_edi_invoice
msgid ""
"\n"
"<div style=\"font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-"
"serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, "
"255, 255); \">\n"
"\n"
" <p>Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name "
"or ''},</p>\n"
"\n"
" <p>A new invoice is available for you: </p>\n"
" \n"
" <p style=\"border-left: 1px solid #8e0000; margin-left: 30px;\">\n"
" &nbsp;&nbsp;<strong>REFERENCES</strong><br />\n"
" &nbsp;&nbsp;Invoice number: <strong>${object.number}</strong><br />\n"
" &nbsp;&nbsp;Invoice total: <strong>${object.amount_total} "
"${object.currency_id.name}</strong><br />\n"
" &nbsp;&nbsp;Invoice date: ${object.date_invoice}<br />\n"
" % if object.origin:\n"
" &nbsp;&nbsp;Order reference: ${object.origin}<br />\n"
" % endif\n"
" % if object.user_id:\n"
" &nbsp;&nbsp;Your contact: <a href=\"mailto:${object.user_id.email or "
"''}?subject=Invoice%20${object.number}\">${object.user_id.name}</a>\n"
" % endif\n"
" </p> \n"
"\n"
" <%\n"
" action = 'portal_sale.portal_action_invoices'\n"
" object.partner_id.signup_prepare()\n"
" signup_url = "
"object.partner_id._get_signup_url_for_action(action=action,view_type='form',r"
"es_id=object.id)[object.partner_id.id]\n"
" %>\n"
" % if signup_url:\n"
" <p>\n"
" You can access the invoice document and pay online via our Customer "
"Portal:\n"
" </p>\n"
" <a style=\"display:block; width: 150px; height:20px; margin-left: "
"120px; color: #DDD; font-family: 'Lucida Grande', Helvetica, Arial, sans-"
"serif; font-size: 13px; font-weight: bold; text-align: center; text-"
"decoration: none !important; line-height: 1; padding: 5px 0px 0px 0px; "
"background-color: #8E0000; border-radius: 5px 5px; background-repeat: repeat "
"no-repeat;\"\n"
" href=\"${signup_url}\">View Invoice</a>\n"
" % endif\n"
" \n"
" % if object.company_id.paypal_account and object.type in ('out_invoice', "
"'in_refund'):\n"
" <% \n"
" comp_name = quote(object.company_id.name)\n"
" inv_number = quote(object.number)\n"
" paypal_account = quote(object.company_id.paypal_account)\n"
" inv_amount = quote(str(object.residual))\n"
" cur_name = quote(object.currency_id.name)\n"
" paypal_url = \"https://www.paypal.com/cgi-"
"bin/webscr?cmd=_xclick&amp;business=%s&amp;item_name=%s%%20Invoice%%20%s&amp;"
"\" \\\n"
" "
"\"invoice=%s&amp;amount=%s&amp;currency_code=%s&amp;button_subtype=services&a"
"mp;no_note=1&amp;bn=OpenERP_Invoice_PayNow_%s\" % \\\n"
" "
"(paypal_account,comp_name,inv_number,inv_number,inv_amount,cur_name,cur_name)"
"\n"
" %>\n"
" <br/>\n"
" <p>It is also possible to directly pay with Paypal:</p>\n"
" <a style=\"margin-left: 120px;\" href=\"${paypal_url}\">\n"
" <img class=\"oe_edi_paypal_button\" "
"src=\"https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif\"/>\n"
" </a>\n"
" % endif\n"
" \n"
" <br/>\n"
" <p>If you have any question, do not hesitate to contact us.</p>\n"
" <p>Thank you for choosing ${object.company_id.name or 'us'}!</p>\n"
" <br/>\n"
" <br/>\n"
" <div style=\"width: 375px; margin: 0px; padding: 0px; background-color: "
"#8E0000; border-top-left-radius: 5px 5px; border-top-right-radius: 5px 5px; "
"background-repeat: repeat no-repeat;\">\n"
" <h3 style=\"margin: 0px; padding: 2px 14px; font-size: 12px; color: "
"#FFF;\">\n"
" <strong style=\"text-"
"transform:uppercase;\">${object.company_id.name}</strong></h3>\n"
" </div>\n"
" <div style=\"width: 347px; margin: 0px; padding: 5px 14px; line-height: "
"16px; background-color: #F2F2F2;\">\n"
" <span style=\"color: #222; margin-bottom: 5px; display: block; \">\n"
" % if object.company_id.street:\n"
" ${object.company_id.street}<br/>\n"
" % endif\n"
" % if object.company_id.street2:\n"
" ${object.company_id.street2}<br/>\n"
" % endif\n"
" % if object.company_id.city or object.company_id.zip:\n"
" ${object.company_id.zip} ${object.company_id.city}<br/>\n"
" % endif\n"
" % if object.company_id.country_id:\n"
" ${object.company_id.state_id and ('%s, ' % "
"object.company_id.state_id.name) or ''} ${object.company_id.country_id.name "
"or ''}<br/>\n"
" % endif\n"
" </span>\n"
" % if object.company_id.phone:\n"
" <div style=\"margin-top: 0px; margin-right: 0px; margin-bottom: "
"0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: "
"0px; padding-left: 0px; \">\n"
" Phone:&nbsp; ${object.company_id.phone}\n"
" </div>\n"
" % endif\n"
" % if object.company_id.website:\n"
" <div>\n"
" Web :&nbsp;<a "
"href=\"${object.company_id.website}\">${object.company_id.website}</a>\n"
" </div>\n"
" %endif\n"
" <p></p>\n"
" </div>\n"
"</div>\n"
" "
msgstr ""
#. module: portal_sale
#: model:res.groups,comment:portal_sale.group_payment_options
msgid ""
"Members of this group see the online payment options\n"
"on Sale Orders and Customer Invoices. These options are meant for customers "
"who are accessing\n"
"their documents through the portal."
msgstr ""
#. module: portal_sale
#: model:email.template,report_name:portal_sale.email_template_edi_invoice
msgid ""
"Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' "
"and 'draft' or ''}"
msgstr ""
#. module: portal_sale
#: model:ir.actions.act_window,help:portal_sale.action_orders_portal
msgid "You don't have any sale order."
msgstr ""
#. module: portal_sale
#: model:email.template,subject:portal_sale.email_template_edi_invoice
msgid "${object.company_id.name} Invoice (Ref ${object.number or 'n/a' })"
msgstr ""
#. module: portal_sale
#: model:ir.actions.act_window,name:portal_sale.product_normal_action
#: model:ir.ui.menu,name:portal_sale.portal_products
msgid "Products"
msgstr ""
#. module: portal_sale
#: model:ir.actions.act_window,help:portal_sale.portal_action_invoices
msgid "You don't have any invoice."
msgstr ""
#. module: portal_sale
#: model:ir.actions.act_window,name:portal_sale.action_quotations_portal
#: model:ir.ui.menu,name:portal_sale.portal_quotations
msgid "Quotations"
msgstr ""
#. module: portal_sale
#: sql_constraint:account.invoice:0
msgid "Invoice Number must be unique per Company!"
msgstr ""
#. module: portal_sale
#: model:ir.model,name:portal_sale.model_sale_order
msgid "Sales Order"
msgstr ""
#. module: portal_sale
#: field:account.invoice,portal_payment_options:0
#: field:sale.order,portal_payment_options:0
msgid "Portal Payment Options"
msgstr ""
#. module: portal_sale
#: help:account.config.settings,group_payment_options:0
msgid ""
"Show online payment options on Sale Orders and Customer Invoices to "
"employees. If not checked, these options are only visible to portal users."
msgstr ""
#. module: portal_sale
#: model:ir.actions.act_window,help:portal_sale.action_quotations_portal
msgid "You don't have any quotation."
msgstr ""
#. module: portal_sale
#: model:ir.actions.act_window,name:portal_sale.portal_action_invoices
#: model:ir.ui.menu,name:portal_sale.portal_invoices
msgid "Invoices"
msgstr ""
#. module: portal_sale
#: model:ir.actions.act_window,name:portal_sale.portal_action_vouchers
#: model:ir.ui.menu,name:portal_sale.portal_payments
msgid "Refunds/Payments"
msgstr ""
#. module: portal_sale
#: view:account.config.settings:0
msgid "Configure payment acquiring methods"
msgstr ""
#. module: portal_sale
#: model:email.template,body_html:portal_sale.email_template_edi_sale
msgid ""
"\n"
"<div style=\"font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-"
"serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, "
"255, 255); \">\n"
"\n"
" <p>Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name "
"or ''},</p>\n"
" \n"
" <p>Here is your ${object.state in ('draft', 'sent') and 'quotation' or "
"'order confirmation'} from ${object.company_id.name}: </p>\n"
"\n"
" <p style=\"border-left: 1px solid #8e0000; margin-left: 30px;\">\n"
" &nbsp;&nbsp;<strong>REFERENCES</strong><br />\n"
" &nbsp;&nbsp;Order number: <strong>${object.name}</strong><br />\n"
" &nbsp;&nbsp;Order total: <strong>${object.amount_total} "
"${object.pricelist_id.currency_id.name}</strong><br />\n"
" &nbsp;&nbsp;Order date: ${object.date_order}<br />\n"
" % if object.origin:\n"
" &nbsp;&nbsp;Order reference: ${object.origin}<br />\n"
" % endif\n"
" % if object.client_order_ref:\n"
" &nbsp;&nbsp;Your reference: ${object.client_order_ref}<br />\n"
" % endif\n"
" % if object.user_id:\n"
" &nbsp;&nbsp;Your contact: <a href=\"mailto:${object.user_id.email or "
"''}?subject=Order%20${object.name}\">${object.user_id.name}</a>\n"
" % endif\n"
" </p>\n"
"\n"
" <%\n"
" action = 'portal_sale.action_quotations_portal' if object.state in "
"('draft', 'sent') else 'portal_sale.action_orders_portal'\n"
" object.partner_id.signup_prepare()\n"
" signup_url = "
"object.partner_id._get_signup_url_for_action(action=action,view_type='form',r"
"es_id=object.id)[object.partner_id.id]\n"
" %>\n"
" % if signup_url:\n"
" <p>\n"
" You can access this document and pay online via our Customer Portal:\n"
" </p>\n"
" <a style=\"display:block; width: 150px; height:20px; margin-left: "
"120px; color: #DDD; font-family: 'Lucida Grande', Helvetica, Arial, sans-"
"serif; font-size: 13px; font-weight: bold; text-align: center; text-"
"decoration: none !important; line-height: 1; padding: 5px 0px 0px 0px; "
"background-color: #8E0000; border-radius: 5px 5px; background-repeat: repeat "
"no-repeat;\"\n"
" href=\"${signup_url}\">View ${object.state in ('draft', 'sent') "
"and 'Quotation' or 'Order'}</a>\n"
" % endif\n"
"\n"
" % if object.order_policy in ('prepaid','manual') and "
"object.company_id.paypal_account and object.state != 'draft':\n"
" <%\n"
" comp_name = quote(object.company_id.name)\n"
" order_name = quote(object.name)\n"
" paypal_account = quote(object.company_id.paypal_account)\n"
" order_amount = quote(str(object.residual))\n"
" cur_name = quote(object.pricelist_id.currency_id.name)\n"
" paypal_url = \"https://www.paypal.com/cgi-"
"bin/webscr?cmd=_xclick&amp;business=%s&amp;item_name=%s%%20Order%%20%s\" \\\n"
" "
"\"&amp;invoice=%s&amp;amount=%s&amp;currency_code=%s&amp;button_subtype=servi"
"ces&amp;no_note=1\" \\\n"
" \"&amp;bn=OpenERP_Order_PayNow_%s\" % \\\n"
" "
"(paypal_account,comp_name,order_name,order_name,order_amount,cur_name,cur_nam"
"e)\n"
" %>\n"
" <br/>\n"
" <p>It is also possible to directly pay with Paypal:</p>\n"
" <a style=\"margin-left: 120px;\" href=\"${paypal_url}\">\n"
" <img class=\"oe_edi_paypal_button\" "
"src=\"https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif\"/>\n"
" </a>\n"
" % endif\n"
"\n"
" <br/>\n"
" <p>If you have any question, do not hesitate to contact us.</p>\n"
" <p>Thank you for choosing ${object.company_id.name or 'us'}!</p>\n"
" <br/>\n"
" <br/>\n"
" <div style=\"width: 375px; margin: 0px; padding: 0px; background-color: "
"#8E0000; border-top-left-radius: 5px 5px; border-top-right-radius: 5px 5px; "
"background-repeat: repeat no-repeat;\">\n"
" <h3 style=\"margin: 0px; padding: 2px 14px; font-size: 12px; color: "
"#FFF;\">\n"
" <strong style=\"text-"
"transform:uppercase;\">${object.company_id.name}</strong></h3>\n"
" </div>\n"
" <div style=\"width: 347px; margin: 0px; padding: 5px 14px; line-height: "
"16px; background-color: #F2F2F2;\">\n"
" <span style=\"color: #222; margin-bottom: 5px; display: block; \">\n"
" % if object.company_id.street:\n"
" ${object.company_id.street}<br/>\n"
" % endif\n"
" % if object.company_id.street2:\n"
" ${object.company_id.street2}<br/>\n"
" % endif\n"
" % if object.company_id.city or object.company_id.zip:\n"
" ${object.company_id.zip} ${object.company_id.city}<br/>\n"
" % endif\n"
" % if object.company_id.country_id:\n"
" ${object.company_id.state_id and ('%s, ' % "
"object.company_id.state_id.name) or ''} ${object.company_id.country_id.name "
"or ''}<br/>\n"
" % endif\n"
" </span>\n"
" % if object.company_id.phone:\n"
" <div style=\"margin-top: 0px; margin-right: 0px; margin-bottom: "
"0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: "
"0px; padding-left: 0px; \">\n"
" Phone:&nbsp; ${object.company_id.phone}\n"
" </div>\n"
" % endif\n"
" % if object.company_id.website:\n"
" <div>\n"
" Web :&nbsp;<a "
"href=\"${object.company_id.website}\">${object.company_id.website}</a>\n"
" </div>\n"
" %endif\n"
" <p></p>\n"
" </div>\n"
"</div>\n"
" "
msgstr ""
#. module: portal_sale
#: model:ir.actions.act_window,help:portal_sale.portal_action_vouchers
msgid "You don't have any refunds or payments."
msgstr ""
#. module: portal_sale
#: model:ir.model,name:portal_sale.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: portal_sale
#: model:ir.actions.act_window,name:portal_sale.action_orders_portal
#: model:ir.ui.menu,name:portal_sale.portal_sales_orders
msgid "Sale Orders"
msgstr ""
#. module: portal_sale
#: model:ir.actions.act_window,name:portal_sale.action_picking_tree
#: model:ir.ui.menu,name:portal_sale.portal_delivery
msgid "Delivery Orders"
msgstr ""
#. module: portal_sale
#: constraint:account.invoice:0
msgid "Invalid BBA Structured Communication !"
msgstr ""

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