[MERGE] branch merged with lp:openobject-addons

bzr revid: jap@tinyerp.com-20120410082948-jrn76dh7sclqg38t
This commit is contained in:
Jagdish Panchal (Open ERP) 2012-04-10 13:59:48 +05:30
commit 5dde149616
325 changed files with 9701 additions and 3419 deletions

View File

@ -37,4 +37,6 @@ import ir_sequence
import company
import res_currency
import edi
import res_config
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -125,6 +125,7 @@ module named account_voucher.
'board_account_view.xml',
"edi/invoice_action_data.xml",
"account_bank_view.xml",
"res_config_view.xml",
"account_pre_install.yml"
],
'demo_xml': [

View File

@ -50,13 +50,5 @@
id="menu_action_bank_tree"
action="action_bank_tree"/>
<record id="account_configuration_bank_todo" model="ir.actions.todo">
<field name="action_id" ref="action_bank_tree"/>
<field name="category_id" ref="category_accounting_configuration"/>
<field name="sequence">4</field>
</record>
</data>
</openerp>

View File

@ -62,48 +62,5 @@
<field name="type">automatic</field>
</record>
<record id="action_view_financial_accounts_installer" model="ir.actions.act_window">
<field name="name">Review your Financial Accounts</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.account</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'config_invisible': False}</field>
</record>
<record id="view_financial_accounts_todo" model="ir.actions.todo">
<field name="action_id" ref="action_view_financial_accounts_installer" />
<field name="category_id" ref="category_accounting_configuration" />
<field name="groups_id" eval="[(6, 0, [ref('account.group_account_user')])]" />
</record>
<record id="action_review_financial_journals_installer" model="ir.actions.act_window">
<field name="name">Review your Financial Journals</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.journal</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help">Setup your accounting journals. For bank accounts, it's better to use the 'Setup Your Bank Accounts' tool that will automatically create the accounts and journals for you.</field>
</record>
<record id="review_financial_journals_todo" model="ir.actions.todo">
<field name="action_id" ref="action_review_financial_journals_installer" />
<field name="category_id" ref="category_accounting_configuration" />
<field name="groups_id" eval="[(6, 0, [ref('account.group_account_user')])]" />
</record>
<record id="action_review_payment_terms_installer" model="ir.actions.act_window">
<field name="name">Review your Payment Terms</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.payment.term</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help">Payment terms define the conditions to pay a customer or supplier invoice in one or several payments. Customers periodic reminders will use the payment terms for each letter. Each customer or supplier can be assigned to one of these payment terms.</field>
</record>
<record id="review_payment_terms_todo" model="ir.actions.todo">
<field name="action_id" ref="action_review_payment_terms_installer" />
<field name="category_id" ref="category_accounting_configuration" />
<field name="groups_id" eval="[(6, 0, [ref('account.group_account_user')])]" />
</record>
</data>
</openerp>

View File

@ -178,6 +178,7 @@ class account_invoice(osv.osv):
return invoice_ids
_name = "account.invoice"
_inherit = ['mail.thread']
_description = 'Invoice'
_order = "id desc"
@ -355,12 +356,8 @@ class account_invoice(osv.osv):
context = {}
try:
res = super(account_invoice, self).create(cr, uid, vals, context)
for inv_id, name in self.name_get(cr, uid, [res], context=context):
ctx = context.copy()
if vals.get('type', 'in_invoice') in ('out_invoice', 'out_refund'):
ctx = self.get_log_context(cr, uid, context=ctx)
message = _("Invoice '%s' is waiting for validation.") % name
self.log(cr, uid, inv_id, message, context=ctx)
if res:
self.create_send_note(cr, uid, [res], context=context)
return res
except Exception, e:
if '"journal_id" viol' in e.args[0]:
@ -373,9 +370,7 @@ class account_invoice(osv.osv):
if context is None:
context = {}
self.write(cr, uid, ids, {'state':'paid'}, context=context)
for inv_id, name in self.name_get(cr, uid, ids, context=context):
message = _("Invoice '%s' is paid.") % name
self.log(cr, uid, inv_id, message)
self.confirm_paid_send_note(cr, uid, ids, context=context)
return True
def unlink(self, cr, uid, ids, context=None):
@ -943,6 +938,11 @@ class account_invoice(osv.osv):
move_obj.post(cr, uid, [move_id], context=ctx)
self._log_event(cr, uid, ids)
return True
def invoice_validate(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state':'open'}, context=context)
self.invoice_validate_send_note(cr, uid, ids, context=context)
return True
def line_get_convert(self, cr, uid, x, part, date, context=None):
return {
@ -1033,6 +1033,7 @@ class account_invoice(osv.osv):
# will be automatically deleted too
account_move_obj.unlink(cr, uid, move_ids, context=context)
self._log_event(cr, uid, ids, -1.0, 'Cancel Invoice')
self.invoice_cancel_send_note(cr, uid, ids, context=context)
return True
###################
@ -1240,7 +1241,36 @@ class account_invoice(osv.osv):
# Update the stored value (fields.function), so we write to trigger recompute
self.pool.get('account.invoice').write(cr, uid, ids, {}, context=context)
return True
# -----------------------------------------
# OpenChatter notifications and need_action
# -----------------------------------------
def _get_document_type(self, type):
type_dict = {
'out_invoice': 'Customer invoice',
'in_invoice': 'Supplier invoice',
'out_refund': 'Customer Refund',
'in_refund': 'Supplier Refund',
}
return type_dict.get(type, 'Invoice')
def create_send_note(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):
self.message_append_note(cr, uid, [obj.id],body=_("%s <b>created</b>.") % (self._get_document_type(obj.type)), context=context)
def invoice_validate_send_note(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):
self.message_append_note(cr, uid, [obj.id], body=_("%s <b>validated</b>.") % (self._get_document_type(obj.type)), context=context)
def confirm_paid_send_note(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):
self.message_append_note(cr, uid, [obj.id], body=_("%s <b>paid</b>.") % (self._get_document_type(obj.type)), context=context)
def invoice_cancel_send_note(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):
self.message_append_note(cr, uid, [obj.id], body=_("%s <b>cancelled</b>.") % (self._get_document_type(obj.type)), context=context)
account_invoice()
class account_invoice_line(osv.osv):

View File

@ -243,6 +243,7 @@
</field>
</page>
</notebook>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</form>
</field>
</record>
@ -303,7 +304,7 @@
<button name="action_cancel_draft" states="cancel" string="Reset to Draft" type="object" icon="terp-stock_effects-object-colorize"/>
<button name='%(action_account_state_open)d' type='action' string='Re-Open' groups="account.group_account_invoice" attrs="{'invisible':['|', ('state','&lt;&gt;','paid'), ('reconciled', '=', True)]}" icon="gtk-convert" help="This button only appears when the state of the invoice is 'paid' (showing that it has been fully reconciled) and auto-computed boolean 'reconciled' is False (depicting that it's not the case anymore). In other words, the invoice has been dereconciled and it does not fit anymore the 'paid' state. You should press this button to re-open it and let it continue its normal process after having resolved the eventual exceptions it may have created."/>
<button name="%(action_account_invoice_refund)d" type='action' string='Refund' states='open,paid' icon="gtk-execute"/>
<button name="invoice_proforma2" states="draft" string="PRO-FORMA" icon="terp-gtk-media-pause" groups="account.group_account_user"/>
<button name="invoice_proforma2" states="draft" string="PRO-FORMA" icon="terp-gtk-media-pause" groups="account.group_proforma_invoices"/>
<button name="invoice_open" states="draft,proforma2" string="Validate" icon="gtk-go-forward"/>
<button name="%(account_invoices)d" string="Print Invoice" type="action" icon="gtk-print" states="open,paid,proforma,sale,proforma2"/>
</group>
@ -338,6 +339,7 @@
</field>
</page>
</notebook>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</form>
</field>
</record>
@ -350,7 +352,7 @@
<search string="Search Invoice">
<group>
<filter name="draft" icon="terp-document-new" string="Draft" domain="[('state','=','draft')]" help="Draft Invoices"/>
<filter name="proforma" icon="terp-gtk-media-pause" string="Proforma" domain="[('state','=','proforma2')]" help="Proforma Invoices"/>
<filter name="proforma" icon="terp-gtk-media-pause" string="Proforma" domain="[('state','=','proforma2')]" help="Proforma Invoices" groups="account.group_proforma_invoices"/>
<filter name="invoices" icon="terp-dolar" string="Invoices" domain="[('state','not in',['draft','cancel'])]" help="Proforma/Open/Paid Invoices"/>
<separator orientation="vertical"/>
<filter name="unpaid" icon="terp-dolar_ok!" string="Unpaid" domain="[('state','=','open')]" help="Unpaid Invoices"/>

View File

@ -27,7 +27,7 @@
<field name="action">action_date_assign()
action_move_create()
action_number()
write({'state':'open'})</field>
invoice_validate()</field>
<field name="kind">function</field>
</record>
<record model="workflow.activity" id="act_open_test">

View File

@ -2505,15 +2505,6 @@ action = pool.get('res.config').next(cr, uid, [], context)
<field name="name">New Company Financial Setting</field>
</record>
<record id="menu_act_ir_actions_bleble" model="ir.ui.menu">
<field name="name">New Company Financial Setting</field>
<field eval="1" name="sequence"/>
<field name="parent_id" ref="account.menu_finance_accounting"/>
<field name="icon">STOCK_EXECUTE</field>
<field name="action" ref="ir_actions_server_action_wizard_multi_chart"/>
</record>
<record id="account_account_graph" model="ir.ui.view">
<field name="name">account.account.graph</field>
<field name="model">account.account</field>

View File

@ -24,6 +24,7 @@ from osv import fields, osv
class res_company(osv.osv):
_inherit = "res.company"
_columns = {
'expects_chart_of_accounts': fields.boolean('Expects a Chart of Accounts'),
'paypal_account': fields.char("Paypal Account", size=128, help="Paypal username (usually email) for receiving online payments."),
'overdue_msg': fields.text('Overdue Payments Message', translate=True),
'property_reserve_and_surplus_account': fields.property(
@ -37,6 +38,7 @@ class res_company(osv.osv):
}
_defaults = {
'expects_chart_of_accounts': True,
'overdue_msg': '''Our records indicate that the following payments are still due. If the amount
has already been paid, please disregard this notice. However, if you have any
queries regarding your account, please contact us.

View File

@ -0,0 +1,282 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Business Applications
# Copyright (C) 2004-2012 OpenERP S.A. (<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 time
import datetime
from dateutil.relativedelta import relativedelta
from operator import itemgetter
from os.path import join as opj
from tools.translate import _
from osv import osv, fields
import tools
class account_config_settings(osv.osv_memory):
_name = 'account.config.settings'
_inherit = 'res.config.settings'
_columns = {
'company_id': fields.many2one('res.company', 'Company', required=True),
'has_default_company': fields.boolean('Has default company', readonly=True),
'expects_chart_of_accounts': fields.related('company_id', 'expects_chart_of_accounts', type='boolean',
string='Chart of Accounts for this Company'),
'currency_id': fields.related('company_id', 'currency_id', type='many2one', relation='res.currency', required=True,
string='Main currency', help="Main currency of the company."),
'paypal_account': fields.related('company_id', 'paypal_account', type='char', size=128,
string='Paypal account', help="Paypal account (email) for receiving online payments (credit card, etc.)"),
'company_footer': fields.related('company_id', 'rml_footer2', type='char', size=250, readonly=True,
string='Bank Accounts on Reports', help="Bank accounts as printed on footer of reports."),
'has_chart_of_accounts': fields.boolean('Company has a chart of accounts'),
'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', domain="[('visible','=', True)]"),
'code_digits': fields.integer('# of Digits', help="No. of Digits to use for account code"),
'seq_journal': fields.boolean('Separated Journal Sequences', help="Check this box if you want to use a different sequence for each created journal. Otherwise, all will use the same sequence."),
'sale_tax': fields.many2one("account.tax.template", "Default Sale Tax"),
'purchase_tax': fields.many2one("account.tax.template", "Default Purchase Tax"),
'sale_tax_rate': fields.float('Sales Tax (%)'),
'purchase_tax_rate': fields.float('Purchase Tax (%)'),
'complete_tax_set': fields.boolean('Complete Set of Taxes', help='This boolean helps you to choose if you want to propose to the user to encode the sales and purchase rates or use the usual m2o fields. This last choice assumes that the set of tax defined for the chosen template is complete'),
'has_fiscal_year': fields.boolean('Company has a fiscal year'),
'date_start': fields.date('Start Date', required=True),
'date_stop': fields.date('End Date', required=True),
'period': fields.selection([('month', 'Monthly'), ('3months','3 Monthly')], 'Periods', required=True),
'sale_journal_id': fields.many2one('account.journal', 'Sale Journal'),
'sale_sequence_prefix': fields.related('sale_journal_id', 'sequence_id', 'prefix', type='char', string='Invoice Sequence'),
'sale_sequence_next': fields.related('sale_journal_id', 'sequence_id', 'number_next', type='integer', string='Next Invoice Number'),
'sale_refund_journal_id': fields.many2one('account.journal', 'Sale Refund Journal'),
'sale_refund_sequence_prefix': fields.related('sale_refund_journal_id', 'sequence_id', 'prefix', type='char', string='Refund Sequence'),
'sale_refund_sequence_next': fields.related('sale_refund_journal_id', 'sequence_id', 'number_next', type='integer', string='Next Refund Number'),
'purchase_journal_id': fields.many2one('account.journal', 'Purchase Journal'),
'purchase_sequence_prefix': fields.related('purchase_journal_id', 'sequence_id', 'prefix', type='char', string='Supplier Invoice Sequence'),
'purchase_sequence_next': fields.related('purchase_journal_id', 'sequence_id', 'number_next', type='integer', string='Next Supplier Invoice Number'),
'purchase_refund_journal_id': fields.many2one('account.journal', 'Purchase Refund Journal'),
'purchase_refund_sequence_prefix': fields.related('purchase_refund_journal_id', 'sequence_id', 'prefix', type='char', string='Supplier Refund Sequence'),
'purchase_refund_sequence_next': fields.related('purchase_refund_journal_id', 'sequence_id', 'number_next', type='integer', string='Next Supplier Refund Number'),
'module_account_check_writing': fields.boolean('Support check writings',
help="""This allows you to check writing and printing.
This installs the module account_check_writing."""),
'module_account_accountant': fields.boolean('Accountant Features',
help="""This allows you to access all the accounting features, like the journal items and the chart of accounts.
This installs the module account_accountant."""),
'module_account_asset': fields.boolean('Assets Management',
help="""This allows you to manage the assets owned by a company or a person.
It keeps track of the depreciation occurred on those assets, and creates account move for those depreciation lines.
This installs the module account_asset."""),
'module_account_budget': fields.boolean('Budgets Management',
help="""This allows accountants to manage analytic and crossovered budgets.
Once the master budgets and the budgets are defined,
the project managers can set the planned amount on each analytic account.
This installs the module account_budget."""),
'module_account_payment': fields.boolean('Supplier Payment Orders',
help="""This allows you to create and manage your payment orders, with purposes to
* serve as base for an easy plug-in of various automated payment mechanisms, and
* provide a more efficient way to manage invoice payments.
This installs the module account_payment."""),
'module_account_voucher': fields.boolean('Manage Customer Payments',
help="""This includes all the basic requirements of voucher entries for bank, cash, sales, purchase, expense, contra, etc.
This installs the module account_voucher."""),
'module_account_followup': fields.boolean('Customer Follow-Ups',
help="""This allows to automate letters for unpaid invoices, with multi-level recalls.
This installs the module account_followup."""),
'module_account_analytic_plans': fields.boolean('Support Multiple Analytic Plans',
help="""This allows to use several analytic plans, according to the general journal.
This installs the module account_analytic_plans."""),
'module_account_analytic_default': fields.boolean('Rules for Analytic Assignation',
help="""Set default values for your analytic accounts.
Allows to automatically select analytic accounts based on criteria like product, partner, user, company, date.
This installs the module account_analytic_default."""),
'module_account_invoice_layout': fields.boolean('Allow notes and subtotals',
help="""This provides some features to improve the layout of invoices.
It gives you the possibility to:
* order all the lines of an invoice
* add titles, comment lines, sub total lines
* draw horizontal lines and put page breaks.
This installs the module account_invoice_layout."""),
'group_proforma_invoices': fields.boolean('Allow Pro-forma Invoices',
implied_group='account.group_proforma_invoices',
help="Allows you to put invoices in pro-forma state."),
'default_sale_tax': fields.many2one('account.tax', 'Default Sale Tax'),
'default_purchase_tax': fields.many2one('account.tax', 'Default Purchase Tax'),
}
def _default_company(self, cr, uid, context=None):
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
return user.company_id.id
def _default_has_default_company(self, cr, uid, context=None):
count = self.pool.get('res.company').search_count(cr, uid, [], context=context)
return bool(count == 1)
_defaults = {
'company_id': _default_company,
'has_default_company': _default_has_default_company,
'seq_journal': True,
'date_start': lambda *a: time.strftime('%Y-01-01'),
'date_stop': lambda *a: time.strftime('%Y-12-31'),
'period': 'month',
}
def create(self, cr, uid, values, context=None):
id = super(account_config_settings, self).create(cr, uid, values, context)
# Hack: to avoid some nasty bug, related fields are not written upon record creation.
# Hence we write on those fields here.
vals = {}
for fname, field in self._columns.iteritems():
if isinstance(field, fields.related) and fname in values:
vals[fname] = values[fname]
self.write(cr, uid, [id], vals, context)
return id
def onchange_company_id(self, cr, uid, ids, company_id):
# update related fields
company = self.pool.get('res.company').browse(cr, uid, company_id)
has_chart_of_accounts = company_id not in self.pool.get('account.installer').get_unconfigured_cmp(cr, uid)
fiscalyear_count = self.pool.get('account.fiscalyear').search_count(cr, uid,
[('date_start', '<=', time.strftime('%Y-%m-%d')), ('date_stop', '>=', time.strftime('%Y-%m-%d')),
('company_id', '=', company_id)])
values = {
'expects_chart_of_accounts': company.expects_chart_of_accounts,
'currency_id': company.currency_id.id,
'paypal_account': company.paypal_account,
'company_footer': company.rml_footer2,
'has_chart_of_accounts': has_chart_of_accounts,
'has_fiscal_year': bool(fiscalyear_count),
'chart_template_id': False,
}
# update journals and sequences
for journal_type in ('sale', 'sale_refund', 'purchase', 'purchase_refund'):
for suffix in ('_journal_id', '_sequence_prefix', '_sequence_next'):
values[journal_type + suffix] = False
journal_obj = self.pool.get('account.journal')
journal_ids = journal_obj.search(cr, uid, [('company_id', '=', company_id)])
for journal in journal_obj.browse(cr, uid, journal_ids):
if journal.type in ('sale', 'sale_refund', 'purchase', 'purchase_refund'):
values.update({
journal.type + '_journal_id': journal.id,
journal.type + '_sequence_prefix': journal.sequence_id.prefix,
journal.type + '_sequence_next': journal.sequence_id.number_next,
})
# update taxes
ir_values = self.pool.get('ir.values')
taxes_id = ir_values.get_default(cr, uid, 'product.product', 'taxes_id', company_id=company_id)
supplier_taxes_id = ir_values.get_default(cr, uid, 'product.product', 'supplier_taxes_id', company_id=company_id)
values.update({
'default_sale_tax': isinstance(taxes_id, list) and taxes_id[0] or taxes_id,
'default_purchase_tax': isinstance(supplier_taxes_id, list) and supplier_taxes_id[0] or supplier_taxes_id,
})
return {'value': values}
def onchange_chart_template_id(self, cr, uid, ids, chart_template_id, context=None):
tax_templ_obj = self.pool.get('account.tax.template')
res = {'value': {
'complete_tax_set': False, 'sale_tax': False, 'purchase_tax': False,
'sale_tax_rate': 15, 'purchase_tax_rate': 15,
}}
if chart_template_id:
# update complete_tax_set, sale_tax and purchase_tax
chart_template = self.pool.get('account.chart.template').browse(cr, uid, chart_template_id, context=context)
res['value'].update({'complete_tax_set': chart_template.complete_tax_set})
if chart_template.complete_tax_set:
# default tax is given by the lowest sequence. For same sequence we will take the latest created as it will be the case for tax created while isntalling the generic chart of account
sale_tax_ids = tax_templ_obj.search(cr, uid,
[("chart_template_id", "=", chart_template_id), ('type_tax_use', 'in', ('sale','all'))],
order="sequence, id desc")
purchase_tax_ids = tax_templ_obj.search(cr, uid,
[("chart_template_id", "=", chart_template_id), ('type_tax_use', 'in', ('purchase','all'))],
order="sequence, id desc")
res['value']['sale_tax'] = sale_tax_ids and sale_tax_ids[0] or False
res['value']['purchase_tax'] = purchase_tax_ids and purchase_tax_ids[0] or False
if chart_template.code_digits:
res['value']['code_digits'] = chart_template.code_digits
return res
def onchange_tax_rate(self, cr, uid, ids, rate, context=None):
return {'value': {'purchase_tax_rate': rate or False}}
def onchange_start_date(self, cr, uid, id, start_date):
if start_date:
start_date = datetime.datetime.strptime(start_date, "%Y-%m-%d")
end_date = (start_date + relativedelta(months=12)) - relativedelta(days=1)
return {'value': {'date_stop': end_date.strftime('%Y-%m-%d')}}
return {}
def set_default_taxes(self, cr, uid, ids, context=None):
""" set default sale and purchase taxes for products """
ir_values = self.pool.get('ir.values')
config = self.browse(cr, uid, ids[0], context)
ir_values.set_default(cr, uid, 'product.product', 'taxes_id',
config.default_sale_tax and [config.default_sale_tax.id] or False, company_id=config.company_id.id)
ir_values.set_default(cr, uid, 'product.product', 'supplier_taxes_id',
config.default_purchase_tax and [config.default_purchase_tax.id] or False, company_id=config.company_id.id)
def set_chart_of_accounts(self, cr, uid, ids, context=None):
""" install a chart of accounts for the given company (if required) """
config = self.browse(cr, uid, ids[0], context)
if config.chart_template_id:
assert config.expects_chart_of_accounts and not config.has_chart_of_accounts
wizard = self.pool.get('wizard.multi.charts.accounts')
wizard_id = wizard.create(cr, uid, {
'company_id': config.company_id.id,
'chart_template_id': config.chart_template_id.id,
'code_digits': config.code_digits or 6,
'seq_journal': config.seq_journal,
'sale_tax': config.sale_tax.id,
'purchase_tax': config.purchase_tax.id,
'sale_tax_rate': config.sale_tax_rate,
'purchase_tax_rate': config.purchase_tax_rate,
'complete_tax_set': config.complete_tax_set,
}, context)
wizard.execute(cr, uid, [wizard_id], context)
def set_fiscalyear(self, cr, uid, ids, context=None):
""" create a fiscal year for the given company (if necessary) """
config = self.browse(cr, uid, ids[0], context)
if config.has_chart_of_accounts or config.chart_template_id:
fiscalyear = self.pool.get('account.fiscalyear')
fiscalyear_count = fiscalyear.search_count(cr, uid,
[('date_start', '<=', config.date_start), ('date_stop', '>=', config.date_stop),
('company_id', '=', config.company_id.id)],
context=context)
if not fiscalyear_count:
name = code = config.date_start[:4]
if int(name) != int(config.date_stop[:4]):
name = config.date_start[:4] +'-'+ config.date_stop[:4]
code = config.date_start[2:4] +'-'+ config.date_stop[2:4]
vals = {
'name': name,
'code': code,
'date_start': config.date_start,
'date_stop': config.date_stop,
'company_id': config.company_id.id,
}
fiscalyear_id = fiscalyear.create(cr, uid, vals, context=context)
if config.period == 'month':
fiscalyear.create_period(cr, uid, [fiscalyear_id])
elif config.period == '3months':
fiscalyear.create_period3(cr, uid, [fiscalyear_id])
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="open_account_charts_modules" model="ir.actions.act_window">
<field name="name">Chart Templates</field>
<field name="res_model">ir.module.module</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context" eval="{'search_default_category_id': ref('base.module_category_localization_account_charts')}"/>
<field name="search_view_id" ref="base.view_module_filter"/>
</record>
<record id="view_account_config_settings" model="ir.ui.view">
<field name="name">account settings</field>
<field name="model">account.config.settings</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Configure Accounting">
<field name="has_default_company" invisible="1" />
<field name="company_id" widget="selection" on_change="onchange_company_id(company_id)"
attrs="{'invisible': [('has_default_company', '=', True)]}"/>
<field name="expects_chart_of_accounts"/>
<field name="has_chart_of_accounts" invisible="1"/>
<group string="No Chart of Accounts exists for this Company" colspan="4" attrs="{'invisible': ['|', ('expects_chart_of_accounts','=',False), ('has_chart_of_accounts','=',True)]}">
<label string="Please select a chart template to install a chart of accounts." colspan="4"/>
<field name="chart_template_id" widget="selection" on_change="onchange_chart_template_id(chart_template_id)" domain="[('visible','=', True)]"/>
<button string="Install More Chart Templates" icon="gtk-go-forward"
name="%(open_account_charts_modules)d" type="action"/>
<field name ="code_digits" groups="account.group_account_user"/>
<field name ="seq_journal" groups="base.group_extended"/>
<newline/>
<field name ="complete_tax_set" invisible="1"/>
<field name="sale_tax" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',False)]}"
domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('sale','all'))]"/>
<field name="purchase_tax" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',False)]}"
domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('purchase', 'all'))]"/>
<field name ="sale_tax_rate" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',True)]}" on_change="onchange_tax_rate(sale_tax_rate)"/>
<field name ="purchase_tax_rate" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',True)]}"/>
</group>
<field name="has_fiscal_year" invisible="1"/>
<group string="No Fiscal Year exists for this Company" colspan="4" attrs="{'invisible': ['|', ('expects_chart_of_accounts','=',False), ('has_fiscal_year','=',True)]}">
<field name="date_start" on_change="onchange_start_date(date_start)"/>
<field name="date_stop"/>
<field name="period" colspan="4"/>
</group>
<group colspan="4">
<separator string="Accounting Configuration" colspan="4"/>
<field name ="complete_tax_set" invisible="1"/>
<newline/>
<group colspan="2" col="2">
<field name="default_sale_tax" domain="[('type_tax_use','=','sale'), ('company_id','=',company_id)]"/>
<field name="module_account_accountant"/>
<field name="module_account_asset"/>
</group>
<group colspan="2" col="2">
<field name="default_purchase_tax" domain="[('type_tax_use','=','purchase'), ('company_id','=',company_id)]"/>
<field name="currency_id" widget="selection"/>
<field name="module_account_budget"/>
</group>
</group>
<group colspan="2" col="2">
<separator string="Customer Invoices" colspan="2"/>
<field name="sale_journal_id" invisible="1"/>
<field name="sale_sequence_next" attrs="{'readonly': [('sale_journal_id','=',False)]}"/>
<field name="sale_refund_journal_id" invisible="1"/>
<field name="sale_refund_sequence_next" attrs="{'readonly': [('sale_refund_journal_id','=',False)]}"/>
<field name="module_account_invoice_layout"/>
<field name="module_account_voucher"/>
<field name="module_account_followup"/>
<field name="group_proforma_invoices"/>
</group>
<group colspan="2" col="2">
<separator string="Supplier Invoices" colspan="2"/>
<field name="purchase_journal_id" invisible="1"/>
<field name="purchase_sequence_next" attrs="{'readonly': [('purchase_journal_id','=',False)]}"/>
<field name="purchase_refund_journal_id" invisible="1"/>
<field name="purchase_refund_sequence_next" attrs="{'readonly': [('purchase_refund_journal_id','=',False)]}"/>
<field name="module_account_payment"/>
</group>
<group colspan="2" col="2">
<separator string="Electronic Payments" colspan="2"/>
<field name="paypal_account"/>
</group>
<group colspan="2" col="2">
<separator string="Bank &amp; Cash" colspan="2"/>
<label string="Configure Bank Accounts :"/>
<button name="%(action_bank_tree)d" string="Configure Bank Accounts" icon="gtk-go-forward" type="action"/>
<field name="company_footer"/>
<field name="module_account_check_writing"/>
</group>
<group colspan="2" col="2">
<separator string="Analytic Accounting" colspan="2"/>
<group name="analytic_accounting" colspan="2"/>
<field name="module_account_analytic_plans"/>
<field name="module_account_analytic_default"/>
</group>
<newline/>
<label colspan="2"/>
<button string="Cancel" icon="gtk-cancel" special="cancel"/>
<button string="Apply" icon="gtk-apply" type="object" name="execute"/>
</form>
</field>
</record>
<record id="action_account_config" model="ir.actions.act_window">
<field name="name">Configure Accounting</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.config.settings</field>
<field name="view_mode">form</field>
<field name="target">inline</field>
</record>
<menuitem id="menu_account_config" name="Accounting" parent="base.menu_config"
sequence="6" action="action_account_config"/>
</data>
</openerp>

View File

@ -4,18 +4,24 @@
<record id="group_account_invoice" model="res.groups">
<field name="name">Invoicing &amp; Payments</field>
<field name="category_id" ref="base.module_category_accounting_and_finance"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<record id="group_account_user" model="res.groups" context="{'noadmin':True}">
<record id="group_account_user" model="res.groups">
<field name="name">Accountant</field>
<field name="category_id" ref="base.module_category_accounting_and_finance"/>
<field name="implied_ids" eval="[(4, ref('group_account_invoice'))]"/>
</record>
<record id="group_account_manager" model="res.groups" context="{'noadmin':True}">
<record id="group_account_manager" model="res.groups">
<field name="name">Manager</field>
<field name="category_id" ref="base.module_category_accounting_and_finance"/>
<field name="implied_ids" eval="[(4, ref('group_account_user'))]"/>
</record>
<record id="group_proforma_invoices" model="res.groups">
<field name="name">Pro-forma Invoices</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="account_move_comp_rule" model="ir.rule">
<field name="name">Account Entry</field>
<field ref="model_account_move" name="model_id"/>

View File

@ -3,15 +3,15 @@
<data>
<!--
Analytic Account form
Analytic Account form
Remove information on Account data => because they move on analysis sheet
create a page with invoicing informations
-->
<record id="account_analytic_account_invoice_stat_form" model="ir.ui.view">
<field name="name">account.analytic.account.invoice.stat.form.inherit</field>
<field name="model">account.analytic.account</field>
<field name="type">form</field>
<field name="name">account.analytic.account.invoice.stat.form.inherit</field>
<field name="model">account.analytic.account</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr_timesheet_invoice.account_analytic_account_form_form"/>
<field eval="18" name="priority"/>
<field name="arch" type="xml">
@ -30,9 +30,9 @@
</record>
<record id="hr_timesheet.account_analytic_account_form_form" model="ir.ui.view">
<field name="name">account.analytic.account.invoice.form.inherit</field>
<field name="model">account.analytic.account</field>
<field name="type">form</field>
<field name="name">account.analytic.account.invoice.form.inherit</field>
<field name="model">account.analytic.account</field>
<field name="type">form</field>
<field name="inherit_id" ref="account.view_account_analytic_account_form"/>
<field eval="18" name="priority"/>
<field name="arch" type="xml">
@ -69,7 +69,7 @@
</tree>
</field>
</page>
<page string="Stats by user">
<page string="Stats by user">
<field colspan="4" name="user_ids" nolabel="1">
<tree string="Users">
<field name="user"/>
@ -97,14 +97,14 @@
</field>
</field>
</record>
<record id="view_account_analytic_account_tree_c2c_3" model="ir.ui.view">
<field name="name">account.analytic.account.tree</field>
<field name="model">account.analytic.account</field>
<record id="view_account_analytic_account_tree_c2c_3" model="ir.ui.view">
<field name="name">account.analytic.account.tree</field>
<field name="model">account.analytic.account</field>
<field name="inherit_id" ref="account.view_account_analytic_account_list"/>
<field name="type">tree</field>
<field name="arch" type="xml">
<field name="date" position="before">
<field name="type">tree</field>
<field name="arch" type="xml">
<field name="date" position="before">
<field name="last_invoice_date"/>
<field name="ca_to_invoice"/>
</field>

View File

@ -71,7 +71,6 @@ of distribution models.
'account_analytic_plans_report.xml',
'wizard/analytic_plan_create_model_view.xml',
'wizard/account_crossovered_analytic_view.xml',
'account_analytic_plans_installer_view.xml'
],
'demo_xml': [],
'test': ['test/acount_analytic_plans_report.yml'],

View File

@ -1,21 +0,0 @@
<openerp>
<data>
<record model="ir.actions.act_window" id="account_analytic_plan_form_action_installer">
<field name="name">Define your Analytic Plans</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.analytic.plan</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" eval="False"/>
<field name="help">To setup a multiple analytic plans environment, you must define the root analytic accounts for each plan set. Then, you must attach a plan set to your account journals.</field>
</record>
<record id="account_analytic_plan_installer_todo" model="ir.actions.todo">
<field name="action_id" ref="account_analytic_plan_form_action_installer"/>
<field name="category_id" ref="account.category_accounting_configuration"/>
<field name="sequence">15</field>
</record>
</data>
</openerp>

View File

@ -316,18 +316,5 @@
<menuitem parent="menu_finance_config_assets" id="menu_action_account_asset_asset_list_normal" action="action_account_asset_asset_list_normal"/>
<record model="ir.actions.act_window" id="action_account_asset_asset_form_normal">
<field name="name">Review Asset Categories</field>
<field name="res_model">account.asset.category</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<record id="asset_category_form_view_todo" model="ir.actions.todo">
<field name="action_id" ref="action_account_asset_asset_form_normal"/>
<field name="category_id" ref="account.category_accounting_configuration"/>
<field name="sequence">3</field>
</record>
</data>
</openerp>

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-01-11 09:11+0000\n"
"PO-Revision-Date: 2012-04-06 04:57+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <openerp-i18n-czech@lists.launchpad.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 07:10+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: account_asset
@ -401,6 +401,8 @@ msgid ""
"currency. You should remove the secondary currency on the account or select "
"a multi-currency view on the journal."
msgstr ""
"Vybraný účet vašeho záznamu deníku vynucuje použití druhotné měny. Měli "
"byste odstranit druhotnou měnu z účtu nebo vybrat více-měny."
#. module: account_asset
#: view:asset.asset.report:0
@ -445,6 +447,8 @@ msgid ""
"The date of your Journal Entry is not in the defined period! You should "
"change the date or remove this constraint from the journal."
msgstr ""
"Datum vašeho záznamu deníku není v určeném období! Měli byste změnit datum "
"nebo odstranit omezení z deníku."
#. module: account_asset
#: field:account.asset.asset,note:0 field:account.asset.category,note:0
@ -507,7 +511,7 @@ msgstr "Zaúčtované řádky odpisů"
#. module: account_asset
#: constraint:account.move.line:0
msgid "Company must be the same for its related account and period."
msgstr ""
msgstr "Společnost musí být stejná pro své vztažené účty a období."
#. module: account_asset
#: field:account.asset.asset,child_ids:0
@ -537,7 +541,7 @@ msgstr "Majetek zakoupený v tomto měsíci"
#. module: account_asset
#: constraint:account.move.line:0
msgid "You can not create journal items on an account of type view."
msgstr ""
msgstr "Nemůžete vytvořit položky deníku v účtu typu pohled."
#. module: account_asset
#: view:asset.asset.report:0
@ -769,7 +773,7 @@ msgstr "Vytvořit pohyby majetku"
#. module: account_asset
#: constraint:account.move.line:0
msgid "You can not create journal items on closed account."
msgstr ""
msgstr "Nemůžete vytvořit položky deníku v uzavřeném účtu."
#. module: account_asset
#: model:ir.actions.act_window,help:account_asset.action_asset_asset_report

View File

@ -0,0 +1,23 @@
# Czech translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-04-06 04:54+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: account_cancel
#: view:account.invoice:0
msgid "Cancel"
msgstr "Zrušit"

View File

@ -0,0 +1,199 @@
# Arabic translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-04-06 00:34+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check on Top"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.act_window,help:account_check_writing.action_write_check
msgid ""
"The check payment form allows you to track the payment you do to your "
"suppliers specially by check. When you select a supplier, the payment method "
"and an amount for the payment, OpenERP will propose to reconcile your "
"payment with the open supplier invoices or bills.You can print the check"
msgstr ""
#. module: account_check_writing
#: view:account.voucher:0
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_bottom
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_middle
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_top
msgid "Print Check"
msgstr ""
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check in middle"
msgstr ""
#. module: account_check_writing
#: help:res.company,check_layout:0
msgid ""
"Check on top is compatible with Quicken, QuickBooks and Microsoft Money. "
"Check in middle is compatible with Peachtree, ACCPAC and DacEasy. Check on "
"bottom is compatible with Peachtree, ACCPAC and DacEasy only"
msgstr ""
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check on bottom"
msgstr ""
#. module: account_check_writing
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr "خطأ! لا يمكنك إنشاء شركات متداخلة (شركات تستخدم نفسها)."
#. module: account_check_writing
#: help:account.journal,allow_check_writing:0
msgid "Check this if the journal is to be used for writing checks."
msgstr ""
#. module: account_check_writing
#: field:account.journal,allow_check_writing:0
msgid "Allow Check writing"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Description"
msgstr "الوصف"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_journal
msgid "Journal"
msgstr "اليومية"
#. module: account_check_writing
#: model:ir.actions.act_window,name:account_check_writing.action_write_check
#: model:ir.ui.menu,name:account_check_writing.menu_action_write_check
msgid "Write Checks"
msgstr "كتابة شيك"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Discount"
msgstr "الخصم"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Original Amount"
msgstr "المبلغ الأصلي"
#. module: account_check_writing
#: view:res.company:0
msgid "Configuration"
msgstr "إعدادات"
#. module: account_check_writing
#: field:account.voucher,allow_check:0
msgid "Allow Check Writing"
msgstr "سماح بكتابة شيك"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Payment"
msgstr "الدفع"
#. module: account_check_writing
#: field:account.journal,use_preprint_check:0
msgid "Use Preprinted Check"
msgstr ""
#. module: account_check_writing
#: sql_constraint:res.company:0
msgid "The company name must be unique !"
msgstr "اسم الشركة يجب أن يكون فريداً !"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Due Date"
msgstr "تاريخ الإستحقاق"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_res_company
msgid "Companies"
msgstr "الشركات"
#. module: account_check_writing
#: view:res.company:0
msgid "Default Check layout"
msgstr ""
#. module: account_check_writing
#: constraint:account.journal:0
msgid ""
"Configuration error! The currency chosen should be shared by the default "
"accounts too."
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
msgid "Balance Due"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Check Amount"
msgstr ""
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_voucher
msgid "Accounting Voucher"
msgstr "القسيمة المحاسبية"
#. module: account_check_writing
#: sql_constraint:account.journal:0
msgid "The name of the journal must be unique per company !"
msgstr "يجب ان يكون الاسم لليومية فريد لكل شركة!"
#. module: account_check_writing
#: sql_constraint:account.journal:0
msgid "The code of the journal must be unique per company !"
msgstr "يجب ان يكون الكود لليومية فريد لكل شركة !"
#. module: account_check_writing
#: field:account.voucher,amount_in_word:0
msgid "Amount in Word"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.top:0
msgid "Open Balance"
msgstr "فتح رصيد"
#. module: account_check_writing
#: field:res.company,check_layout:0
msgid "Choose Check layout"
msgstr ""

View File

@ -157,25 +157,5 @@
</field>
</record>
<!-- Configure Follow-Ups Wizard -->
<record id="action_view_account_followup_followup_form" model="ir.actions.act_window">
<field name="name">Review Invoicing Follow-Ups</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account_followup.followup</field>
<field name="view_type">form</field>
<field name="view_mode">form,tree</field>
<field name="context" eval="'{\'res_id\': %s}' % (ref('demo_followup1'),)"/>
<field name="view_id" ref="view_account_followup_followup_form"/>
</record>
<!-- register configuration wizard -->
<record id="config_wizard_view_account_followup_followup_form" model="ir.actions.todo">
<field name="action_id" ref="action_view_account_followup_followup_form"/>
<field name="category_id" ref="account.category_accounting_configuration"/>
</record>
</data>
</openerp>

View File

@ -4,6 +4,7 @@
<record id="group_account_payment" model="res.groups">
<field name="name">Accounting / Payments</field>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<record id="account.group_account_invoice" model="res.groups">
<field name="implied_ids" eval="[(4, ref('group_account_payment'))]"/>

View File

@ -202,12 +202,19 @@ class account_voucher(osv.osv):
line_dr_ids = resolve_o2m_operations(cr, uid, line_osv, line_dr_ids, ['amount'], context)
line_cr_ids = resolve_o2m_operations(cr, uid, line_osv, line_cr_ids, ['amount'], context)
#loop into the lines to see if there is an amount allocated on a voucher line with a currency different than the voucher currency
#compute the field is_multi_currency that is used to hide/display options linked to secondary currency on the voucher
is_multi_currency = False
for voucher_line in line_dr_ids+line_cr_ids:
if voucher_line.get('currency_id',False) != voucher_currency:
is_multi_currency = True
break
if voucher_currency:
# if the voucher currency is not False, it means it is different than the company currency and we need to display the options
is_multi_currency = True
else:
#loop on the voucher lines to see if one of these has a secondary currency. If yes, we need to define the options
for voucher_line in line_dr_ids+line_cr_ids:
company_currency = False
company_currency = voucher_line.get('move_line_id', False) and self.pool.get('account.move.line').browse(cr, uid, voucher_line.get('move_line_id'), context=context).company_id.currency_id.id
if voucher_line.get('currency_id', company_currency) != company_currency:
is_multi_currency = True
break
return {'value': {'writeoff_amount': self._compute_writeoff_amount(cr, uid, line_dr_ids, line_cr_ids, amount), 'is_multi_currency': is_multi_currency}}
def _get_writeoff_amount(self, cr, uid, ids, name, args, context=None):

View File

@ -15,7 +15,7 @@
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record id="group_analytic_accounting" model="res.groups" context="{'noadmin':True}">
<record id="group_analytic_accounting" model="res.groups">
<field name="name">Analytic Accounting</field>
<field name="category_id" ref="base.module_category_usability"/>
</record>

View File

@ -0,0 +1,79 @@
# Japanese translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-04-08 05:16+0000\n"
"Last-Translator: Masaki Yamaya <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-09 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: analytic_user_function
#: field:analytic.user.funct.grid,product_id:0
msgid "Product"
msgstr "商品"
#. module: analytic_user_function
#: model:ir.model,name:analytic_user_function.model_analytic_user_funct_grid
msgid "Relation table between users and products on a analytic account"
msgstr "分析アカウントのユーザと商品の関係テーブル"
#. module: analytic_user_function
#: constraint:hr.analytic.timesheet:0
msgid "You cannot modify an entry in a Confirmed/Done timesheet !."
msgstr "確認済みのタイムシートの項目を変更することはできません。"
#. module: analytic_user_function
#: field:analytic.user.funct.grid,account_id:0
#: model:ir.model,name:analytic_user_function.model_account_analytic_account
msgid "Analytic Account"
msgstr "分析アカウント"
#. module: analytic_user_function
#: view:account.analytic.account:0
#: field:account.analytic.account,user_product_ids:0
msgid "Users/Products Rel."
msgstr "ユーザ・商品の関係"
#. module: analytic_user_function
#: field:analytic.user.funct.grid,user_id:0
msgid "User"
msgstr "ユーザ"
#. module: analytic_user_function
#: code:addons/analytic_user_function/analytic_user_function.py:96
#: code:addons/analytic_user_function/analytic_user_function.py:131
#, python-format
msgid "There is no expense account define for this product: \"%s\" (id:%d)"
msgstr "商品 \"%s\" (id:%d) のアカウントが定義されていません。"
#. module: analytic_user_function
#: code:addons/analytic_user_function/analytic_user_function.py:95
#: code:addons/analytic_user_function/analytic_user_function.py:130
#, python-format
msgid "Error !"
msgstr "エラー"
#. module: analytic_user_function
#: constraint:account.analytic.account:0
msgid "Error! You can not create recursive analytic accounts."
msgstr "エラー。反復した分析アカウントを作ることはできません"
#. module: analytic_user_function
#: model:ir.model,name:analytic_user_function.model_hr_analytic_timesheet
msgid "Timesheet Line"
msgstr "タイムシートの行"
#. module: analytic_user_function
#: view:analytic.user.funct.grid:0
msgid "User's Product for this Analytic Account"
msgstr "この分析アカウントのユーザの商品"

View File

@ -0,0 +1,135 @@
# Japanese translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2012-04-08 06:15+0000\n"
"Last-Translator: Masaki Yamaya <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-09 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: association
#: field:profile.association.config.install_modules_wizard,wiki:0
msgid "Wiki"
msgstr ""
#. module: association
#: view:profile.association.config.install_modules_wizard:0
msgid "Event Management"
msgstr "イベント管理"
#. module: association
#: field:profile.association.config.install_modules_wizard,project_gtd:0
msgid "Getting Things Done"
msgstr "物事を完了"
#. module: association
#: model:ir.module.module,description:association.module_meta_information
msgid "This module is to create Profile for Associates"
msgstr ""
#. module: association
#: field:profile.association.config.install_modules_wizard,progress:0
msgid "Configuration Progress"
msgstr "設定を進行中"
#. module: association
#: view:profile.association.config.install_modules_wizard:0
msgid ""
"Here are specific applications related to the Association Profile you "
"selected."
msgstr ""
#. module: association
#: view:profile.association.config.install_modules_wizard:0
msgid "title"
msgstr "タイトル"
#. module: association
#: help:profile.association.config.install_modules_wizard,event_project:0
msgid "Helps you to manage and organize your events."
msgstr ""
#. module: association
#: field:profile.association.config.install_modules_wizard,config_logo:0
msgid "Image"
msgstr "画像"
#. module: association
#: help:profile.association.config.install_modules_wizard,hr_expense:0
msgid ""
"Tracks and manages employee expenses, and can automatically re-invoice "
"clients if the expenses are project-related."
msgstr ""
#. module: association
#: help:profile.association.config.install_modules_wizard,project_gtd:0
msgid ""
"GTD is a methodology to efficiently organise yourself and your tasks. This "
"module fully integrates GTD principle with OpenERP's project management."
msgstr ""
#. module: association
#: view:profile.association.config.install_modules_wizard:0
msgid "Resources Management"
msgstr ""
#. module: association
#: model:ir.module.module,shortdesc:association.module_meta_information
msgid "Association profile"
msgstr ""
#. module: association
#: field:profile.association.config.install_modules_wizard,hr_expense:0
msgid "Expenses Tracking"
msgstr ""
#. module: association
#: model:ir.actions.act_window,name:association.action_config_install_module
#: view:profile.association.config.install_modules_wizard:0
msgid "Association Application Configuration"
msgstr ""
#. module: association
#: help:profile.association.config.install_modules_wizard,wiki:0
msgid ""
"Lets you create wiki pages and page groups in order to keep track of "
"business knowledge and share it with and between your employees."
msgstr ""
#. module: association
#: help:profile.association.config.install_modules_wizard,project:0
msgid ""
"Helps you manage your projects and tasks by tracking them, generating "
"plannings, etc..."
msgstr ""
#. module: association
#: model:ir.model,name:association.model_profile_association_config_install_modules_wizard
msgid "profile.association.config.install_modules_wizard"
msgstr ""
#. module: association
#: field:profile.association.config.install_modules_wizard,event_project:0
msgid "Events"
msgstr ""
#. module: association
#: view:profile.association.config.install_modules_wizard:0
#: field:profile.association.config.install_modules_wizard,project:0
msgid "Project Management"
msgstr ""
#. module: association
#: view:profile.association.config.install_modules_wizard:0
msgid "Configure"
msgstr ""

View File

@ -16,6 +16,7 @@
<field name="name">Manager</field>
<field name="category_id" ref="module_category_auction"/>
<field name="implied_ids" eval="[(4, ref('group_auction_user'))]"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
</data>

View File

@ -0,0 +1,113 @@
# Arabic translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-04-06 00:53+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. #-#-#-#-# auth_openid.pot (OpenERP Server 6.1rc1) #-#-#-#-#
#. module: auth_openid
#. #-#-#-#-# auth_openid.pot.web (PROJECT VERSION) #-#-#-#-#
#. openerp-web
#: view:res.users:0
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:12
msgid "OpenID"
msgstr "معرف OpenID"
#. #-#-#-#-# auth_openid.pot (OpenERP Server 6.1rc1) #-#-#-#-#
#. module: auth_openid
#. #-#-#-#-# auth_openid.pot.web (PROJECT VERSION) #-#-#-#-#
#. openerp-web
#: field:res.users,openid_url:0
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:47
msgid "OpenID URL"
msgstr "رابط OpenID"
#. module: auth_openid
#: help:res.users,openid_email:0
msgid "Used for disambiguation in case of a shared OpenID URL"
msgstr "تستخدم للتفرقة في حالة إستخدام معرف OpenID مشترك"
#. module: auth_openid
#: sql_constraint:res.users:0
msgid "You can not have two users with the same login !"
msgstr "لا يمكن ان يكون هناك مستخدمان بنفس اسم الدخول!"
#. module: auth_openid
#: field:res.users,openid_email:0
msgid "OpenID Email"
msgstr "بريد OpenID"
#. module: auth_openid
#: constraint:res.users:0
msgid "The chosen company is not in the allowed companies for this user"
msgstr ""
"الشركة المختارة غير مدرجة ضمن قائمة الشركات المسموح بها لهذا المستخدم"
#. module: auth_openid
#: field:res.users,openid_key:0
msgid "OpenID Key"
msgstr "مفتاح OpenID"
#. module: auth_openid
#: model:ir.model,name:auth_openid.model_res_users
msgid "res.users"
msgstr "res.users"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:8
msgid "Password"
msgstr "كلمة المرور"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:9
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:10
msgid "Google"
msgstr "جوجل"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:10
msgid "Google Apps"
msgstr "برامج جوجل"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:11
msgid "Launchpad"
msgstr "لانشباد (Launchpad)"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:20
msgid "Google Apps Domain:"
msgstr "نطاق برامج جوجل:"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:24
msgid "Username:"
msgstr "اسم المستخدم:"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:28
msgid "OpenID URL:"
msgstr "رابط OpenID:"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:35
msgid "Google Apps Domain"
msgstr "نطاق برامج جوجل"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:41
msgid "Username"
msgstr "اسم المستخدم"

View File

@ -0,0 +1,112 @@
# Serbian Latin translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-04-05 15:20+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian Latin <sr@latin@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-06 04:37+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. #-#-#-#-# auth_openid.pot (OpenERP Server 6.1rc1) #-#-#-#-#
#. module: auth_openid
#. #-#-#-#-# auth_openid.pot.web (PROJECT VERSION) #-#-#-#-#
#. openerp-web
#: view:res.users:0
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:12
msgid "OpenID"
msgstr "OpenID"
#. #-#-#-#-# auth_openid.pot (OpenERP Server 6.1rc1) #-#-#-#-#
#. module: auth_openid
#. #-#-#-#-# auth_openid.pot.web (PROJECT VERSION) #-#-#-#-#
#. openerp-web
#: field:res.users,openid_url:0
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:47
msgid "OpenID URL"
msgstr "OpenID URL"
#. module: auth_openid
#: help:res.users,openid_email:0
msgid "Used for disambiguation in case of a shared OpenID URL"
msgstr "Koristi se za razlikovanje u slučaju deljenog OpenID URL-a"
#. module: auth_openid
#: sql_constraint:res.users:0
msgid "You can not have two users with the same login !"
msgstr "Ne možete imati dva korisnika sa istom prijavom!"
#. module: auth_openid
#: field:res.users,openid_email:0
msgid "OpenID Email"
msgstr "OpenID Email"
#. module: auth_openid
#: constraint:res.users:0
msgid "The chosen company is not in the allowed companies for this user"
msgstr "Odabrano preduzeće nije u dozvoljenim preduzećima za ovog korisnioka"
#. module: auth_openid
#: field:res.users,openid_key:0
msgid "OpenID Key"
msgstr "OpenID Ključ"
#. module: auth_openid
#: model:ir.model,name:auth_openid.model_res_users
msgid "res.users"
msgstr "res.users"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:8
msgid "Password"
msgstr "Lozinka"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:9
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:10
msgid "Google"
msgstr "Google"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:10
msgid "Google Apps"
msgstr "Google-ove aplikacije"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:11
msgid "Launchpad"
msgstr "Launchpad"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:20
msgid "Google Apps Domain:"
msgstr "Domen Google-ovih aplikacija"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:24
msgid "Username:"
msgstr "Korisničko ime:"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:28
msgid "OpenID URL:"
msgstr "OpenID URL"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:35
msgid "Google Apps Domain"
msgstr "Domen Google-ovih aplikacija"
#. openerp-web
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:41
msgid "Username"
msgstr "Korisničko ime"

View File

@ -3,6 +3,7 @@
<data noupdate="0">
<record model="res.groups" id="base.group_survey_user">
<field name="name">Survey / User</field>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,46 @@
# Czech translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-06 05:20+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: base_crypt
#: model:ir.model,name:base_crypt.model_res_users
msgid "res.users"
msgstr "res.users"
#. module: base_crypt
#: sql_constraint:res.users:0
msgid "You can not have two users with the same login !"
msgstr "Nemůžete mít dva uživatele se stejným přihlašovacím jménem !"
#. module: base_crypt
#: constraint:res.users:0
msgid "The chosen company is not in the allowed companies for this user"
msgstr ""
"Vybraná společnost není v povolených společnostech pro tohoto uživatele"
#. module: base_crypt
#: code:addons/base_crypt/crypt.py:140
#, python-format
msgid "Please specify the password !"
msgstr "Prosíme zadejte heslo!"
#. module: base_crypt
#: code:addons/base_crypt/crypt.py:140
#, python-format
msgid "Error"
msgstr "Chyba"

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2010-08-03 01:50+0000\n"
"Last-Translator: Mantavya Gajjar (Open ERP) <Unknown>\n"
"PO-Revision-Date: 2012-04-06 06:16+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 06:01+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: base_iban
#: constraint:res.partner.bank:0
@ -23,27 +23,30 @@ msgid ""
"Please define BIC/Swift code on bank for bank type IBAN Account to make "
"valid payments"
msgstr ""
"\n"
"Prosíme určete kód BIC/Swift u banky pro IBAN účet bankovního typu k ověření "
"plateb"
#. module: base_iban
#: code:addons/base_iban/base_iban.py:139
#, python-format
msgid "This IBAN does not pass the validation check, please verify it"
msgstr ""
msgstr "Tento IBAN neprošel testem ověření, prosíme zkontrolujte jej"
#. module: base_iban
#: model:res.partner.bank.type,format_layout:base_iban.bank_iban
msgid "%(bank_name)s: IBAN %(acc_number)s - BIC %(bank_bic)s"
msgstr ""
msgstr "%(bank_name)s: IBAN %(acc_number)s - BIC %(bank_bic)s"
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_swift_field
msgid "bank_bic"
msgstr ""
msgstr "bank_bic"
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_zip_field
msgid "zip"
msgstr "zip"
msgstr "p"
#. module: base_iban
#: help:res.partner.bank,iban:0
@ -53,12 +56,12 @@ msgstr "Mezinárodní Bankovní Číslo Účtu"
#. module: base_iban
#: model:ir.model,name:base_iban.model_res_partner_bank
msgid "Bank Accounts"
msgstr ""
msgstr "Bankovní účty"
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_country_field
msgid "country_id"
msgstr "id_státu"
msgstr "country_id"
#. module: base_iban
#: code:addons/base_iban/base_iban.py:136
@ -66,7 +69,7 @@ msgstr "id_státu"
msgid ""
"The IBAN does not seem to be correct. You should have entered something like "
"this %s"
msgstr ""
msgstr "IBAN nevypadá jako správný. Měli byste zadat něco jako toto %s"
#. module: base_iban
#: field:res.partner.bank,iban:0
@ -77,7 +80,7 @@ msgstr "IBAN"
#: code:addons/base_iban/base_iban.py:140
#, python-format
msgid "The IBAN is invalid, it should begin with the country code"
msgstr ""
msgstr "IBAN je neplatný, měl by začínat kódem země"
#. module: base_iban
#: model:res.partner.bank.type,name:base_iban.bank_iban
@ -87,7 +90,7 @@ msgstr "Účet IBAN"
#. module: base_iban
#: constraint:res.partner.bank:0
msgid "The RIB and/or IBAN is not valid"
msgstr ""
msgstr "RIB a/nebo IBAN není platný"
#~ msgid "Invalid XML for View Architecture!"
#~ msgstr "Invalidní XML pro zobrazení architektury!"

View File

@ -0,0 +1,91 @@
# Japanese translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-08 06:11+0000\n"
"Last-Translator: Masaki Yamaya <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-09 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: base_iban
#: constraint:res.partner.bank:0
msgid ""
"\n"
"Please define BIC/Swift code on bank for bank type IBAN Account to make "
"valid payments"
msgstr ""
#. module: base_iban
#: code:addons/base_iban/base_iban.py:139
#, python-format
msgid "This IBAN does not pass the validation check, please verify it"
msgstr ""
#. module: base_iban
#: model:res.partner.bank.type,format_layout:base_iban.bank_iban
msgid "%(bank_name)s: IBAN %(acc_number)s - BIC %(bank_bic)s"
msgstr ""
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_swift_field
msgid "bank_bic"
msgstr ""
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_zip_field
msgid "zip"
msgstr ""
#. module: base_iban
#: help:res.partner.bank,iban:0
msgid "International Bank Account Number"
msgstr "国際銀行口座番号"
#. module: base_iban
#: model:ir.model,name:base_iban.model_res_partner_bank
msgid "Bank Accounts"
msgstr "銀行口座"
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_country_field
msgid "country_id"
msgstr ""
#. module: base_iban
#: code:addons/base_iban/base_iban.py:136
#, python-format
msgid ""
"The IBAN does not seem to be correct. You should have entered something like "
"this %s"
msgstr ""
#. module: base_iban
#: field:res.partner.bank,iban:0
msgid "IBAN"
msgstr "国際銀行口座番号"
#. module: base_iban
#: code:addons/base_iban/base_iban.py:140
#, python-format
msgid "The IBAN is invalid, it should begin with the country code"
msgstr ""
#. module: base_iban
#: model:res.partner.bank.type,name:base_iban.bank_iban
msgid "IBAN Account"
msgstr ""
#. module: base_iban
#: constraint:res.partner.bank:0
msgid "The RIB and/or IBAN is not valid"
msgstr "銀行情報のRIBまたはIBANが正しくありません。"

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-01-20 15:40+0000\n"
"PO-Revision-Date: 2012-04-05 15:22+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian latin <sr@latin@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 06:02+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-06 04:37+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: base_iban
#: constraint:res.partner.bank:0
@ -32,7 +32,7 @@ msgstr ""
#: code:addons/base_iban/base_iban.py:139
#, python-format
msgid "This IBAN does not pass the validation check, please verify it"
msgstr ""
msgstr "Ovaj IBAN ne prolazi proveru validacije, molimo proverite ga"
#. module: base_iban
#: model:res.partner.bank.type,format_layout:base_iban.bank_iban
@ -91,7 +91,7 @@ msgstr "IBAN račun"
#. module: base_iban
#: constraint:res.partner.bank:0
msgid "The RIB and/or IBAN is not valid"
msgstr ""
msgstr "RIB i / ili IBAN nije validan"
#~ msgid "Invalid XML for View Architecture!"
#~ msgstr "Nevažeći XML za pregled arhitekture"

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2011-09-09 10:24+0000\n"
"PO-Revision-Date: 2012-04-06 05:26+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 06:14+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: base_module_record
@ -90,6 +90,9 @@ msgid ""
"publish it on http://www.openerp.com, in the 'Modules' section. You can do "
"it through the website or using features of the 'base_module_publish' module."
msgstr ""
"Pokud myslíte, že váš modul může zajímat jiné lidi, byli bychom rádi, abyste "
"jej zveřejnili v sekci 'Moduly' na http://www.openerp.com. Můžete to provést "
"přes webové stránky nebo použitím schopnosti modulu 'base_module_publish'."
#. module: base_module_record
#: wizard_field:base_module_record.module_record_data,init,check_date:0

View File

@ -201,4 +201,30 @@ class specify_partner_terminology(osv.osv_memory):
self.make_translations(cr, uid, ids, act_ref, 'model', act_id.help, _case_insensitive_replace(act_id.help,'Customer',o.partner), res_id=act_id.id, context=context)
return {}
# Preferences wizard for Sales & CRM.
# It is defined here because it is inherited independently in modules sale, crm,
# plugin_outlook and plugin_thunderbird.
#
class sale_config_settings(osv.osv_memory):
_name = 'sale.config.settings'
_inherit = 'res.config.settings'
_columns = {
'module_crm': fields.boolean('CRM'),
'module_plugin_thunderbird': fields.boolean('Thunderbird plugin',
help="""The plugin allows you archive email and its attachments to the selected
OpenERP objects. You can select a partner, a task, a project, an analytical
account, or any other object and attach the selected mail as a .eml file in
the attachment of a selected record. You can create documents for CRM Lead,
HR Applicant and Project Issue from the selected emails.
This installs the module plugin_thunderbird."""),
'module_plugin_outlook': fields.boolean('Outlook plugin',
help="""The Outlook plugin allows you to select an object that you would like to add
to your email and its attachments from MS Outlook. You can select a partner, a task,
a project, an analytical account, or any other object and archive a selected
email into an OpenERP mail message with attachments.
This installs the module plugin_outlook."""),
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,21 +1,6 @@
<openerp>
<data>
<!-- Import or create customers configartion view -->
<record id="action_import_create_installer" model="ir.actions.act_window">
<field name="name">Create or Import Customers</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="base.view_partner_tree"/>
<field name="help">Create or Import Customers and their contacts manually from this form or you can import your existing partners by CSV spreadsheet from "Import Data" wizard</field>
</record>
<record id="config_wizard_action_import_create_installer" model="ir.actions.todo">
<field name="action_id" ref="action_import_create_installer"/>
<field name="category_id" ref="base.category_sales_management_config"/>
</record>
<!-- Define default users preferences-->
<record id="view_user_preferences_config_form" model="ir.ui.view">
<field name="name">Set default users preferences</field>
@ -117,7 +102,7 @@
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<!--
<!--
<record id="config_action_partner_terminology_config_form" model="ir.actions.todo">
<field name="action_id" ref="action_partner_terminology_config_form"/>
<field name="category_id" ref="base.category_administration_config"/>
@ -142,5 +127,41 @@
<field name="sequence">1</field>
</record>
<record id="base.view_sale_config_settings" model="ir.ui.view">
<field name="name">sale settings</field>
<field name="model">sale.config.settings</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Configure Sales">
<group name="config_sale" colspan="4"/>
<!-- this part is necessary to allow the plugins to extend the view -->
<field name="module_crm" invisible="1"/>
<group name="config_fetchmail" colspan="4" attrs="{'invisible': [('module_crm','=',False)]}">
<separator string="Emails"/>
</group>
<field name="module_plugin_thunderbird" attrs="{'invisible': [('module_crm','=',False)]}"/>
<newline/>
<field name="module_plugin_outlook" attrs="{'invisible': [('module_crm','=',False)]}"/>
<group name="config_crm" colspan="4"/>
<newline/>
<label colspan="2"/>
<button string="Cancel" icon="gtk-cancel" special="cancel"/>
<button string="Apply" icon="gtk-apply" type="object" name="execute"/>
</form>
</field>
</record>
<record id="base.action_sale_config" model="ir.actions.act_window">
<field name="name">Configure Sales</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.config.settings</field>
<field name="view_id" ref="base.view_sale_config_settings"/>
<field name="view_mode">form</field>
<field name="target">inline</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,32 @@
# Czech translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2012-04-06 06:17+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: base_tools
#: model:ir.module.module,shortdesc:base_tools.module_meta_information
msgid "Common base for tools modules"
msgstr "Obecný základ pro nástrojové moduly"
#. module: base_tools
#: model:ir.module.module,description:base_tools.module_meta_information
msgid ""
"\n"
" "
msgstr ""
"\n"
" "

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2011-08-07 19:04+0000\n"
"Last-Translator: Jan B. Krejčí <Unknown>\n"
"PO-Revision-Date: 2012-04-06 06:22+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 06:15+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: base_vat
#: code:addons/base_vat/base_vat.py:141
@ -23,31 +23,33 @@ msgid ""
"This VAT number does not seem to be valid.\n"
"Note: the expected format is %s"
msgstr ""
"Toto DIČ nevypadá jako platné.\n"
"Poznámka: očekávaný formát je %s"
#. module: base_vat
#: sql_constraint:res.company:0
msgid "The company name must be unique !"
msgstr ""
msgstr "Jméno společnosti musí být jedinečné !"
#. module: base_vat
#: constraint:res.partner:0
msgid "Error ! You cannot create recursive associated members."
msgstr ""
msgstr "Chyba ! Nemůžete vytvořit rekurzivní přidružené členy."
#. module: base_vat
#: field:res.company,vat_check_vies:0
msgid "VIES VAT Check"
msgstr ""
msgstr "Kontrola DIČ přes VIES"
#. module: base_vat
#: model:ir.model,name:base_vat.model_res_company
msgid "Companies"
msgstr ""
msgstr "Společnosti"
#. module: base_vat
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr ""
msgstr "Chyba! Nemůžete vytvořit rekurzivní společnosti."
#. module: base_vat
#: help:res.partner,vat_subjected:0
@ -55,11 +57,13 @@ msgid ""
"Check this box if the partner is subjected to the VAT. It will be used for "
"the VAT legal statement."
msgstr ""
"Zaškrtněte toto políčko, pokud partner podléhá DPH. Toto bude použito pro "
"přiznání k DPH."
#. module: base_vat
#: model:ir.model,name:base_vat.model_res_partner
msgid "Partner"
msgstr ""
msgstr "Partner"
#. module: base_vat
#: help:res.company,vat_check_vies:0
@ -67,6 +71,8 @@ msgid ""
"If checked, Partners VAT numbers will be fully validated against EU's VIES "
"service rather than via a simple format validation (checksum)."
msgstr ""
"Pokud je zaškrtnuto, DIČ partnera bude plně ověřeno proti službě VIES EU "
"raději než přes jednoduché ověření formátu (kontrolní součet)."
#. module: base_vat
#: field:res.partner,vat_subjected:0

View File

@ -186,45 +186,4 @@ class board_line(osv.osv):
'position': lambda *args: 'left'
}
class res_log_report(osv.osv):
""" Log Report """
_name = "res.log.report"
_auto = False
_description = "Log Report"
_columns = {
'name': fields.char('Year', size=64, required=False, readonly=True),
'month':fields.selection([('01', 'January'), ('02', 'February'), \
('03', 'March'), ('04', 'April'),\
('05', 'May'), ('06', 'June'), \
('07', 'July'), ('08', 'August'),\
('09', 'September'), ('10', 'October'),\
('11', 'November'), ('12', 'December')], 'Month', readonly=True),
'day': fields.char('Day', size=128, readonly=True),
'creation_date': fields.date('Creation Date', readonly=True),
'res_model': fields.char('Object', size=128),
'nbr': fields.integer('# of Entries', readonly=True)
}
def init(self, cr):
"""
Log Report
@param cr: the current row, from the database cursor
"""
tools.drop_view_if_exists(cr,'res_log_report')
cr.execute("""
CREATE OR REPLACE VIEW res_log_report AS (
SELECT
l.id as id,
1 as nbr,
to_char(l.create_date, 'YYYY') as name,
to_char(l.create_date, 'MM') as month,
to_char(l.create_date, 'YYYY-MM-DD') as day,
to_char(l.create_date, 'YYYY-MM-DD') as creation_date,
l.res_model as res_model,
date_trunc('day',l.create_date) as create_date
FROM
res_log l
)""")
res_log_report()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<data>
<!-- User Connection -->
<record model="ir.ui.view" id="view_user_connection_tree">
<field name="name">user.connection.tree</field>
@ -21,115 +22,11 @@
<field name="view_id" ref="view_user_connection_tree"></field>
</record>
<!-- Latest Activities -->
<record model="ir.actions.act_window" id="action_latest_activities_tree">
<field name="name">Latest Activities</field>
<field name="res_model">res.log</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<!-- Log report search view -->
<record id="view_res_log_report_filter" model="ir.ui.view">
<field name="name">res.log.report.select</field>
<field name="model">res.log.report</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Log Analysis">
<group>
<filter icon="terp-go-year" string=" Year "
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')),('create_date','&gt;=',time.strftime('%%Y-01-01'))]"
help="Log created in current year"/>
<filter icon="terp-go-month" string=" Month "
name="month"
domain="[('create_date','&lt;=',(datetime.date.today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('create_date','&gt;=',(datetime.date.today()-relativedelta(day=1)).strftime('%%Y-%%m-%%d'))]"
help="Log created in current month"/>
<filter icon="terp-go-month"
string=" Month-1 "
domain="[('create_date','&lt;=', (datetime.date.today() - relativedelta(day=31, months=1)).strftime('%%Y-%%m-%%d')),('create_date','&gt;=',(datetime.date.today() - relativedelta(day=1,months=1)).strftime('%%Y-%%m-%%d'))]"
help="Log created in last month"/>
</group>
<newline/>
<group expand="1" string="Group By...">
<filter string="Model" icon="terp-go-home" context="{'group_by':'res_model'}" />
<separator orientation="vertical"/>
<filter string="Day" icon="terp-go-today"
domain="[]" context="{'group_by':'day'}"/>
<filter string="Month" icon="terp-go-month"
domain="[]" context="{'group_by':'month'}" />
<filter string="Year" icon="terp-go-year"
domain="[]" context="{'group_by':'name'}" />
</group>
</search>
</field>
</record>
<!-- Log report Tree view -->
<record id="view_res_log_report_tree" model="ir.ui.view">
<field name="name">res.log.report.tree</field>
<field name="model">res.log.report</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Log Analysis">
<field name="name" invisible="1"/>
<field name="month" invisible="1"/>
<field name="day" invisible="1"/>
<field name="res_model" invisible="1"/>
<field name="nbr" />
<field name="creation_date" invisible="1"/>
</tree>
</field>
</record>
<record id="board_config_overview" model="ir.actions.client">
<field name="name">Configuration Overview</field>
<field name="tag">board.config.overview</field>
</record>
<!-- Monthly Activity per Document -->
<record id="board_res_log_report_graph" model="ir.ui.view">
<field name="name">board.res.log.report.graph</field>
<field name="model">res.log.report</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Monthly Activity per Document" type="bar">
<field name="res_model"/>
<field name="nbr" operator="+"/>
</graph>
</field>
</record>
<record id="board_monthly_res_log_report_action" model="ir.actions.act_window">
<field name="name">Monthly Activity per Document</field>
<field name="res_model">res.log.report</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="domain">[('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%Y-%m-%d'))]</field>
<field name="context">{'group_by':['res_model'],'group_by_no_leaf':1}</field>
<field name="view_id" ref="board_res_log_report_graph"></field>
</record>
<!-- Weekly Global Activity -->
<record id="board_weekly_res_log_report_graph" model="ir.ui.view">
<field name="name">board.weekly.res.log.report.graph</field>
<field name="model">res.log.report</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Weekly Global Activity" type="bar">
<field name="day"/>
<field name="nbr" operator="+"/>
</graph>
</field>
</record>
<record id="board_weekly_res_log_report_action" model="ir.actions.act_window">
<field name="name">Weekly Global Activity</field>
<field name="res_model">res.log.report</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="domain">[('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%Y-%m-%d'))]</field>
<field name="context">{'group_by':['day'],'group_by_no_leaf':1}</field>
<field name="view_id" ref="board_weekly_res_log_report_graph"></field>
</record>
<record id="board_administration_form" model="ir.ui.view">
<field name="name">board.administration.form</field>
<field name="model">board.board</field>
@ -164,5 +61,5 @@
<menuitem id="base.menu_dashboard" name="Dashboards" parent="base.menu_reporting_board" sequence="0"/>
<menuitem id="base.menu_dashboard_admin" action="open_board_administration_form" parent="base.menu_dashboard" icon="terp-graph"/>
</data>
</data>
</openerp>

View File

@ -61,7 +61,7 @@
</record>
<!-- set the default homepage of admin -->
<record id="base.user_admin" model="res.users">
<record id="base.user_root" model="res.users">
<field name="action_id" ref="board_homepage_action"/>
</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-02-08 00:36+0000\n"
"PO-Revision-Date: 2009-12-23 20:43+0000\n"
"Last-Translator: Kuvaly [LCT] <kuvaly@seznam.cz>\n"
"PO-Revision-Date: 2012-04-06 06:15+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 06:40+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: board
@ -40,13 +40,13 @@ msgstr "Poslední spojení"
#. module: board
#: view:res.log.report:0
msgid "Log created in last month"
msgstr ""
msgstr "Záznam vytvořený minulý měsíc"
#. module: board
#: view:board.board:0
#: model:ir.actions.act_window,name:board.open_board_administration_form
msgid "Administration Dashboard"
msgstr "Správa nástěnky"
msgstr "Nástěnka správy"
#. module: board
#: view:res.log.report:0
@ -56,7 +56,7 @@ msgstr "Seskupit podle..."
#. module: board
#: view:res.log.report:0
msgid "Log created in current year"
msgstr ""
msgstr "Záznam vytvořený v tomto roce"
#. module: board
#: model:ir.model,name:board.model_board_board
@ -93,7 +93,7 @@ msgstr "Měsíc"
#. module: board
#: view:res.log.report:0
msgid "Log created in current month"
msgstr ""
msgstr "Záznam vytvořený v tomto měsíci"
#. module: board
#: model:ir.actions.act_window,name:board.board_monthly_res_log_report_action
@ -104,7 +104,7 @@ msgstr "Měsíční činnosti dle dokumentu"
#. module: board
#: view:board.board:0
msgid "Configuration Overview"
msgstr ""
msgstr "Přehled nastavení"
#. module: board
#: model:ir.actions.act_window,name:board.action_view_board_list_form
@ -212,7 +212,7 @@ msgstr "Leden"
#. module: board
#: view:board.board:0
msgid "Users"
msgstr ""
msgstr "Uživatelé"
#. module: board
#: selection:res.log.report,month:0
@ -265,7 +265,7 @@ msgstr "Model"
#. module: board
#: model:ir.actions.act_window,name:board.board_homepage_action
msgid "Home Page"
msgstr ""
msgstr "Domovská stránka"
#. module: board
#: model:ir.actions.act_window,name:board.action_latest_activities_tree

View File

@ -3,4 +3,3 @@ access_board_board all,board.board,model_board_board,,1,0,0,0
access_board_board_line all,board.board.line,model_board_board_line,,1,0,0,0
access_board_board system,board.board system,model_board_board,base.group_system,1,1,1,1
access_board_board_line system,board.board.line system,model_board_board_line,base.group_system,1,1,1,1
access_res_log_report all,res.log.report,model_res_log_report,,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
3 access_board_board_line all board.board.line model_board_board_line 1 0 0 0
4 access_board_board system board.board system model_board_board base.group_system 1 1 1 1
5 access_board_board_line system board.board.line system model_board_board_line base.group_system 1 1 1 1
access_res_log_report all res.log.report model_res_log_report 1 0 0 0

View File

@ -0,0 +1,23 @@
# Czech translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-06 04:57+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: claim_from_delivery
#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery
msgid "Claim"
msgstr "Pohledávka"

View File

@ -28,6 +28,7 @@ import crm_phonecall
import report
import wizard
import res_partner
import res_config
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -106,11 +106,12 @@ Creates a dashboard for CRM that includes:
'report/crm_phonecall_report_view.xml',
'process/crm_configuration_process.xml',
'crm_installer_view.xml',
'res_partner_view.xml',
'board_crm_statistical_view.xml',
'board_crm_view.xml',
'res_config_view.xml',
],
'demo_xml': [

View File

@ -127,7 +127,7 @@ class crm_case_section(osv.osv):
def name_get(self, cr, uid, ids, context=None):
"""Overrides orm name_get method"""
if not isinstance(ids, list) :
if not isinstance(ids, list) :
ids = [ids]
res = []
if not ids:
@ -256,7 +256,40 @@ class crm_base(object):
data.update(self.onchange_partner_address_id(cr, uid, ids, addr['contact'])['value'])
return {'value': data}
def case_open(self, cr, uid, ids, *args):
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return ''
def case_open_send_note(self, cr, uid, ids, context=None):
for id in ids:
msg = '%s has been <b>opened</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
self.message_append_note(cr, uid, [id], body=msg, context=context)
return True
def case_close_send_note(self, cr, uid, ids, context=None):
for id in ids:
msg = '%s has been <b>closed</b>.'% (self.case_get_note_msg_prefix(cr, uid, id, context=context))
self.message_append_note(cr, uid, [id], body=msg, context=context)
return True
def case_cancel_send_note(self, cr, uid, ids, context=None):
for id in ids:
msg = '%s has been <b>canceled</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
self.message_append_note(cr, uid, [id], body=msg, context=context)
return True
def case_pending_send_note(self, cr, uid, ids, context=None):
for id in ids:
msg = '%s is now <b>pending</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
self.message_append_note(cr, uid, [id], body=msg, context=context)
return True
def case_reset_send_note(self, cr, uid, ids, context=None):
for id in ids:
msg = '%s has been <b>renewed</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
self.message_append_note(cr, uid, [id], body=msg, context=context)
return True
def case_open(self, cr, uid, ids, context=None):
"""Opens Case
:param ids: List of case Ids
"""
@ -265,12 +298,13 @@ class crm_base(object):
data = {'state': 'open', 'active': True}
if not case.user_id:
data['user_id'] = uid
self.write(cr, uid, case.id, data)
self.write(cr, uid, [case.id], data)
self.case_open_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'open')
return True
def case_close(self, cr, uid, ids, *args):
def case_close(self, cr, uid, ids, context=None):
"""Closes Case
:param ids: List of case Ids
"""
@ -278,10 +312,11 @@ class crm_base(object):
cases[0].state # to fill the browse record cache
self.write(cr, uid, ids, {'state': 'done', 'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'), })
# We use the cache of cases to keep the old case state
self.case_close_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'done')
return True
def case_cancel(self, cr, uid, ids, *args):
def case_cancel(self, cr, uid, ids, context=None):
"""Cancels Case
:param ids: List of case Ids
"""
@ -289,26 +324,29 @@ class crm_base(object):
cases[0].state # to fill the browse record cache
self.write(cr, uid, ids, {'state': 'cancel', 'active': True})
# We use the cache of cases to keep the old case state
self.case_cancel_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'cancel')
return True
def case_pending(self, cr, uid, ids, *args):
def case_pending(self, cr, uid, ids, context=None):
"""Marks case as pending
:param ids: List of case Ids
"""
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.write(cr, uid, ids, {'state': 'pending', 'active': True})
self.case_pending_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'pending')
return True
def case_reset(self, cr, uid, ids, *args):
def case_reset(self, cr, uid, ids, context=None):
"""Resets case as draft
:param ids: List of case Ids
"""
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.write(cr, uid, ids, {'state': 'draft', 'active': True})
self.case_reset_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'draft')
return True
@ -323,12 +361,12 @@ class crm_base(object):
return rule_obj._action(cr, uid, rule_ids, cases, scrit=scrit, context=context)
class crm_case(crm_base):
""" A simple python class to be used for common functions
""" A simple python class to be used for common functions
Object that inherit from this class should inherit from mailgate.thread
And need a stage_id field
And object that inherit (orm inheritance) from a class the overwrite copy
And object that inherit (orm inheritance) from a class the overwrite copy
"""
def stage_find(self, cr, uid, section_id, domain=[], order='sequence'):
domain = list(domain)
if section_id:
@ -387,34 +425,45 @@ class crm_case(crm_base):
default.update({ 'date_open': False })
return super(crm_case, self).copy(cr, uid, id, default, context=context)
def case_escalate_send_note(self, cr, uid, ids, new_section=None, context=None):
for id in ids:
if new_section:
msg = '%s has been <b>escalated</b> to <b>%s</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context), new_section.name)
else:
msg = '%s has been <b>escalated</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
self.message_append_note(cr, uid, [id], 'System Notification', msg, context=context)
return True
def case_open(self, cr, uid, ids, *args):
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return ''
def case_open(self, cr, uid, ids, context=None):
"""Opens Case"""
cases = self.browse(cr, uid, ids)
self.message_append(cr, uid, cases, _('Open'))
for case in cases:
data = {'state': 'open', 'active': True }
if not case.user_id:
data['user_id'] = uid
self.write(cr, uid, case.id, data)
self.write(cr, uid, [case.id], data)
self.case_open_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'open')
return True
def case_close(self, cr, uid, ids, *args):
def case_close(self, cr, uid, ids, context=None):
"""Closes Case"""
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.message_append(cr, uid, cases, _('Close'))
self.write(cr, uid, ids, {'state': 'done',
'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'),
})
#
# We use the cache of cases to keep the old case state
#
self.case_close_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'done')
return True
def case_escalate(self, cr, uid, ids, *args):
def case_escalate(self, cr, uid, ids, context=None):
"""Escalates case to parent level"""
cases = self.browse(cr, uid, ids)
for case in cases:
@ -427,42 +476,37 @@ class crm_case(crm_base):
else:
raise osv.except_osv(_('Error !'), _('You can not escalate, you are already at the top level regarding your sales-team category.'))
self.write(cr, uid, [case.id], data)
case.case_escalate_send_note(case.section_id.parent_id)
cases = self.browse(cr, uid, ids)
self.message_append(cr, uid, cases, _('Escalate'))
self._action(cr, uid, cases, 'escalate')
return True
def case_cancel(self, cr, uid, ids, *args):
def case_cancel(self, cr, uid, ids, context=None):
"""Cancels Case"""
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.message_append(cr, uid, cases, _('Cancel'))
self.write(cr, uid, ids, {'state': 'cancel',
'active': True})
self.case_cancel_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'cancel')
for case in cases:
message = _("The case '%s' has been cancelled.") % (case.name,)
self.log(cr, uid, case.id, message)
return True
def case_pending(self, cr, uid, ids, *args):
def case_pending(self, cr, uid, ids, context=None):
"""Marks case as pending"""
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.message_append(cr, uid, cases, _('Pending'))
self.write(cr, uid, ids, {'state': 'pending', 'active': True})
self.case_pending_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, 'pending')
return True
def case_reset(self, cr, uid, ids, *args):
def case_reset(self, cr, uid, ids, context=None):
"""Resets case as draft"""
state = 'draft'
if 'crm.phonecall' in args:
state = 'open'
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.message_append(cr, uid, cases, _('Draft'))
self.write(cr, uid, ids, {'state': state, 'active': True})
self.case_reset_send_note(cr, uid, ids, context=context)
self._action(cr, uid, cases, state)
return True

View File

@ -1,38 +0,0 @@
<openerp>
<data>
<record model="ir.actions.act_window" id="crm_case_section_view_form_installer">
<field name="name">Define Sales Team</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">crm.case.section</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="crm.crm_case_section_view_tree"/>
<field name="help">Define sales teams to structure your sales organization and assign users to each team. You should also define the sales stage to each team. As an example, if you use Solutions Selling techniques to track your opportunities, you can assign the following stage to the team: Territory, Qualified, Qualified Sponsors, Proposition, Negociaton, Won/Lost.</field>
</record>
<record id="crm_case_section_installer_todo" model="ir.actions.todo">
<field name="action_id" ref="crm_case_section_view_form_installer"/>
<field name="category_id" ref="base.category_sales_management_config"/>
<field name="sequence">10</field>
<field name="groups_id" eval="[(6, 0, [ref('base.group_extended')])]" />
</record>
<record model="ir.actions.act_window" id="crm_case_stage_form_installer">
<field name="name">Review Sales Stages</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">crm.case.stage</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'default_case_default': 1}</field>
<field name="view_id" ref="crm.crm_case_stage_tree"/>
<field name="help">Stages will allow salesmen to easily track how a specific opportunity is positioned in the sales cycle. In order to efficiently manage your sales pipeline, it's important to define conditions to go to the next step. Example: to set an opportunity as 'Qualified', you must set the "Expected Revenue" and the "Expected Closing Date." You should also have a look at the tooltip of the field "Change Probability Automatically".</field>
</record>
<record id="crm_case_stage_installer_todo" model="ir.actions.todo">
<field name="action_id" ref="crm_case_stage_form_installer"/>
<field name="category_id" ref="base.category_sales_management_config"/>
<field name="sequence">9</field>
</record>
</data>
</openerp>

View File

@ -40,7 +40,7 @@ class crm_lead(crm_case, osv.osv):
_name = "crm.lead"
_description = "Lead/Opportunity"
_order = "priority,date_action,id desc"
_inherit = ['mail.thread','res.partner']
_inherit = ['ir.needaction_mixin', 'mail.thread','res.partner']
def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
access_rights_uid = access_rights_uid or uid
@ -183,7 +183,6 @@ class crm_lead(crm_case, osv.osv):
'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
'subjects': fields.function(_get_email_subject, fnct_search=_history_search, string='Subject of Email', type='char', size=64),
# Only used for type opportunity
'probability': fields.float('Probability (%)',group_operator="avg"),
'planned_revenue': fields.float('Expected Revenue'),
@ -215,6 +214,19 @@ class crm_lead(crm_case, osv.osv):
'color': 0,
}
def get_needaction_user_ids(self, cr, uid, ids, context=None):
result = dict.fromkeys(ids, [])
for obj in self.browse(cr, uid, ids, context=context):
# salesman must perform an action when in draft mode
if obj.state == 'draft' and obj.user_id:
result[obj.id] = [obj.user_id.id]
return result
def create(self, cr, uid, vals, context=None):
obj_id = super(crm_lead, self).create(cr, uid, vals, context)
self.create_send_note(cr, uid, [obj_id], context=context)
return obj_id
def on_change_optin(self, cr, uid, ids, optin):
return {'value':{'optin':optin,'optout':False}}
@ -248,75 +260,58 @@ class crm_lead(crm_case, osv.osv):
def stage_find_won(self, cr, uid, section_id):
return self.stage_find_percent(cr, uid, 100.0, section_id)
def case_open(self, cr, uid, ids, *args):
for l in self.browse(cr, uid, ids):
# When coming from draft override date and stage otherwise just set state
if l.state == 'draft':
if l.type == 'lead':
message = _("The lead '%s' has been opened.") % l.name
elif l.type == 'opportunity':
message = _("The opportunity '%s' has been opened.") % l.name
else:
message = _("The case '%s' has been opened.") % l.name
self.log(cr, uid, l.id, message)
def case_open(self, cr, uid, ids, context=None):
for lead in self.browse(cr, uid, ids, context=context):
if lead.state == 'draft':
value = {'date_open': time.strftime('%Y-%m-%d %H:%M:%S')}
self.write(cr, uid, [l.id], value)
if l.type == 'opportunity' and not l.stage_id:
stage_id = self.stage_find(cr, uid, l.section_id.id or False, [('sequence','>',0)])
self.write(cr, uid, [lead.id], value)
if lead.type == 'opportunity' and not lead.stage_id:
stage_id = self.stage_find(cr, uid, lead.section_id.id or False, [('sequence','>',0)])
if stage_id:
self.stage_set(cr, uid, [l.id], stage_id)
res = super(crm_lead, self).case_open(cr, uid, ids, *args)
self.stage_set(cr, uid, [lead.id], stage_id)
res = super(crm_lead, self).case_open(cr, uid, ids, context)
return res
def case_close(self, cr, uid, ids, *args):
res = super(crm_lead, self).case_close(cr, uid, ids, *args)
def case_close(self, cr, uid, ids, context=None):
res = super(crm_lead, self).case_close(cr, uid, ids, context)
self.write(cr, uid, ids, {'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
for case in self.browse(cr, uid, ids):
if case.type == 'lead':
message = _("The lead '%s' has been closed.") % case.name
else:
message = _("The case '%s' has been closed.") % case.name
self.log(cr, uid, case.id, message)
return res
def case_cancel(self, cr, uid, ids, *args):
def case_cancel(self, cr, uid, ids, context=None):
"""Overrides cancel for crm_case for setting probability
"""
res = super(crm_lead, self).case_cancel(cr, uid, ids, args)
res = super(crm_lead, self).case_cancel(cr, uid, ids, context)
self.write(cr, uid, ids, {'probability' : 0.0})
return res
def case_reset(self, cr, uid, ids, *args):
def case_reset(self, cr, uid, ids, context=None):
"""Overrides reset as draft in order to set the stage field as empty
"""
res = super(crm_lead, self).case_reset(cr, uid, ids, *args)
res = super(crm_lead, self).case_reset(cr, uid, ids, context)
self.write(cr, uid, ids, {'stage_id': False, 'probability': 0.0})
return res
def case_mark_lost(self, cr, uid, ids, *args):
def case_mark_lost(self, cr, uid, ids, context=None):
"""Mark the case as lost: state = done and probability = 0%
"""
res = super(crm_lead, self).case_close(cr, uid, ids, *args)
res = super(crm_lead, self).case_close(cr, uid, ids, context)
self.write(cr, uid, ids, {'probability' : 0.0})
for l in self.browse(cr, uid, ids):
stage_id = self.stage_find_lost(cr, uid, l.section_id.id or False)
for lead in self.browse(cr, uid, ids):
stage_id = self.stage_find_lost(cr, uid, lead.section_id.id or False)
if stage_id:
self.stage_set(cr, uid, [l.id], stage_id)
message = _("The opportunity '%s' has been marked as lost.") % l.name
self.log(cr, uid, l.id, message)
self.stage_set(cr, uid, [lead.id], stage_id)
return res
def case_mark_won(self, cr, uid, ids, *args):
def case_mark_won(self, cr, uid, ids, context=None):
"""Mark the case as lost: state = done and probability = 0%
"""
res = super(crm_lead, self).case_close(cr, uid, ids, *args)
res = super(crm_lead, self).case_close(cr, uid, ids, context=None)
self.write(cr, uid, ids, {'probability' : 100.0})
for l in self.browse(cr, uid, ids):
stage_id = self.stage_find_won(cr, uid, l.section_id.id or False)
for lead in self.browse(cr, uid, ids):
stage_id = self.stage_find_won(cr, uid, lead.section_id.id or False)
if stage_id:
self.stage_set(cr, uid, [l.id], stage_id)
message = _("The opportunity '%s' has been been won.") % l.name
self.log(cr, uid, l.id, message)
self.stage_set(cr, uid, [lead.id], stage_id)
self.case_mark_won_send_note(cr, uid, [lead.id], context=context)
return res
def set_priority(self, cr, uid, ids, priority):
@ -324,12 +319,12 @@ class crm_lead(crm_case, osv.osv):
"""
return self.write(cr, uid, ids, {'priority' : priority})
def set_high_priority(self, cr, uid, ids, *args):
def set_high_priority(self, cr, uid, ids, context=None):
"""Set lead priority to high
"""
return self.set_priority(cr, uid, ids, '1')
def set_normal_priority(self, cr, uid, ids, *args):
def set_normal_priority(self, cr, uid, ids, context=None):
"""Set lead priority to normal
"""
return self.set_priority(cr, uid, ids, '3')
@ -422,7 +417,7 @@ class crm_lead(crm_case, osv.osv):
subject = subject[0] + ", ".join(subject[1:])
details = "\n\n".join(details)
return self.message_append(cr, uid, [opportunity_id], subject, body_text=details, context=context)
return self.message_append_note(cr, uid, [opportunity_id], subject=subject, body=details)
def _merge_opportunity_history(self, cr, uid, opportunity_id, opportunities, context=None):
message = self.pool.get('mail.message')
@ -529,13 +524,6 @@ class crm_lead(crm_case, osv.osv):
'date_open': time.strftime('%Y-%m-%d %H:%M:%S'),
}
def _convert_opportunity_notification(self, cr, uid, lead, context=None):
success_message = _("Lead '%s' has been converted to an opportunity.") % lead.name
self.message_append(cr, uid, [lead.id], success_message, body_text=success_message, context=context)
self.log(cr, uid, lead.id, success_message)
self._send_mail_to_salesman(cr, uid, lead, context=context)
return True
def convert_opportunity(self, cr, uid, ids, partner_id, user_ids=False, section_id=False, context=None):
partner = self.pool.get('res.partner')
mail_message = self.pool.get('mail.message')
@ -551,7 +539,7 @@ class crm_lead(crm_case, osv.osv):
vals = self._convert_opportunity_data(cr, uid, lead, customer, section_id, context=context)
self.write(cr, uid, [lead.id], vals, context=context)
self._convert_opportunity_notification(cr, uid, lead, context=context)
self.convert_opportunity_send_note(cr, uid, lead, context=context)
#TOCHECK: why need to change partner details in all messages of lead ?
if lead.partner_id:
msg_ids = [ x.id for x in lead.message_ids]
@ -605,6 +593,7 @@ class crm_lead(crm_case, osv.osv):
res_partner.write(cr, uid, partner_id, {'section_id': lead.section_id.id or False})
contact_id = res_partner.address_get(cr, uid, [partner_id])['default']
res = lead.write({'partner_id' : partner_id, }, context=context)
self._lead_set_partner_send_note(cr, uid, [lead.id], context)
return res
def convert_partner(self, cr, uid, ids, action='create', partner_id=False, context=None):
@ -684,12 +673,12 @@ class crm_lead(crm_case, osv.osv):
'partner_mobile' : lead.partner_id and lead.partner_id.mobile or False,
'priority': lead.priority,
}
new_id = phonecall.create(cr, uid, vals, context=context)
phonecall.case_open(cr, uid, [new_id])
phonecall.case_open(cr, uid, [new_id], context=context)
if action == 'log':
phonecall.case_close(cr, uid, [new_id])
phonecall.case_close(cr, uid, [new_id], context=context)
phonecall_dict[lead.id] = new_id
self.schedule_phonecall_send_note(cr, uid, [lead.id], new_id, action, context=context)
return phonecall_dict
@ -767,7 +756,7 @@ class crm_lead(crm_case, osv.osv):
#re-open
values.update(state=crm.AVAILABLE_STATES[1][0])
if not case.date_open:
values['date_open'] = time.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT)
values['date_open'] = time.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT)
res = self.write(cr, uid, [case.id], values, context=context)
return res
@ -831,17 +820,59 @@ class crm_lead(crm_case, osv.osv):
# change probability of lead(s) if required by stage
if not vals.get('probability') and stage.on_change:
vals['probability'] = stage.probability
text = _("Changed Stage to: %s") % stage.name
self.message_append(cr, uid, ids, text, body_text=text, context=context)
for case in self.browse(cr, uid, ids, context=context):
if case.type == 'lead' or context.get('stage_type') == 'lead':
message = _("The stage of lead '%s' has been changed to '%s'.") % (case.name, stage.name)
self.log(cr, uid, case.id, message)
elif case.type == 'opportunity':
message = _("The stage of opportunity '%s' has been changed to '%s'.") % (case.name, stage.name)
self.log(cr, uid, case.id, message)
message = _("Stage changed to <b>%s</b>.") % (stage.name)
case.message_append_note(body=message)
return super(crm_lead,self).write(cr, uid, ids, vals, context)
# ----------------------------------------
# OpenChatter methods and notifications
# ----------------------------------------
def message_get_subscribers(self, cr, uid, ids, context=None):
sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context)
# add salesman to the subscribers
for obj in self.browse(cr, uid, ids, context=context):
if obj.user_id:
sub_ids.append(obj.user_id.id)
return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
def case_get_note_msg_prefix(self, cr, uid, lead, context=None):
if isinstance(lead, (int, long)):
lead = self.browse(cr, uid, [lead], context=context)[0]
return ('Opportunity' if lead.type == 'opportunity' else 'Lead')
def create_send_note(self, cr, uid, ids, context=None):
for id in ids:
message = _("%s has been <b>created</b>.")% (self.case_get_note_msg_prefix(cr, uid, id, context=context))
self.message_append_note(cr, uid, [id], body=message, context=context)
return True
def case_mark_lost_send_note(self, cr, uid, ids, context=None):
message = _("Opportunity has been <b>lost</b>.")
return self.message_append_note(cr, uid, ids, body=message, context=context)
def case_mark_won_send_note(self, cr, uid, ids, context=None):
message = _("Opportunity has been <b>won</b>.")
return self.message_append_note(cr, uid, ids, body=message, context=context)
def schedule_phonecall_send_note(self, cr, uid, ids, phonecall_id, action, context=None):
phonecall = self.pool.get('crm.phonecall').browse(cr, uid, [phonecall_id], context=context)[0]
if action == 'log': prefix = 'Logged'
else: prefix = 'Scheduled'
message = _("<b>%s a call</b> for the <em>%s</em>.") % (prefix, phonecall.date)
return self. message_append_note(cr, uid, ids, body=message, context=context)
def _lead_set_partner_send_note(self, cr, uid, ids, context=None):
for lead in self.browse(cr, uid, ids, context=context):
message = _("%s <b>partner</b> is now set to <em>%s</em>." % (self.case_get_note_msg_prefix(cr, uid, lead, context=context), lead.partner_id.name))
lead.message_append_note(body=message)
return True
def convert_opportunity_send_note(self, cr, uid, lead, context=None):
message = _("Lead has been <b>converted to an opportunity</b>.")
lead.message_append_note(body=message)
return True
crm_lead()

View File

@ -220,21 +220,21 @@
</record>
<!-- Call Function to Open the leads-->
<function model="crm.lead" name="case_open">
<value eval="[ref('crm_case_electonicgoodsdealer0'), ref('crm_case_company_partnership0'), ref('crm_case_webvisitor0'), ref('crm_case_business_card0'), ref('crm.crm_case_employee0')]"/>
</function>
<function model="crm.lead" name="case_open"
eval="[ref('crm_case_electonicgoodsdealer0'), ref('crm_case_company_partnership0'), ref('crm_case_webvisitor0'), ref('crm_case_business_card0'), ref('crm.crm_case_employee0')], {'install_mode': True}"
/>
<!-- Call Function to mark the lead as Pending-->
<function model="crm.lead" name="case_pending">
<value eval="[ref('crm_case_itdeveloper0')]"/>
</function>
<function model="crm.lead" name="case_pending"
eval="[ref('crm_case_itdeveloper0')], {'install_mode': True}"
/>
<!-- Call Function to Close the leads-->
<function model="crm.lead" name="case_close">
<value eval="[ref('crm_case_vpoperations0'), ref('crm_case_developingwebapplications0'), ref('crm_case_webvisitor0')]"/>
</function>
<function model="crm.lead" name="case_close"
eval="[ref('crm_case_vpoperations0'), ref('crm_case_developingwebapplications0'), ref('crm_case_webvisitor0')], {'install_mode': True}"
/>
<!-- Call Function to Cancel the leads-->
<function model="crm.lead" name="case_cancel">
<value eval="[ref('crm_case_mgroperations0'), ref('crm_case_imported_contact0')]"/>
</function>
<function model="crm.lead" name="case_cancel"
eval="[ref('crm_case_mgroperations0'), ref('crm_case_imported_contact0')], {'install_mode': True}"
/>
<!-- Demo Opportunities -->
<record id="crm_case_construstazunits0" model="crm.lead">

View File

@ -143,29 +143,6 @@
type="object" icon="gtk-convert" />
</group>
</page>
<page string="Communication &amp; History" groups="base.group_extended">
<group colspan="4">
<field colspan="4" name="email_cc" widget="char" size="512"/>
</group>
<field name="message_ids" colspan="4" nolabel="1" mode="tree" readonly="1">
<tree string="History">
<field name="display_text" string="History Information"/>
<field name="email_from" invisible="1"/>
<button
string="Reply" attrs="{'invisible': [('email_from', '=', False)]}"
name="%(mail.action_email_compose_message_wizard)d"
context="{'mail.compose.message.mode':'reply', 'message_id':active_id}"
icon="terp-mail-replied" type="action" />
</tree>
</field>
<button string="Add Internal Note"
name="%(crm.action_crm_add_note)d"
context="{'model': 'crm.lead' }"
icon="terp-document-new" type="action" />
<button string="Send New Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" type="action"/>
</page>
<page string="Extra Info" groups="base.group_extended">
<group colspan="2" col="2">
<separator string="Categorization" colspan="2" col="2"/>
@ -176,13 +153,6 @@
<field name="channel_id" select="1" widget="selection"/>
<field name="referred"/>
</group>
<group colspan="2" col="2" groups="base.group_no_one">
<separator string="Dates" colspan="2" col="2"/>
<field name="create_date"/>
<field name="write_date"/>
<field name="date_open"/>
<field name="date_closed"/>
</group>
<group colspan="2" col="2">
<separator string="Mailings" colspan="2" col="2"/>
<field name="optin" on_change="on_change_optin(optin)"/>
@ -195,6 +165,7 @@
</group>
</page>
</notebook>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</form>
</field>
</record>
@ -545,37 +516,7 @@
<field name="optout" on_change="on_change_optout(optout)"/>
</group>
</page>
<page string="Communication &amp; History" groups="base.group_extended">
<group colspan="4">
<field colspan="4" name="email_cc" widget="char" size="512"/>
</group>
<field name="message_ids" colspan="4" nolabel="1" mode="tree" readonly="1">
<tree string="History">
<field name="display_text" string="History Information"/>
<field name="email_from" invisible="1"/>
<button
string="Reply" attrs="{'invisible': [('email_from', '=', False)]}"
name="%(mail.action_email_compose_message_wizard)d"
context="{'mail.compose.message.mode':'reply', 'message_id':active_id}"
icon="terp-mail-replied" type="action" />
</tree>
</field>
<button string="Add Internal Note"
name="%(crm.action_crm_add_note)d"
context="{'model': 'crm.lead' }"
icon="terp-document-new" type="action" />
<button string="Send New Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" type="action"/>
</page>
<page string="Extra Info" groups="base.group_extended">
<group col="2" colspan="2" groups="base.group_no_one">
<separator string="Dates" colspan="2"/>
<field name="create_date"/>
<field name="write_date"/>
<field name="date_closed"/>
<field name="date_open"/>
</group>
<group col="2" colspan="2">
<separator string="Misc" colspan="2"/>
<field name="active"/>
@ -588,6 +529,7 @@
<field name="ref2"/>
</page>
</notebook>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</form>
</field>
</record>

View File

@ -42,7 +42,7 @@ class crm_meeting(crm_base, osv.osv):
_name = 'crm.meeting'
_description = "Meeting"
_order = "id desc"
_inherit = "calendar.event"
_inherit = ["calendar.event", 'ir.needaction_mixin', "mail.thread"]
_columns = {
# From crm.case
'name': fields.char('Summary', size=124, required=True, states={'done': [('readonly', True)]}),
@ -78,7 +78,55 @@ class crm_meeting(crm_base, osv.osv):
'user_id': lambda self, cr, uid, ctx: uid,
}
def case_open(self, cr, uid, ids, *args):
def create(self, cr, uid, vals, context=None):
obj_id = super(crm_meeting, self).create(cr, uid, vals, context=context)
self.create_send_note(cr, uid, [obj_id], context=context)
return obj_id
def get_needaction_user_ids(self, cr, uid, ids, context=None):
result = dict.fromkeys(ids, [])
for obj in self.browse(cr, uid, ids, context=context):
if (obj.state == 'draft' and obj.user_id):
result[obj.id] = [obj.user_id.id]
return result
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return 'Meeting'
def create_send_note(self, cr, uid, ids, context=None):
if context is None:
context = {}
# update context: if come from phonecall, default state values can make the message_append_note crash
context.pop('default_state', False)
for meeting in self.browse(cr, uid, ids, context=context):
message = _("A meeting has been <b>scheduled</b> on <em>%s</em>.") % (meeting.date)
if meeting.opportunity_id: # meeting can be create from phonecalls or opportunities, therefore checking for the parent
lead = meeting.opportunity_id
parent_message = _("Meeting linked to the opportunity <em>%s</em> has been <b>created</b> and <b>cscheduled</b> on <em>%s</em>.") % (lead.name, meeting.date)
lead.message_append_note(_('System Notification'), message)
elif meeting.phonecall_id:
phonecall = meeting.phonecall_id
parent_message = _("Meeting linked to the phonecall <em>%s</em> has been <b>created</b> and <b>cscheduled</b> on <em>%s</em>.") % (phonecall.name, meeting.date)
phonecall.message_append_note(body=message)
else:
parent_message = message
if parent_message:
meeting.message_append_note(body=parent_message)
return True
def case_close_send_note(self, cr, uid, ids, context=None):
message = _("Meeting has been <b>done</b>.")
return self.message_append_note(cr, uid, ids, body=message, context=context)
def case_open_send_note(self, cr, uid, ids, context=None):
for meeting in self.browse(cr, uid, ids, context=context):
if meeting.state != 'draft':
return False
message = _("Meeting has been <b>confirmed</b>.")
meeting.message_append_note(body=message)
return True
def case_open(self, cr, uid, ids, context=None):
"""Confirms meeting
@param self: The object pointer
@param cr: the current row, from the database cursor,
@ -86,11 +134,9 @@ class crm_meeting(crm_base, osv.osv):
@param ids: List of Meeting Ids
@param *args: Tuple Value for additional Params
"""
res = super(crm_meeting, self).case_open(cr, uid, ids, args)
res = super(crm_meeting, self).case_open(cr, uid, ids, context)
for (id, name) in self.name_get(cr, uid, ids):
message = _("The meeting '%s' has been confirmed.") % name
id=base_calendar.base_calendar_id2real_id(id)
self.log(cr, uid, id, message)
return res
crm_meeting()

View File

@ -212,6 +212,7 @@
</page>
</notebook>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</form>
</field>
</record>

View File

@ -32,6 +32,7 @@ class crm_phonecall(crm_base, osv.osv):
_name = "crm.phonecall"
_description = "Phonecall"
_order = "id desc"
_inherit = ['ir.needaction_mixin', 'mail.thread']
_columns = {
# From crm.case
'id': fields.integer('ID', readonly=True),
@ -47,12 +48,12 @@ class crm_phonecall(crm_base, osv.osv):
'company_id': fields.many2one('res.company', 'Company'),
'description': fields.text('Description'),
'state': fields.selection([
('draft', 'Draft'),
('open', 'Todo'),
('cancel', 'Cancelled'),
('done', 'Held'),
('draft', 'Draft'),
('open', 'Todo'),
('cancel', 'Cancelled'),
('done', 'Held'),
('pending', 'Not Held'),
], 'State', size=16, readonly=True,
], 'State', size=16, readonly=True,
help='The state is set to \'Todo\', when a case is created.\
\nIf the case is in progress the state is set to \'Open\'.\
\nWhen the call is over, the state is set to \'Held\'.\
@ -67,9 +68,9 @@ class crm_phonecall(crm_base, osv.osv):
'partner_phone': fields.char('Phone', size=32),
'partner_mobile': fields.char('Mobile', size=32),
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
'date_closed': fields.datetime('Closed', readonly=True),
'date': fields.datetime('Date'),
'opportunity_id': fields.many2one ('crm.lead', 'Lead/Opportunity'),
'date_closed': fields.datetime('Closed', readonly=True),
'date': fields.datetime('Date'),
'opportunity_id': fields.many2one ('crm.lead', 'Lead/Opportunity'),
'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
}
@ -80,13 +81,20 @@ class crm_phonecall(crm_base, osv.osv):
_defaults = {
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
'priority': crm.AVAILABLE_PRIORITIES[2][0],
'state': _get_default_state,
'priority': crm.AVAILABLE_PRIORITIES[2][0],
'state': _get_default_state,
'user_id': lambda self,cr,uid,ctx: uid,
'active': 1,
}
def case_close(self, cr, uid, ids, *args):
def create(self, cr, uid, vals, context=None):
obj_id = super(crm_phonecall, self).create(cr, uid, vals, context)
for phonecall in self.browse(cr, uid, [obj_id], context=context):
if not phonecall.opportunity_id:
self.case_open_send_note(cr, uid, [obj_id], context=context)
return obj_id
def case_close(self, cr, uid, ids, context=None):
"""Overrides close for crm_case for setting close date
"""
res = True
@ -96,22 +104,22 @@ class crm_phonecall(crm_base, osv.osv):
if phone.duration <=0:
duration = datetime.now() - datetime.strptime(phone.date, '%Y-%m-%d %H:%M:%S')
data.update({'duration': duration.seconds/float(60)})
res = super(crm_phonecall, self).case_close(cr, uid, [phone_id], args)
res = super(crm_phonecall, self).case_close(cr, uid, [phone_id], context)
self.write(cr, uid, [phone_id], data)
return res
def case_reset(self, cr, uid, ids, *args):
def case_reset(self, cr, uid, ids, context=None):
"""Resets case as Todo
"""
res = super(crm_phonecall, self).case_reset(cr, uid, ids, args, 'crm.phonecall')
res = super(crm_phonecall, self).case_reset(cr, uid, ids, context)
self.write(cr, uid, ids, {'duration': 0.0, 'state':'open'})
return res
def case_open(self, cr, uid, ids, *args):
def case_open(self, cr, uid, ids, context=None):
"""Overrides cancel for crm_case for setting Open Date
"""
res = super(crm_phonecall, self).case_open(cr, uid, ids, *args)
res = super(crm_phonecall, self).case_open(cr, uid, ids, context)
self.write(cr, uid, ids, {'date_open': time.strftime('%Y-%m-%d %H:%M:%S')})
return res
@ -143,9 +151,7 @@ class crm_phonecall(crm_base, osv.osv):
'partner_mobile' : call.partner_mobile,
'priority': call.priority,
}
new_id = self.create(cr, uid, vals, context=context)
self.case_open(cr, uid, [new_id])
if action == 'log':
self.case_close(cr, uid, [new_id])
phonecall_dict[call.id] = new_id
@ -162,7 +168,9 @@ class crm_phonecall(crm_base, osv.osv):
return partner_id
def _call_set_partner(self, cr, uid, ids, partner_id, context=None):
return self.write(cr, uid, ids, {'partner_id' : partner_id}, context=context)
write_res = self.write(cr, uid, ids, {'partner_id' : partner_id}, context=context)
self._call_set_partner_send_note(cr, uid, ids, context)
return write_res
def _call_create_partner_address(self, cr, uid, phonecall, partner_id, context=None):
address = self.pool.get('res.partner')
@ -231,7 +239,7 @@ class crm_phonecall(crm_base, osv.osv):
'section_id': call.section_id and call.section_id.id or False,
'description': call.description or False,
'priority': call.priority,
'type': 'opportunity',
'type': 'opportunity',
'phone': call.partner_phone or False,
'email_from': default_contact and default_contact.email,
})
@ -243,7 +251,7 @@ class crm_phonecall(crm_base, osv.osv):
self.case_close(cr, uid, [call.id])
opportunity.case_open(cr, uid, [opportunity_id])
opportunity_dict[call.id] = opportunity_id
return opportunity_dict
return opportunity_dict
def action_make_meeting(self, cr, uid, ids, context=None):
"""
@ -289,6 +297,41 @@ class crm_phonecall(crm_base, osv.osv):
}
return value
# ----------------------------------------
# OpenChatter methods and notifications
# ----------------------------------------
def get_needaction_user_ids(self, cr, uid, ids, context=None):
result = dict.fromkeys(ids)
for obj in self.browse(cr, uid, ids, context=context):
result[obj.id] = []
if (obj.state == 'draft' and obj.user_id):
result[obj.id] = [obj.user_id.id]
return result
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return 'Phonecall'
def case_reset_send_note(self, cr, uid, ids, context=None):
message = _('Phonecall has been <b>reset and set as open</b>.')
return self.message_append_note(cr, uid, ids, body=message, context=context)
def case_open_send_note(self, cr, uid, ids, context=None):
lead_obj = self.pool.get('crm.lead')
for phonecall in self.browse(cr, uid, ids, context=context):
phonecall.message_subscribe([phonecall.user_id.id], context=context)
if phonecall.opportunity_id:
lead = phonecall.opportunity_id
message = _("Phonecall linked to the opportunity <em>%s</em> has been <b>created</b> and <b>scheduled</b> on <em>%s</em>.") % (lead.name, phonecall.date)
else:
message = _("Phonecall has been <b>created and opened</b>.")
phonecall.message_append_note(body=message)
return True
def _call_set_partner_send_note(self, cr, uid, ids, context=None):
return self.message_append_note(cr, uid, ids, body=_("Partner has been <b>created</b>"), context=context)
crm_phonecall()

View File

@ -120,6 +120,7 @@
states="cancel" type="object"
icon="gtk-convert" />
</group>
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
</form>
</field>
</record>

View File

@ -2,7 +2,7 @@
<openerp>
<data>
<menuitem icon="terp-partner" id="base.menu_base_partner" name="Sales" sequence="0"
<menuitem icon="terp-partner" id="base.menu_base_partner" name="Sales" sequence="1"
groups="base.group_sale_manager,base.group_sale_salesman"/>
<menuitem id="base.menu_crm_config_lead" name="Leads &amp; Opportunities"

64
addons/crm/res_config.py Normal file
View File

@ -0,0 +1,64 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Business Applications
# Copyright (C) 2004-2012 OpenERP S.A. (<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/>.
#
##############################################################################
from osv import fields, osv
class crm_configuration(osv.osv_memory):
_name = 'sale.config.settings'
_inherit = ['sale.config.settings', 'fetchmail.config.settings']
_columns = {
'module_crm_caldav': fields.boolean("Caldav Synchronization",
help="""Use protocol caldav to synchronize meetings with other calendar applications (like Sunbird).
This installs the module crm_caldav."""),
'fetchmail_lead': fields.boolean("Create leads from an email account",
fetchmail_model='crm.lead', fetchmail_name='Incoming leads',
help="""Allows you to configure your incoming mail server, and create leads from incoming emails."""),
'lead_server': fields.char('Server', size=256),
'lead_port': fields.integer('Port'),
'lead_type': fields.selection([
('pop', 'POP Server'),
('imap', 'IMAP Server'),
('local', 'Local Server'),
], 'Type'),
'lead_is_ssl': fields.boolean('SSL/TLS',
help="Connections are encrypted with SSL/TLS through a dedicated port (default: IMAPS=993, POP=995)"),
'lead_user': fields.char('Username', size=256),
'lead_password': fields.char('Password', size=1024),
'module_import_sugarcrm': fields.boolean("SugarCRM Import",
help="""Import SugarCRM leads, opportunities, users, accounts, contacts, employees, meetings, phonecalls, emails, project and project tasks data.
This installs the module import_sugarcrm."""),
'module_import_google': fields.boolean("Google Import",
help="""Import google contact in partner address and add google calendar events details in Meeting.
This installs the module import_google."""),
'module_wiki_sale_faq': fields.boolean("Install a sales FAQ",
help="""This provides demo data, thereby creating a Wiki Group and a Wiki Page for Wiki Sale FAQ.
This installs the module wiki_sale_faq."""),
'module_google_map': fields.boolean("Google maps on customer",
help="""Locate customers on Google Map.
This installs the module google_map."""),
}
_defaults = {
'lead_type': 'pop',
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_sale_config_settings" model="ir.ui.view">
<field name="name">crm settings</field>
<field name="model">sale.config.settings</field>
<field name="type">form</field>
<field name="inherit_id" ref="base.view_sale_config_settings"/>
<field name="arch" type="xml">
<group name="config_fetchmail" position="after">
<field name="fetchmail_lead"/>
<group colspan="2" attrs="{'invisible': [('fetchmail_lead','=',False)]}">
<field name="lead_server" attrs="{'required': [('fetchmail_lead','=',True)]}"/>
<field name="lead_type" on_change="onchange_fetchmail('lead', lead_type, lead_is_ssl)" attrs="{'required': [('fetchmail_lead','=',True)]}"/>
<field name="lead_port" attrs="{'required': [('fetchmail_lead','=',True)]}"/>
<field name="lead_is_ssl" on_change="onchange_fetchmail('lead', lead_type, lead_is_ssl)"/>
<field name="lead_user" attrs="{'required': [('fetchmail_lead','=',True)]}"/>
<field name="lead_password" password="True" attrs="{'required': [('fetchmail_lead','=',True)]}"/>
</group>
<newline/>
</group>
<group name="config_crm" position="after">
<separator string="Import and Synchronize data from an other application" colspan="4"/>
<field name="module_import_sugarcrm"/>
<field name="module_crm_caldav"/>
<field name="module_import_google"/>
<separator string="Documents and Wiki" colspan="4"/>
<field name="module_wiki_sale_faq" />
<separator string="Customer Form" colspan="4"/>
<field name="module_google_map"/>
</group>
</field>
</record>
<menuitem id="base.menu_sale_config" name="Sales" parent="base.menu_config" sequence="1" action="base.action_sale_config"/>
</data>
</openerp>

View File

@ -17,9 +17,10 @@
<field name="name">Manager</field>
<field name="category_id" ref="base.module_category_sales_management"/>
<field name="implied_ids" eval="[(4, ref('base.group_sale_salesman_all_leads'))]"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<record model="res.users" id="base.user_admin">
<record model="res.users" id="base.user_root">
<field eval="[(4,ref('base.group_partner_manager'))]" name="groups_id"/>
</record>

View File

@ -0,0 +1,33 @@
# Czech translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-06 07:00+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: crm_caldav
#: model:ir.actions.act_window,name:crm_caldav.action_caldav_browse
msgid "Caldav Browse"
msgstr "Procházet Caldav"
#. module: crm_caldav
#: model:ir.ui.menu,name:crm_caldav.menu_caldav_browse
msgid "Synchronize This Calendar"
msgstr "Synchronizovat tento kalendář"
#. module: crm_caldav
#: model:ir.model,name:crm_caldav.model_crm_meeting
msgid "Meeting"
msgstr "Setkání"

View File

@ -21,6 +21,7 @@
import crm_claim
import report
import res_config
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -44,6 +44,7 @@ automatically new claims based on incoming emails.
'crm_claim_menu.xml',
'security/ir.model.access.csv',
'report/crm_claim_report_view.xml',
'res_config_view.xml',
],
'demo_xml': [
'crm_claim_demo.xml',

View File

@ -95,6 +95,9 @@ class crm_claim(crm.crm_case, osv.osv):
'active': lambda *a: 1
}
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return 'Claim'
def onchange_partner_id(self, cr, uid, ids, part, email=False):
"""This function returns value of partner address based on partner
:param part: Partner's id

View File

@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Business Applications
# Copyright (C) 2004-2012 OpenERP S.A. (<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/>.
#
##############################################################################
from osv import osv, fields
class crm_claim_settings(osv.osv_memory):
_name = 'sale.config.settings'
_inherit = ['sale.config.settings', 'fetchmail.config.settings']
_columns = {
'fetchmail_claim': fields.boolean("Create claims from an email account",
fetchmail_model='crm.claim', fetchmail_name='Incoming claims',
help="""Allows you to configure your incoming mail server, and create claims from incoming emails."""),
'claim_server' : fields.char('Server', size=256),
'claim_port' : fields.integer('Port'),
'claim_type': fields.selection([
('pop', 'POP Server'),
('imap', 'IMAP Server'),
('local', 'Local Server'),
], 'Type'),
'claim_is_ssl': fields.boolean('SSL/TLS', help="Connections are encrypted with SSL/TLS through a dedicated port (default: IMAPS=993, POP=995)"),
'claim_user' : fields.char('Username', size=256),
'claim_password' : fields.char('Password', size=1024),
}
_defaults = {
'claim_type': 'pop',
}

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_project_config_claim" model="ir.ui.view">
<field name="name">crm_claim settings</field>
<field name="model">sale.config.settings</field>
<field name="type">form</field>
<field name="inherit_id" ref="base.view_sale_config_settings"/>
<field name="priority" eval="12"/> <!-- to put fetchmail_lead before fetchmail_claim -->
<field name="arch" type="xml">
<group name="config_fetchmail" position="after">
<field name="fetchmail_claim"/>
<group colspan="2" attrs="{'invisible': [('fetchmail_claim','=',False)]}">
<field name="claim_server" attrs="{'required': [('fetchmail_claim','=',True)]}"/>
<field name="claim_type" on_change="onchange_fetchmail('claim', claim_type, claim_is_ssl)" attrs="{'required': [('fetchmail_claim','=',True)]}"/>
<field name="claim_port" attrs="{'required': [('fetchmail_claim','=',True)]}"/>
<field name="claim_is_ssl" on_change="onchange_fetchmail('claim', claim_type, claim_is_ssl)"/>
<field name="claim_user" attrs="{'required': [('fetchmail_claim','=',True)]}"/>
<field name="claim_password" password="True" attrs="{'required': [('fetchmail_claim','=',True)]}"/>
</group>
<newline/>
</group>
</field>
</record>
</data>
</openerp>

View File

@ -125,7 +125,7 @@ class crm_lead_forward_to_partner(osv.osv_memory):
if email_to not in new_cc:
new_cc.append(to)
update_vals = {'email_cc' : ', '.join(new_cc) }
lead.write(cr, uid, case.id, update_vals, context=context)
lead.write(cr, uid, [case.id], update_vals, context=context)
return res
def _get_info_body_text(self, cr, uid, lead, context=None):

View File

@ -0,0 +1,95 @@
# Arabic translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-06 01:03+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: crm_todo
#: model:ir.model,name:crm_todo.model_project_task
msgid "Task"
msgstr "مهمة"
#. module: crm_todo
#: view:crm.lead:0
msgid "Timebox"
msgstr "الوقت الزمني"
#. module: crm_todo
#: view:crm.lead:0
msgid "For cancelling the task"
msgstr ""
#. module: crm_todo
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr "خطأ ! يجب ان يكون تاريخ نهاية المهمة اكبر من تاريخ البداية"
#. module: crm_todo
#: model:ir.model,name:crm_todo.model_crm_lead
msgid "crm.lead"
msgstr "crm.lead"
#. module: crm_todo
#: view:crm.lead:0
msgid "Next"
msgstr "التالي"
#. module: crm_todo
#: model:ir.actions.act_window,name:crm_todo.crm_todo_action
#: model:ir.ui.menu,name:crm_todo.menu_crm_todo
msgid "My Tasks"
msgstr "مهامي"
#. module: crm_todo
#: view:crm.lead:0
#: field:crm.lead,task_ids:0
msgid "Tasks"
msgstr "المهام"
#. module: crm_todo
#: view:crm.lead:0
msgid "Done"
msgstr "تمّ"
#. module: crm_todo
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "خطأ ! لا يمكنك انشاء مهام متداخلة."
#. module: crm_todo
#: view:crm.lead:0
msgid "Cancel"
msgstr "إلغاء"
#. module: crm_todo
#: view:crm.lead:0
msgid "Extra Info"
msgstr "معلومات إضافية"
#. module: crm_todo
#: field:project.task,lead_id:0
msgid "Lead / Opportunity"
msgstr ""
#. module: crm_todo
#: view:crm.lead:0
msgid "For changing to done state"
msgstr ""
#. module: crm_todo
#: view:crm.lead:0
msgid "Previous"
msgstr "السابق"

View File

@ -0,0 +1,49 @@
# Czech translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-06 05:28+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: decimal_precision
#: field:decimal.precision,digits:0
msgid "Digits"
msgstr "Číslice"
#. module: decimal_precision
#: model:ir.actions.act_window,name:decimal_precision.action_decimal_precision_form
#: model:ir.ui.menu,name:decimal_precision.menu_decimal_precision_form
msgid "Decimal Accuracy"
msgstr "Desetinná přesnost"
#. module: decimal_precision
#: field:decimal.precision,name:0
msgid "Usage"
msgstr "Použití"
#. module: decimal_precision
#: sql_constraint:decimal.precision:0
msgid "Only one value can be defined for each given usage!"
msgstr "Pro každé dané použití může být zadána jen jedna hodnota."
#. module: decimal_precision
#: view:decimal.precision:0
msgid "Decimal Precision"
msgstr "Desetinná přesnost"
#. module: decimal_precision
#: model:ir.model,name:decimal_precision.model_decimal_precision
msgid "decimal.precision"
msgstr "decimal.precision"

View File

@ -250,23 +250,4 @@ class delivery_grid_line(osv.osv):
delivery_grid_line()
class define_delivery_steps(osv.osv_memory):
_name = 'delivery.define.delivery.steps.wizard'
_columns = {
'picking_policy' : fields.selection([('direct', 'Deliver each product when available'), ('one', 'Deliver all products at once')], 'Picking Policy'),
}
_defaults = {
'picking_policy': lambda s,c,u,ctx: s.pool.get('sale.order').default_get(c,u,['picking_policy'],context=ctx)['picking_policy']
}
def apply_cb(self, cr, uid, ids, context=None):
ir_values_obj = self.pool.get('ir.values')
wizard = self.browse(cr, uid, ids, context=context)[0]
ir_values_obj.set(cr, uid, 'default', False, 'picking_policy', ['sale.order'], wizard.picking_policy)
return {'type' : 'ir.actions.act_window_close'}
define_delivery_steps()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -72,15 +72,6 @@
<field name="help">Define the delivery methods you are using and their pricing in order to reinvoice the delivery costs when you are doing invoicing based on delivery orders</field>
</record>
<record id="action_delivery_carrier_form1" model="ir.actions.act_window">
<field name="name">Define Delivery Methods</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">delivery.carrier</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help">Define your delivery methods and their pricing. The delivery costs can be added on the sale order form or in the invoice, based on the delivery orders.</field>
</record>
<menuitem action="action_delivery_carrier_form" id="menu_action_delivery_carrier_form" parent="stock.menu_stock_configuration" sequence="15"/>
<!-- Delivery Grids -->
@ -331,41 +322,5 @@
</field>
</record>
<record id="delivery_method_form_view_todo" model="ir.actions.todo">
<field name="action_id" ref="action_delivery_carrier_form1"/>
<field name="category_id" ref="stock.category_stock_management_config" />
<field name="sequence">10</field>
</record>
<record model="ir.ui.view" id="define_delivery_steps_form">
<field name="name">delivery.define_delivery_steps</field>
<field name="model">delivery.define.delivery.steps.wizard</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Setup Your Picking Policy">
<separator string="Choose Your Default Picking Policy" colspan="4"/>
<field name="picking_policy" />
<separator string="" colspan="4"/>
<group colspan="4">
<button string="Cancel" icon="gtk-cancel" special="cancel" />
<button string="Apply" icon="gtk-apply" name="apply_cb" type="object" />
</group>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_define_delivery_steps">
<field name="name">Setup Your Picking Policy</field>
<field name="res_model">delivery.define.delivery.steps.wizard</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<record model="ir.actions.todo" id="todo_define_delivery_steps">
<field name="action_id" ref="action_define_delivery_steps" />
<field name="category_id" ref="base.category_sales_management_config"/>
<field name="type">once</field>
</record>
</data>
</openerp>

View File

@ -67,9 +67,9 @@
-
I set default delivery policy.
-
!record {model: delivery.define.delivery.steps.wizard, id: default_delivery_policy}:
!record {model: sale.config.settings, id: default_delivery_policy}:
{}
-
!python {model: delivery.define.delivery.steps.wizard}: |
self.apply_cb(cr, uid, [ref('default_delivery_policy')], context=context)
!python {model: sale.config.settings}: |
self.execute(cr, uid, [ref('default_delivery_policy')], context=context)

View File

@ -2,9 +2,11 @@
<data>
<record model="res.groups" id="group_compta_user">
<field name="name">grcompta</field>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<record model="res.groups" id="group_compta_admin">
<field name="name">grcomptaadmin</field>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<menuitem name="Administration" groups="admin,grcomptaadmin" icon="terp-stock" id="menu_admin_compta"/>
</data>

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2011-09-05 17:16+0000\n"
"PO-Revision-Date: 2012-04-06 06:26+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 06:48+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: document
@ -152,7 +152,7 @@ msgstr "Název adresáře musí být unikátní!"
#. module: document
#: view:ir.attachment:0
msgid "Filter on my documents"
msgstr ""
msgstr "Filtr nad mými dokumenty"
#. module: document
#: field:ir.attachment,index_content:0
@ -171,7 +171,7 @@ msgstr ""
#. module: document
#: model:ir.actions.todo.category,name:document.category_knowledge_mgmt_config
msgid "Knowledge Management"
msgstr ""
msgstr "Správa znalostí"
#. module: document
#: view:document.directory:0
@ -385,6 +385,8 @@ msgid ""
"When executing this wizard, it will configure your directories automatically "
"according to modules installed."
msgstr ""
"Když je tento průvodce vykonán, nastaví automaticky vaše adresáře podle "
"instalovaných modulů."
#. module: document
#: field:document.directory.content,directory_id:0
@ -520,7 +522,7 @@ msgstr ""
#: view:document.configuration:0
#: model:ir.actions.act_window,name:document.action_config_auto_directory
msgid "Configure Directories"
msgstr ""
msgstr "Nastavit adresáře"
#. module: document
#: field:document.directory.content,include_name:0
@ -674,7 +676,7 @@ msgstr "Pouze ke čtení"
#. module: document
#: model:ir.actions.act_window,name:document.action_document_directory_form
msgid "Document Directory"
msgstr ""
msgstr "Adresář dokumentů"
#. module: document
#: sql_constraint:document.directory:0
@ -700,6 +702,10 @@ msgid ""
"attached to the document, or to print and download any report. This tool "
"will create directories automatically according to modules installed."
msgstr ""
"Systém správy dokumentů OpenERP podporuje mapování virtuálních složek s "
"dokumenty. Virtuální složka dokumentů může být použita pro správu souborů "
"přiložených k dokumentům nebo k vytištění a stažení jakéhokoliv výkazu. "
"Tento nástroj vytvoří automaticky adresář podle instalovaných modulů."
#. module: document
#: view:board.board:0
@ -793,7 +799,7 @@ msgstr "Měsíc"
#. module: document
#: view:report.document.user:0
msgid "This Months Files"
msgstr ""
msgstr "Soubory za tyto měsíce"
#. module: document
#: model:ir.ui.menu,name:document.menu_reporting
@ -859,7 +865,7 @@ msgstr "Soubory podle partnerů"
#. module: document
#: view:ir.attachment:0
msgid "Indexed Content - experimental"
msgstr ""
msgstr "Indexovaný obsah - pokusné"
#. module: document
#: view:report.document.user:0
@ -874,7 +880,7 @@ msgstr "Poznámky"
#. module: document
#: model:ir.model,name:document.model_document_configuration
msgid "Directory Configuration"
msgstr ""
msgstr "Nastavení adresáře"
#. module: document
#: help:document.directory,type:0
@ -977,7 +983,7 @@ msgstr "MIME typ"
#. module: document
#: view:report.document.user:0
msgid "All Months Files"
msgstr ""
msgstr "Soubory za všechny měsíce"
#. module: document
#: field:document.directory.content,name:0

View File

@ -5,6 +5,7 @@
<record id="base.group_document_user" model="res.groups">
<field name="name">User</field>
<field name="category_id" ref="base.module_category_knowledge_management"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<!-- <record id="group_document_manager" model="res.groups">-->

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2011-05-09 08:15+0000\n"
"Last-Translator: Jan B. Krejčí <Unknown>\n"
"PO-Revision-Date: 2012-04-06 06:13+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 07:06+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_document_ftp_configuration
@ -31,6 +31,10 @@ msgid ""
"format is HOST:PORT and the default host (localhost) is only suitable for "
"access from the server machine itself.."
msgstr ""
"Značí adresu sítě, na které by měl být pro koncové uživatel dostupný váš "
"OpenERP server. To závisí na vaší síťové topologii a nastavení a ovlivní to "
"pouze odkazy zobrazené uživatelům. Formát je POĆÍTAČ:PORT a výchozí počítač "
"(localhost) je vhodný pouze pro přístup ze samotného serveru."
#. module: document_ftp
#: model:ir.actions.url,name:document_ftp.action_document_browse
@ -67,6 +71,8 @@ msgstr "_Procházet"
msgid ""
"Server address or IP and port to which users should connect to for DMS access"
msgstr ""
"Adresa serveru nebo IP a port, ke kterému by se měli uživatelé připojit pro "
"přístup DMS"
#. module: document_ftp
#: model:ir.ui.menu,name:document_ftp.menu_document_browse
@ -91,27 +97,27 @@ msgstr "název"
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_document_ftp_browse
msgid "Document FTP Browse"
msgstr ""
msgstr "Procházení FTP dokumentů"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "Knowledge Application Configuration"
msgstr ""
msgstr "Nastavení aplikace znalostí"
#. module: document_ftp
#: model:ir.actions.act_window,name:document_ftp.action_ftp_browse
msgid "Document Browse"
msgstr ""
msgstr "Procházení dokumentů"
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "Browse Document"
msgstr ""
msgstr "Procházet dokument"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "res_config_contents"
msgstr ""
msgstr "res_config_contents"
#~ msgid "Integrated FTP Server with Document Management System"
#~ msgstr "FTP server integrovaný s Document Management Systémem"

View File

@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2010-12-23 14:06+0000\n"
"Last-Translator: Olivier Dony (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2012-04-05 15:29+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian latin <sr@latin@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-09 07:07+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Launchpad-Export-Date: 2012-04-06 04:37+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_document_ftp_configuration
msgid "Auto Directory Configuration"
msgstr "Auto Podesavanje dIrektorijuma"
msgstr "Auto-podešavanje direktorijuma"
#. module: document_ftp
#: view:document.ftp.configuration:0
@ -31,11 +31,16 @@ msgid ""
"format is HOST:PORT and the default host (localhost) is only suitable for "
"access from the server machine itself.."
msgstr ""
"Odredite adresu mreže na koju bi Vaši OpenERP server trebalo da bude "
"dostupan za konačne korisnike. Ovo zavisi od Vaše mrežne toplogije i "
"podešavanja, i neće imati uticaja na linkove prikazane korisnicima. Format "
"je HOST:PORT i domaćin po defaultu (localhost) je jedino prikladan za "
"pristup na server sa same mašine."
#. module: document_ftp
#: model:ir.actions.url,name:document_ftp.action_document_browse
msgid "Browse Files"
msgstr "Pretrazi fajlove"
msgstr "Pretraži datoteke"
#. module: document_ftp
#: field:document.ftp.configuration,config_logo:0
@ -45,7 +50,7 @@ msgstr "Slika"
#. module: document_ftp
#: field:document.ftp.configuration,host:0
msgid "Address"
msgstr ""
msgstr "Adresa"
#. module: document_ftp
#: field:document.ftp.browse,url:0
@ -55,12 +60,12 @@ msgstr "FTP Server"
#. module: document_ftp
#: model:ir.actions.act_window,name:document_ftp.action_config_auto_directory
msgid "FTP Server Configuration"
msgstr "KOnfiguracija FTP Servera"
msgstr "Podešavanje FTP servera"
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "_Browse"
msgstr "_Browse"
msgstr "_Pretraži"
#. module: document_ftp
#: help:document.ftp.configuration,host:0
@ -73,32 +78,32 @@ msgstr ""
#. module: document_ftp
#: model:ir.ui.menu,name:document_ftp.menu_document_browse
msgid "Shared Repository (FTP)"
msgstr "Deljeno skladiste (FTP)"
msgstr "Deljeno skladište"
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "_Cancel"
msgstr "_Cancel"
msgstr "_Otkaži"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "Configure FTP Server"
msgstr ""
msgstr "Podesi FTP server"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "title"
msgstr "Naslov"
msgstr "naslov"
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_document_ftp_browse
msgid "Document FTP Browse"
msgstr "FTP pretrazi Dokumente"
msgstr "Pretraži FTP dokumente"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "Knowledge Application Configuration"
msgstr ""
msgstr "Podešavanje aplikacije znanja"
#. module: document_ftp
#: model:ir.actions.act_window,name:document_ftp.action_ftp_browse
@ -108,7 +113,7 @@ msgstr "Pretrazi Dokumente"
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "Browse Document"
msgstr "Pretrazi Dokument"
msgstr "Pretraži dokumenta"
#. module: document_ftp
#: view:document.ftp.configuration:0

386
addons/edi/i18n/ar.po Normal file
View File

@ -0,0 +1,386 @@
# Arabic translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-04-06 00:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
#. module: edi
#: sql_constraint:res.currency:0
msgid "The currency code must be unique per company!"
msgstr ""
#. module: edi
#: model:ir.model,name:edi.model_res_partner_address
msgid "Partner Addresses"
msgstr "عناوين الشريك"
#. module: edi
#: sql_constraint:res.company:0
msgid "The company name must be unique !"
msgstr "اسم الشركة يجب أن يكون فريداً !"
#. module: edi
#: constraint:res.partner:0
msgid "Error ! You cannot create recursive associated members."
msgstr ""
#. module: edi
#: field:edi.document,name:0
msgid "EDI token"
msgstr ""
#. module: edi
#: help:edi.document,name:0
msgid "Unique identifier for retrieving an EDI document."
msgstr ""
#. module: edi
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr "خطأ! لا يمكنك إنشاء شركات متداخلة (شركات تستخدم نفسها)."
#. module: edi
#: model:ir.model,name:edi.model_res_company
msgid "Companies"
msgstr "الشركات"
#. module: edi
#: sql_constraint:edi.document:0
msgid "EDI Tokens must be unique!"
msgstr ""
#. module: edi
#: model:ir.model,name:edi.model_res_currency
msgid "Currency"
msgstr "العملة"
#. module: edi
#: code:addons/edi/models/edi.py:153
#, python-format
msgid ""
"The document you are trying to import requires the OpenERP `%s` application. "
"You can install it by connecting as the administrator and opening the "
"configuration assistant."
msgstr ""
#. module: edi
#: help:edi.document,document:0
msgid "EDI document content"
msgstr ""
#. module: edi
#: model:ir.model,name:edi.model_edi_document
msgid "EDI Document"
msgstr ""
#. module: edi
#: code:addons/edi/models/edi.py:48
#, python-format
msgid "'%s' is an invalid external ID"
msgstr ""
#. module: edi
#: model:ir.model,name:edi.model_res_partner
msgid "Partner"
msgstr "الشريك"
#. module: edi
#: code:addons/edi/models/edi.py:152
#, python-format
msgid "Missing Application"
msgstr ""
#. module: edi
#: field:edi.document,document:0
msgid "Document"
msgstr "مستند"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:23
msgid "View/Print"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:28
msgid "Import this document"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:33
msgid "Import it into an existing OpenERP instance"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:36
msgid "OpenERP instance address:"
msgstr "عنوان مثال أوبنيرب:"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:39
msgid "Import"
msgstr "إستيراد"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:44
msgid "Import it into a new OpenERP Online instance"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:47
msgid "Create my new OpenERP instance"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:52
msgid "Import into another application"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:54
msgid ""
"OpenERP's Electronic Data Interchange documents are based on a generic and "
"language\n"
" independent"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:56
msgid "JSON"
msgstr "JSON"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:56
msgid ""
"serialization of the document's attribute.\n"
" It is usually very quick and straightforward to "
"create a small plug-in for your preferred\n"
" application that will be capable of importing "
"any OpenERP EDI document.\n"
" You can find out more details about how to do "
"this and what the content of OpenERP EDI documents\n"
" is like in the"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:60
msgid "OpenERP documentation"
msgstr "وثائق أوبنيرب"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:61
msgid "To get started immediately,"
msgstr "للبدء خالاً"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:62
msgid "see is all it takes to use this EDI document in Python"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:70
msgid "You can download the raw EDI document here:"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:73
msgid "Download"
msgstr "تحميل"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:87
msgid "Powered by"
msgstr "مدعوم من kifcaliph و"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:87
msgid "OpenERP"
msgstr "أوبنيرب"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:34
msgid "Invoice"
msgstr "فاتورة"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:37
msgid "Description"
msgstr "الوصف"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:38
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:41
msgid "Date"
msgstr "التاريخ"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:39
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:40
msgid "Your Reference"
msgstr "مرجعك"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:50
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:57
msgid "Product Description"
msgstr "وصف المنتج"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:51
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:58
msgid "Quantity"
msgstr "الكمية"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:52
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:59
msgid "Unit Price"
msgstr "سعر الوحدة"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:53
msgid "Discount"
msgstr "الخصم"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:54
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:61
msgid "Price"
msgstr "السعر"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:72
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:81
msgid "Net Total:"
msgstr "صافي الإجمالي:"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:83
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:92
msgid "Taxes:"
msgstr "ضرائب:"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:94
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:103
msgid "Total:"
msgstr "الإجمالي:"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:106
msgid "Tax"
msgstr "ضريبة"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:107
msgid "Base Amount"
msgstr "المبلغ الأساسي"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:108
msgid "Amount"
msgstr "المقدار"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:121
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:113
msgid "Notes:"
msgstr "ملاحظات:"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:129
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:121
msgid "Pay Online"
msgstr "الدفع أونلاين"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:133
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:125
msgid "Paypal"
msgstr "باي بال (Paypal)"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:135
msgid ""
"You may directly pay this invoice online via Paypal's secure payment gateway:"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:145
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:137
msgid "Bank Wire Transfer"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:147
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:139
msgid "Please transfer"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:148
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:140
msgid "to"
msgstr "إلى"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:149
msgid ""
"(postal address on the invoice header)\n"
" using one of the following bank accounts. Be sure to "
"mention the invoice\n"
" reference"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:151
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:143
msgid "on the transfer:"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:36
msgid "Order"
msgstr "الترتيب"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:42
msgid "Salesman"
msgstr "مندوب المبيعات"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:43
msgid "Payment terms"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:60
msgid "Discount(%)"
msgstr "الخصم (%)"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:127
msgid ""
"You may directly pay this order online via Paypal's secure payment gateway:"
msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:141
msgid ""
"(postal address on the order header)\n"
" using one of the following bank accounts. Be sure to "
"mention the document\n"
" reference"
msgstr ""

View File

@ -389,6 +389,7 @@
</group>
</page>
<page string="Emails" groups="base.group_extended">
<!--
<field name="message_ids" colspan="4" nolabel="1" mode="tree">
<tree string="History">
<field name="display_text" string="History Information"/>
@ -400,6 +401,7 @@
icon="terp-mail-replied" type="action" />
</tree>
</field>
-->
<button string="Send New Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" context= '{"default_email_to":email}' type="action"/>

View File

@ -17,10 +17,7 @@
<field name="name">Manager</field>
<field name="category_id" ref="module_category_event_management"/>
<field name="implied_ids" eval="[(4, ref('group_event_user'))]"/>
</record>
<record model="res.users" id="base.user_admin">
<field eval="[(4,ref('group_event_manager'))]" name="groups_id"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<!-- Multi - Company Rules -->

View File

@ -1,7 +1,7 @@
#-*- coding:utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
# mga@tinyerp.com
#
@ -21,5 +21,6 @@
##############################################################################
import fetchmail
import res_config
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -105,6 +105,7 @@
action="action_email_server_tree"
name="Incoming Mail Servers"
sequence="14"
groups="base.group_no_one"
/>
<record model="ir.ui.view" id="email_message_tree_view">

View File

@ -0,0 +1,123 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Business Applications
# Copyright (C) 2004-2012 OpenERP S.A. (<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/>.
#
##############################################################################
from osv import fields, osv
class fetchmail_config_settings(osv.osv_memory):
""" This wizard can be inherited in conjunction with 'res.config.settings', in order to
define fields that configure a fetchmail server.
It relies on the following convention on a set of fields::
class my_config_wizard(osv.osv_memory):
_name = 'my.settings'
_inherits = ['res.config.settings', 'fetchmail.config.settings']
_columns = {
'fetchmail_X': fields.boolean(..., fetchmail_model='my.model', fetchmail_name='Blah'),
'X_server': fields.char('Server Name', size=256),
'X_port': fields.integer('Port'),
'X_type': fields.selection(
[('pop', 'POP Server'), ('imap', 'IMAP Server'), ('local', 'Local Server')],
'Server Type'),
'X_is_ssl': fields.boolean('SSL/TLS'),
'X_user': fields.char('Username', size=256),
'X_password': fields.char('Password', size=1024),
}
The method ``get_default_fetchmail_servers`` retrieves the current fetchmail configuration
for all fields that start with 'fetchmail_'. It looks up configurations that match the
given model name (``fetchmail_model``). The method ``set_fetchmail_servers`` updates the
fetchmail configurations by following the same conventions. Both methods are called
automatically by the methods of the model 'res.config.settings'.
The onchange method ``onchange_fetchmail`` can be used to react on changes on the fields
'X_type' and 'X_is_ssl'. Its first parameter is the fields' prefix (here 'X').
"""
_name = 'fetchmail.config.settings'
def get_default_fetchmail_servers(self, cr, uid, fields, context=None):
ir_model = self.pool.get('ir.model')
fetchmail_server = self.pool.get('fetchmail.server')
fetchmail_fields = [f for f in self._columns if f.startswith('fetchmail_')]
res = {}
for field in fetchmail_fields:
model_name = self._columns[field].fetchmail_model
model_id = ir_model.search(cr, uid, [('model', '=', model_name)])[0]
server_ids = fetchmail_server.search(cr, uid, [('object_id', '=', model_id), ('state', '=', 'done')])
if server_ids:
server = fetchmail_server.browse(cr, uid, server_ids[0], context)
prefix = field[10:]
res.update({
field: True,
prefix + '_server': server.server,
prefix + '_port': server.port,
prefix + '_type': server.type,
prefix + '_is_ssl': server.is_ssl,
prefix + '_user': server.user,
prefix + '_password': server.password,
})
return res
def set_fetchmail_servers(self, cr, uid, ids, context):
ir_model = self.pool.get('ir.model')
fetchmail_server = self.pool.get('fetchmail.server')
fetchmail_fields = [f for f in self._columns if f.startswith('fetchmail_')]
config = self.browse(cr, uid, ids[0], context)
for field in fetchmail_fields:
model_name = self._columns[field].fetchmail_model
model_id = ir_model.search(cr, uid, [('model', '=', model_name)])[0]
server_ids = fetchmail_server.search(cr, uid, [('object_id', '=', model_id), ('state', '=', 'done')])
if config[field]:
prefix = field[10:]
values = {
'server': config[prefix + '_server'],
'port': config[prefix + '_port'],
'type': config[prefix + '_type'],
'is_ssl': config[prefix + '_is_ssl'],
'user': config[prefix + '_user'],
'password': config[prefix + '_password'],
}
if not server_ids:
values.update({
'name': getattr(self._columns[field], 'fetchmail_name', model_name),
'object_id': model_id,
})
server_ids = [fetchmail_server.create(cr, uid, values, context=context)]
else:
server_ids = fetchmail_server.search(cr, uid, [('object_id', '=', model_id)], context=context)
fetchmail_server.write(cr, uid, server_ids, values, context=context)
fetchmail_server.button_confirm_login(cr, uid, server_ids, context)
else:
fetchmail_server.set_draft(cr, uid, server_ids, context)
def onchange_fetchmail(self, cr, uid, ids, prefix, server_type, ssl, context=None):
values = {}
if server_type == 'pop':
values[prefix + '_port'] = ssl and 995 or 110
elif server_type == 'imap':
values[prefix + '_port'] = ssl and 993 or 143
else:
values[prefix + '_server'] = False
values[prefix + '_port'] = 0
return {'value': values}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,22 +0,0 @@
#-*- coding:utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2011 OpenERP S.A. (<http://www.openerp.com>). All Rights Reserved
#
# 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/>.
#
##############################################################################
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,41 +0,0 @@
#-*- coding:utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2011 OpenERP S.A. (<http://www.openerp.com>). All Rights Reserved
#
# 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" : "eMail Gateway for Leads",
"version" : "1.0",
"depends" : ["fetchmail", "crm"],
"author" : "OpenERP SA",
"category": 'Hidden',
"description": """
""",
'website': 'http://www.openerp.com',
'init_xml': [],
'update_xml': [
"installer.xml",
],
'demo_xml': [
],
'installable': True,
'auto_install': True,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,36 +0,0 @@
# German translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-09 15:11+0000\n"
"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-10 04:50+0000\n"
"X-Generator: Launchpad (build 14771)\n"
#. module: fetchmail_crm
#: model:ir.actions.act_window,name:fetchmail_crm.action_create_crm_leads_from_email_account
msgid "Create Leads from Email Account"
msgstr "Erzeuge Kontakte vom Email Konto"
#. module: fetchmail_crm
#: model:ir.actions.act_window,help:fetchmail_crm.action_create_crm_leads_from_email_account
msgid ""
"You can connect your email account with leads in OpenERP. A new email sent "
"to this account (example: info@mycompany.com) will automatically create a "
"lead in OpenERP. The whole communication with the salesman will be attached "
"to the lead automatically."
msgstr ""
"Sie können Ihre E-Mails mit Verkaufs-Kontakten in OpenERP verbinden. Ein "
"Email das an dieses Konto gesendet wird, erzeugt dann automatische einen "
"Verkaufskontakt in OpenERP. Die gesamte Kommunikation mit dem Verkäufer wird "
"dann diesem Verkaufskontakt zugeordnet."

View File

@ -1,36 +0,0 @@
# 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-10 08:32+0000\n"
"Last-Translator: Carlos @ smile-iberia <Unknown>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-11 05:09+0000\n"
"X-Generator: Launchpad (build 14771)\n"
#. module: fetchmail_crm
#: model:ir.actions.act_window,name:fetchmail_crm.action_create_crm_leads_from_email_account
msgid "Create Leads from Email Account"
msgstr ""
#. module: fetchmail_crm
#: model:ir.actions.act_window,help:fetchmail_crm.action_create_crm_leads_from_email_account
msgid ""
"You can connect your email account with leads in OpenERP. A new email sent "
"to this account (example: info@mycompany.com) will automatically create a "
"lead in OpenERP. The whole communication with the salesman will be attached "
"to the lead automatically."
msgstr ""
"No puede conectar su cuenta de email con iniciativas en OpenERP. Un nuevo "
"email enviado a esta cuenta (por ejemplo: info@miempresa.com) creará "
"automáticamente una iniciativa en OpenERP. Toda la comunicación con el "
"comercial será adjuntada a la iniciativa automáticamente."

View File

@ -1,36 +0,0 @@
# Spanish (Costa Rica) translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-15 21:55+0000\n"
"Last-Translator: Freddy Gonzalez <freddy.gonzalez@clearcorp.co.cr>\n"
"Language-Team: Spanish (Costa Rica) <es_CR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-16 05:07+0000\n"
"X-Generator: Launchpad (build 14781)\n"
#. module: fetchmail_crm
#: model:ir.actions.act_window,name:fetchmail_crm.action_create_crm_leads_from_email_account
msgid "Create Leads from Email Account"
msgstr "Crear clientes potenciales de cuentas de correo electrónico"
#. module: fetchmail_crm
#: model:ir.actions.act_window,help:fetchmail_crm.action_create_crm_leads_from_email_account
msgid ""
"You can connect your email account with leads in OpenERP. A new email sent "
"to this account (example: info@mycompany.com) will automatically create a "
"lead in OpenERP. The whole communication with the salesman will be attached "
"to the lead automatically."
msgstr ""
"No puede conectar su cuenta de email con iniciativas en OpenERP. Un nuevo "
"email enviado a esta cuenta (por ejemplo: info@miempresa.com) creará "
"automáticamente una iniciativa en OpenERP. Toda la comunicación con el "
"comercial será adjuntada a la iniciativa automáticamente."

View File

@ -1,27 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * fetchmail_crm
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 6.1rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-08 00:36+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: fetchmail_crm
#: model:ir.actions.act_window,name:fetchmail_crm.action_create_crm_leads_from_email_account
msgid "Create Leads from Email Account"
msgstr ""
#. module: fetchmail_crm
#: model:ir.actions.act_window,help:fetchmail_crm.action_create_crm_leads_from_email_account
msgid "You can connect your email account with leads in OpenERP. A new email sent to this account (example: info@mycompany.com) will automatically create a lead in OpenERP. The whole communication with the salesman will be attached to the lead automatically."
msgstr ""

View File

@ -1,32 +0,0 @@
# French translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-10 10:36+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-11 05:09+0000\n"
"X-Generator: Launchpad (build 14771)\n"
#. module: fetchmail_crm
#: model:ir.actions.act_window,name:fetchmail_crm.action_create_crm_leads_from_email_account
msgid "Create Leads from Email Account"
msgstr ""
#. module: fetchmail_crm
#: model:ir.actions.act_window,help:fetchmail_crm.action_create_crm_leads_from_email_account
msgid ""
"You can connect your email account with leads in OpenERP. A new email sent "
"to this account (example: info@mycompany.com) will automatically create a "
"lead in OpenERP. The whole communication with the salesman will be attached "
"to the lead automatically."
msgstr ""

View File

@ -1,34 +0,0 @@
# Japanese translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-01 05:43+0000\n"
"Last-Translator: Masaki Yamaya <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-02 04:37+0000\n"
"X-Generator: Launchpad (build 15032)\n"
#. module: fetchmail_crm
#: model:ir.actions.act_window,name:fetchmail_crm.action_create_crm_leads_from_email_account
msgid "Create Leads from Email Account"
msgstr "Eメールアカウントからリードを作成"
#. module: fetchmail_crm
#: model:ir.actions.act_window,help:fetchmail_crm.action_create_crm_leads_from_email_account
msgid ""
"You can connect your email account with leads in OpenERP. A new email sent "
"to this account (example: info@mycompany.com) will automatically create a "
"lead in OpenERP. The whole communication with the salesman will be attached "
"to the lead automatically."
msgstr ""
"あなたのEメールアカウントをリードに結び付けることができます。このアカウントへ送られて来たメールは自動的にリードを作成します。セールス担当者との全ての交信"
"は自動的にリードに添付されます。"

View File

@ -1,36 +0,0 @@
# Dutch translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-09 12:03+0000\n"
"Last-Translator: Erwin <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-10 04:50+0000\n"
"X-Generator: Launchpad (build 14771)\n"
#. module: fetchmail_crm
#: model:ir.actions.act_window,name:fetchmail_crm.action_create_crm_leads_from_email_account
msgid "Create Leads from Email Account"
msgstr "Maakt leads van een E-mail"
#. module: fetchmail_crm
#: model:ir.actions.act_window,help:fetchmail_crm.action_create_crm_leads_from_email_account
msgid ""
"You can connect your email account with leads in OpenERP. A new email sent "
"to this account (example: info@mycompany.com) will automatically create a "
"lead in OpenERP. The whole communication with the salesman will be attached "
"to the lead automatically."
msgstr ""
"Het is mogelijk om uw e-mail adres te koppelen aan leads in OpenERP. Van een "
"nieuwe e-mail, welke naar dit adres (bijvoorbeeld: info@mijnbedrijf.com) "
"wordt gestuurd, wordt automatisch een lead gemaakt in OPenERP. De gehele "
"communicatie met de verkoper wordt automatisch gekoppeld aan de lead."

View File

@ -1,36 +0,0 @@
# Serbian Latin translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-03-19 11:45+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian Latin <sr@latin@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-03-20 04:56+0000\n"
"X-Generator: Launchpad (build 14969)\n"
#. module: fetchmail_crm
#: model:ir.actions.act_window,name:fetchmail_crm.action_create_crm_leads_from_email_account
msgid "Create Leads from Email Account"
msgstr "Napravi ovlašćenja preko email naloga"
#. module: fetchmail_crm
#: model:ir.actions.act_window,help:fetchmail_crm.action_create_crm_leads_from_email_account
msgid ""
"You can connect your email account with leads in OpenERP. A new email sent "
"to this account (example: info@mycompany.com) will automatically create a "
"lead in OpenERP. The whole communication with the salesman will be attached "
"to the lead automatically."
msgstr ""
"Možete povezati svoj email nalog sa ovlašćenjima u OpenERP-u. Novi email će "
"biti poslat na taj nalog (npr: info@mycompany.com) i on će automatski "
"napraviti ovlašćenje u OpenERP-u. Celokupna komunikacija sa prodavcem biće "
"povezana s vodećom strankom automatski"

View File

@ -1,36 +0,0 @@
# Turkish translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-09 23:08+0000\n"
"Last-Translator: Ahmet Altınışık <Unknown>\n"
"Language-Team: Turkish <tr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-11 05:09+0000\n"
"X-Generator: Launchpad (build 14771)\n"
#. module: fetchmail_crm
#: model:ir.actions.act_window,name:fetchmail_crm.action_create_crm_leads_from_email_account
msgid "Create Leads from Email Account"
msgstr "E-posta hesabından fırsatlar oluştur"
#. module: fetchmail_crm
#: model:ir.actions.act_window,help:fetchmail_crm.action_create_crm_leads_from_email_account
msgid ""
"You can connect your email account with leads in OpenERP. A new email sent "
"to this account (example: info@mycompany.com) will automatically create a "
"lead in OpenERP. The whole communication with the salesman will be attached "
"to the lead automatically."
msgstr ""
"E-posta hesabınız ile OpenERP fırsatlarını birbirine bağlayabilirsiniz. Bu "
"hesaba gönderilen yeni bir e-posta (mesela: satis@mycompany.com) için "
"otomatik olarak bir fırsat oluşturulacak ve satış temsilcisiyle yapılan "
"bütün mesaj trafiği fırsata otomatik olarak eklenecek."

View File

@ -1,34 +0,0 @@
# 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-16 04:42+0000\n"
"Last-Translator: wangsy <adminlii@hotmail.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-02-17 05:01+0000\n"
"X-Generator: Launchpad (build 14814)\n"
#. module: fetchmail_crm
#: model:ir.actions.act_window,name:fetchmail_crm.action_create_crm_leads_from_email_account
msgid "Create Leads from Email Account"
msgstr "从邮件获取商机"
#. module: fetchmail_crm
#: model:ir.actions.act_window,help:fetchmail_crm.action_create_crm_leads_from_email_account
msgid ""
"You can connect your email account with leads in OpenERP. A new email sent "
"to this account (example: info@mycompany.com) will automatically create a "
"lead in OpenERP. The whole communication with the salesman will be attached "
"to the lead automatically."
msgstr ""
"你可以在OpenERP中连接包含商机的电子邮件账户一封发往该账号的邮件(例如info@mycompany.com)会自动创建一条商机。所有与该销售员的"
"沟通会自动附加到此商机中。"

View File

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record model="ir.actions.act_window" id="action_create_crm_leads_from_email_account">
<field name="name">Create Leads from Email Account</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">fetchmail.server</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context" eval="{'default_name': 'Incoming Leads', 'default_object_id': ref('crm.model_crm_lead')}"/>
<field name="help">You can connect your email account with leads in OpenERP. A new email sent to this account (example: info@mycompany.com) will automatically create a lead in OpenERP. The whole communication with the salesman will be attached to the lead automatically.</field>
</record>
<record model="ir.actions.todo" id="config_wizard_action_create_crm_leads_from_email_account">
<field name="action_id" ref="action_create_crm_leads_from_email_account" />
<field name="category_id" ref="base.category_sales_management_config" />
</record>
</data>
</openerp>

View File

@ -1,41 +0,0 @@
#-*- coding:utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2011 OpenERP S.A. (<http://www.openerp.com>). All Rights Reserved
#
# 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" : "eMail Gateway for CRM Claim",
"version" : "1.0",
"depends" : ["fetchmail", "crm_claim"],
"author" : "OpenERP SA",
'category': 'Hidden',
"description": """
""",
'website': 'http://www.openerp.com',
'init_xml': [],
'update_xml': [
"installer.xml",
],
'demo_xml': [
],
'installable': True,
'auto_install': True,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,36 +0,0 @@
# German translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-09 15:10+0000\n"
"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-10 04:50+0000\n"
"X-Generator: Launchpad (build 14771)\n"
#. module: fetchmail_crm_claim
#: model:ir.actions.act_window,help:fetchmail_crm_claim.action_create_crm_claims_from_email_account
msgid ""
"You can connect your email account with claims in OpenERP. A new email sent "
"to this account (example: support@mycompany.com) will automatically create a "
"claim for the followup in OpenERP. The whole communication by email will be "
"attached to the claim automatically to keep track of the history."
msgstr ""
"Sie können Ihre E-Mails mit Reklamationen in OpenERP verbinden. Ein Email "
"das an dieses Konto gesendet wird, erzeugt dann automatische eine "
"Reklamation in OpenERP. Die gesamte Kommunikation wird dann dieser "
"Reklamation zugeordnet."
#. module: fetchmail_crm_claim
#: model:ir.actions.act_window,name:fetchmail_crm_claim.action_create_crm_claims_from_email_account
msgid "Create Claims from Email Account"
msgstr "Erzeuge Reklamationen von diesem Mail Konto"

View File

@ -1,32 +0,0 @@
# 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-10 08:35+0000\n"
"Last-Translator: Carlos @ smile-iberia <Unknown>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-11 05:09+0000\n"
"X-Generator: Launchpad (build 14771)\n"
#. module: fetchmail_crm_claim
#: model:ir.actions.act_window,help:fetchmail_crm_claim.action_create_crm_claims_from_email_account
msgid ""
"You can connect your email account with claims in OpenERP. A new email sent "
"to this account (example: support@mycompany.com) will automatically create a "
"claim for the followup in OpenERP. The whole communication by email will be "
"attached to the claim automatically to keep track of the history."
msgstr ""
#. module: fetchmail_crm_claim
#: model:ir.actions.act_window,name:fetchmail_crm_claim.action_create_crm_claims_from_email_account
msgid "Create Claims from Email Account"
msgstr "Crear reclamaciones a partir de cuentas de email"

View File

@ -1,37 +0,0 @@
# Spanish (Costa Rica) translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-15 21:58+0000\n"
"Last-Translator: Freddy Gonzalez <freddy.gonzalez@clearcorp.co.cr>\n"
"Language-Team: Spanish (Costa Rica) <es_CR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-16 05:07+0000\n"
"X-Generator: Launchpad (build 14781)\n"
#. module: fetchmail_crm_claim
#: model:ir.actions.act_window,help:fetchmail_crm_claim.action_create_crm_claims_from_email_account
msgid ""
"You can connect your email account with claims in OpenERP. A new email sent "
"to this account (example: support@mycompany.com) will automatically create a "
"claim for the followup in OpenERP. The whole communication by email will be "
"attached to the claim automatically to keep track of the history."
msgstr ""
"Puedes conectar tu cuenta de correo electrónico con derechos en OpenERP. Un "
"nuevo correo enviado a esta cuenta (por ejemplo: support@mycompany.com) "
"creará automáticamente un reclamo para el seguimiento en OpenERP. Toda la "
"comunicación por correo electrónico se adjuntará a la solicitud de forma "
"automática para realizar un seguimiento de la historia."
#. module: fetchmail_crm_claim
#: model:ir.actions.act_window,name:fetchmail_crm_claim.action_create_crm_claims_from_email_account
msgid "Create Claims from Email Account"
msgstr "Crear reclamaciones a partir de cuentas de email"

View File

@ -1,27 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * fetchmail_crm_claim
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 6.1rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-08 00:36+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: fetchmail_crm_claim
#: model:ir.actions.act_window,help:fetchmail_crm_claim.action_create_crm_claims_from_email_account
msgid "You can connect your email account with claims in OpenERP. A new email sent to this account (example: support@mycompany.com) will automatically create a claim for the followup in OpenERP. The whole communication by email will be attached to the claim automatically to keep track of the history."
msgstr ""
#. module: fetchmail_crm_claim
#: model:ir.actions.act_window,name:fetchmail_crm_claim.action_create_crm_claims_from_email_account
msgid "Create Claims from Email Account"
msgstr ""

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