[MERGE] with trunk

bzr revid: fka@tinyerp.com-20121210045724-sk2hk8mmi8iahfwn
This commit is contained in:
Foram Katharotiya (OpenERP) 2012-12-10 10:27:24 +05:30
commit 955f2588a2
303 changed files with 14013 additions and 4697 deletions

View File

@ -141,7 +141,7 @@ for a particular financial year and for preparation of vouchers there is a modul
'project/analytic_account_demo.xml',
'demo/account_minimal.xml',
'demo/account_invoice_demo.xml',
# 'account_unit_test.xml',
'account_unit_test.xml',
],
'test': [
'test/account_customer_invoice.yml',

View File

@ -75,8 +75,8 @@ class account_payment_term(osv.osv):
amount = value
result = []
obj_precision = self.pool.get('decimal.precision')
prec = obj_precision.precision_get(cr, uid, 'Account')
for line in pt.line_ids:
prec = obj_precision.precision_get(cr, uid, 'Account')
if line.value == 'fixed':
amt = round(line.value_amount, prec)
elif line.value == 'procent':
@ -92,19 +92,20 @@ class account_payment_term(osv.osv):
next_date += relativedelta(day=line.days2, months=1)
result.append( (next_date.strftime('%Y-%m-%d'), amt) )
amount -= amt
return result
account_payment_term()
amount = reduce(lambda x,y: x+y[1], result, 0.0)
dist = round(value-amount, prec)
if dist:
result.append( (time.strftime('%Y-%m-%d'), dist) )
return result
class account_payment_term_line(osv.osv):
_name = "account.payment.term.line"
_description = "Payment Term Line"
_columns = {
'name': fields.char('Line Name', size=32, required=True),
'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the payment term lines from the lowest sequences to the higher ones"),
'value': fields.selection([('procent', 'Percent'),
('balance', 'Balance'),
('fixed', 'Fixed Amount')], 'Valuation',
('fixed', 'Fixed Amount')], 'Computation',
required=True, help="""Select here the kind of valuation related to this payment term line. Note that you should have your last line with the type 'Balance' to ensure that the whole amount will be treated."""),
'value_amount': fields.float('Amount To Pay', digits_compute=dp.get_precision('Payment Term'), help="For percent enter a ratio between 0-1."),
@ -115,10 +116,10 @@ class account_payment_term_line(osv.osv):
}
_defaults = {
'value': 'balance',
'sequence': 5,
'days': 30,
'days2': 0,
}
_order = "sequence"
_order = "value desc,days"
def _check_percent(self, cr, uid, ids, context=None):
obj = self.browse(cr, uid, ids[0], context=context)
@ -1082,7 +1083,7 @@ class account_journal_period(osv.osv):
'journal_id': fields.many2one('account.journal', 'Journal', required=True, ondelete="cascade"),
'period_id': fields.many2one('account.period', 'Period', required=True, ondelete="cascade"),
'icon': fields.function(_icon_get, string='Icon', type='char', size=32),
'active': fields.boolean('Active', required=True, help="If the active field is set to False, it will allow you to hide the journal period without removing it."),
'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the journal period without removing it."),
'state': fields.selection([('draft','Draft'), ('printed','Printed'), ('done','Done')], 'Status', required=True, readonly=True,
help='When journal period is created. The status is \'Draft\'. If a report is printed it comes to \'Printed\' status. When all transactions are done, it comes in \'Done\' status.'),
'fiscalyear_id': fields.related('period_id', 'fiscalyear_id', string='Fiscal Year', type='many2one', relation='account.fiscalyear'),

View File

@ -80,8 +80,11 @@ class account_invoice(osv.osv):
def _reconciled(self, cr, uid, ids, name, args, context=None):
res = {}
for id in ids:
res[id] = self.test_paid(cr, uid, [id])
wf_service = netsvc.LocalService("workflow")
for inv in self.browse(cr, uid, ids, context=context):
res[inv.id] = self.test_paid(cr, uid, [inv.id])
if not res[inv.id] and inv.state == 'paid':
wf_service.trg_validate(uid, 'account.invoice', inv.id, 'open_test', cr)
return res
def _get_reference_type(self, cr, uid, context=None):
@ -1157,7 +1160,7 @@ class account_invoice(osv.osv):
return map(lambda x: (0,0,x), lines)
def refund(self, cr, uid, ids, date=None, period_id=None, description=None, journal_id=None):
invoices = self.read(cr, uid, ids, ['name', 'type', 'number', 'reference', 'comment', 'date_due', 'partner_id', 'partner_contact', 'partner_insite', 'partner_ref', 'payment_term', 'account_id', 'currency_id', 'invoice_line', 'tax_line', 'journal_id', 'company_id'])
invoices = self.read(cr, uid, ids, ['name', 'type', 'number', 'reference', 'comment', 'date_due', 'partner_id', 'partner_contact', 'partner_insite', 'partner_ref', 'payment_term', 'account_id', 'currency_id', 'invoice_line', 'tax_line', 'journal_id', 'company_id', 'user_id', 'fiscal_position'])
obj_invoice_line = self.pool.get('account.invoice.line')
obj_invoice_tax = self.pool.get('account.invoice.tax')
obj_journal = self.pool.get('account.journal')
@ -1206,7 +1209,8 @@ class account_invoice(osv.osv):
})
# take the id part of the tuple returned for many2one fields
for field in ('partner_id', 'company_id',
'account_id', 'currency_id', 'payment_term', 'journal_id'):
'account_id', 'currency_id', 'payment_term', 'journal_id',
'user_id', 'fiscal_position'):
invoice[field] = invoice[field] and invoice[field][0]
# create the new invoice
new_ids.append(self.create(cr, uid, invoice))

View File

@ -443,9 +443,9 @@ class account_move_line(osv.osv):
'statement_id': fields.many2one('account.bank.statement', 'Statement', help="The bank statement used for bank reconciliation", select=1),
'reconcile_id': fields.many2one('account.move.reconcile', 'Reconcile', readonly=True, ondelete='set null', select=2),
'reconcile_partial_id': fields.many2one('account.move.reconcile', 'Partial Reconcile', readonly=True, ondelete='set null', select=2),
'reconcile': fields.function(_get_reconcile, type='char', string='Reconcile'),
'reconcile': fields.function(_get_reconcile, type='char', string='Reconcile Ref'),
'amount_currency': fields.float('Amount Currency', help="The amount expressed in an optional other currency if it is a multi-currency entry.", digits_compute=dp.get_precision('Account')),
'amount_residual_currency': fields.function(_amount_residual, string='Residual Amount', multi="residual", help="The residual amount on a receivable or payable of a journal entry expressed in its currency (maybe different of the company currency)."),
'amount_residual_currency': fields.function(_amount_residual, string='Residual Amount in Currency', multi="residual", help="The residual amount on a receivable or payable of a journal entry expressed in its currency (maybe different of the company currency)."),
'amount_residual': fields.function(_amount_residual, string='Residual Amount', multi="residual", help="The residual amount on a receivable or payable of a journal entry expressed in the company currency."),
'currency_id': fields.many2one('res.currency', 'Currency', help="The optional other currency if it is a multi-currency entry."),
'journal_id': fields.related('move_id', 'journal_id', string='Journal', type='many2one', relation='account.journal', required=True, select=True,
@ -456,7 +456,7 @@ class account_move_line(osv.osv):
store = {
'account.move': (_get_move_lines, ['period_id'], 20)
}),
'blocked': fields.boolean('Litigation', help="You can check this box to mark this journal item as a litigation with the associated partner"),
'blocked': fields.boolean('No Follow-up', help="You can check this box to mark this journal item as a litigation with the associated partner"),
'partner_id': fields.many2one('res.partner', 'Partner', select=1, ondelete='restrict'),
'date_maturity': fields.date('Due date', select=True ,help="This field is used for payable and receivable journal entries. You can put the limit date for the payment of this line."),
'date': fields.related('move_id','date', string='Effective date', type='date', required=True, select=True,
@ -856,7 +856,12 @@ class account_move_line(osv.osv):
if r[0][1] != None:
raise osv.except_osv(_('Error!'), _('Some entries are already reconciled.'))
if (not currency_obj.is_zero(cr, uid, account.company_id.currency_id, writeoff)) or \
if context.get('fy_closing'):
# We don't want to generate any write-off when being called from the
# wizard used to close a fiscal year (and it doesn't give us any
# writeoff_acc_id).
pass
elif (not currency_obj.is_zero(cr, uid, account.company_id.currency_id, writeoff)) or \
(account.currency_id and (not currency_obj.is_zero(cr, uid, account.currency_id, currency))):
if not writeoff_acc_id:
raise osv.except_osv(_('Warning!'), _('You have to provide an account for the write off/exchange difference entry.'))

View File

@ -1549,10 +1549,8 @@
<field name="model">account.payment.term.line</field>
<field name="arch" type="xml">
<tree string="Payment Term">
<field name="sequence"/>
<field name="name"/>
<field name="value"/>
<field name="value_amount"/>
<field name="value_amount" attrs="{'readonly':[('value','=','balance')]}"/>
<field name="days"/>
<field name="days2"/>
</tree>
@ -1563,37 +1561,20 @@
<field name="model">account.payment.term.line</field>
<field name="arch" type="xml">
<form string="Payment Term" version="7.0">
<group>
<field name="name"/>
<field name="sequence"/>
</group>
<group>
<group string="Amount Computation">
<field name="value"/>
<field name="value_amount" attrs="{'readonly':[('value','=','balance')]}"/>
<field name="value"/>
<label for="value_amount" string="Amount To Pay" attrs="{'invisible':[('value','=','balance')]}"/>
<div attrs="{'invisible':[('value','=','balance')]}">
<field name="value_amount" class="oe_inline"/>
<label string="%%" class="oe_inline" attrs="{'invisible':['!',('value','=','procent')]}" />
</div>
</group>
<group string="Due Date Computation">
<field name="days"/>
<field name="days2"/>
</group>
</group>
<separator string="Example"/>
<label string="At 14 net days 2 percent, remaining amount at 30 days end of month."/>
<group>
<label string="Line 1:" colspan="2"/>
<label string=" Valuation: Percent"/>
<label string=" Number of Days: 14"/>
<label string=" Value amount: 0.02"/>
<label string=" Day of the Month: 0"/>
</group>
<group>
<label string="Line 2:" colspan="2"/>
<label string=" Valuation: Balance"/>
<label string=" Number of Days: 30"/>
<label string=" Value amount: n.a"/>
<label string=" Day of the Month= -1"/>
</group>
</form>
</field>
</record>
@ -1616,7 +1597,7 @@
<field name="name"/>
<field name="active"/>
</group>
<field name="note" placeholder="Note for the invoice..."/>
<field name="note" placeholder="Payment term explanation for the customer..."/>
<separator string="Computation"/>
<field name="line_ids"/>
</form>

View File

@ -10,17 +10,33 @@
<!--
Payment term
-->
<record id="account_payment_term" model="account.payment.term">
<field name="name">30 Days End of Month</field>
<field name="note">30 Days End of Month</field>
<record id="account_payment_term_immediate" model="account.payment.term">
<field name="name">Immediate Payment</field>
<field name="note">Immediate Payment</field>
</record>
<record id="account_payment_term_line" model="account.payment.term.line">
<field name="name">30 Days End of Month</field>
<record id="account_payment_term_line_immediate" model="account.payment.term.line">
<field name="name">Immediate Payment</field>
<field name="value">balance</field>
<field eval="30" name="days"/>
<field eval="-1" name="days2"/>
<field eval="account_payment_term" name="payment_id"/>
<field eval="0" name="days"/>
<field eval="0" name="days2"/>
<field eval="account_payment_term_immediate" name="payment_id"/>
</record>
<record id="account_payment_term_15days" model="account.payment.term">
<field name="name">15 Days</field>
<field name="note">15 Days</field>
</record>
<record id="account_payment_term_line_15days" model="account.payment.term.line">
<field name="name">15 Days</field>
<field name="value">balance</field>
<field eval="15" name="days"/>
<field eval="0" name="days2"/>
<field eval="account_payment_term_15days" name="payment_id"/>
</record>
<record forcecreate="True" id="decimal_payment" model="decimal.precision">
<field name="name">Payment Term</field>
<field name="digits">6</field>
@ -30,6 +46,7 @@
<field name="name">30 Net Days</field>
<field name="note">30 Net Days</field>
</record>
<record id="account_payment_term_line_net" model="account.payment.term.line">
<field name="name">30 Net Days</field>
<field name="value">balance</field>
@ -37,28 +54,7 @@
<field eval="0" name="days2"/>
<field eval="account_payment_term_net" name="payment_id"/>
</record>
<record id="account_payment_term_advance" model="account.payment.term">
<field name="name">30% Advance End 30 Days</field>
<field name="note">30% Advance End 30 Days</field>
</record>
<record id="account_payment_term_line_advance1" model="account.payment.term.line">
<field name="name">30% Advance</field>
<field name="value">procent</field>
<field eval="3" name="sequence"/>
<field eval="0.300000" name="value_amount"/>
<field eval="0" name="days"/>
<field eval="0" name="days2"/>
<field eval="account_payment_term_advance" name="payment_id"/>
</record>
<record id="account_payment_term_line_advance2" model="account.payment.term.line">
<field name="name">Remaining Balance</field>
<field name="value">balance</field>
<field eval="30" name="days"/>
<field eval="-1" name="days2"/>
<field eval="account_payment_term_advance" name="payment_id"/>
</record>
<!--
Account Journal Sequences
-->

View File

@ -127,6 +127,41 @@
<field eval="time.strftime('%Y')+'-12-31'" name="date_stop"/>
<field name="company_id" ref="base.main_company"/>
</record>
<!-- Payment Term -->
<record id="account_payment_term" model="account.payment.term">
<field name="name">30 Days End of Month</field>
<field name="note">30 Days End of Month</field>
</record>
<record id="account_payment_term_line" model="account.payment.term.line">
<field name="name">30 Days End of Month</field>
<field name="value">balance</field>
<field eval="30" name="days"/>
<field eval="-1" name="days2"/>
<field eval="account_payment_term" name="payment_id"/>
</record>
<record id="account_payment_term_advance" model="account.payment.term">
<field name="name">30% Advance End 30 Days</field>
<field name="note">30% Advance End 30 Days</field>
</record>
<record id="account_payment_term_line_advance1" model="account.payment.term.line">
<field name="name">30% Advance</field>
<field name="value">procent</field>
<field eval="3" name="sequence"/>
<field eval="0.300000" name="value_amount"/>
<field eval="0" name="days"/>
<field eval="0" name="days2"/>
<field eval="account_payment_term_advance" name="payment_id"/>
</record>
<record id="account_payment_term_line_advance2" model="account.payment.term.line">
<field name="name">Remaining Balance</field>
<field name="value">balance</field>
<field eval="30" name="days"/>
<field eval="-1" name="days2"/>
<field eval="account_payment_term_advance" name="payment_id"/>
</record>
<record id="base.user_demo" model="res.users">
<field name="groups_id" eval="[(4,ref('account.group_account_user'))]"/>

View File

@ -29,8 +29,9 @@
<field name="auto_delete" eval="True"/>
<field name="report_template" ref="account_invoices"/>
<field name="report_name">Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' and 'draft' or ''}</field>
<field name="lang">${object.partner_id.lang}</field>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; ">
<p>Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name or ''},</p>
@ -49,7 +50,7 @@
% endif
</p>
% if object.company_id.paypal_account and object.type in ('out_invoice', 'in_refund'):
% if object.company_id.paypal_account and object.type in ('out_invoice'):
<%
comp_name = quote(object.company_id.name)
inv_number = quote(object.number)
@ -73,7 +74,7 @@
<br/>
<br/>
<div style="width: 375px; margin: 0px; padding: 0px; background-color: #8E0000; border-top-left-radius: 5px 5px; border-top-right-radius: 5px 5px; background-repeat: repeat no-repeat;">
<h3 style="margin: 0px; padding: 2px 14px; font-size: 12px; color: #FFF;">
<h3 style="margin: 0px; padding: 2px 14px; font-size: 12px; color: #DDD;">
<strong style="text-transform:uppercase;">${object.company_id.name}</strong></h3>
</div>
<div style="width: 347px; margin: 0px; padding: 5px 14px; line-height: 16px; background-color: #F2F2F2;">

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-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-06 10:40+0000\n"
"PO-Revision-Date: 2012-12-08 10:58+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\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-12-07 04:35+0000\n"
"X-Launchpad-Export-Date: 2012-12-09 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account
@ -1930,7 +1930,7 @@ msgstr "Geschäftsjahr Sequenz"
#. module: account
#: field:account.config.settings,group_analytic_accounting:0
msgid "Analytic accounting"
msgstr ""
msgstr "Buchen von Kostenstellen"
#. module: account
#: report:account.overdue:0
@ -4041,6 +4041,11 @@ msgid ""
"You can create one in the menu: \n"
"Configuration/Journals/Journals."
msgstr ""
"Es kann kein Buchungsjournal, mit dem %s Typ für dieses Unternehmens "
"gefunden werden.\n"
"\n"
"Sie können ein neues Buchungsjournal in folgendem Menü erstellen:\n"
"Finanzen / Konfiguration / Einstellungen / Buchungsjournale"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_unreconcile
@ -7496,6 +7501,8 @@ msgid ""
"You cannot provide a secondary currency if it is the same than the company "
"one."
msgstr ""
"Sie können keine weitere Währung verwalten, wenn diese identisch mit Ihrer "
"Hauswährung ist."
#. module: account
#: code:addons/account/account_invoice.py:1321
@ -10438,6 +10445,8 @@ msgid ""
"Credit note base on this type. You can not Modify and Cancel if the invoice "
"is already reconciled"
msgstr ""
"Gutschrift für diesen Typ. Es können keine Änderungen oder Stornierungen "
"vorgenommen werden, wenn die Rechnungen bereits ausgeglichen wurde."
#. module: account
#: report:account.account.balance:0
@ -10774,7 +10783,7 @@ msgstr "Wiederkehrende Buchungen Journal"
#: code:addons/account/account.py:1058
#, python-format
msgid "Start period should precede then end period."
msgstr ""
msgstr "Start Periode die auf die Ende Periode folgen soll."
#. module: account
#: field:account.invoice,number:0

View File

@ -7,15 +7,15 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-03 20:35+0000\n"
"PO-Revision-Date: 2012-12-07 15:21+0000\n"
"Last-Translator: Frederic Clementi - Camptocamp.com "
"<frederic.clementi@camptocamp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:21+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account
#: code:addons/account/wizard/account_fiscalyear_close.py:41
@ -184,7 +184,7 @@ msgstr ""
#: code:addons/account/static/src/xml/account_move_reconciliation.xml:30
#, python-format
msgid "Reconcile"
msgstr "Lettrer"
msgstr "Let."
#. module: account
#: field:account.bank.statement,name:0
@ -988,12 +988,12 @@ msgstr ""
#. module: account
#: report:account.analytic.account.quantity_cost_ledger:0
msgid "J.C./Move name"
msgstr "J.C. / Nom du mouvement"
msgstr "J.C. / description de l'écriture"
#. module: account
#: view:account.account:0
msgid "Account Code and Name"
msgstr ""
msgstr "Code et Nom du Compte"
#. module: account
#: model:mail.message.subtype,name:account.mt_invoice_new
@ -2993,7 +2993,7 @@ msgstr "Relevés"
#. module: account
#: report:account.analytic.account.journal:0
msgid "Move Name"
msgstr "Nom de la transaction"
msgstr "Description de l'écriture"
#. module: account
#: model:ir.model,name:account.model_account_move_line_reconcile_writeoff
@ -3008,7 +3008,7 @@ msgstr "Ligne d'écriture lettrée (écriture d'écart)"
#: field:account.move.line,account_tax_id:0
#: view:account.tax:0
msgid "Tax"
msgstr "Impôts et taxes"
msgstr "Taxes"
#. module: account
#: view:account.analytic.account:0
@ -4350,7 +4350,7 @@ msgstr ""
#: field:account.move.reconcile,name:0
#: field:account.subscription,name:0
msgid "Name"
msgstr "Nom"
msgstr "Decription"
#. module: account
#: code:addons/account/installer.py:94
@ -4918,7 +4918,7 @@ msgstr "Nom du compte"
#. module: account
#: help:account.fiscalyear.close,report_name:0
msgid "Give name of the new entries"
msgstr "Indique le nom à donner aux nouvelles écritures"
msgstr "Indique la description à donner aux nouvelles écritures"
#. module: account
#: model:ir.model,name:account.model_account_invoice_report
@ -4982,12 +4982,12 @@ msgstr "Le nom de la période doit être unique par société!"
#. module: account
#: help:wizard.multi.charts.accounts,currency_id:0
msgid "Currency as per company's country."
msgstr ""
msgstr "Devise selon le pays de la société"
#. module: account
#: view:account.tax:0
msgid "Tax Computation"
msgstr ""
msgstr "Calcul des taxes"
#. module: account
#: view:wizard.multi.charts.accounts:0
@ -6246,7 +6246,7 @@ msgstr "Comptes fils"
#: code:addons/account/account_move_line.py:1107
#, python-format
msgid "Move name (id): %s (%s)"
msgstr "Nom du mouvement (id): %s (%s)"
msgstr "Description de l'écriture (id): %s (%s)"
#. module: account
#: view:account.move.line.reconcile:0
@ -6258,7 +6258,7 @@ msgstr "Ajustement"
#. module: account
#: field:res.partner,debit:0
msgid "Total Payable"
msgstr "Total à payer"
msgstr "Total "
#. module: account
#: model:account.account.type,name:account.data_account_type_income
@ -7850,7 +7850,7 @@ msgstr ""
#. module: account
#: field:account.fiscalyear.close,report_name:0
msgid "Name of new entries"
msgstr "Nom des nouvelles écritures"
msgstr "Description des nouvelles écritures"
#. module: account
#: view:account.use.model:0
@ -7865,7 +7865,7 @@ msgstr ""
#. module: account
#: help:account.config.settings,currency_id:0
msgid "Main currency of the company."
msgstr ""
msgstr "Devise de a société"
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_reports
@ -8843,7 +8843,7 @@ msgstr ""
#: field:account.move.line,reconcile_partial_id:0
#: view:account.move.line.reconcile:0
msgid "Partial Reconcile"
msgstr "Rapprochement partiel"
msgstr "Let.P"
#. module: account
#: model:ir.model,name:account.model_account_analytic_inverted_balance

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-06 21:42+0000\n"
"PO-Revision-Date: 2012-12-09 23:36+0000\n"
"Last-Translator: Sergio Corato <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-07 04:35+0000\n"
"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account
@ -1229,6 +1229,20 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\\\"oe_view_nocontent_create\\\">\n"
" Clicca per aggiungere un conto.\n"
" </p><p>\n"
" Quando si fanno operazioni multi-valuta, è possibile perdere "
"o\n"
" guadagnare degli importi a causa della variazione del tasso "
"di cambio.\n"
" Questo menu dà una previsione del Guadagno o Perdita "
"realizzato se\n"
" queste operazioni fossero concluse oggi. Solo per conti che "
"hanno\n"
" una valuta secondaria.\n"
" </p>\n"
" "
#. module: account
#: field:account.bank.accounts.wizard,acc_name:0
@ -3156,7 +3170,7 @@ msgstr "Movimento contabile di riconciliazione (storno)"
#: field:account.move.line,account_tax_id:0
#: view:account.tax:0
msgid "Tax"
msgstr "Tassa"
msgstr "Imposta"
#. module: account
#: view:account.analytic.account:0
@ -3527,7 +3541,7 @@ msgstr "Solo Un Piano dei Conti Disponibile"
#: field:product.category,property_account_expense_categ:0
#: field:product.template,property_account_expense:0
msgid "Expense Account"
msgstr "Bilancio spese"
msgstr "Conto di Costo"
#. module: account
#: field:account.bank.statement,message_summary:0
@ -7460,7 +7474,7 @@ msgid ""
"This account will be used instead of the default one as the receivable "
"account for the current partner"
msgstr ""
"Qiesto conto verra' usato al posto del default come conto per incassi dal "
"Questo conto verrà usato invece del default come conto incassi per il "
"partner corrente"
#. module: account
@ -8012,7 +8026,7 @@ msgstr "Raggruppare per anno data fattura"
#. module: account
#: field:account.config.settings,purchase_tax_rate:0
msgid "Purchase tax (%)"
msgstr ""
msgstr "Imposta sugli acquisti (%)"
#. module: account
#: help:res.partner,credit:0
@ -8359,6 +8373,8 @@ msgid ""
"This date will be used as the invoice date for credit note and period will "
"be chosen accordingly!"
msgstr ""
"Questa data sarà usata come data fattura per la nota di credito e il periodo "
"sarà scelto di conseguenza!"
#. module: account
#: view:product.template:0
@ -8372,6 +8388,8 @@ msgid ""
"You have to set a code for the bank account defined on the selected chart of "
"accounts."
msgstr ""
"E' necessario selezionare un codice per il conto bancario definito sul piano "
"dei conti selezionato."
#. module: account
#: model:ir.ui.menu,name:account.menu_manual_reconcile
@ -8797,6 +8815,7 @@ msgstr "Bilancio Analitico Invertito -"
msgid ""
"Is this reconciliation produced by the opening of a new fiscal year ?."
msgstr ""
"La riconciliazione è prodotto dall'apertura di un nuovo anno fiscale ?."
#. module: account
#: view:account.analytic.line:0
@ -8901,7 +8920,7 @@ msgstr "Sezionale Note di Credito Fornitori"
#: code:addons/account/account.py:1292
#, python-format
msgid "Please define a sequence on the journal."
msgstr ""
msgstr "E' necessario definire una sequenza per il sezionale."
#. module: account
#: help:account.tax.template,amount:0
@ -8930,6 +8949,9 @@ msgid ""
"recalls.\n"
" This installs the module account_followup."
msgstr ""
"Consente di automatizzare le lettere per le fatture non pagate, non richiami "
"multi-livello.\n"
" Installa il modulo account_followup."
#. module: account
#: field:account.automatic.reconcile,period_id:0
@ -8974,12 +8996,12 @@ msgstr "Totale imponibile"
#: code:addons/account/wizard/account_report_common.py:153
#, python-format
msgid "Select a starting and an ending period."
msgstr ""
msgstr "Selezionare un periodo iniziale e uno finale."
#. module: account
#: field:account.config.settings,sale_sequence_next:0
msgid "Next invoice number"
msgstr ""
msgstr "Numero di fattura successivo"
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_generic_reporting
@ -9128,7 +9150,7 @@ msgstr "Import automatico dei movimenti bancari"
#: code:addons/account/account_invoice.py:370
#, python-format
msgid "Unknown Error!"
msgstr ""
msgstr "Errore Sconosciuto!"
#. module: account
#: model:ir.model,name:account.model_account_move_bank_reconcile
@ -9138,7 +9160,7 @@ msgstr "Riconciliazione movimenti bancari"
#. module: account
#: view:account.config.settings:0
msgid "Apply"
msgstr ""
msgstr "Conferma"
#. module: account
#: field:account.financial.report,account_type_ids:0
@ -9154,6 +9176,8 @@ msgid ""
"You cannot use this general account in this journal, check the tab 'Entry "
"Controls' on the related journal."
msgstr ""
"Non è possibile usare questo conto generale in questo sezionale, controllare "
"la sezione 'Voci di controllo' nel relativo sezionale."
#. module: account
#: view:account.payment.term.line:0
@ -9366,6 +9390,8 @@ msgstr "Il codice del conto deve essere unico per ogni azienda!"
#: help:product.template,property_account_expense:0
msgid "This account will be used to value outgoing stock using cost price."
msgstr ""
"Questo conto sarà utilizzato per valutare le merci in uscita utilizzando il "
"prezzo di costo."
#. module: account
#: view:account.invoice:0
@ -9403,7 +9429,7 @@ msgstr "Conti consentiti (vuoto per non effettuare nessun controllo)"
#. module: account
#: field:account.config.settings,sale_tax_rate:0
msgid "Sales tax (%)"
msgstr ""
msgstr "Imposta sulle vendite (%)"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_analytic_account_tree2
@ -9469,6 +9495,8 @@ msgid ""
"This allows you to check writing and printing.\n"
" This installs the module account_check_writing."
msgstr ""
"Permette di verificare la scrittura e la stampa.\n"
" Installa il modulo account_check_writing."
#. module: account
#: model:res.groups,name:account.group_account_invoice
@ -9546,6 +9574,9 @@ msgid ""
"created. If you leave that field empty, it will use the same journal as the "
"current invoice."
msgstr ""
"E' possibile selezionare qui il sezionale da utilizzare per le note di "
"credito che saranno create. Se questa casella viene lasciata vuota, verrà "
"utilizzato lo stesso sezionale della fattura corrente."
#. module: account
#: help:account.bank.statement.line,sequence:0
@ -9578,7 +9609,7 @@ msgstr "Modello errato !"
#: view:account.tax.code.template:0
#: view:account.tax.template:0
msgid "Tax Template"
msgstr ""
msgstr "Modello Imposta"
#. module: account
#: field:account.invoice.refund,period:0
@ -9598,6 +9629,10 @@ msgid ""
"some non legal fields or you must unreconcile first.\n"
"%s."
msgstr ""
"Non è possibile fare questa modifica su una registrazione riconciliata. E' "
"possibile cambiare solo alcuni campi non fiscali, altrimenti è necessario "
"prima annullare la riconciliazione.\n"
"%s."
#. module: account
#: help:account.financial.report,sign:0
@ -9644,7 +9679,7 @@ msgstr "Le Bozze di fatture sono marcate, convalidate e stampate."
#: field:account.bank.statement,message_is_follower:0
#: field:account.invoice,message_is_follower:0
msgid "Is a Follower"
msgstr ""
msgstr "E' un Follower"
#. module: account
#: view:account.move:0
@ -9924,7 +9959,7 @@ msgstr "Aziende collegate al Partner"
#. module: account
#: view:account.invoice:0
msgid "Ask Refund"
msgstr ""
msgstr "Richiesta Rimborso"
#. module: account
#: view:account.move.line:0
@ -9966,12 +10001,12 @@ msgstr "Conti di Credito"
#. module: account
#: field:account.config.settings,purchase_refund_sequence_prefix:0
msgid "Supplier credit note sequence"
msgstr ""
msgstr "Sequenza nota di credito fornitore"
#. module: account
#: field:account.config.settings,purchase_sequence_next:0
msgid "Next supplier invoice number"
msgstr ""
msgstr "Numero fattura fornitore successivo"
#. module: account
#: help:account.config.settings,module_account_payment:0
@ -10001,6 +10036,8 @@ msgstr "Estratti Conto Bancari"
#, python-format
msgid "To reconcile the entries company should be the same for all entries."
msgstr ""
"Per riconciliare le registrazioni l'azienda dovrebbe essere la stessa per "
"tutte le registrazioni."
#. module: account
#: field:account.account,balance:0
@ -10078,7 +10115,7 @@ msgstr "Filtra per"
#: field:account.cashbox.line,number_closing:0
#: field:account.cashbox.line,number_opening:0
msgid "Number of Units"
msgstr ""
msgstr "Numero di Unità"
#. module: account
#: model:process.node,note:account.process_node_manually0
@ -10103,12 +10140,12 @@ msgstr "Movimento contabile"
#: code:addons/account/wizard/account_period_close.py:51
#, python-format
msgid "Invalid Action!"
msgstr ""
msgstr "Azione non valida!"
#. module: account
#: view:account.bank.statement:0
msgid "Date / Period"
msgstr ""
msgstr "Data / Periodo"
#. module: account
#: report:account.central.journal:0
@ -10127,11 +10164,14 @@ msgid ""
"The period is invalid. Either some periods are overlapping or the period's "
"dates are not matching the scope of the fiscal year."
msgstr ""
"Errore!\n"
"Il periodo non è valido. Alcuni periodi sono sovrapposti o le date del "
"periodo non sono all'interno dell'anno fiscale."
#. module: account
#: report:account.overdue:0
msgid "There is nothing due with this customer."
msgstr ""
msgstr "Non c'è alcun credito scaduto verso questo cliente."
#. module: account
#: help:account.tax,account_paid_id:0
@ -10151,7 +10191,7 @@ msgstr "Crea un conto con il template selezionato sotto il mastro esistente."
#. module: account
#: report:account.invoice:0
msgid "Source"
msgstr ""
msgstr "Origine"
#. module: account
#: selection:account.model.line,date_maturity:0
@ -10174,11 +10214,13 @@ msgid ""
"This field contains the information related to the numbering of the journal "
"entries of this journal."
msgstr ""
"Questo campo contiene le informazioni relative alla numerazione delle "
"registrazioni di questo sezionale."
#. module: account
#: field:account.invoice,sent:0
msgid "Sent"
msgstr ""
msgstr "Spedito"
#. module: account
#: view:account.unreconcile.reconcile:0
@ -10194,7 +10236,7 @@ msgstr "Report Comune"
#: field:account.config.settings,default_sale_tax:0
#: field:account.config.settings,sale_tax:0
msgid "Default sale tax"
msgstr ""
msgstr "Imposta sulle vendite di default"
#. module: account
#: report:account.overdue:0
@ -10205,7 +10247,7 @@ msgstr "Saldo:"
#: code:addons/account/account.py:1542
#, python-format
msgid "Cannot create moves for different companies."
msgstr ""
msgstr "Non è possibile creare movimenti per diverse aziende."
#. module: account
#: view:account.invoice.report:0
@ -10281,7 +10323,7 @@ msgstr "Periodo finale"
#. module: account
#: model:account.account.type,name:account.account_type_expense_view1
msgid "Expense View"
msgstr ""
msgstr "Vista Costi"
#. module: account
#: field:account.move.line,date_maturity:0
@ -10292,7 +10334,7 @@ msgstr "Data scadenza"
#: code:addons/account/account.py:1459
#, python-format
msgid " Centralisation"
msgstr ""
msgstr " Centralizzazione"
#. module: account
#: help:account.journal,type:0
@ -10860,7 +10902,7 @@ msgstr "Totale"
#: code:addons/account/wizard/account_invoice_refund.py:109
#, python-format
msgid "Cannot %s draft/proforma/cancel invoice."
msgstr ""
msgstr "Non è possibile %s una fattura bozza/proforma/annullata."
#. module: account
#: field:account.tax,account_analytic_paid_id:0
@ -10989,7 +11031,7 @@ msgstr "Conti vuoti ? "
#: code:addons/account/account_move_line.py:1046
#, python-format
msgid "Unable to change tax!"
msgstr ""
msgstr "Impossibile cambiare l'imposta!"
#. module: account
#: constraint:account.bank.statement:0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-01 16:00+0000\n"
"Last-Translator: Thomas Pot (Open2bizz) <Unknown>\n"
"PO-Revision-Date: 2012-12-09 19:02+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:21+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#, python-format
#~ msgid "Integrity Error !"
@ -30,13 +30,13 @@ msgstr "Betaling (administratief)"
msgid ""
"An account fiscal position could be defined only once time on same accounts."
msgstr ""
"Een fiscale positie kan maar één keer worden gedefinieerd voro dezelfde "
"Een fiscale positie kan maar één keer worden gedefinieerd voor dezelfde "
"rekening."
#. module: account
#: view:account.unreconcile:0
msgid "Unreconciliate Transactions"
msgstr "Afletteren transactief ongedaan maken"
msgstr "Afletteren transacties ongedaan maken"
#. module: account
#: help:account.tax.code,sequence:0
@ -502,7 +502,7 @@ msgstr ""
#: code:addons/account/static/src/xml/account_move_line_quickadd.xml:8
#, python-format
msgid "Period :"
msgstr ""
msgstr "Periode:"
#. module: account
#: field:account.account.template,chart_template_id:0
@ -974,6 +974,8 @@ msgid ""
"Print Report with the currency column if the currency differs from the "
"company currency."
msgstr ""
"Print de rapportage met de valuta kolom als de valuta afwijkt van de "
"bedrijfsvaluta"
#. module: account
#: report:account.analytic.account.quantity_cost_ledger:0
@ -1077,6 +1079,8 @@ msgid ""
"You cannot validate this journal entry because account \"%s\" does not "
"belong to chart of accounts \"%s\"."
msgstr ""
"U kunt deze journaalpost niet valideren omdat rekening \"%s\" niet tot het "
"rekeningschema \"%s\" behoort."
#. module: account
#: view:validate.account.move:0
@ -1094,7 +1098,7 @@ msgstr "Totaalbedrag"
#. module: account
#: help:account.invoice,supplier_invoice_number:0
msgid "The reference of this invoice as provided by the supplier."
msgstr ""
msgstr "De referentie van deze factuur zoals opgegeven door de leverancier"
#. module: account
#: selection:account.account,type:0
@ -1270,6 +1274,8 @@ msgstr "Crediteer "
#: help:account.config.settings,company_footer:0
msgid "Bank accounts as printed in the footer of each printed document"
msgstr ""
"Rekeninginformatie die afgedrukt wordt in de voettekst van ieder afgedrukt "
"document"
#. module: account
#: view:account.tax:0
@ -1496,7 +1502,7 @@ msgstr "Niveau"
#: code:addons/account/wizard/account_change_currency.py:38
#, python-format
msgid "You can only change currency for Draft Invoice."
msgstr ""
msgstr "U kunt alleen de valuta wijzigen van een voorlopige factuur"
#. module: account
#: report:account.invoice:0
@ -1617,7 +1623,7 @@ msgstr "Debiteuren"
#: code:addons/account/account.py:767
#, python-format
msgid "%s (copy)"
msgstr ""
msgstr "%s (kopie)"
#. module: account
#: selection:account.balance.report,display_account:0
@ -2125,7 +2131,7 @@ msgstr "Klant ref:"
#: help:account.tax.template,ref_tax_code_id:0
#: help:account.tax.template,tax_code_id:0
msgid "Use this code for the tax declaration."
msgstr ""
msgstr "Gebruik deze code voor de belastingaangifte"
#. module: account
#: help:account.period,special:0
@ -2292,6 +2298,18 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Klik om een bankafschrift te registreren.\n"
" </p><p>\n"
" Een bankafschrift is een samenvatting van alle financiele "
"transacties\n"
" van een bankrekening gedurende een bepaalde periode.\n"
" U ontvangt deze periodieke van uw bank.\n"
" </p><p>\n"
" Met OpenERP kunt u de bankafschriften direct afletteren\n"
" met de gerelateerde in- en verkoopfacturen.\n"
" </p>\n"
" "
#. module: account
#: field:account.config.settings,currency_id:0
@ -2381,7 +2399,7 @@ msgstr "Afsluiten boekjaar"
#: code:addons/account/static/src/xml/account_move_line_quickadd.xml:14
#, python-format
msgid "Journal :"
msgstr ""
msgstr "Dagboek:"
#. module: account
#: sql_constraint:account.fiscal.position.tax:0
@ -7290,7 +7308,7 @@ msgstr "Behoud het balans +/- teken"
#: model:ir.actions.report.xml,name:account.account_vat_declaration
#: model:ir.ui.menu,name:account.menu_account_vat_declaration
msgid "Taxes Report"
msgstr "Belastingen rapport"
msgstr "BTW aangifte"
#. module: account
#: selection:account.journal.period,state:0
@ -10658,7 +10676,7 @@ msgstr "Vervaldatum"
#: field:cash.box.in,name:0
#: field:cash.box.out,name:0
msgid "Reason"
msgstr ""
msgstr "Reden"
#. module: account
#: selection:account.partner.ledger,filter:0
@ -10839,7 +10857,7 @@ msgstr "Debiteuren"
#: code:addons/account/account_move_line.py:776
#, python-format
msgid "Already reconciled."
msgstr ""
msgstr "Al afgeletterd"
#. module: account
#: selection:account.model.line,date_maturity:0
@ -11138,7 +11156,7 @@ msgstr "Rechts bovenliggende"
#: code:addons/account/static/src/js/account_move_reconciliation.js:80
#, python-format
msgid "Never"
msgstr ""
msgstr "Nooit"
#. module: account
#: model:ir.model,name:account.model_account_addtmpl_wizard
@ -11159,7 +11177,7 @@ msgstr "Relaties"
#. module: account
#: field:account.account,note:0
msgid "Internal Notes"
msgstr ""
msgstr "Interne notities"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_fiscalyear
@ -11192,7 +11210,7 @@ msgstr "Administratiemodel"
#: code:addons/account/account_cash_statement.py:292
#, python-format
msgid "Loss"
msgstr ""
msgstr "Verlies"
#. module: account
#: selection:account.entries.report,month:0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-11-01 18:30+0000\n"
"PO-Revision-Date: 2012-12-10 00:34+0000\n"
"Last-Translator: Dusan Laznik <laznik@mentis.si>\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-12-04 05:25+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -386,7 +386,7 @@ msgstr ""
#: view:account.invoice.report:0
#: field:account.invoice.report,user_id:0
msgid "Salesperson"
msgstr ""
msgstr "Prodajalec"
#. module: account
#: model:ir.model,name:account.model_account_tax_template
@ -452,7 +452,7 @@ msgstr ""
#: code:addons/account/static/src/xml/account_move_line_quickadd.xml:8
#, python-format
msgid "Period :"
msgstr ""
msgstr "Obdobje:"
#. module: account
#: field:account.account.template,chart_template_id:0
@ -1108,7 +1108,7 @@ msgstr "Oznaka"
#. module: account
#: view:account.config.settings:0
msgid "Features"
msgstr ""
msgstr "Možnosti"
#. module: account
#: code:addons/account/account.py:2293
@ -1189,7 +1189,7 @@ msgstr ""
#. module: account
#: view:account.invoice:0
msgid "Refund "
msgstr ""
msgstr "Dobropis "
#. module: account
#: help:account.config.settings,company_footer:0
@ -1329,7 +1329,7 @@ msgstr "Izhodna tečajna lista"
#. module: account
#: field:account.config.settings,chart_template_id:0
msgid "Template"
msgstr ""
msgstr "Predloga"
#. module: account
#: selection:account.analytic.journal,type:0
@ -1542,7 +1542,7 @@ msgstr "Konto terjatev"
#: code:addons/account/account.py:767
#, python-format
msgid "%s (copy)"
msgstr ""
msgstr "%s (kopija)"
#. module: account
#: selection:account.balance.report,display_account:0
@ -1611,7 +1611,7 @@ msgstr "Preskoči stanje \"Osnutek\" za ročno vnašanje"
#: code:addons/account/wizard/account_report_common.py:159
#, python-format
msgid "Not implemented."
msgstr ""
msgstr "Ni vgrajeno."
#. module: account
#: view:account.invoice.refund:0
@ -1698,7 +1698,7 @@ msgstr "Neobdavčeno"
#. module: account
#: view:account.journal:0
msgid "Advanced Settings"
msgstr ""
msgstr "Napredne nastavitve"
#. module: account
#: view:account.bank.statement:0

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-06 14:09+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"PO-Revision-Date: 2012-12-09 04:42+0000\n"
"Last-Translator: sum1201 <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-07 04:35+0000\n"
"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account
@ -104,6 +104,8 @@ msgid ""
"Error!\n"
"You cannot create recursive account templates."
msgstr ""
"错误!\n"
"您不能创建重复的帐户模板。"
#. module: account
#. openerp-web
@ -192,6 +194,12 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
"点击添加一个会计期间.\n"
"</p><p>\n"
"会计期间通常是一个月或一个季度。它通常对应纳税申报的期间。\n"
"</p>\n"
" "
#. module: account
#: model:ir.actions.act_window,name:account.action_view_created_invoice_dashboard
@ -440,7 +448,7 @@ msgstr ""
#: code:addons/account/static/src/xml/account_move_line_quickadd.xml:8
#, python-format
msgid "Period :"
msgstr ""
msgstr "时间:"
#. module: account
#: field:account.account.template,chart_template_id:0
@ -603,7 +611,7 @@ msgstr "没有什么被核销"
#. module: account
#: field:account.config.settings,decimal_precision:0
msgid "Decimal precision on journal entries"
msgstr ""
msgstr "日记帐分录小数精度"
#. module: account
#: selection:account.config.settings,period:0
@ -722,7 +730,7 @@ msgstr "账簿的会计期间"
#: constraint:account.move:0
msgid ""
"You cannot create more than one move per period on a centralized journal."
msgstr ""
msgstr "在每个会计期间你不可以创建1个以上的总分类凭证"
#. module: account
#: help:account.tax,account_analytic_paid_id:0
@ -1401,7 +1409,7 @@ msgstr "级别"
#: code:addons/account/wizard/account_change_currency.py:38
#, python-format
msgid "You can only change currency for Draft Invoice."
msgstr ""
msgstr "您只能修改发票草稿的货币。"
#. module: account
#: report:account.invoice:0
@ -2288,7 +2296,7 @@ msgstr "关闭财政年度"
#: code:addons/account/static/src/xml/account_move_line_quickadd.xml:14
#, python-format
msgid "Journal :"
msgstr ""
msgstr "流水帐"
#. module: account
#: sql_constraint:account.fiscal.position.tax:0
@ -2995,7 +3003,7 @@ msgstr "单号"
#. module: account
#: view:wizard.multi.charts.accounts:0
msgid "Purchase Tax"
msgstr ""
msgstr "购置税"
#. module: account
#: help:account.move.line,tax_code_id:0
@ -3089,7 +3097,7 @@ msgstr "沟通类型"
#. module: account
#: constraint:account.move.line:0
msgid "Account and Period must belong to the same company."
msgstr ""
msgstr "帐户和帐期必须属于同一家公司。"
#. module: account
#: field:account.invoice.line,discount:0
@ -3117,7 +3125,7 @@ msgstr "补差额金额"
#: field:account.bank.statement,message_unread:0
#: field:account.invoice,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "未读消息"
#. module: account
#: code:addons/account/wizard/account_invoice_state.py:44

View File

@ -134,18 +134,23 @@ class res_partner(osv.osv):
return []
having_values = tuple(map(itemgetter(2), args))
where = ' AND '.join(
map(lambda x: '(SUM(debit-credit) %(operator)s %%s)' % {
map(lambda x: '(SUM(bal2) %(operator)s %%s)' % {
'operator':x[1]},args))
query = self.pool.get('account.move.line')._query_get(cr, uid, context=context)
cr.execute(('SELECT partner_id FROM account_move_line l '\
'WHERE account_id IN '\
'(SELECT id FROM account_account '\
'WHERE type=%s AND active) '\
'AND reconcile_id IS NULL '\
'AND '+query+' '\
'AND partner_id IS NOT NULL '\
'GROUP BY partner_id HAVING '+where),
(type,) + having_values)
cr.execute(('SELECT pid AS partner_id, SUM(bal2) FROM ' \
'(SELECT CASE WHEN bal IS NOT NULL THEN bal ' \
'ELSE 0.0 END AS bal2, p.id as pid FROM ' \
'(SELECT (debit-credit) AS bal, partner_id ' \
'FROM account_move_line l ' \
'WHERE account_id IN ' \
'(SELECT id FROM account_account '\
'WHERE type=%s AND active) ' \
'AND reconcile_id IS NULL ' \
'AND '+query+') AS l ' \
'RIGHT JOIN res_partner p ' \
'ON p.id = partner_id ) AS pl ' \
'GROUP BY pid HAVING ' + where),
(type,) + having_values)
res = cr.fetchall()
if not res:
return [('id','=','0')]

View File

@ -4,6 +4,7 @@
<record id="product_normal_form_view" model="ir.ui.view">
<field name="name">product.normal.form.inherit</field>
<field name="model">product.product</field>
<field name="priority">5</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<notebook position="inside">

View File

@ -56,7 +56,7 @@ class report_account_common(report_sxw.rml_parse, common_report_header):
for report in self.pool.get('account.financial.report').browse(self.cr, self.uid, ids2, context=data['form']['used_context']):
vals = {
'name': report.name,
'balance': report.balance,
'balance': report.balance * report.sign,
'type': 'report',
'level': bool(report.style_overwrite) and report.style_overwrite or report.level,
'account_type': report.type =='sum' and 'view' or False, #used to underline the financial report balances

View File

@ -48,6 +48,7 @@ class report_account_receivable(osv.osv):
_order = 'name desc'
def init(self, cr):
tools.drop_view_if_exists(cr, 'report_account_receivable')
cr.execute("""
create or replace view report_account_receivable as (
select
@ -183,6 +184,7 @@ class report_invoice_created(osv.osv):
_order = 'create_date'
def init(self, cr):
tools.drop_view_if_exists(cr, 'report_invoice_created')
cr.execute("""create or replace view report_invoice_created as (
select
inv.id as id, inv.name as name, inv.type as type,

View File

@ -36,7 +36,7 @@ class account_invoice_refund(osv.osv_memory):
'period': fields.many2one('account.period', 'Force period'),
'journal_id': fields.many2one('account.journal', 'Refund Journal', help='You can select here the journal to use for the credit note that will be created. If you leave that field empty, it will use the same journal as the current invoice.'),
'description': fields.char('Reason', size=128, required=True),
'filter_refund': fields.selection([('refund', 'Create a draft credit note'), ('cancel', 'Cancel: create credit note and reconcile'),('modify', 'Modify: create credit note, reconcile and create a new draft invoice')], "Refund Method", required=True, help='Credit note base on this type. You can not Modify and Cancel if the invoice is already reconciled'),
'filter_refund': fields.selection([('refund', 'Create a draft refund'), ('cancel', 'Cancel: create refund and reconcile'),('modify', 'Modify: create refund, reconcile and create a new draft invoice')], "Refund Method", required=True, help='Refund base on this type. You can not Modify and Cancel if the invoice is already reconciled'),
}
def _get_journal(self, cr, uid, context=None):

View File

@ -40,7 +40,7 @@
</group>
</group>
<footer>
<button string='Create Credit Note' name="invoice_refund" type="object" class="oe_highlight"/>
<button string='Create Refund' name="invoice_refund" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>

View File

@ -24,6 +24,7 @@ from lxml import etree
from osv import fields, osv
from tools.translate import _
from openerp.osv.orm import setup_modifiers
class account_common_report(osv.osv_memory):
_name = "account.common.report"
@ -67,16 +68,16 @@ class account_common_report(osv.osv_memory):
(_check_company_id, 'The fiscalyear, periods or chart of account chosen have to belong to the same company.', ['chart_account_id','fiscalyear_id','period_from','period_to']),
]
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
if context is None:context = {}
res = super(account_common_report, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=False)
if context.get('active_model', False) == 'account.account' and view_id:
if context.get('active_model', False) == 'account.account':
doc = etree.XML(res['arch'])
nodes = doc.xpath("//field[@name='chart_account_id']")
for node in nodes:
node.set('readonly', '1')
node.set('help', 'If you print the report from Account list/form view it will not consider Charts of account')
setup_modifiers(node, res['fields']['chart_account_id'])
res['arch'] = etree.tostring(doc)
return res
@ -121,8 +122,8 @@ class account_common_report(osv.osv_memory):
now = time.strftime('%Y-%m-%d')
company_id = False
ids = context.get('active_ids', [])
if ids:
company_id = self.browse(cr, uid, ids[0], context=context).company_id.id
if ids and context.get('active_model') == 'account.account':
company_id = self.pool.get('account.account').browse(cr, uid, ids[0], context=context).company_id.id
fiscalyears = self.pool.get('account.fiscalyear').search(cr, uid, [('date_start', '<', now), ('date_stop', '>', now), ('company_id', '=', company_id)], limit=1)
return fiscalyears and fiscalyears[0] or False

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-11-24 02:51+0000\n"
"PO-Revision-Date: 2011-01-17 00:02+0000\n"
"PO-Revision-Date: 2012-12-09 19:38+0000\n"
"Last-Translator: Goran Kliska <gkliska@gmail.com>\n"
"Language-Team: Croatian <hr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr ""
msgstr "Otvori izbornik računovodstvo"
#~ msgid ""
#~ "\n"

View File

@ -45,7 +45,7 @@ Adds menu to show relevant information to each manager.You can also view the rep
'css': [
'static/src/css/analytic.css'
],
'demo': [],
'demo': ['analytic_account_demo.xml'],
'installable': True,
'auto_install': False,
}

View File

@ -8,7 +8,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('invoice_id','=',False)]</field>
<field name="context">{'search_default_to_invoice': 1}</field>
<field name="context">{'search_default_to_invoice': 1, 'search_default_sales': 1}</field>
<field name="search_view_id" ref="account.view_account_analytic_line_filter"/>
<field name="help" type="html">
<p>
@ -34,7 +34,7 @@
<filter icon="terp-go-today" string="To Renew" domain="['|', '&amp;', ('date', '!=', False), ('date', '&lt;=', time.strftime('%%Y-%%m-%%d')), ('is_overdue_quantity', '=', True)]" name="renew"
help="The contracts to be renewed because the deadline is passed or the working hours are higher than the allocated hours" />
<separator/>
<filter string="Contracts Having a Partner" help="A contract in OpenERP is an analytic account having a partner set on it." name="has_partner" domain="[('partner_id', '!=', False)]" icon="terp-partner" />
<filter string="Customer Contracts" help="A contract in OpenERP is an analytic account having a partner set on it." name="has_partner" domain="[('partner_id', '!=', False)]" icon="terp-partner" />
<separator/>
<filter string="Contracts not assigned" help="Contracts that are not assigned to an account manager." domain="[('user_id', '=', False)]" icon="terp-personal-" />
<field name="partner_id"/>

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="account.analytic_consultancy" model="account.analytic.account">
<field name="partner_id" ref="base.res_partner_15"/>
<field name="invoice_on_timesheets">True</field>
<field name="hours_qtt_est">1200</field>
<field name="fix_price_invoices">True</field>
<field name="to_invoice" ref="hr_timesheet_invoice.timesheet_invoice_factor1"/>
<field name="pricelist_id" ref="product.list0"/>
<field name="amount_max">100000</field>
</record>
<record id="sale.sale_order_4" model="sale.order">
<field name="project_id" ref="account.analytic_consultancy"/>
</record>
<record id="hr_timesheet.working_hours_maintenance" model="hr.analytic.timesheet">
<field name="account_id" ref="account.analytic_consultancy"/>
<field name="to_invoice" ref="hr_timesheet_invoice.timesheet_invoice_factor1"/>
<field name="unit_amount">100</field>
</record>
<record id="account.analytic_super_product_trainings" model="account.analytic.account">
<field name="partner_id" ref="base.res_partner_18"/>
<field name="invoice_on_timesheets">True</field>
<field name="hours_qtt_est">500</field>
<field name="fix_price_invoices">True</field>
<field name="pricelist_id" ref="product.list0"/>
<field name="amount_max">50000</field>
<field name="to_invoice" ref="hr_timesheet_invoice.timesheet_invoice_factor1"/>
</record>
<record id="sale.sale_order_6" model="sale.order">
<field name="project_id" ref="account.analytic_super_product_trainings"/>
</record>
<record id="account.analytic_support_internal" model="account.analytic.account">
<field name="use_timesheets">True</field>
<field name="invoice_on_timesheets">True</field>
<field name="hours_qtt_est">100</field>
<field name="pricelist_id" ref="product.list0"/>
<field name="to_invoice" ref="hr_timesheet_invoice.timesheet_invoice_factor1"/>
</record>
</data>
</openerp>

View File

@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-08-16 09:05+0000\n"
"Last-Translator: gagarin <Unknown>\n"
"PO-Revision-Date: 2012-12-09 13:20+0000\n"
"Last-Translator: Davide Corio - agilebg.com <davide.corio@agilebg.com>\n"
"Language-Team: <>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:34+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-10 04:38+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "No order to invoice, create"
msgstr ""
msgstr "Nessun ordine da fatturare, crealo"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -29,12 +29,12 @@ msgstr "Raggruppa per..."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "To Invoice"
msgstr ""
msgstr "Da fatturare"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Remaining"
msgstr ""
msgstr "Rimanenti"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -73,7 +73,7 @@ msgstr ""
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "⇒ Invoice"
msgstr ""
msgstr "⇒ Fattura"
#. module: account_analytic_analysis
#: field:account.analytic.account,ca_invoiced:0
@ -88,7 +88,7 @@ msgstr "Data dell'ultimo costo fatturato"
#. module: account_analytic_analysis
#: help:account.analytic.account,fix_price_to_invoice:0
msgid "Sum of quotations for this contract."
msgstr ""
msgstr "Somma dei preventivi di questo contratto."
#. module: account_analytic_analysis
#: help:account.analytic.account,ca_invoiced:0
@ -98,7 +98,7 @@ msgstr "Importo totale fatture cliente per questo conto"
#. module: account_analytic_analysis
#: help:account.analytic.account,timesheet_ca_invoiced:0
msgid "Sum of timesheet lines invoiced for this contract."
msgstr ""
msgstr "Somma delle linee timesheet fatturate di questo contratto."
#. module: account_analytic_analysis
#: help:account.analytic.account,revenue_per_hour:0
@ -108,12 +108,12 @@ msgstr "Calcolato usando la formula: Fatturato / Tempo Totale"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Contracts not assigned"
msgstr ""
msgstr "Contratti non assegnati"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Partner"
msgstr ""
msgstr "Partner"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -156,12 +156,12 @@ msgstr ""
#. module: account_analytic_analysis
#: help:account.analytic.account,remaining_hours_to_invoice:0
msgid "Computed using the formula: Maximum Time - Total Invoiced Time"
msgstr ""
msgstr "Calcolato usando la formula: Tempo Massimo - Totale Tempo Fatturato"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Expected"
msgstr ""
msgstr "Atteso"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -174,7 +174,7 @@ msgstr "Contabilità Analitica"
#. module: account_analytic_analysis
#: help:account.analytic.account,theorical_margin:0
msgid "Computed using the formula: Theoretical Revenue - Total Costs"
msgstr ""
msgstr "Calcolato usando la formula: Ricavo Teorico - Totale Costi"
#. module: account_analytic_analysis
#: field:account.analytic.account,hours_qtt_invoiced:0
@ -195,6 +195,8 @@ msgid ""
"{'required': [('type','=','contract')], 'invisible': [('type','in',['view', "
"'normal','template'])]}"
msgstr ""
"{'required': [('type','=','contract')], 'invisible': [('type','in',['view', "
"'normal','template'])]}"
#. module: account_analytic_analysis
#: field:account.analytic.account,real_margin_rate:0
@ -204,7 +206,7 @@ msgstr "Tasso di margine reale (%)"
#. module: account_analytic_analysis
#: help:account.analytic.account,remaining_hours:0
msgid "Computed using the formula: Maximum Time - Total Worked Time"
msgstr ""
msgstr "Calcolato usando la formula: Tempo Massimo - Totale Tempo Lavorato"
#. module: account_analytic_analysis
#: help:account.analytic.account,hours_quantity:0
@ -218,23 +220,23 @@ msgstr ""
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Nothing to invoice, create"
msgstr ""
msgstr "Niente da fatturare, crealo"
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.template_of_contract_action
#: model:ir.ui.menu,name:account_analytic_analysis.menu_template_of_contract_action
msgid "Template of Contract"
msgstr ""
msgstr "Modello Contratto"
#. module: account_analytic_analysis
#: model:res.groups,name:account_analytic_analysis.group_template_required
msgid "Mandatory use of templates in contracts"
msgstr ""
msgstr "Utilizzo dei template obbligatorio nei contratti"
#. module: account_analytic_analysis
#: field:account.analytic.account,hours_quantity:0
msgid "Total Worked Time"
msgstr ""
msgstr "Totale Tempo Lavorato"
#. module: account_analytic_analysis
#: field:account.analytic.account,real_margin:0
@ -255,7 +257,7 @@ msgstr ""
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "or view"
msgstr ""
msgstr "o vista"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -272,7 +274,7 @@ msgstr "Mese"
#: model:ir.actions.act_window,name:account_analytic_analysis.action_hr_tree_invoiced_all
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_hr_tree_invoiced_all
msgid "Time & Materials to Invoice"
msgstr ""
msgstr "Tempo & Materiali da Fatturare"
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue_all
@ -283,12 +285,12 @@ msgstr "Contratti"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Start Date"
msgstr ""
msgstr "Data Inizio"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Invoiced"
msgstr ""
msgstr "Fatturato"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -307,13 +309,13 @@ msgstr "Contratti in sospeso da rinnovare con il cliente"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Timesheets"
msgstr ""
msgstr "Timesheets"
#. module: account_analytic_analysis
#: code:addons/account_analytic_analysis/account_analytic_analysis.py:461
#, python-format
msgid "Sale Order Lines of %s"
msgstr ""
msgstr "Linee Ordine di Vendita di %s"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -328,7 +330,7 @@ msgstr "Quantità Scadute"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Status"
msgstr ""
msgstr "Stato"
#. module: account_analytic_analysis
#: field:account.analytic.account,ca_theorical:0
@ -350,7 +352,7 @@ msgstr ""
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.action_sales_order
msgid "Sales Orders"
msgstr ""
msgstr "Ordini di Vendita"
#. module: account_analytic_analysis
#: help:account.analytic.account,last_invoice_date:0
@ -404,6 +406,8 @@ msgid ""
"Allows you to set the template field as required when creating an analytic "
"account or a contract."
msgstr ""
"Consente di impostare il campo modello come obbligatorio durante la "
"creazione di un conto analitico o di un contratto."
#. module: account_analytic_analysis
#: help:account.analytic.account,hours_qtt_invoiced:0
@ -436,12 +440,12 @@ msgstr ""
#. module: account_analytic_analysis
#: field:account.analytic.account,toinvoice_total:0
msgid "Total to Invoice"
msgstr ""
msgstr "Totale da Fatturare"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Sale Orders"
msgstr ""
msgstr "Ordini di Vendita"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -451,7 +455,7 @@ msgstr ""
#. module: account_analytic_analysis
#: field:account.analytic.account,invoiced_total:0
msgid "Total Invoiced"
msgstr ""
msgstr "Totale Fatturato"
#. module: account_analytic_analysis
#: help:account.analytic.account,remaining_ca:0
@ -462,7 +466,7 @@ msgstr ""
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Responsible"
msgstr ""
msgstr "Responsabile"
#. module: account_analytic_analysis
#: field:account.analytic.account,last_invoice_date:0
@ -516,6 +520,7 @@ msgstr "Contratti da Rinnovare"
#: help:account.analytic.account,toinvoice_total:0
msgid " Sum of everything that could be invoiced for this contract."
msgstr ""
" Somma di tutto quello che può essere fatturato per questo contratto."
#. module: account_analytic_analysis
#: field:account.analytic.account,theorical_margin:0
@ -525,7 +530,7 @@ msgstr "Margine teorico"
#. module: account_analytic_analysis
#: field:account.analytic.account,remaining_total:0
msgid "Total Remaining"
msgstr ""
msgstr "Totale Rimanente"
#. module: account_analytic_analysis
#: help:account.analytic.account,real_margin:0
@ -535,12 +540,12 @@ msgstr "Calcolato utilizzando la formula: importo fatturato - totale costi"
#. module: account_analytic_analysis
#: field:account.analytic.account,hours_qtt_est:0
msgid "Estimation of Hours to Invoice"
msgstr ""
msgstr "Stima delle Ore da Fatturare"
#. module: account_analytic_analysis
#: field:account.analytic.account,fix_price_invoices:0
msgid "Fixed Price"
msgstr ""
msgstr "Prezzo Fisso"
#. module: account_analytic_analysis
#: help:account.analytic.account,last_worked_date:0
@ -550,17 +555,17 @@ msgstr "Data dell'ultimo lavoro fatto su questo conto."
#. module: account_analytic_analysis
#: model:ir.model,name:account_analytic_analysis.model_sale_config_settings
msgid "sale.config.settings"
msgstr ""
msgstr "sale.config.settings"
#. module: account_analytic_analysis
#: field:sale.config.settings,group_template_required:0
msgid "Mandatory use of templates."
msgstr ""
msgstr "Uso dei modelli obbligatorio"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Contracts Having a Partner"
msgstr ""
msgstr "Contratti con Partner"
#. module: account_analytic_analysis
#: help:account.analytic.account,total_cost:0
@ -574,7 +579,7 @@ msgstr ""
#. module: account_analytic_analysis
#: field:account.analytic.account,est_total:0
msgid "Total Estimation"
msgstr ""
msgstr "Stima Totale"
#. module: account_analytic_analysis
#: field:account.analytic.account,remaining_ca:0
@ -601,16 +606,17 @@ msgstr "Durata totale"
msgid ""
"the field template of the analytic accounts and contracts will be required."
msgstr ""
"il campo modello dei conti analitici e dei contratti sarà obbligatorio."
#. module: account_analytic_analysis
#: field:account.analytic.account,invoice_on_timesheets:0
msgid "On Timesheets"
msgstr ""
msgstr "Su Timesheets"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Total"
msgstr ""
msgstr "Totale"
#~ msgid "Computed using the formula: Theorial Revenue - Total Costs"
#~ msgstr "Calcolato utilizzando la formula: Reddito teorico - costi totali"

View File

@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-07 04:35+0000\n"
"X-Launchpad-Export-Date: 2012-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account_analytic_plans

View File

@ -41,8 +41,8 @@ class account_asset_category(osv.osv):
'company_id': fields.many2one('res.company', 'Company', required=True),
'method': fields.selection([('linear','Linear'),('degressive','Degressive')], 'Computation Method', required=True, help="Choose the method to use to compute the amount of depreciation lines.\n"\
" * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n" \
" * Degressive: Calculated on basis of: Remaining Value * Degressive Factor"),
'method_number': fields.integer('Number of Depreciations'),
" * Degressive: Calculated on basis of: Residual Value * Degressive Factor"),
'method_number': fields.integer('Number of Depreciations', help="The number of depreciations needed to depreciate your asset"),
'method_period': fields.integer('Period Length', help="State here the time between 2 depreciations, in months", required=True),
'method_progress_factor': fields.float('Degressive Factor'),
'method_time': fields.selection([('number','Number of Depreciations'),('end','Ending Date')], 'Time Method', required=True,
@ -222,6 +222,15 @@ class account_asset_asset(osv.osv):
else:
val['currency_id'] = company.currency_id.id
return {'value': val}
def onchange_purchase_salvage_value(self, cr, uid, ids, purchase_value, salvage_value, context=None):
val = {}
for asset in self.browse(cr, uid, ids, context=context):
if purchase_value:
val['value_residual'] = purchase_value - salvage_value
if salvage_value:
val['value_residual'] = purchase_value - salvage_value
return {'value': val}
_columns = {
'account_move_line_ids': fields.one2many('account.move.line', 'asset_id', 'Entries', readonly=True, states={'draft':[('readonly',False)]}),
@ -243,9 +252,9 @@ class account_asset_asset(osv.osv):
'partner_id': fields.many2one('res.partner', 'Partner', readonly=True, states={'draft':[('readonly',False)]}),
'method': fields.selection([('linear','Linear'),('degressive','Degressive')], 'Computation Method', required=True, readonly=True, states={'draft':[('readonly',False)]}, help="Choose the method to use to compute the amount of depreciation lines.\n"\
" * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n" \
" * Degressive: Calculated on basis of: Remaining Value * Degressive Factor"),
'method_number': fields.integer('Number of Depreciations', readonly=True, states={'draft':[('readonly',False)]}, help="Calculates Depreciation within specified interval"),
'method_period': fields.integer('Number of Months in a Period', required=True, readonly=True, states={'draft':[('readonly',False)]}, help="State here the time during 2 depreciations, in months"),
" * Degressive: Calculated on basis of: Residual Value * Degressive Factor"),
'method_number': fields.integer('Number of Depreciations', readonly=True, states={'draft':[('readonly',False)]}, help="The number of depreciations needed to depreciate your asset"),
'method_period': fields.integer('Number of Months in a Period', required=True, readonly=True, states={'draft':[('readonly',False)]}, help="The amount of time between two depreciations, in months"),
'method_end': fields.date('Ending Date', readonly=True, states={'draft':[('readonly',False)]}),
'method_progress_factor': fields.float('Degressive Factor', readonly=True, states={'draft':[('readonly',False)]}),
'value_residual': fields.function(_amount_residual, method=True, digits_compute=dp.get_precision('Account'), string='Residual Value'),
@ -359,8 +368,8 @@ class account_asset_depreciation_line(osv.osv):
'sequence': fields.integer('Sequence', required=True),
'asset_id': fields.many2one('account.asset.asset', 'Asset', required=True),
'parent_state': fields.related('asset_id', 'state', type='char', string='State of Asset'),
'amount': fields.float('Depreciation Amount', digits_compute=dp.get_precision('Account'), required=True),
'remaining_value': fields.float('Amount to Depreciate', digits_compute=dp.get_precision('Account'),required=True),
'amount': fields.float('Current Depreciation', digits_compute=dp.get_precision('Account'), required=True),
'remaining_value': fields.float('Next Period Depreciation', digits_compute=dp.get_precision('Account'),required=True),
'depreciated_value': fields.float('Amount Already Depreciated', required=True),
'depreciation_date': fields.date('Depreciation Date', select=1),
'move_id': fields.many2one('account.move', 'Depreciation Entry'),
@ -460,7 +469,7 @@ class account_asset_history(osv.osv):
help="The method to use to compute the dates and number of depreciation lines.\n"\
"Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n" \
"Ending Date: Choose the time between 2 depreciations and the date the depreciations won't go beyond."),
'method_number': fields.integer('Number of Depreciations'),
'method_number': fields.integer('Number of Depreciations', help="The number of depreciations needed to depreciate your asset"),
'method_period': fields.integer('Period Length', help="Time in month between two depreciations"),
'method_end': fields.date('Ending date'),
'note': fields.text('Note'),

View File

@ -108,8 +108,8 @@
<page string="General">
<group>
<group>
<field name="purchase_value" widget="monetary" options="{'currency_field': 'currency_id'}"/>
<field name="salvage_value" widget="monetary" options="{'currency_field': 'currency_id'}"/>
<field name="purchase_value" widget="monetary" options="{'currency_field': 'currency_id'}" on_change="onchange_purchase_salvage_value(purchase_value, salvage_value)"/>
<field name="salvage_value" widget="monetary" options="{'currency_field': 'currency_id'}" on_change="onchange_purchase_salvage_value(purchase_value, salvage_value)"/>
<field name="value_residual" widget="monetary" options="{'currency_field': 'currency_id'}"/>
<field name="partner_id"/>
</group>

View File

@ -15,7 +15,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-07 04:36+0000\n"
"X-Launchpad-Export-Date: 2012-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account_asset

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-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-11-30 00:08+0000\n"
"PO-Revision-Date: 2012-12-09 22:00+0000\n"
"Last-Translator: Sergio Corato <Unknown>\n"
"Language-Team: Italian <it@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:53+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account_asset
#: view:account.asset.asset:0
@ -87,7 +87,7 @@ msgstr "Azienda"
#. module: account_asset
#: view:asset.modify:0
msgid "Modify"
msgstr ""
msgstr "Modifica"
#. module: account_asset
#: selection:account.asset.asset,state:0
@ -112,7 +112,7 @@ msgstr "Analisi Immobilizzazioni"
#. module: account_asset
#: field:asset.modify,name:0
msgid "Reason"
msgstr ""
msgstr "Causale"
#. module: account_asset
#: field:account.asset.asset,method_progress_factor:0
@ -189,7 +189,7 @@ msgstr "Note"
#. module: account_asset
#: field:account.asset.depreciation.line,move_id:0
msgid "Depreciation Entry"
msgstr ""
msgstr "Riga Ammortamento"
#. module: account_asset
#: view:asset.asset.report:0
@ -223,7 +223,7 @@ msgstr "Riferimento"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Account Asset"
msgstr ""
msgstr "Conto Immobilizzazione"
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_asset_depreciation_confirmation_wizard
@ -336,7 +336,7 @@ msgstr "Immobilizzazioni in stato \"chiuso\""
#. module: account_asset
#: field:account.asset.asset,parent_id:0
msgid "Parent Asset"
msgstr ""
msgstr "Immobilizzazione Padre"
#. module: account_asset
#: view:account.asset.history:0
@ -362,7 +362,7 @@ msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_move_line
msgid "Journal Items"
msgstr ""
msgstr "Voci Sezionale"
#. module: account_asset
#: field:asset.asset.report,unposted_value:0

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-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-05-10 17:45+0000\n"
"Last-Translator: 开阖软件 Jeff Wang <jeff@osbzr.com>\n"
"PO-Revision-Date: 2012-12-07 15:37+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:54+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account_asset
#: view:account.asset.asset:0
@ -153,7 +153,7 @@ msgstr "折旧日期"
#. module: account_asset
#: constraint:account.asset.asset:0
msgid "Error ! You cannot create recursive assets."
msgstr ""
msgstr "错误!你不能创建循环的固定资产."
#. module: account_asset
#: field:asset.asset.report,posted_value:0
@ -198,7 +198,7 @@ msgstr "折旧行编号"
#. module: account_asset
#: field:account.asset.asset,method_period:0
msgid "Number of Months in a Period"
msgstr ""
msgstr "在一个周期内的月数"
#. module: account_asset
#: view:asset.asset.report:0
@ -441,7 +441,7 @@ msgstr ""
#: field:account.asset.asset,state:0
#: field:asset.asset.report,state:0
msgid "Status"
msgstr ""
msgstr "状态"
#. module: account_asset
#: field:account.asset.asset,partner_id:0
@ -488,7 +488,7 @@ msgstr "计算"
#. module: account_asset
#: view:account.asset.history:0
msgid "Asset History"
msgstr ""
msgstr "资产历史"
#. module: account_asset
#: field:asset.asset.report,name:0
@ -607,7 +607,7 @@ msgstr "要折旧的金额"
#. module: account_asset
#: field:account.asset.asset,name:0
msgid "Asset Name"
msgstr ""
msgstr "资产名称"
#. module: account_asset
#: field:account.asset.category,open_asset:0
@ -662,7 +662,7 @@ msgstr ""
#. module: account_asset
#: field:account.asset.asset,purchase_value:0
msgid "Gross Value"
msgstr ""
msgstr "总值"
#. module: account_asset
#: field:account.asset.category,name:0
@ -708,7 +708,7 @@ msgstr "新建固定资产会计凭证"
#. module: account_asset
#: field:account.asset.depreciation.line,sequence:0
msgid "Sequence"
msgstr ""
msgstr "编号"
#. module: account_asset
#: help:account.asset.category,method_period:0

View File

@ -8,12 +8,17 @@
<field name="arch" type="xml">
<form string="Modify Asset" version="7.0">
<group string="Asset Durations to Modify" col="4">
<field name="name" colspan="4"/>
<group colspan="2" col="2">
<field name="name"/>
<field name="method_number"/>
<field name="method_end"/>
</group>
<field name="method_period"/>
<group colspan="2" col="2">
<field name="method_end"/>
<label for="method_period"/>
<div>
<field name="method_period" class="oe_inline"/> months
</div>
</group>
</group>
<separator string="Notes"/>
<field name="note"/>

View File

@ -15,7 +15,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-07 04:36+0000\n"
"X-Launchpad-Export-Date: 2012-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account_bank_statement_extensions

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-12-03 16:02+0000\n"
"PO-Revision-Date: 2011-01-26 17:36+0000\n"
"Last-Translator: Nicola Riolini - Micronaet <Unknown>\n"
"PO-Revision-Date: 2012-12-09 20:37+0000\n"
"Last-Translator: Sergio Corato <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:42+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account_budget
#: view:account.budget.analytic:0
@ -120,7 +120,7 @@ msgstr "Stato"
#: code:addons/account_budget/account_budget.py:119
#, python-format
msgid "The Budget '%s' has no accounts!"
msgstr ""
msgstr "Il Budget '%s' non ha un conto!"
#. module: account_budget
#: report:account.budget:0
@ -198,7 +198,7 @@ msgstr "Data fine"
#: model:ir.model,name:account_budget.model_account_budget_analytic
#: model:ir.model,name:account_budget.model_account_budget_report
msgid "Account Budget report for analytic account"
msgstr ""
msgstr "Report Budget Conto per conto analitico"
#. module: account_budget
#: view:account.analytic.account:0
@ -234,7 +234,7 @@ msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
msgid "Duration"
msgstr ""
msgstr "Durata"
#. module: account_budget
#: field:account.budget.post,code:0
@ -332,7 +332,7 @@ msgstr "Importo Teorico"
#: view:account.budget.crossvered.summary.report:0
#: view:account.budget.report:0
msgid "or"
msgstr ""
msgstr "o"
#. module: account_budget
#: field:crossovered.budget.lines,analytic_account_id:0
@ -418,7 +418,7 @@ msgstr "Maschera Analisi"
#. module: account_budget
#: view:crossovered.budget:0
msgid "Draft Budgets"
msgstr ""
msgstr "Budget in Bozza"
#~ msgid "%"
#~ msgstr "%"

View File

@ -9,7 +9,7 @@
<field name="model">account.voucher</field>
<field name="inherit_id" ref="account_voucher.view_vendor_payment_form" />
<field name="arch" type="xml">
<field name="journal_id" position="after">
<field name="amount" position="after">
<newline/>
<field name="allow_check" invisible="1"/>
<field name="amount_in_word" attrs="{'invisible':[('allow_check','!=',1)]}" nolabel="1" colspan="6"/>

View File

@ -8,15 +8,15 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-05-10 18:06+0000\n"
"PO-Revision-Date: 2012-12-07 09:04+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:54+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account_check_writing
#: selection:res.company,check_layout:0
@ -107,6 +107,19 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
"                 Klicken Sie, um einen neuen Scheck erstellen.\n"
"               </ p>\n"
"                 Mit dem Scheck Formular können Sie Zahlungen an Lieferanten "
"per Scheck \n"
" anweisen, durchführen und verfolgen. Wenn Sie einen "
"Lieferanten auswählen, \n"
" sowie Zahlungsmethode und Betrag , macht OpenERP Ihnen den "
"Vorschlag, \n"
" diese Zahlung mit einer offenen Rechnung Ihres Lieferanten "
"auszugleichen.\n"
"               </ p>\n"
" "
#. module: account_check_writing
#: field:account.voucher,allow_check:0
@ -128,7 +141,7 @@ msgstr "Benutze Vordruck"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_bottom
msgid "Print Check (Bottom)"
msgstr ""
msgstr "Scheck drucken (Unterteil)"
#. module: account_check_writing
#: report:account.print.check.bottom:0
@ -140,7 +153,7 @@ msgstr "Fälligkeit"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_middle
msgid "Print Check (Middle)"
msgstr ""
msgstr "Scheck drucken (Mittelteil)"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_res_company
@ -156,7 +169,7 @@ msgstr "Saldenausgleich"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_top
msgid "Print Check (Top)"
msgstr ""
msgstr "Scheck drucken (Oberteil)"
#. module: account_check_writing
#: report:account.print.check.bottom:0

View File

@ -25,7 +25,7 @@
'category': 'Accounting & Finance',
'description': """
Module to automate letters for unpaid invoices, with multi-level recalls.
==========================================================================
=========================================================================
You can define your multiple levels of recall through the menu:
---------------------------------------------------------------

View File

@ -24,7 +24,6 @@ from lxml import etree
from tools.translate import _
class followup(osv.osv):
_name = 'account_followup.followup'
_description = 'Account Follow-up'
@ -74,7 +73,7 @@ class followup_line(osv.osv):
Exception made if there was a mistake of ours, it seems that the following amount stays unpaid. Please, take appropriate measures in order to carry out this payment in the next 8 days.
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to contact our accounting department at (+32).10.68.94.39.
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to contact our accounting department.
Best Regards,
""",
@ -118,12 +117,61 @@ class account_move_line(osv.osv):
class email_template(osv.osv):
_inherit = 'email.template'
# Adds current_date to the context. That way it can be used to put
# the account move lines in bold that are overdue in the email
def render_template(self, cr, uid, template, model, res_id, context=None):
context['current_date'] = fields.date.context_today(cr, uid, context)
return super(email_template, self).render_template(cr, uid, template, model, res_id, context=context)
def _get_followup_table_html(self, cr, uid, res_id, context=None):
'''
Build the html tables to be included in emails send to partners, when reminding them their
overdue invoices.
:param res_id: ID of the partner for whom we are building the tables
:rtype: string
'''
from report import account_followup_print
partner = self.pool.get('res.partner').browse(cr, uid, res_id, context=context)
followup_table = ''
if partner.unreconciled_aml_ids:
company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id
current_date = fields.date.context_today(cr, uid, context)
rml_parse = account_followup_print.report_rappel(cr, uid, "followup_rml_parser")
final_res = rml_parse._lines_get_with_partner(partner, company.id)
for currency_dict in final_res:
currency = currency_dict.get('line', [{'currency_id': company.currency_id}])[0]['currency_id']
followup_table += '''
<table border="2" width=100%%>
<tr>
<td>Invoice date</td>
<td>Reference</td>
<td>Due date</td>
<td>Amount (%s)</td>
<td>Lit.</td>
</tr>
''' % (currency.symbol)
total = 0
for aml in currency_dict['line']:
block = aml['blocked'] and 'X' or ' '
total += aml['balance']
strbegin = "<TD>"
strend = "</TD>"
date = aml['date_maturity'] or aml['date']
if date <= current_date and aml['balance'] > 0:
strbegin = "<TD><B>"
strend = "</B></TD>"
followup_table +="<TR>" + strbegin + str(aml['date']) + strend + strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin + str(aml['balance']) + strend + strbegin + block + strend + "</TR>"
total = rml_parse.formatLang(total, dp='Account', currency_obj=currency)
followup_table += '''<tr> </tr>
</table>
<center>Amount due: %s </center>''' % (total)
return followup_table
def render_template(self, cr, uid, template, model, res_id, context=None):
if model == 'res.partner' and context.get('followup'):
context['followup_table'] = self._get_followup_table_html(cr, uid, res_id, context=context)
# Adds current_date to the context. That way it can be used to put
# the account move lines in bold that are overdue in the email
context['current_date'] = fields.date.context_today(cr, uid, context)
return super(email_template, self).render_template(cr, uid, template, model, res_id, context=context)
class res_partner(osv.osv):
@ -209,32 +257,36 @@ class res_partner(osv.osv):
}
def do_partner_mail(self, cr, uid, partner_ids, context=None):
if context is None:
context = {}
ctx = context.copy()
ctx['followup'] = True
#partner_ids are res.partner ids
# If not defined by latest follow-up level, it will be the default template if it can find it
mtp = self.pool.get('email.template')
unknown_mails = 0
for partner in self.browse(cr, uid, partner_ids, context=context):
for partner in self.browse(cr, uid, partner_ids, context=ctx):
if partner.email and partner.email.strip():
level = partner.latest_followup_level_id_without_lit
if level and level.send_email and level.email_template_id and level.email_template_id.id:
mtp.send_mail(cr, uid, level.email_template_id.id, partner.id, context=context)
mtp.send_mail(cr, uid, level.email_template_id.id, partner.id, context=ctx)
else:
mail_template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid,
'account_followup', 'email_template_account_followup_default')
mtp.send_mail(cr, uid, mail_template_id[1], partner.id, context=context)
mtp.send_mail(cr, uid, mail_template_id[1], partner.id, context=ctx)
else:
unknown_mails = unknown_mails + 1
action_text = _("Email not sent because of email address of partner not filled in")
if partner.payment_next_action_date:
payment_action_date = min(fields.date.context_today(cr, uid, context), partner.payment_next_action_date)
payment_action_date = min(fields.date.context_today(cr, uid, ctx), partner.payment_next_action_date)
else:
payment_action_date = fields.date.context_today(cr, uid, context)
payment_action_date = fields.date.context_today(cr, uid, ctx)
if partner.payment_next_action:
payment_next_action = partner.payment_next_action + " + " + action_text
payment_next_action = partner.payment_next_action + " \n " + action_text
else:
payment_next_action = action_text
self.write(cr, uid, [partner.id], {'payment_next_action_date': payment_action_date,
'payment_next_action': payment_next_action}, context=context)
'payment_next_action': payment_next_action}, context=ctx)
return unknown_mails
def action_done(self, cr, uid, ids, context=None):
@ -256,21 +308,122 @@ class res_partner(osv.osv):
}
def _get_amounts_and_date(self, cr, uid, ids, name, arg, context=None):
'''
Function that computes values for the followup functional fields. Note that 'payment_amount_due'
is similar to 'credit' field on res.partner except it filters on user's company.
'''
res = {}
company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id
current_date = fields.date.context_today(cr, uid, context)
for partner in self.browse(cr, uid, ids, context=context):
worst_due_date = False
amount_due = amount_overdue = 0.0
for aml in partner.unreconciled_aml_ids:
if (aml.company_id == company):
date_maturity = aml.date_maturity or aml.date
if not worst_due_date or date_maturity < worst_due_date:
worst_due_date = date_maturity
amount_due += aml.result
if (date_maturity <= current_date):
amount_overdue += aml.result
res[partner.id] = {'payment_amount_due': amount_due,
'payment_amount_overdue': amount_overdue,
'payment_earliest_due_date': worst_due_date}
return res
def _get_followup_overdue_query(self, cr, uid, args, overdue_only=False, context=None):
'''
This function is used to build the query and arguments to use when making a search on functional fields
* payment_amount_due
* payment_amount_overdue
Basically, the query is exactly the same except that for overdue there is an extra clause in the WHERE.
:param args: arguments given to the search in the usual domain notation (list of tuples)
:param overdue_only: option to add the extra argument to filter on overdue accounting entries or not
:returns: a tuple with
* the query to execute as first element
* the arguments for the execution of this query
:rtype: (string, [])
'''
company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
having_where_clause = ' AND '.join(map(lambda x: '(SUM(bal2) %s %%s)' % (x[1]), args))
having_values = [x[2] for x in args]
query = self.pool.get('account.move.line')._query_get(cr, uid, context=context)
overdue_only_str = overdue_only and 'AND date_maturity <= NOW()' or ''
return ('''SELECT pid AS partner_id, SUM(bal2) FROM
(SELECT CASE WHEN bal IS NOT NULL THEN bal
ELSE 0.0 END AS bal2, p.id as pid FROM
(SELECT (debit-credit) AS bal, partner_id
FROM account_move_line l
WHERE account_id IN
(SELECT id FROM account_account
WHERE type=\'receivable\' AND active)
''' + overdue_only_str + '''
AND reconcile_id IS NULL
AND company_id = %s
AND ''' + query + ''') AS l
RIGHT JOIN res_partner p
ON p.id = partner_id ) AS pl
GROUP BY pid HAVING ''' + having_where_clause, [company_id] + having_values)
def _payment_overdue_search(self, cr, uid, obj, name, args, context=None):
if not args:
return []
query, query_args = self._get_followup_overdue_query(cr, uid, args, overdue_only=True, context=context)
cr.execute(query, query_args)
res = cr.fetchall()
if not res:
return [('id','=','0')]
return [('id','in', [x[0] for x in res])]
def _payment_earliest_date_search(self, cr, uid, obj, name, args, context=None):
if not args:
return []
company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
having_where_clause = ' AND '.join(map(lambda x: '(MIN(l.date_maturity) %s %%s)' % (x[1]), args))
having_values = [x[2] for x in args]
query = self.pool.get('account.move.line')._query_get(cr, uid, context=context)
cr.execute('SELECT partner_id FROM account_move_line l '\
'WHERE account_id IN '\
'(SELECT id FROM account_account '\
'WHERE type=\'receivable\' AND active) '\
'AND l.company_id = %s '
'AND reconcile_id IS NULL '\
'AND '+query+' '\
'AND partner_id IS NOT NULL '\
'GROUP BY partner_id HAVING '+ having_where_clause,
[company_id] + having_values)
res = cr.fetchall()
if not res:
return [('id','=','0')]
return [('id','in', [x[0] for x in res])]
def _payment_due_search(self, cr, uid, obj, name, args, context=None):
if not args:
return []
query, query_args = self._get_followup_overdue_query(cr, uid, args, overdue_only=False, context=context)
cr.execute(query, query_args)
res = cr.fetchall()
if not res:
return [('id','=','0')]
return [('id','in', [x[0] for x in res])]
_inherit = "res.partner"
_columns = {
'payment_responsible_id':fields.many2one('res.users', ondelete='set null', string='Follow-up Responsible',
help="Responsible for making sure the action happens."),
help="Optionally you can assign a user to this field, which will make him responsible for the action."),
'payment_note':fields.text('Customer Payment Promise', help="Payment Note"),
'payment_next_action':fields.text('Next Action',
help="This is the next action to be taken by the user. It will automatically be set when the action fields are empty and the partner gets a follow-up level that requires a manual action. "),
'payment_next_action':fields.text('Next Action',
help="This is the next action to be taken. It will automatically be set when the partner gets a follow-up level that requires a manual action. "),
'payment_next_action_date':fields.date('Next Action Date',
help="This is when further follow-up is needed. The date will have been set to the current date if the action fields are empty and the partner gets a follow-up level that requires a manual action. "),
help="This is when the manual follow-up is needed. " \
"The date will be set to the current date when the partner gets a follow-up level that requires a manual action. Can be practical to set manually e.g. to see if he keeps his promises."),
'unreconciled_aml_ids':fields.one2many('account.move.line', 'partner_id', domain=['&', ('reconcile_id', '=', False), '&',
('account_id.active','=', True), '&', ('account_id.type', '=', 'receivable'), ('state', '!=', 'draft')]),
'latest_followup_date':fields.function(_get_latest, method=True, type='date', string="Latest Follow-up Date",
help="Latest date that the follow-up level of the partner was changed",
store=False,
multi="latest"),
store=False, multi="latest"),
'latest_followup_level_id':fields.function(_get_latest, method=True,
type='many2one', relation='account_followup.followup.line', string="Latest Follow-up Level",
help="The maximum follow-up level",
@ -281,7 +434,19 @@ class res_partner(osv.osv):
help="The maximum follow-up level without taking into account the account move lines with litigation",
store=False,
multi="latest"),
'payment_amount_due':fields.related('credit', type='float', string="Total amount due", readonly=True),
'payment_amount_due':fields.function(_get_amounts_and_date,
type='float', string="Amount Due",
store = False, multi="followup",
fnct_search=_payment_due_search),
'payment_amount_overdue':fields.function(_get_amounts_and_date,
type='float', string="Amount Overdue",
store = False, multi="followup",
fnct_search = _payment_overdue_search),
'payment_earliest_due_date':fields.function(_get_amounts_and_date,
type='date',
string = "Worst Due Date",
multi="followup",
fnct_search=_payment_earliest_date_search),
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -16,7 +16,9 @@
<field name="user_id" invisible="1"/>
<field name="parent_id" invisible="1"/>
<field name="payment_responsible_id"/>
<field name="credit"/>
<field name="payment_earliest_due_date"/>
<field name="payment_amount_overdue"/>
<field name="payment_amount_due" />
</tree>
</field>
</record>
@ -28,10 +30,9 @@
<field name="arch" type="xml">
<search string="Search Partner" position="inside">
<group string="Follow-up">
<filter string="Partners with Credits" domain="[('credit', '>', 0.0)]" name="credits"/>
<filter string="Partners with Overdue Credits" domain="[('payment_amount_overdue', '>', 0.0)]" name="credits"/>
<separator/>
<filter string="Follow-ups To Do" domain="[('payment_next_action_date', '&lt;=', time.strftime('%%Y-%%m-%%d')), ('credit', '>', 0.0)]" name="todo"/>
<filter string="Future Follow-ups" domain="[('payment_next_action_date', '&gt;', time.strftime('%%Y-%%m-%%d')), ('credit', '>', 0.0)]"/>
<filter string="Follow-ups To Do" domain="[('payment_next_action_date', '&lt;=', time.strftime('%%Y-%%m-%%d')), ('payment_amount_overdue', '>', 0.0)]" name="todo"/>
<separator/>
<filter string="No Responsible" domain="[('payment_responsible_id', '=', False)]"/>
<filter string="My Follow-ups" domain="[('payment_responsible_id','=', uid)]"/>
@ -43,29 +44,7 @@
</field>
</record>
<record id="customer_followup_search_view2" model="ir.ui.view">
<field name="name">Search</field>
<field name="model">res.partner</field>
<field name="arch" type="xml">
<search string="Search view">
<field name="name"/>
<field name="payment_next_action"/>
<!--<filter string="Actions to be taken with overdue amount" domain="['&amp;', ('payment_amount_outstanding', '>', 0.0), ('payment_next_action_date', '&lt;=', time.strftime('%%Y-%%m-%%d'))]"/>
<separator/>-->
<filter string="Overdue amount" domain="[('credit', '>', 0.0)]"/>
<separator/>
<filter string="Follow-ups to do" domain="[('payment_next_action_date', '&lt;=', time.strftime('%%Y-%%m-%%d'))]"/>
<separator/>
<!--filter string="Future follow-ups" domain="['&', ('payment_next_action', '!=', ''), ('payment_next_action_date', '>', time.strftime('%%Y-%%m-%%d'))]"/>-->
<separator/>
<filter string="Without responsible" domain="[('payment_responsible_id', '=', False)]"/>
<filter string="I am responsible" domain="[('payment_responsible_id','=', uid)]"/>
<group expand="1" string="Group by">
<filter string="Responsible" context="{'group_by':'payment_responsible_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_customer_followup" model="ir.actions.act_window">
<field name="name">Manual Follow-Ups</field>
@ -73,7 +52,7 @@
<field name="res_model">res.partner</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{} </field>
<field name="domain">[('payment_amount_due', '>', 0.0)]</field>
<field name="context">{'Followupfirst':True, 'search_default_todo': True} </field>
<field name="search_view_id" ref="customer_followup_search_view"/>
</record>
@ -88,9 +67,9 @@
<page string="Payment Follow-up" groups="account.group_account_invoice" name="followup_tab">
<div class="oe_right oe_button_box" name="followup_button">
<button name="do_button_print" type="object" string="Print Overdue Payments" groups="account.group_account_user"
help="Print overdue payments report independent of follow-up line" attrs="{'invisible':[('credit', '&lt;=', 0.0)]}" />
help="Print overdue payments report independent of follow-up line" attrs="{'invisible':[('payment_amount_due', '&lt;=', 0.0)]}" />
<button name="do_partner_mail" type="object" string="Send Overdue Email" groups="account.group_account_user"
help="If not specified by the latest follow-up level, it will send from the default follow-up of overdue invoices template" attrs="{'invisible':[('credit', '&lt;=', 0.0)]}"/>
help="If not specified by the latest follow-up level, it will send from the default email template" attrs="{'invisible':[('payment_amount_due', '&lt;=', 0.0)]}"/>
</div>
<p attrs="{'invisible':[('latest_followup_date','=', False)]}">
The <field name="latest_followup_date" class = "oe_inline"/>, the latest payment follow-up
@ -105,22 +84,22 @@
help="Click to mark the action as done." class="oe_link"
attrs="{'invisible':[('payment_next_action_date','=', False)]}"
groups="base.group_partner_manager"/>
<field name="payment_next_action" placeholder="e.g. Give a phonecall, Check if it's paid, ..."/>
<field name="payment_next_action" placeholder="Action to be taken e.g. Give a phonecall, Check if it's paid, ..."/>
</div>
</group>
<label for="payment_note" class="oe_edit_only"/>
<field name="payment_note" placeholder="e.g. 50%% before 15th of May, balance before 1st of July."/>
<field name="payment_note" placeholder="He said the problem was temporary and promised to pay 50%% before 15th of May, balance before 1st of July."/>
<p class="oe_grey">
Below is the history of the transactions of this
customer. You can set an invoice in litigation in
order to not include it in the next payment
follow-ups.
customer. You can check "No Follow-up" in
order to exclude it from the next follow-up actions.
</p>
<field name="unreconciled_aml_ids">
<tree string="Account Move line" editable="bottom" create="false" delete="false" colors="red:(not date_maturity or date_maturity&lt;=current_date) and result&gt;0">
<field name="date" readonly="True"/>
<field name="company_id" readonly="True" groups="base.group_multi_company" />
<field name="move_id" readonly="True"/>
<field name="blocked" string="Litigation"/>
<field name="blocked"/>
<field name="date_maturity" readonly="True"/>
<field name="reconcile_partial_id" readonly="True"/>
<field name="result" readonly="True"/>

View File

@ -5,69 +5,36 @@
<data noupdate="1">
<!--Mail template level 0-->
<record id="email_template_account_followup_level0" model="email.template">
<field name="name">Follow-up of overdue invoices level 0</field>
<field name="email_from">${user.email or ''}</field>
<field name="subject">${user.company_id.name} Payment Follow-up</field>
<field name="email_to">${object.email}</field>
<field name="lang">${object.lang}</field>
<field name="name">First polite payment follow-up reminder email</field>
<field name="email_from">${user.email or '' | h}</field>
<field name="subject">${user.company_id.name | h} Payment Reminder</field>
<field name="email_to">${object.email | h}</field>
<field name="lang">${object.lang | h}</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
<p>Dear ${object.name},</p>
<p>Dear ${object.name | h},</p>
<p>
Exception made if there was a mistake of ours, it seems that the following amount stays unpaid. Please, take
appropriate measures in order to carry out this payment in the next 8 days.
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to
contact our accounting department at (+32).10.68.94.39.
contact our accounting department.
</p>
<br/>
Best Regards,
<br/>
<br/>
${user.name}
${user.name | h}
<br/>
<br/>
<%
from openerp.addons.account_followup.report import account_followup_print
rml_parse = account_followup_print.report_rappel(object._cr, user.id, "followup_rml_parser")
final_res = rml_parse._lines_get_with_partner(object, user.company_id.id)
followup_table = ''
for currency_dict in final_res:
currency_symbol = currency_dict.get('line', [{'currency_id': user.company_id.currency_id}])[0]['currency_id'].symbol
followup_table += '''
<table border="2" width=100%%>
<tr>
<td>Invoice date</td>
<td>Reference</td>
<td>Due date</td>
<td>Amount (%s)</td>
<td>Lit.</td>
</tr>
''' % (currency_symbol)
total = 0
for aml in currency_dict['line']:
block = aml['blocked'] and 'X' or ' '
total += aml['balance']
strbegin = "<TD> "
strend = "</TD> "
date = aml['date_maturity'] or aml['date']
if date <= ctx['current_date'] and aml['balance'] > 0:
strbegin = "<TD><B>"
strend = "</B></TD>"
followup_table +="<TR>" + strbegin + str(aml['date']) + strend + strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin + str(aml['balance']) + strend + strbegin + block + strend + "</TR>"
total = rml_parse.formatLang(total, dp='Account', currency_obj=object.company_id.currency_id)
followup_table += '''<tr> </tr>
</table>
<center>Amount due: %s </center>''' % (total)
%>
${followup_table}
${ctx.get('followup_table','')}
<br/>
@ -79,72 +46,37 @@ ${followup_table}
<!--Mail template level 1 -->
<record id="email_template_account_followup_level1" model="email.template">
<field name="name">Follow-up of overdue invoices level 1</field>
<field name="email_from">${user.email or ''}</field>
<field name="subject">${user.company_id.name} Payment Follow-up</field>
<field name="email_to">${object.email}</field>
<field name="lang">${object.lang}</field>
<field name="name">A bit urging second payment follow-up reminder email</field>
<field name="email_from">${user.email or '' | h}</field>
<field name="subject">${user.company_id.name | h} Payment Reminder</field>
<field name="email_to">${object.email | h}</field>
<field name="lang">${object.lang | h}</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
<p>Dear ${object.name},</p>
<p>Dear ${object.name | h},</p>
<p>
We are disappointed to see that despite sending a reminder, that your account is now seriously overdue.
It is essential that immediate payment is made, otherwise we will have to consider placing a stop on your account
which means that we will no longer be able to supply your company with (goods/services).
Please, take appropriate measures in order to carry out this payment in the next 8 days.
If there is a problem with paying invoice that we are not aware of, do not hesitate to contact our accounting
department at (+32).10.68.94.39. so that we can resolve the matter quickly.
department. so that we can resolve the matter quickly.
Details of due payments is printed below.
</p>
<br/>
Best Regards,
<br/>
${user.name}
<br/>
${user.name | h}
<br/>
<br/>
<%
from openerp.addons.account_followup.report import account_followup_print
rml_parse = account_followup_print.report_rappel(object._cr, user.id, "followup_rml_parser")
final_res = rml_parse._lines_get_with_partner(object, user.company_id.id)
followup_table = ''
for currency_dict in final_res:
currency_symbol = currency_dict.get('line', [{'currency_id': user.company_id.currency_id}])[0]['currency_id'].symbol
followup_table += '''
<table border="2" width=100%%>
<tr>
<td>Invoice date</td>
<td>Reference</td>
<td>Due date</td>
<td>Amount (%s)</td>
<td>Lit.</td>
</tr>
''' % (currency_symbol)
total = 0
for aml in currency_dict['line']:
block = aml['blocked'] and 'X' or ' '
total += aml['balance']
strbegin = "<TD> "
strend = "</TD> "
date = aml['date_maturity'] or aml['date']
if date <= ctx['current_date'] and aml['balance'] > 0:
strbegin = "<TD><B>"
strend = "</B></TD>"
followup_table +="<TR>" + strbegin + str(aml['date']) + strend + strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin + str(aml['balance']) + strend + strbegin + block + strend + "</TR>"
total = rml_parse.formatLang(total, dp='Account', currency_obj=object.company_id.currency_id)
followup_table += '''<tr> </tr>
</table>
<center>Amount due: %s </center>''' % (total)
%>
${followup_table}
${ctx.get('followup_table','')}
<br/>
@ -153,71 +85,34 @@ ${followup_table}
</record>
<!--Email template -->
<record id="email_template_account_followup_level2" model="email.template">
<field name="name">Follow-up of overdue invoices level 2</field>
<field name="email_from">${user.email or ''}</field>
<field name="subject">${user.company_id.name} Payment Follow-up</field>
<field name="email_to">${object.email}</field>
<field name="lang">${object.lang}</field>
<field name="name">Urging payment follow-up reminder email</field>
<field name="email_from">${user.email or '' | h}</field>
<field name="subject">${user.company_id.name | h} Payment Reminder</field>
<field name="email_to">${object.email | h}</field>
<field name="lang">${object.lang | h}</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
<p>Dear ${object.name},</p>
<p>Dear ${object.name | h},</p>
<p>
Despite several reminders, your account is still not settled.
Unless full payment is made in next 8 days, legal action for the recovery of the debt will be taken without
further notice.
I trust that this action will prove unnecessary and details of due payments is printed below.
In case of any queries concerning this matter, do not hesitate to contact our accounting department at (+32).10.68.94.39.
In case of any queries concerning this matter, do not hesitate to contact our accounting department.
</p>
<br/>
Best Regards,
<br/>
${user.name}
<br/>
${user.name | h}
<br/>
<br/>
<%
from openerp.addons.account_followup.report import account_followup_print
rml_parse = account_followup_print.report_rappel(object._cr, user.id, "followup_rml_parser")
final_res = rml_parse._lines_get_with_partner(object, user.company_id.id)
followup_table = ''
for currency_dict in final_res:
currency_symbol = currency_dict.get('line', [{'currency_id': user.company_id.currency_id}])[0]['currency_id'].symbol
followup_table += '''
<table border="2" width=100%%>
<tr>
<td>Invoice date</td>
<td>Reference</td>
<td>Due date</td>
<td>Amount (%s)</td>
<td>Lit.</td>
</tr>
''' % (currency_symbol)
total = 0
for aml in currency_dict['line']:
block = aml['blocked'] and 'X' or ' '
total += aml['balance']
strbegin = "<TD> "
strend = "</TD> "
date = aml['date_maturity'] or aml['date']
if date <= ctx['current_date'] and aml['balance'] > 0:
strbegin = "<TD><B>"
strend = "</B></TD>"
followup_table +="<TR>" + strbegin + str(aml['date']) + strend + strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin + str(aml['balance']) + strend + strbegin + block + strend + "</TR>"
total = rml_parse.formatLang(total, dp='Account', currency_obj=object.company_id.currency_id)
followup_table += '''<tr> </tr>
</table>
<center>Amount due: %s </center>''' % (total)
%>
${followup_table}
${ctx.get('followup_table','')}
<br/>
@ -228,81 +123,37 @@ ${followup_table}
<!-- Default follow up message -->
<record id="email_template_account_followup_default" model="email.template">
<field name="name">Default follow-up of overdue invoices</field>
<field name="email_from">${user.email or ''}</field>
<field name="subject">${user.company_id.name} Payment Follow-up</field>
<field name="email_to">${object.email}</field>
<field name="lang">${object.lang}</field>
<field name="name">Default payment follow-up reminder e-mail</field>
<field name="email_from">${user.email or '' | h}</field>
<field name="subject">${user.company_id.name | h} Payment Reminder</field>
<field name="email_to">${object.email | h}</field>
<field name="lang">${object.lang | h}</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
<p>Dear ${object.name},</p>
<p>Dear ${object.name | h},</p>
<p>
Exception made if there was a mistake of ours, it seems that the following amount stays unpaid. Please, take
appropriate measures in order to carry out this payment in the next 8 days.
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to
contact our accounting department at (+32).10.68.94.39.
contact our accounting department.
</p>
<br/>
Best Regards,
</br>
</br>
<br/>
${user.name}
<br/>
${user.name | h}
<br/>
<br/>
<%
from openerp.addons.account_followup.report import account_followup_print
rml_parse = account_followup_print.report_rappel(object._cr, user.id, "followup_rml_parser")
final_res = rml_parse._lines_get_with_partner(object, user.company_id.id)
followup_table = ''
for currency_dict in final_res:
currency_symbol = currency_dict.get('line', [{'currency_id': user.company_id.currency_id}])[0]['currency_id'].symbol
followup_table += '''
<table border="2" width=100%%>
<tr>
<td>Invoice date</td>
<td>Reference</td>
<td>Due date</td>
<td>Amount (%s)</td>
<td>Lit.</td>
</tr>
''' % (currency_symbol)
total = 0
for aml in currency_dict['line']:
block = aml['blocked'] and 'X' or ' '
total += aml['balance']
strbegin = "<TD> "
strend = "</TD> "
date = aml['date_maturity'] or aml['date']
if date <= ctx['current_date'] and aml['balance'] > 0:
strbegin = "<TD><B>"
strend = "</B></TD>"
followup_table +="<TR>" + strbegin + str(aml['date']) + strend + strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin + str(aml['balance']) + strend + strbegin + block + strend + "</TR>"
total = rml_parse.formatLang(total, dp='Account', currency_obj=object.company_id.currency_id)
followup_table += '''<tr> </tr>
</table>
<center>Amount due: %s </center>''' % (total)
%>
${followup_table}
<br/>
${ctx.get('followup_table','')}
<br/>
</div>
]]></field>
</record>
<record id="demo_followup1" model="account_followup.followup">
<field name="company_id" ref="base.main_company"/>
@ -319,7 +170,7 @@ Dear %(partner_name)s,
Exception made if there was a mistake of ours, it seems that the following amount stays unpaid. Please, take appropriate measures in order to carry out this payment in the next 8 days.
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to contact our accounting department at (+32).10.68.94.39.
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to contact our accounting department.
Best Regards,
</field>
@ -342,15 +193,13 @@ We are disappointed to see that despite sending a reminder, that your account is
It is essential that immediate payment is made, otherwise we will have to consider placing a stop on your account which means that we will no longer be able to supply your company with (goods/services).
Please, take appropriate measures in order to carry out this payment in the next 8 days.
If there is a problem with paying invoice that we are not aware of, do not hesitate to contact our accounting department at (+32).10.68.94.39. so that we can resolve the matter quickly.
If there is a problem with paying invoice that we are not aware of, do not hesitate to contact our accounting department, so that we can resolve the matter quickly.
Details of due payments is printed below.
Best Regards,
</field>
</record>
<record id="demo_followup_line3" model="account_followup.followup.line">
<field name="name">Call the customer on the phone</field>
<field name="sequence">3</field>
@ -369,7 +218,7 @@ Unless full payment is made in next 8 days, then legal action for the recovery o
I trust that this action will prove unnecessary and details of due payments is printed below.
In case of any queries concerning this matter, do not hesitate to contact our accounting department at (+32).10.68.94.39.
In case of any queries concerning this matter, do not hesitate to contact our accounting department.
Best Regards,
</field>

View File

@ -17,7 +17,7 @@ Unless full payment is made in next 8 days, then legal action for the recovery o
I trust that this action will prove unnecessary and details of due payments is printed below.
In case of any queries concerning this matter, do not hesitate to contact our accounting department at (+32).10.68.94.39.
In case of any queries concerning this matter, do not hesitate to contact our accounting department.
Best Regards,
</field>
@ -39,7 +39,7 @@ Unless full payment is made in next 8 days, then legal action for the recovery o
I trust that this action will prove unnecessary and details of due payments is printed below.
In case of any queries concerning this matter, do not hesitate to contact our accounting department at (+32).10.68.94.39.
In case of any queries concerning this matter, do not hesitate to contact our accounting department.
Best Regards,
</field>

View File

@ -69,7 +69,6 @@
<record id="view_account_followup_followup_form" model="ir.ui.view">
<field name="name">account_followup.followup.form</field>
<field name="model">account_followup.followup</field>
<!-- <field name="group_ids" groups="base.group_multi_company"/>-->
<field name="arch" type="xml">
<form string="Follow-up" version="7.0">
<h1><field name="company_id" widget="selection" class="oe_inline"/></h1>
@ -77,9 +76,11 @@
To remind customers of paying their invoices, you can
define different actions depending on how severely
overdue the customer is. These actions are bundled
into folow-up levels that are triggered when the due
date of the most overdue invoice has passed a certain
amount of days.
into follow-up levels that are triggered when the due
date of an invoice has passed a certain
number of days. If there are other overdue invoices for the
same customer, the actions of the most
overdue invoice will be executed.
</p>
<field name="followup_line"/>
</form>
@ -91,7 +92,7 @@
<field name="model">account_followup.followup</field>
<field name="arch" type="xml">
<tree string="Follow-up">
<field name="company_id" /> <!--groups="base.group_multi_company"-->
<field name="company_id" />
</tree>
</field>
</record>
@ -180,18 +181,5 @@
</field>
</field>
</record>
<!-- <record id="view_move_line_tree" model="ir.ui.view">
<field name="name">account.move.line.tree.followup</field>
<field name="model">account.move.line</field>
<field name="inherit_id" ref="account.view_move_line_tree"/>
<field name="arch" type="xml">
<field name="state" position="before">
<field name="followup_date"/>
<field name="followup_line_id"/>
</field>
</field>
</record> -->
</data>
</openerp>

File diff suppressed because it is too large Load Diff

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-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-04 17:33+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"PO-Revision-Date: 2012-12-09 18:16+0000\n"
"Last-Translator: Harjan Talen <harjantalen@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-05 05:19+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account_followup
#: view:account_followup.followup.line:0
@ -287,7 +287,7 @@ msgstr "Ik ben verantwoordelijk"
#. module: account_followup
#: sql_constraint:account_followup.followup:0
msgid "Only one follow-up per company is allowed"
msgstr ""
msgstr "Per bedrijf is één betalingsherinnering mogelijk"
#. module: account_followup
#: model:account_followup.followup.line,description:account_followup.demo_followup_line4
@ -310,6 +310,21 @@ msgid ""
"Best Regards,\n"
" "
msgstr ""
"\n"
"Geachte %(partner_name)s,\n"
"\n"
"Ondanks herhaaldelijk verzoek is onze vordering nog niet voldaan.\n"
"\n"
"Wanneer de volledige betaling niet binnen 8 dagen wordt voldaan zijn wij "
"genoodzaakt verdere stappen te ondernemen zonder vermelding vooraf.\n"
"\n"
"Wij gaan er vanuit dat dit echter niet noodzakelijk zal zijn. Onderstaand "
"een overzicht van de openstaande posten.\n"
"\n"
"Wanneer u vragen op opmerkingen hierover heeft dan horen wij dat graag.\n"
"\n"
"Met vriendelijke groet,\n"
" "
#. module: account_followup
#: help:account_followup.followup.line,send_letter:0
@ -496,17 +511,17 @@ msgstr "Afgedrukt bericht"
#. module: account_followup
#: field:res.partner,latest_followup_level_id_without_lit:0
msgid "Latest Follow-up Level without litigation"
msgstr ""
msgstr "Laatste herinnering voor het incasso-traject."
#. module: account_followup
#: view:res.partner:0
msgid "Partners with Credits"
msgstr ""
msgstr "Relaties met openstaande facturen"
#. module: account_followup
#: help:account_followup.followup.line,send_email:0
msgid "When processing, it will send an email"
msgstr ""
msgstr "Bij verwerking wordt een e-mail verzonden"
#. module: account_followup
#: view:account_followup.stat.by.partner:0
@ -517,6 +532,7 @@ msgstr "Relatie voor betalingsherinnering"
#: view:res.partner:0
msgid "Print overdue payments report independent of follow-up line"
msgstr ""
"Druk overzicht openstaande posten af ongeacht status betalingsherinneringen."
#. module: account_followup
#: field:account_followup.followup.line,followup_id:0
@ -614,7 +630,7 @@ msgstr "Geblokkeerd"
#. module: account_followup
#: sql_constraint:account_followup.followup.line:0
msgid "Days of the follow-up levels must be different"
msgstr ""
msgstr "De dagen van de herinnerings-niveau's moeten van elkaar verschillen"
#. module: account_followup
#: view:res.partner:0
@ -703,7 +719,7 @@ msgstr "onbekend"
#: code:addons/account_followup/account_followup.py:245
#, python-format
msgid "Printed overdue payments report"
msgstr ""
msgstr "Druk het rapport achterstallige betalingen af"
#. module: account_followup
#: model:ir.model,name:account_followup.model_email_template

View File

@ -7,20 +7,20 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2010-12-16 00:03+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"PO-Revision-Date: 2012-12-07 10:43+0000\n"
"Last-Translator: Andrei Talpa (multibase.pt) <andrei.talpa@multibase.pt>\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-12-04 05:19+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-08 04:58+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account_followup
#: view:account_followup.followup.line:0
#: field:account_followup.followup.line,manual_action:0
msgid "Manual Action"
msgstr ""
msgstr "Ação manual"
#. module: account_followup
#: help:res.partner,latest_followup_level_id:0
@ -30,7 +30,7 @@ msgstr ""
#. module: account_followup
#: view:res.partner:0
msgid "Group by"
msgstr ""
msgstr "Agrupar por"
#. module: account_followup
#: view:account_followup.stat:0
@ -398,7 +398,7 @@ msgstr ""
#: code:addons/account_followup/wizard/account_followup_print.py:155
#, python-format
msgid "Nobody"
msgstr ""
msgstr "Ninguém"
#. module: account_followup
#: field:account.move.line,followup_line_id:0

View File

@ -7,61 +7,61 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-11-30 12:07+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"PO-Revision-Date: 2012-12-09 04:57+0000\n"
"Last-Translator: sum1201 <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:20+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account_followup
#: view:account_followup.followup.line:0
#: field:account_followup.followup.line,manual_action:0
msgid "Manual Action"
msgstr ""
msgstr "手动操作"
#. module: account_followup
#: help:res.partner,latest_followup_level_id:0
msgid "The maximum follow-up level"
msgstr ""
msgstr "最大跟踪级别"
#. module: account_followup
#: view:res.partner:0
msgid "Group by"
msgstr ""
msgstr "分组"
#. module: account_followup
#: view:account_followup.stat:0
#: view:res.partner:0
msgid "Group By..."
msgstr "分组..."
msgstr "基于...分组"
#. module: account_followup
#: field:account_followup.print,followup_id:0
msgid "Follow-Up"
msgstr "催款"
msgstr "后续跟进"
#. module: account_followup
#: view:account_followup.followup.line:0
msgid "%(date)s"
msgstr ""
msgstr "%(日期)"
#. module: account_followup
#: field:res.partner,payment_next_action_date:0
msgid "Next Action Date"
msgstr ""
msgstr "下次活动日期"
#. module: account_followup
#: field:account_followup.sending.results,needprinting:0
msgid "Needs Printing"
msgstr ""
msgstr "需要印刷"
#. module: account_followup
#: view:res.partner:0
msgid "⇾ Mark as Done"
msgstr ""
msgstr "标记为完成"
#. module: account_followup
#: field:account_followup.followup.line,manual_action_note:0
@ -192,7 +192,7 @@ msgstr ""
#. module: account_followup
#: view:account_followup.followup.line:0
msgid "days overdue, do the following actions:"
msgstr ""
msgstr "天过期,做下列动作:"
#. module: account_followup
#: view:account_followup.followup.line:0
@ -207,12 +207,12 @@ msgstr "电子邮件正文"
#. module: account_followup
#: help:res.partner,payment_responsible_id:0
msgid "Responsible for making sure the action happens."
msgstr ""
msgstr "负责确保动作发生。"
#. module: account_followup
#: view:res.partner:0
msgid "Overdue amount"
msgstr ""
msgstr "逾期金额"
#. module: account_followup
#: model:ir.actions.act_window,name:account_followup.action_account_followup_print
@ -242,12 +242,12 @@ msgstr "借方合计"
#. module: account_followup
#: field:res.partner,payment_next_action:0
msgid "Next Action"
msgstr ""
msgstr "下个行动日期"
#. module: account_followup
#: view:account_followup.followup.line:0
msgid ": Partner Name"
msgstr ""
msgstr ":伙伴名称"
#. module: account_followup
#: view:account_followup.followup:0
@ -334,7 +334,7 @@ msgstr ""
#. module: account_followup
#: model:ir.actions.act_window,name:account_followup.action_customer_followup
msgid "Manual Follow-Ups"
msgstr ""
msgstr "手动跟进"
#. module: account_followup
#: view:account_followup.followup.line:0
@ -354,7 +354,7 @@ msgstr "催款统计"
#. module: account_followup
#: view:res.partner:0
msgid "Send Overdue Email"
msgstr ""
msgstr "过期邮件发送"
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_followup_followup_line
@ -370,7 +370,7 @@ msgstr "输入序列用于显示催款列表"
#: code:addons/account_followup/wizard/account_followup_print.py:166
#, python-format
msgid " will be sent"
msgstr ""
msgstr " 将被发送"
#. module: account_followup
#: view:account_followup.followup.line:0

View File

@ -25,6 +25,8 @@ import pooler
from report import report_sxw
class report_rappel(report_sxw.rml_parse):
_name = "account_followup.report.rappel"
def __init__(self, cr, uid, name, context=None):
super(report_rappel, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
@ -79,7 +81,6 @@ class report_rappel(report_sxw.rml_parse):
final_res.append({'line': line_cur[cur]['line']})
return final_res
def _get_text(self, stat_line, followup_id, context=None):
if context is None:
context = {}
@ -108,7 +109,6 @@ class report_rappel(report_sxw.rml_parse):
'company_name': stat_line.company_id.name,
'user_signature': pooler.get_pool(self.cr.dbname).get('res.users').browse(self.cr, self.uid, self.uid, context).signature or '',
}
return text
report_sxw.report_sxw('report.account_followup.followup.print',

View File

@ -108,7 +108,7 @@ class TestAccountFollowup(TransactionCase):
def test_03_filter_on_credit(self):
""" Check the partners can be filtered on having credits """
cr, uid = self.cr, self.uid
ids = self.partner.search(cr, uid, [('credit', '>=', 0.0)])
ids = self.partner.search(cr, uid, [('payment_amount_due', '>=', 0.0)])
self.assertIn(self.partner_id, ids)
def test_04_action_done(self):
@ -153,7 +153,6 @@ class TestAccountFollowup(TransactionCase):
}, context={"followup_id": self.followup_id})
self.wizard.do_process(cr, uid, [self.wizard_id], context={"followup_id": self.followup_id})
partner_ref = self.partner.browse(cr, uid, self.partner_id)
print partner_ref.credit, partner_ref.payment_next_action_date, partner_ref.payment_responsible_id
self.assertEqual(0, self.partner.browse(cr, uid, self.partner_id).credit, "Credit != 0")
self.assertEqual(0, self.partner.browse(cr, uid, self.partner_id).payment_amount_due, "Amount Due != 0")
self.assertFalse(self.partner.browse(cr, uid, self.partner_id).payment_next_action_date, "Next action date not cleared")

View File

@ -152,7 +152,7 @@ class account_followup_print(osv.osv_memory):
if partner.max_followup_id.manual_action:
partner_obj.do_partner_manual_action(cr, uid, [partner.partner_id.id], context=context)
nbmanuals = nbmanuals + 1
key = partner.partner_id.payment_responsible_id.name or _("Nobody")
key = partner.partner_id.payment_responsible_id.name or _("Anybody")
if not key in manuals.keys():
manuals[key]= 1
else:
@ -198,15 +198,12 @@ class account_followup_print(osv.osv_memory):
ids = self.pool.get('res.partner').search(cr, uid, ['&', ('id', 'not in', partner_list_ids), '|',
('payment_responsible_id', '!=', False),
('payment_next_action_date', '!=', False)], context=context)
partners = self.pool.get('res.partner').browse(cr, uid, ids, context=context)
newids = []
for part in partners:
credit = 0
for aml in part.unreconciled_aml_ids:
credit +=aml.result
if credit <= 0:
newids.append(part.id)
self.pool.get('res.partner').action_done(cr, uid, newids, context=context)
partners_to_clear = []
for part in self.pool.get('res.partner').browse(cr, uid, ids, context=context):
if not part.unreconciled_aml_ids:
partners_to_clear.append(part.id)
self.pool.get('res.partner').action_done(cr, uid, partners_to_clear, context=context)
return len(ids)
def do_process(self, cr, uid, ids, context=None):

View File

@ -13,7 +13,7 @@
</group>
<p class ="oe_grey">
This action will send follow-up emails, print the letters and
set the manual actions per customers.
set the manual actions per customer, according to the follow-up levels defined.
</p>
<footer>
<button name="do_process" string="Send emails and generate letters" type="object" class="oe_highlight"/>

View File

@ -7,14 +7,15 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-02-08 08:52+0000\n"
"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n"
"PO-Revision-Date: 2012-12-07 15:45+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\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-12-04 05:35+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account_payment
#: model:ir.actions.act_window,help:account_payment.action_payment_order_tree
@ -28,6 +29,15 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Klicken Sie zur Erstellung eines Zahlungsauftrags.\n"
" </p><p>\n"
" Ein Zahlungsauftrag ist eine Zahlungsaufforderung aus Ihrem "
"Unternehmen zur Zahlung \n"
" einer Lieferantenrechnung oder einer Rückerstattung durch "
"eine Kundengutschrift.\n"
" </p>\n"
" "
#. module: account_payment
#: field:payment.line,currency:0
@ -123,13 +133,16 @@ msgid ""
"You cannot cancel an invoice which has already been imported in a payment "
"order. Remove it from the following payment order : %s."
msgstr ""
"Sie können keine Rechnung stornieren, die Sie bereits in einen "
"Zahlungsauftrag übernommen haben. Entfernen Sie die Rechnung vom "
"Zahlungsauftrag: %s ."
#. module: account_payment
#: code:addons/account_payment/account_invoice.py:43
#: code:addons/account_payment/account_move_line.py:110
#, python-format
msgid "Error!"
msgstr ""
msgstr "Fehler !"
#. module: account_payment
#: report:payment.order:0
@ -194,6 +207,9 @@ msgid ""
" Once the bank is confirmed the status is set to 'Confirmed'.\n"
" Then the order is paid the status is 'Done'."
msgstr ""
"Wenn ein Zahlungsauftrag erstellt wird ist der Status 'Entwurf'.\n"
" Durch Bestätigung wechselt der Status in 'Bestätigt'.\n"
" Durch die tatsächliche Freigabe zu Zahlung wechselt der"
#. module: account_payment
#: view:payment.order:0
@ -219,7 +235,7 @@ msgstr "Strukturiert"
#. module: account_payment
#: view:account.bank.statement:0
msgid "Import Payment Lines"
msgstr ""
msgstr "Import von Zahlungspositionen"
#. module: account_payment
#: view:payment.line:0
@ -262,7 +278,7 @@ msgstr ""
#. module: account_payment
#: field:payment.order,date_created:0
msgid "Creation Date"
msgstr ""
msgstr "Datum Erstellung"
#. module: account_payment
#: help:payment.mode,journal:0
@ -369,7 +385,7 @@ msgstr "Beleg Zahlungsvorschlag"
#: code:addons/account_payment/account_move_line.py:110
#, python-format
msgid "There is no partner defined on the entry line."
msgstr ""
msgstr "Es gibt keinen Partner als Zahlungsempfänger für diese Position."
#. module: account_payment
#: help:payment.mode,name:0
@ -401,7 +417,7 @@ msgstr "Entwurf"
#: view:payment.order:0
#: field:payment.order,state:0
msgid "Status"
msgstr ""
msgstr "Status"
#. module: account_payment
#: help:payment.line,communication2:0
@ -449,7 +465,7 @@ msgstr "Suche"
#. module: account_payment
#: field:payment.order,user_id:0
msgid "Responsible"
msgstr ""
msgstr "Verantwortlicher"
#. module: account_payment
#: field:payment.line,date:0
@ -464,7 +480,7 @@ msgstr "Summe:"
#. module: account_payment
#: field:payment.order,date_done:0
msgid "Execution Date"
msgstr ""
msgstr "Datum Ausführung"
#. module: account_payment
#: view:account.payment.populate.statement:0
@ -582,7 +598,7 @@ msgstr "Verwendungszweck 2"
#. module: account_payment
#: field:payment.order,date_scheduled:0
msgid "Scheduled Date"
msgstr ""
msgstr "Geplantes Datum"
#. module: account_payment
#: view:account.payment.make.payment:0
@ -677,14 +693,14 @@ msgstr "Bezahlung"
#. module: account_payment
#: field:payment.order,date_prefered:0
msgid "Preferred Date"
msgstr ""
msgstr "bevorzugtes Datum"
#. module: account_payment
#: view:account.payment.make.payment:0
#: view:account.payment.populate.statement:0
#: view:payment.order.create:0
msgid "or"
msgstr ""
msgstr "oder"
#. module: account_payment
#: help:payment.mode,bank_id:0

View File

@ -26,7 +26,7 @@
'summary': 'Send Invoices and Track Payments',
'description': """
Invoicing & Payments by Accounting Voucher & Receipts
======================================================
=====================================================
The specific and easy-to-use Invoicing system in OpenERP allows you to keep track of your accounting, even when you are not an accountant. It provides an easy way to follow up on your suppliers and customers.
You could use this simplified accounting in case you work with an (external) account to keep your books, and you still want to keep track of payments.

View File

@ -7,15 +7,15 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:01+0000\n"
"PO-Revision-Date: 2012-05-10 17:49+0000\n"
"PO-Revision-Date: 2012-12-07 20:51+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\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-12-04 05:41+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: account_voucher
#: field:account.bank.statement.line,voucher_id:0
@ -64,7 +64,7 @@ msgstr "Berechnet als Differenz zwischen Belege und Belegzeilen"
#. module: account_voucher
#: view:account.voucher:0
msgid "(Update)"
msgstr ""
msgstr "(Aktualisieren)"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:1093
@ -99,7 +99,7 @@ msgstr "März"
#. module: account_voucher
#: field:account.voucher,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "Ungelesene Nachrichten"
#. module: account_voucher
#: view:account.voucher:0
@ -109,7 +109,7 @@ msgstr "Bezahle Rechnung"
#. module: account_voucher
#: view:account.voucher:0
msgid "Are you sure you want to cancel this receipt?"
msgstr ""
msgstr "Sind Sie sicher, dass Sie diesen Beleg löschen wollen ?"
#. module: account_voucher
#: view:account.voucher:0
@ -130,7 +130,7 @@ msgstr "Gruppiere je Jahr der Rechnung"
#: view:sale.receipt.report:0
#: field:sale.receipt.report,user_id:0
msgid "Salesperson"
msgstr ""
msgstr "Verkäufer"
#. module: account_voucher
#: view:account.voucher:0
@ -144,6 +144,8 @@ msgid ""
"You can not change the journal as you already reconciled some statement "
"lines!"
msgstr ""
"Dieses Journal kann nicht geändert werden, da bereits Auszugspositionen "
"ausgeglichen wurden."
#. module: account_voucher
#: view:account.voucher:0
@ -161,6 +163,13 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
"                 Klicken Sie zur Erfassung eines Kaufbeleg.\n"
"               </ p>\n"
" Wenn der Kaufbeleg bestätigt wird, können Sie die\n"
"                 Lieferanten Bezahlung erfassen.\n"
"               </ p>\n"
" "
#. module: account_voucher
#: view:account.voucher:0
@ -210,7 +219,7 @@ msgstr "Anmerkungen"
#. module: account_voucher
#: field:account.voucher,message_ids:0
msgid "Messages"
msgstr ""
msgstr "Mitteilungen"
#. module: account_voucher
#: selection:account.voucher,type:0
@ -228,7 +237,7 @@ msgstr "Journal Buchung"
#: code:addons/account_voucher/account_voucher.py:964
#, python-format
msgid "Error!"
msgstr ""
msgstr "Fehler !"
#. module: account_voucher
#: field:account.voucher.line,amount:0
@ -272,11 +281,19 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Klicken Sie zur Erstellung eines Kaufbeleg.\n"
" </p><p>\n"
" Wenn Sie den Kaufbeleg bestätigt haben, können Sie optional "
"die\n"
"                 Einzahlung sofort oder später erfassen.\n"
" </p>\n"
" "
#. module: account_voucher
#: help:account.voucher,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
msgstr "Benachrichtigung erfordert handeln"
#. module: account_voucher
#: model:ir.model,name:account_voucher.model_account_bank_statement_line
@ -298,7 +315,7 @@ msgstr "Steuer"
#: code:addons/account_voucher/account_voucher.py:864
#, python-format
msgid "Invalid Action!"
msgstr ""
msgstr "Diese Aktion ist fehlerhaft !"
#. module: account_voucher
#: field:account.voucher,comment:0
@ -316,6 +333,9 @@ msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
"Beinhaltet die Chatter Zusammenfassung (Anzahl der Nachrichten, ...). Diese "
"Zusammenfassung ist im HTML-Format, um in Kanban Karten Ansichten eingefügt "
"zu werden."
#. module: account_voucher
#: view:account.voucher:0
@ -325,7 +345,7 @@ msgstr "Zahlungsinformation"
#. module: account_voucher
#: view:account.voucher:0
msgid "(update)"
msgstr ""
msgstr "(aktualisieren)"
#. module: account_voucher
#: view:account.voucher:0
@ -361,6 +381,9 @@ msgid ""
"settings, to manage automatically the booking of accounting entries related "
"to differences between exchange rates."
msgstr ""
"Sie sollten in den Einstellungen für die Buchhaltung das 'Kursgewinn Konto' "
"einstellen, um automatisch die entstehenden erforderlichen Buchungen für "
"Wechselkursdifferenzen zu generieren."
#. module: account_voucher
#: view:account.voucher:0
@ -397,7 +420,7 @@ msgstr "Konto belasten (Soll)"
#: code:addons/account_voucher/account_voucher.py:1558
#, python-format
msgid "Unable to change journal !"
msgstr ""
msgstr "Es ist nicht möglich das Journal zu ändern !"
#. module: account_voucher
#: view:sale.receipt.report:0
@ -527,12 +550,22 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
"                 Klicken Sie zur Eingabe einer Einzahlung.\n"
"               </ p>\n"
"                 Erfassen Sie den Kunden, die Zahlungsmethode und den "
"Betrag, bevor Sie dann entweder \n"
" einfach nur die Zahlung bestätigen oder den automatischen "
"Vorschlag der auszugleichenden \n"
" Rechnungen bzw. Verkaufsbelege übernehmen und buchen.\n"
"               </ p>\n"
" "
#. module: account_voucher
#: field:account.config.settings,expense_currency_exchange_account_id:0
#: field:res.company,expense_currency_exchange_account_id:0
msgid "Loss Exchange Rate Account"
msgstr ""
msgstr "Kursverlust Konto"
#. module: account_voucher
#: view:account.voucher:0
@ -566,6 +599,9 @@ msgid ""
"settings, to manage automatically the booking of accounting entries related "
"to differences between exchange rates."
msgstr ""
"Sie sollten das Kursverlust Konto in den Einstellungen der Buchhaltung "
"definieren, um automatisch die Buchungen für die Kursverluste aus "
"Wechselkursänderungen zu generieren."
#. module: account_voucher
#: view:account.voucher:0
@ -575,7 +611,7 @@ msgstr "Aufwandspositionen"
#. module: account_voucher
#: view:account.voucher:0
msgid "Sale voucher"
msgstr ""
msgstr "Verkauf Belege"
#. module: account_voucher
#: help:account.voucher,is_multi_currency:0
@ -589,7 +625,7 @@ msgstr ""
#. module: account_voucher
#: view:account.invoice:0
msgid "Register Payment"
msgstr ""
msgstr "Erfassen Einzahlung"
#. module: account_voucher
#: field:account.statement.from.invoice.lines,line_ids:0
@ -627,17 +663,17 @@ msgstr "Kreditoren und Debitoren"
#. module: account_voucher
#: view:account.voucher:0
msgid "Voucher Payment"
msgstr ""
msgstr "Zahlung Belege"
#. module: account_voucher
#: field:sale.receipt.report,state:0
msgid "Voucher Status"
msgstr ""
msgstr "Belegstatus"
#. module: account_voucher
#: view:account.voucher:0
msgid "Are you sure to unreconcile this record?"
msgstr ""
msgstr "Möchten Sie wirklich den Ausgleich stornieren?"
#. module: account_voucher
#: field:account.voucher,company_id:0
@ -661,7 +697,7 @@ msgstr "OP-Ausgleich Saldo"
#: code:addons/account_voucher/account_voucher.py:960
#, python-format
msgid "Configuration Error !"
msgstr ""
msgstr "Konfigurationsfehler !"
#. module: account_voucher
#: view:account.voucher:0
@ -678,14 +714,14 @@ msgstr "Bruttobetrag"
#. module: account_voucher
#: view:account.voucher:0
msgid "Purchase Voucher"
msgstr ""
msgstr "Einkauf Belege"
#. module: account_voucher
#: view:account.voucher:0
#: field:account.voucher,state:0
#: view:sale.receipt.report:0
msgid "Status"
msgstr ""
msgstr "Status"
#. module: account_voucher
#: view:account.voucher:0
@ -696,7 +732,7 @@ msgstr "Zuordnung"
#: view:account.statement.from.invoice.lines:0
#: view:account.voucher:0
msgid "or"
msgstr ""
msgstr "oder"
#. module: account_voucher
#: selection:sale.receipt.report,month:0
@ -721,7 +757,7 @@ msgstr "Oktober"
#: code:addons/account_voucher/account_voucher.py:961
#, python-format
msgid "Please activate the sequence of selected journal !"
msgstr ""
msgstr "Bitte aktivieren Sie die Nummernfolge für das gewählte Journal !"
#. module: account_voucher
#: selection:sale.receipt.report,month:0
@ -779,7 +815,7 @@ msgstr "Betrag Ausgeglichen"
#: field:account.voucher,message_comment_ids:0
#: help:account.voucher,message_comment_ids:0
msgid "Comments and emails"
msgstr ""
msgstr "Kommentare und EMails"
#. module: account_voucher
#: model:ir.actions.act_window,help:account_voucher.action_vendor_payment
@ -792,6 +828,14 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
"                 Klicken Sie zur Eingabe einer Lieferanten Zahlung.\n"
"               </ p>\n"
"                 OpenERP hilft bei der Ermittlung der offenen Rechnungen für "
"Zahlungsvorschläge \n"
" und hilft bei der Verfolgung von Zahlungen .\n"
"               </ p>\n"
" "
#. module: account_voucher
#: selection:account.voucher,pay_now:0
@ -828,18 +872,18 @@ msgstr "Unternehmen"
#. module: account_voucher
#: field:account.voucher,message_summary:0
msgid "Summary"
msgstr ""
msgstr "Zusammenfassung"
#. module: account_voucher
#: field:account.voucher,active:0
msgid "Active"
msgstr ""
msgstr "Aktiv"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:965
#, python-format
msgid "Please define a sequence on the journal."
msgstr ""
msgstr "Bitte definieren Sie eine Nummernfolge für dieses Journal."
#. module: account_voucher
#: view:account.voucher:0
@ -855,7 +899,7 @@ msgstr "Gruppiert je Rechnungsdatum"
#: code:addons/account_voucher/account_voucher.py:1093
#, python-format
msgid "Wrong bank statement line"
msgstr ""
msgstr "Falsche Bankauszugposition"
#. module: account_voucher
#: view:account.voucher:0
@ -952,7 +996,7 @@ msgstr "Abbrechen"
#. module: account_voucher
#: model:ir.actions.client,name:account_voucher.action_client_invoice_menu
msgid "Open Invoicing Menu"
msgstr ""
msgstr "Offene Rechnungen Auswahl"
#. module: account_voucher
#: selection:account.voucher,state:0
@ -972,6 +1016,8 @@ msgstr "Buchungsjournale"
#, python-format
msgid "Please define default credit/debit accounts on the journal \"%s\"."
msgstr ""
"Bitte definieren Sie je ein Standard Soll / Haben Konto für das Journal "
"\"%s\"."
#. module: account_voucher
#: model:ir.actions.act_window,name:account_voucher.act_pay_voucher
@ -1021,6 +1067,16 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p>\n"
" Durch diese Statistik können Sie sich einen Überblick über die "
"abgerechneten Rechnungen \n"
" verschaffen sowie den Status der nicht termingerechten "
"Zahlungen bewerten. Die \n"
" Sucheinstellung kann verwendet werden, um Statistiken zu "
"personalisieren \n"
" und bedarfsgerecht anzupassen.\n"
" </p>\n"
" "
#. module: account_voucher
#: view:account.voucher:0
@ -1050,7 +1106,7 @@ msgstr "Mai"
#. module: account_voucher
#: view:account.voucher:0
msgid "Sale Receipt"
msgstr ""
msgstr "Verkauf Buchungsbelege"
#. module: account_voucher
#: view:account.voucher:0
@ -1143,7 +1199,7 @@ msgstr "Jahr"
#: field:account.config.settings,income_currency_exchange_account_id:0
#: field:res.company,income_currency_exchange_account_id:0
msgid "Gain Exchange Rate Account"
msgstr ""
msgstr "Kursverlust Konto"
#. module: account_voucher
#: selection:sale.receipt.report,month:0
@ -1163,7 +1219,7 @@ msgstr "Standard Typ"
#. module: account_voucher
#: help:account.voucher,message_ids:0
msgid "Messages and communication history"
msgstr ""
msgstr "Nachrichten und Kommunikation Historie"
#. module: account_voucher
#: model:ir.model,name:account_voucher.model_account_statement_from_invoice_lines
@ -1187,12 +1243,14 @@ msgid ""
"The amount of the voucher must be the same amount as the one on the "
"statement line."
msgstr ""
"Der Betrag für diesen Beleg sollte identisch sein mit demjenigen auf dem "
"Bankauszug."
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:864
#, python-format
msgid "Cannot delete voucher(s) which are already opened or paid."
msgstr ""
msgstr "Offene oder bezahlte Belege können nicht storniert werden"
#. module: account_voucher
#: help:account.voucher,date:0
@ -1202,7 +1260,7 @@ msgstr "Tatsächliches Buchungsdatum"
#. module: account_voucher
#: model:mail.message.subtype,name:account_voucher.mt_voucher
msgid "Status Change"
msgstr ""
msgstr "Status Änderung"
#. module: account_voucher
#: selection:account.voucher,payment_option:0
@ -1251,7 +1309,7 @@ msgstr "Offener Saldo"
#: code:addons/account_voucher/account_voucher.py:1001
#, python-format
msgid "Insufficient Configuration!"
msgstr ""
msgstr "Unzureichende Konfiguration !"
#. module: account_voucher
#: help:account.voucher,active:0
@ -1260,6 +1318,9 @@ msgid ""
"inactive, which allow to hide the customer/supplier payment while the bank "
"statement isn't confirmed."
msgstr ""
"Standardmäßig werden die Zahlungsausgleiche aus Bank Belegen als inaktiv "
"gesetzt, um Kunden / Lieferanten Bezahlung zu verbergen, während der "
"Kontoauszug noch nicht endgültig bestätigt wurde."
#~ msgid "On Account of :"
#~ msgstr "Bezug Konto:"

View File

@ -8,29 +8,30 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-02-08 08:55+0000\n"
"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n"
"PO-Revision-Date: 2012-12-08 10:41+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:46+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-09 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: analytic
#: field:account.analytic.account,child_ids:0
msgid "Child Accounts"
msgstr "untergeordnete Konten"
msgstr "untergordnete Kostenstelle"
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "In Progress"
msgstr ""
msgstr "In Arbeit"
#. module: analytic
#: model:mail.message.subtype,name:analytic.mt_account_status
msgid "Status Change"
msgstr ""
msgstr "Status Änderung"
#. module: analytic
#: selection:account.analytic.account,state:0
@ -40,7 +41,7 @@ msgstr "Vorlage"
#. module: analytic
#: view:account.analytic.account:0
msgid "End Date"
msgstr ""
msgstr "Ende Datum"
#. module: analytic
#: help:account.analytic.line,unit_amount:0
@ -60,12 +61,16 @@ msgid ""
"the\n"
" customer."
msgstr ""
"Sobald das Ende Datum des Vertrags überschritten wird oder die maximale "
"Anzahl von Service Einheiten (beispielsweise in einem Support-Vertrag) "
"abgeleistet wurde, wird der Projekt Manager per EMail benachrichtigt, um den "
"Vertrag mit dem Kunden zu erneuern."
#. module: analytic
#: code:addons/analytic/analytic.py:222
#, python-format
msgid "Contract: "
msgstr ""
msgstr "Vertrag: "
#. module: analytic
#: field:account.analytic.account,manager_id:0
@ -75,13 +80,13 @@ msgstr "Verantw. Mitarbeiter"
#. module: analytic
#: field:account.analytic.account,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "Followers"
#. module: analytic
#: code:addons/analytic/analytic.py:319
#, python-format
msgid "Contract <b>created</b>."
msgstr ""
msgstr "Vertrag wurde <b>erstellt</b>."
#. module: analytic
#: selection:account.analytic.account,state:0
@ -101,23 +106,23 @@ msgstr "Neu"
#. module: analytic
#: field:account.analytic.account,user_id:0
msgid "Project Manager"
msgstr ""
msgstr "Projekt Manager"
#. module: analytic
#: field:account.analytic.account,state:0
msgid "Status"
msgstr ""
msgstr "Status"
#. module: analytic
#: code:addons/analytic/analytic.py:261
#, python-format
msgid "%s (copy)"
msgstr ""
msgstr "%s (Kopie)"
#. module: analytic
#: model:ir.model,name:analytic.model_account_analytic_line
msgid "Analytic Line"
msgstr "Analytische Buchungszeile"
msgstr "Kostenstellen Buchung"
#. module: analytic
#: field:account.analytic.account,description:0
@ -128,17 +133,17 @@ msgstr "Buchungstext"
#. module: analytic
#: field:account.analytic.account,name:0
msgid "Account/Contract Name"
msgstr ""
msgstr "Kostenstelle/Vertrag Bezeichnung"
#. module: analytic
#: field:account.analytic.account,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "Ungelesene Nachrichten"
#. module: analytic
#: constraint:account.analytic.account:0
msgid "Error! You cannot create recursive analytic accounts."
msgstr ""
msgstr "Fehler ! Sie können keine rekursiven Kostenstellen anlegen."
#. module: analytic
#: field:account.analytic.account,company_id:0
@ -149,12 +154,12 @@ msgstr "Unternehmen"
#. module: analytic
#: view:account.analytic.account:0
msgid "Renewal"
msgstr ""
msgstr "Erneuerung"
#. module: analytic
#: help:account.analytic.account,message_ids:0
msgid "Messages and communication history"
msgstr ""
msgstr "Nachrichten und Kommunikation"
#. module: analytic
#: help:account.analytic.account,quantity_max:0
@ -162,6 +167,8 @@ msgid ""
"Sets the higher limit of time to work on the contract, based on the "
"timesheet. (for instance, number of hours in a limited support contract.)"
msgstr ""
"Tragen Sie die für diesen Vertrag maximal abrechenbare Zeit, die sich aus "
"den Stundenzetteln ergibt (z.B. Kontingent Supportstunden)."
#. module: analytic
#: code:addons/analytic/analytic.py:153
@ -182,7 +189,7 @@ msgstr ""
#. module: analytic
#: field:account.analytic.account,message_is_follower:0
msgid "Is a Follower"
msgstr ""
msgstr "Ist ein Follower"
#. module: analytic
#: field:account.analytic.line,user_id:0
@ -211,53 +218,62 @@ msgid ""
"The special type 'Template of Contract' allows you to define a template with "
"default data that you can reuse easily."
msgstr ""
"Wenn Sie 'Ansicht' als Typ einer Kostenstelle auswählen, darf auf dieser "
"Kostenstelle nicht gebucht werden.\n"
"Der Typ 'Kostenstelle' steht für die normalen internen Kostenstellen, die "
"nur in der Buchhaltung verwendet werden.\n"
"Wenn Sie 'Vertrag oder Projekt' auswählen, können Sie die Einstellungen zur "
"Vertragsdauer und zur Abrechnung \n"
"verwalten. In einer 'Vertrag Vorlage' hinterlegen Sie Standard-Daten, die "
"Sie immer wieder verwenden können."
#. module: analytic
#: field:account.analytic.account,message_comment_ids:0
#: help:account.analytic.account,message_comment_ids:0
msgid "Comments and emails"
msgstr ""
msgstr "Kommentare und EMails"
#. module: analytic
#: field:account.analytic.account,partner_id:0
msgid "Customer"
msgstr ""
msgstr "Kunde"
#. module: analytic
#: field:account.analytic.account,child_complete_ids:0
msgid "Account Hierarchy"
msgstr "Kontenhierarchie"
msgstr "Kostenstellen Hierachie"
#. module: analytic
#: field:account.analytic.account,message_ids:0
msgid "Messages"
msgstr ""
msgstr "Mitteilungen"
#. module: analytic
#: constraint:account.analytic.line:0
msgid "You cannot create analytic line on view account."
msgstr ""
"Sie können keine Kostenstellen buchen, die als Ansicht definiert wurde"
#. module: analytic
#: view:account.analytic.account:0
msgid "Contract Information"
msgstr ""
msgstr "Vertrag Informationen"
#. module: analytic
#: field:account.analytic.account,template_id:0
#: selection:account.analytic.account,type:0
msgid "Template of Contract"
msgstr ""
msgstr "Vertrag Vorlage"
#. module: analytic
#: field:account.analytic.account,message_summary:0
msgid "Summary"
msgstr ""
msgstr "Zusammenfassung"
#. module: analytic
#: field:account.analytic.account,quantity_max:0
msgid "Prepaid Service Units"
msgstr ""
msgstr "Servicekontingent"
#. module: analytic
#: field:account.analytic.account,credit:0
@ -273,12 +289,12 @@ msgstr "Betrag"
#: code:addons/analytic/analytic.py:321
#, python-format
msgid "Contract for <em>%s</em> has been <b>created</b>."
msgstr ""
msgstr "Vertrag für <em>%s</em> wurde <b>erstellt</b>."
#. module: analytic
#: view:account.analytic.account:0
msgid "Terms and Conditions"
msgstr ""
msgstr "Bedingungen und Konditionen"
#. module: analytic
#: selection:account.analytic.account,state:0
@ -288,7 +304,7 @@ msgstr "Abgebrochen"
#. module: analytic
#: selection:account.analytic.account,type:0
msgid "Analytic View"
msgstr ""
msgstr "Kostenstelle Ansicht"
#. module: analytic
#: field:account.analytic.account,balance:0
@ -298,18 +314,18 @@ msgstr "Saldo"
#. module: analytic
#: help:account.analytic.account,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
msgstr "Benachrichtigung erfordert handeln"
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "To Renew"
msgstr ""
msgstr "Zu Erneuern"
#. module: analytic
#: field:account.analytic.account,quantity:0
#: field:account.analytic.line,unit_amount:0
msgid "Quantity"
msgstr "Menge"
msgstr "Anzahl"
#. module: analytic
#: field:account.analytic.account,date:0
@ -319,28 +335,28 @@ msgstr "Ende Datum"
#. module: analytic
#: field:account.analytic.account,code:0
msgid "Reference"
msgstr ""
msgstr "Kostenstellennummer"
#. module: analytic
#: code:addons/analytic/analytic.py:153
#, python-format
msgid "Error!"
msgstr ""
msgstr "Fehler !"
#. module: analytic
#: model:res.groups,name:analytic.group_analytic_accounting
msgid "Analytic Accounting"
msgstr "Analytische Konten"
msgstr "Kostenstellenrechnung"
#. module: analytic
#: selection:account.analytic.account,type:0
msgid "Contract or Project"
msgstr ""
msgstr "Vertrag oder Projekt"
#. module: analytic
#: field:account.analytic.account,complete_name:0
msgid "Full Account Name"
msgstr "Vollständige Kontobezeichnung"
msgstr "Bezeichnung der Kostenstelle"
#. module: analytic
#: view:account.analytic.account:0
@ -348,7 +364,7 @@ msgstr "Vollständige Kontobezeichnung"
#: field:account.analytic.line,account_id:0
#: model:ir.model,name:analytic.model_account_analytic_account
msgid "Analytic Account"
msgstr "Analytisches Konto"
msgstr "Kostenstelle"
#. module: analytic
#: field:account.analytic.account,currency_id:0
@ -361,16 +377,19 @@ msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
"Beinhaltet die Chatter Zusammenfassung (Anzahl der Nachrichten, ...). Diese "
"Zusammenfassung ist im HTML-Format, um in Kanban Karten Ansichten eingefügt "
"zu werden."
#. module: analytic
#: field:account.analytic.account,type:0
msgid "Type of Account"
msgstr ""
msgstr "Typ der Kostenstelle"
#. module: analytic
#: field:account.analytic.account,date_start:0
msgid "Start Date"
msgstr ""
msgstr "Start Datum"
#. module: analytic
#: help:account.analytic.line,amount:0
@ -385,7 +404,7 @@ msgstr ""
#. module: analytic
#: field:account.analytic.account,line_ids:0
msgid "Analytic Entries"
msgstr "Analytische Buchungen"
msgstr "Kostenstellen Buchungen"
#~ msgid "Account Name"
#~ msgstr "Kontenbezeichnung"

View File

@ -0,0 +1,73 @@
# 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-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-08 10:51+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-09 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "or view"
msgstr "oder Ansicht"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "Nothing to invoice, create"
msgstr ""
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "expenses"
msgstr "Spesen"
#. module: analytic_contract_hr_expense
#: model:ir.model,name:analytic_contract_hr_expense.model_account_analytic_account
msgid "Analytic Account"
msgstr "Kostenstelle"
#. module: analytic_contract_hr_expense
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:134
#, python-format
msgid "Expenses to Invoice of %s"
msgstr ""
#. module: analytic_contract_hr_expense
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:119
#, python-format
msgid "Expenses of %s"
msgstr ""
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,expense_invoiced:0
#: field:account.analytic.account,expense_to_invoice:0
#: field:account.analytic.account,remaining_expense:0
msgid "unknown"
msgstr "unbekannt"
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,est_expenses:0
msgid "Estimation of Expenses to Invoice"
msgstr "Geplante Spesenabrechnung"
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,charge_expenses:0
msgid "Charge Expenses"
msgstr "Weiterberechnung Spesen"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "⇒ Invoice"
msgstr "=> Rechnung"

View File

@ -7,44 +7,45 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-01-13 19:15+0000\n"
"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n"
"PO-Revision-Date: 2012-12-08 11:12+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\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-12-04 05:42+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-09 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: analytic_user_function
#: model:ir.model,name:analytic_user_function.model_account_analytic_line
msgid "Analytic Line"
msgstr ""
msgstr "Kostenstellen Buchung"
#. module: analytic_user_function
#: view:account.analytic.account:0
msgid "Invoice Price Rate per User"
msgstr ""
msgstr "Abrechenbare Stundensätze der Benutzer"
#. module: analytic_user_function
#: field:analytic.user.funct.grid,product_id:0
msgid "Service"
msgstr ""
msgstr "Dienstleistung"
#. module: analytic_user_function
#: model:ir.model,name:analytic_user_function.model_analytic_user_funct_grid
msgid "Price per User"
msgstr ""
msgstr "Preis nach Benutzer"
#. module: analytic_user_function
#: field:analytic.user.funct.grid,price:0
msgid "Price"
msgstr ""
msgstr "Preis"
#. module: analytic_user_function
#: help:analytic.user.funct.grid,price:0
msgid "Price per hour for this user."
msgstr ""
msgstr "Preis pro Stunde für Benutzer"
#. module: analytic_user_function
#: field:analytic.user.funct.grid,account_id:0
@ -57,12 +58,12 @@ msgstr "Analytisches Konto"
#: code:addons/analytic_user_function/analytic_user_function.py:135
#, python-format
msgid "Error!"
msgstr ""
msgstr "Fehler !"
#. module: analytic_user_function
#: view:analytic.user.funct.grid:0
msgid "Invoicing Data"
msgstr ""
msgstr "Rechnungsdaten"
#. module: analytic_user_function
#: field:account.analytic.account,user_product_ids:0
@ -78,11 +79,15 @@ msgid ""
" of the default values when invoicing the "
"customer."
msgstr ""
"Anlegen einer spezifischen Dienstleistung (z.B. Senior Consultant)\n"
" und Preis für einige Benutzer, um diese Daten "
"anstelle der Standard Werte\n"
" für die Abrechnung an Kunden zu benutzen."
#. module: analytic_user_function
#: field:analytic.user.funct.grid,uom_id:0
msgid "Unit of Measure"
msgstr ""
msgstr "Mengeneinheit"
#. module: analytic_user_function
#: code:addons/analytic_user_function/analytic_user_function.py:107
@ -105,6 +110,9 @@ msgid ""
" specific user. This allows to set invoicing\n"
" conditions for a group of contracts."
msgstr ""
"OpenERP durchsucht rekursiv die übergeordneten Kostenstellen, um spezifische "
"Konditionen für spezifische Benutzer zu überprüfen. Dieses ermöglicht die "
"Hinterlegung der Abrechnungskonditionen für bestimmte Vertragsgruppen."
#. module: analytic_user_function
#: field:analytic.user.funct.grid,user_id:0

View File

@ -36,7 +36,7 @@ from itertools import groupby
from operator import itemgetter
FIELD_STATES = [('clear', 'Clear'), ('anonymized', 'Anonymized'), ('not_existing', 'Not Existing')]
FIELD_STATES = [('clear', 'Clear'), ('anonymized', 'Anonymized'), ('not_existing', 'Not Existing'), ('new', 'New')]
ANONYMIZATION_STATES = FIELD_STATES + [('unstable', 'Unstable')]
WIZARD_ANONYMIZATION_STATES = [('clear', 'Clear'), ('anonymized', 'Anonymized'), ('unstable', 'Unstable')]
ANONYMIZATION_HISTORY_STATE = [('started', 'Started'), ('done', 'Done'), ('in_exception', 'Exception occured')]

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: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-01-17 07:43+0000\n"
"Last-Translator: Nicola Riolini - Micronaet <Unknown>\n"
"PO-Revision-Date: 2012-12-09 20:34+0000\n"
"Last-Translator: Sergio Corato <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-10-30 05:33+0000\n"
"X-Generator: Launchpad (build 16206)\n"
"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: association
#: field:profile.association.config.install_modules_wizard,wiki:0
@ -71,6 +71,8 @@ msgid ""
"Tracks and manages employee expenses, and can automatically re-invoice "
"clients if the expenses are project-related."
msgstr ""
"Traccia e gestisce le spese dei dipendenti e può ri-generare automaticamente "
"fatture se le spese sono collegate al progetto."
#. module: association
#: help:profile.association.config.install_modules_wizard,project_gtd:0
@ -101,7 +103,7 @@ msgstr "Monitoraggio spese"
#: model:ir.actions.act_window,name:association.action_config_install_module
#: view:profile.association.config.install_modules_wizard:0
msgid "Association Application Configuration"
msgstr ""
msgstr "Configurazione Applicazione Associazione"
#. module: association
#: help:profile.association.config.install_modules_wizard,wiki:0
@ -109,6 +111,8 @@ 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 ""
"Permette di creare pagine wiki e gruppi di pagine per tenere traccia delle "
"conoscenze aziendali e condividerle con e tra gli dipendenti."
#. module: association
#: help:profile.association.config.install_modules_wizard,project:0
@ -116,6 +120,8 @@ msgid ""
"Helps you manage your projects and tasks by tracking them, generating "
"plannings, etc..."
msgstr ""
"Aiuta a gestire i progetti e le attività attraverso il loro tracciamento, "
"pianificazione, ecc..."
#. module: association
#: model:ir.model,name:association.model_profile_association_config_install_modules_wizard

View File

@ -83,11 +83,11 @@ class audittrail_rule(osv.osv):
"domain": "[('object_id','=', " + str(thisrule.object_id.id) + "), ('res_id', '=', active_id)]"
}
action_id = obj_action.create(cr, uid, val)
action_id = obj_action.create(cr, SUPERUSER_ID, val)
self.write(cr, uid, [thisrule.id], {"state": "subscribed", "action_id": action_id})
keyword = 'client_action_relate'
value = 'ir.actions.act_window,' + str(action_id)
res = obj_model.ir_set(cr, uid, 'action', keyword, 'View_log_' + thisrule.object_id.model, [thisrule.object_id.model], value, replace=True, isobject=True, xml_id=False)
res = obj_model.ir_set(cr, SUPERUSER_ID, 'action', keyword, 'View_log_' + thisrule.object_id.model, [thisrule.object_id.model], value, replace=True, isobject=True, xml_id=False)
#End Loop
return True
@ -109,7 +109,7 @@ class audittrail_rule(osv.osv):
setattr(function[0], function[1], function[2])
w_id = obj_action.search(cr, uid, [('name', '=', 'View Log'), ('res_model', '=', 'audittrail.log'), ('src_model', '=', thisrule.object_id.model)])
if w_id:
obj_action.unlink(cr, uid, w_id)
obj_action.unlink(cr, SUPERUSER_ID, w_id)
value = "ir.actions.act_window" + ',' + str(w_id[0])
val_id = ir_values_obj.search(cr, uid, [('model', '=', thisrule.object_id.model), ('value', '=', value)])
if val_id:

View File

@ -0,0 +1,30 @@
# 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-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-12-07 10:27+0000\n"
"Last-Translator: Quentin THEURET <Unknown>\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-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: auth_anonymous
#. openerp-web
#: code:addons/auth_anonymous/static/src/xml/auth_anonymous.xml:9
#, python-format
msgid "Login"
msgstr "Connexion"
#. module: auth_anonymous
#: model:res.groups,name:auth_anonymous.group_anonymous
msgid "Anonymous Group"
msgstr ""

View File

@ -0,0 +1,30 @@
# Croatian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-12-09 19:39+0000\n"
"Last-Translator: Goran Kliska <gkliska@gmail.com>\n"
"Language-Team: Croatian <hr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: auth_anonymous
#. openerp-web
#: code:addons/auth_anonymous/static/src/xml/auth_anonymous.xml:9
#, python-format
msgid "Login"
msgstr "Prijava"
#. module: auth_anonymous
#: model:res.groups,name:auth_anonymous.group_anonymous
msgid "Anonymous Group"
msgstr "Anonimna grupa"

View File

@ -0,0 +1,135 @@
# 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-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-07 10:28+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-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: auth_oauth
#: field:auth.oauth.provider,validation_endpoint:0
msgid "Validation URL"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,auth_endpoint:0
msgid "Authentication URL"
msgstr ""
#. module: auth_oauth
#: model:ir.model,name:auth_oauth.model_base_config_settings
msgid "base.config.settings"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,name:0
msgid "Provider name"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,scope:0
msgid "Scope"
msgstr ""
#. module: auth_oauth
#: field:res.users,oauth_provider_id:0
msgid "OAuth Provider"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,css_class:0
msgid "CSS class"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,body:0
msgid "Body"
msgstr ""
#. module: auth_oauth
#: model:ir.model,name:auth_oauth.model_res_users
msgid "Users"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,sequence:0
msgid "unknown"
msgstr ""
#. module: auth_oauth
#: field:res.users,oauth_access_token:0
msgid "OAuth Access Token"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,client_id:0
#: field:base.config.settings,auth_oauth_facebook_client_id:0
#: field:base.config.settings,auth_oauth_google_client_id:0
msgid "Client ID"
msgstr ""
#. module: auth_oauth
#: model:ir.ui.menu,name:auth_oauth.menu_oauth_providers
msgid "OAuth Providers"
msgstr ""
#. module: auth_oauth
#: model:ir.model,name:auth_oauth.model_auth_oauth_provider
msgid "OAuth2 provider"
msgstr ""
#. module: auth_oauth
#: field:res.users,oauth_uid:0
msgid "OAuth User ID"
msgstr ""
#. module: auth_oauth
#: field:base.config.settings,auth_oauth_facebook_enabled:0
msgid "Allow users to sign in with Facebook"
msgstr ""
#. module: auth_oauth
#: sql_constraint:res.users:0
msgid "OAuth UID must be unique per provider"
msgstr ""
#. module: auth_oauth
#: help:res.users,oauth_uid:0
msgid "Oauth Provider user_id"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,data_endpoint:0
msgid "Data URL"
msgstr ""
#. module: auth_oauth
#: view:auth.oauth.provider:0
msgid "arch"
msgstr ""
#. module: auth_oauth
#: model:ir.actions.act_window,name:auth_oauth.action_oauth_provider
msgid "Providers"
msgstr ""
#. module: auth_oauth
#: field:base.config.settings,auth_oauth_google_enabled:0
msgid "Allow users to sign in with Google"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,enabled:0
msgid "Allowed"
msgstr ""

View File

@ -0,0 +1,258 @@
# Croatian 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-12-04 14:41+0000\n"
"PO-Revision-Date: 2012-12-09 19:58+0000\n"
"Last-Translator: Goran Kliska <gkliska@gmail.com>\n"
"Language-Team: Croatian <hr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: auth_signup
#: field:base.config.settings,auth_signup_uninvited:0
msgid "Allow external users to sign up"
msgstr "Dozvoli prijavu eksternim korisnicima"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:16
#, python-format
msgid "Confirm Password"
msgstr "Potvrdi lozinku"
#. module: auth_signup
#: help:base.config.settings,auth_signup_uninvited:0
msgid "If unchecked, only invited users may sign up."
msgstr "Dozvoli prijavu svima ili samo pozvanim korisnicima"
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_base_config_settings
msgid "base.config.settings"
msgstr ""
#. module: auth_signup
#: code:addons/auth_signup/res_users.py:248
#, python-format
msgid "Cannot send email: user has no email address."
msgstr "Korisnik nema e-mail adresu."
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:25
#, python-format
msgid "Reset password"
msgstr "Resetiraj lozinku"
#. module: auth_signup
#: field:base.config.settings,auth_signup_template_user_id:0
msgid "Template user for new users created through signup"
msgstr "Korisnik predložak za sve korisnike kreirane prijavom."
#. module: auth_signup
#: model:email.template,subject:auth_signup.reset_password_email
msgid "Password reset"
msgstr "Promjena lozinke"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:120
#, python-format
msgid "Please enter a password and confirm it."
msgstr "Molim upišite lozinku i potvrdu."
#. module: auth_signup
#: view:res.users:0
msgid "Send an email to the user to (re)set their password."
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:23
#, python-format
msgid "Sign Up"
msgstr ""
#. module: auth_signup
#: selection:res.users,state:0
msgid "New"
msgstr "Nova(i)"
#. module: auth_signup
#: field:res.users,state:0
msgid "Status"
msgstr "Status"
#. module: auth_signup
#: model:email.template,body_html:auth_signup.reset_password_email
msgid ""
"\n"
"<p>A password reset was requested for the OpenERP account linked to this "
"email.</p>\n"
"\n"
"<p>You may change your password by following <a "
"href=\"${object.signup_url}\">this link</a>.</p>\n"
"\n"
"<p>Note: If you do not expect this, you can safely ignore this email.</p>"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:114
#, python-format
msgid "Please enter a name."
msgstr "Unesite ime"
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_res_users
msgid "Users"
msgstr "Korisnici"
#. module: auth_signup
#: field:res.partner,signup_url:0
msgid "Signup URL"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:117
#, python-format
msgid "Please enter a username."
msgstr "Upišite korisničko ime"
#. module: auth_signup
#: selection:res.users,state:0
msgid "Active"
msgstr "Aktivan"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:12
#, python-format
msgid "Username"
msgstr "Korisničko ime"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:8
#, python-format
msgid "Name"
msgstr "Naziv"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:160
#, python-format
msgid "Please enter a username or email address."
msgstr "Upišite korisničko ime ili email adresu."
#. module: auth_signup
#: selection:res.users,state:0
msgid "Resetting Password"
msgstr "Promjena lozinke"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:13
#, python-format
msgid "Username (Email)"
msgstr "Korisničko ime (e-mail)"
#. module: auth_signup
#: field:res.partner,signup_expiration:0
msgid "Signup Expiration"
msgstr ""
#. module: auth_signup
#: help:base.config.settings,auth_signup_reset_password:0
msgid "This allows users to trigger a password reset from the Login page."
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:21
#, python-format
msgid "Log in"
msgstr "Prijava"
#. module: auth_signup
#: field:res.partner,signup_valid:0
msgid "Signup Token is Valid"
msgstr "Token prijave je ispravan"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:111
#: code:addons/auth_signup/static/src/js/auth_signup.js:114
#: code:addons/auth_signup/static/src/js/auth_signup.js:117
#: code:addons/auth_signup/static/src/js/auth_signup.js:120
#: code:addons/auth_signup/static/src/js/auth_signup.js:123
#: code:addons/auth_signup/static/src/js/auth_signup.js:157
#: code:addons/auth_signup/static/src/js/auth_signup.js:160
#, python-format
msgid "Login"
msgstr "Prijava"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:94
#, python-format
msgid "Invalid signup token"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:123
#, python-format
msgid "Passwords do not match; please retype them."
msgstr "Lozinke nisu iste, pokušajte ponovo."
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:111
#: code:addons/auth_signup/static/src/js/auth_signup.js:157
#, python-format
msgid "No database selected !"
msgstr "Nije odabrana baza podataka"
#. module: auth_signup
#: view:res.users:0
msgid "Reset Password"
msgstr "Promijeni lozinku"
#. module: auth_signup
#: field:base.config.settings,auth_signup_reset_password:0
msgid "Enable password reset from Login page"
msgstr "Omogući promjenu lozinke na stranici prijave"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:24
#, python-format
msgid "Back to Login"
msgstr "Nazad na prijavu"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22
#, python-format
msgid "Sign up"
msgstr "Prijava"
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_res_partner
msgid "Partner"
msgstr "Partner"
#. module: auth_signup
#: field:res.partner,signup_token:0
msgid "Signup Token"
msgstr "Token prijave"

View File

@ -27,7 +27,7 @@
</xpath>
<!-- hide field set_password -->
<field name="new_password" position="replace">
<field name="new_password" groups="base.group_no_one"/>
<field name="new_password" groups="base.group_no_one" password="True"/>
</field>
</field>
</record>

View File

@ -2,43 +2,6 @@
<openerp>
<data>
<!-- Read/Unread actions -->
<record id="actions_server_crm_meeting_read" model="ir.actions.server">
<field name="name">CRM Meeting: Mark read</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_crm_meeting"/>
<field name="state">code</field>
<field name="code">self.message_mark_as_read(cr, uid, context.get('active_ids'), context=context)</field>
</record>
<record id="action_crm_meeting_read" model="ir.values">
<field name="name">action_crm_meeting_read</field>
<field name="action_id" ref="actions_server_crm_meeting_read"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_meeting_read'))"/>
<field name="key">action</field>
<field name="model_id" ref="model_crm_meeting"/>
<field name="model">crm.meeting</field>
<field name="key2">client_action_multi</field>
</record>
<record id="actions_server_crm_meeting_unread" model="ir.actions.server">
<field name="name">CRM Meeting: Mark unread</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_crm_meeting"/>
<field name="state">code</field>
<field name="code">self.message_mark_as_unread(cr, uid, context.get('active_ids'), context=context)</field>
</record>
<record id="action_crm_meeting_unread" model="ir.values">
<field name="name">action_crm_meeting_unread</field>
<field name="action_id" ref="actions_server_crm_meeting_unread"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_meeting_unread'))"/>
<field name="key">action</field>
<field name="model_id" ref="model_crm_meeting"/>
<field name="model">crm.meeting</field>
<field name="key2">client_action_multi</field>
</record>
<!-- CRM Meetings Types Form View -->

View File

@ -8,14 +8,15 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-03 16:03+0000\n"
"PO-Revision-Date: 2012-12-01 11:25+0000\n"
"Last-Translator: Luiz Fernando M.França <Unknown>\n"
"PO-Revision-Date: 2012-12-07 22:49+0000\n"
"Last-Translator: Fábio Martinelli - http://zupy.com.br "
"<webmaster@guaru.net>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:50+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: base_calendar
#: selection:calendar.alarm,trigger_related:0
@ -364,6 +365,9 @@ msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
"Contém o resumo da conversação (número de mensagens, ...). Este resumo é "
"gerado diretamente em formato HTML para que possa ser inserido nas visões "
"kanban."
#. module: base_calendar
#: code:addons/base_calendar/base_calendar.py:388
@ -518,7 +522,7 @@ msgstr "Email"
#. module: base_calendar
#: model:ir.actions.server,name:base_calendar.actions_server_crm_meeting_unread
msgid "CRM Meeting: Mark unread"
msgstr ""
msgstr "CRM Reunião : Marcar como não lida"
#. module: base_calendar
#: selection:calendar.alarm,state:0
@ -1061,7 +1065,7 @@ msgstr "Intervalo"
#. module: base_calendar
#: model:ir.actions.server,name:base_calendar.actions_server_crm_meeting_read
msgid "CRM Meeting: Mark read"
msgstr ""
msgstr "CRM Reunião: Marcar como lida"
#. module: base_calendar
#: selection:calendar.event,week_list:0
@ -1173,7 +1177,7 @@ msgstr "Detalhes do Lembrete"
#. module: base_calendar
#: model:crm.meeting.type,name:base_calendar.categ_meet3
msgid "Off-site Meeting"
msgstr ""
msgstr "Reunião Externa"
#. module: base_calendar
#: view:crm.meeting:0

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-12-03 16:03+0000\n"
"PO-Revision-Date: 2011-02-15 15:37+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-12-07 10:31+0000\n"
"Last-Translator: WANTELLET Sylvain <Swantellet@tetra-info.com>\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-12-04 05:53+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: base_crypt
#: model:ir.model,name:base_crypt.model_res_users
msgid "Users"
msgstr ""
msgstr "Utilisateurs"
#, python-format
#~ msgid "Error"

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-12-03 16:03+0000\n"
"PO-Revision-Date: 2011-12-19 12:11+0000\n"
"Last-Translator: Tomislav Bosnjakovic <Unknown>\n"
"PO-Revision-Date: 2012-12-09 19:40+0000\n"
"Last-Translator: Goran Kliska <gkliska@gmail.com>\n"
"Language-Team: Croatian <hr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:53+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: base_crypt
#: model:ir.model,name:base_crypt.model_res_users
msgid "Users"
msgstr ""
msgstr "Korisnici"
#~ msgid ""
#~ "This module replaces the cleartext password in the database with a password "

View File

@ -0,0 +1,23 @@
# Indonesian 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-12-03 16:03+0000\n"
"PO-Revision-Date: 2012-12-09 08:46+0000\n"
"Last-Translator: Budhi Hartono <klikmaxima@gmail.com>\n"
"Language-Team: Indonesian <id@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-12-10 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: base_crypt
#: model:ir.model,name:base_crypt.model_res_users
msgid "Users"
msgstr "Pengguna"

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-12-03 16:03+0000\n"
"PO-Revision-Date: 2011-03-15 23:59+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-12-07 08:15+0000\n"
"Last-Translator: Denis Karataev <dskarataev@gmail.com>\n"
"Language-Team: Russian <ru@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-12-04 05:53+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: base_crypt
#: model:ir.model,name:base_crypt.model_res_users
msgid "Users"
msgstr ""
msgstr "Пользователи"
#~ msgid "res.users"
#~ msgstr "res.users"

View File

@ -24,7 +24,7 @@
'category': 'Tools',
'description': """
Automated Translations through Gengo API
----------------------------------------
========================================
This module will install passive scheduler job for automated translations
using the Gengo API. To activate it, you must

View File

@ -0,0 +1,249 @@
# Croatian 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-12-03 16:03+0000\n"
"PO-Revision-Date: 2012-12-09 20:02+0000\n"
"Last-Translator: Goran Kliska <gkliska@gmail.com>\n"
"Language-Team: Croatian <hr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: base_gengo
#: view:res.company:0
msgid "Comments for Translator"
msgstr "Komentari prevoditelju"
#. module: base_gengo
#: field:ir.translation,job_id:0
msgid "Gengo Job ID"
msgstr ""
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:114
#, python-format
msgid "This language is not supported by the Gengo translation services."
msgstr ""
#. module: base_gengo
#: field:res.company,gengo_comment:0
msgid "Comments"
msgstr "Komentari"
#. module: base_gengo
#: field:res.company,gengo_private_key:0
msgid "Gengo Private Key"
msgstr "Gengo privatni ključ"
#. module: base_gengo
#: model:ir.model,name:base_gengo.model_base_gengo_translations
msgid "base.gengo.translations"
msgstr ""
#. module: base_gengo
#: help:res.company,gengo_auto_approve:0
msgid "Jobs are Automatically Approved by Gengo."
msgstr ""
#. module: base_gengo
#: field:base.gengo.translations,lang_id:0
msgid "Language"
msgstr "Jezik"
#. module: base_gengo
#: field:ir.translation,gengo_comment:0
msgid "Comments & Activity Linked to Gengo"
msgstr ""
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:124
#, python-format
msgid "Gengo Sync Translation (Response)"
msgstr ""
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:72
#, python-format
msgid ""
"Gengo `Public Key` or `Private Key` are missing. Enter your Gengo "
"authentication parameters under `Settings > Companies > Gengo Parameters`."
msgstr ""
#. module: base_gengo
#: selection:ir.translation,gengo_translation:0
msgid "Translation By Machine"
msgstr ""
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:155
#, python-format
msgid ""
"%s\n"
"\n"
"--\n"
" Commented on %s by %s."
msgstr ""
#. module: base_gengo
#: field:ir.translation,gengo_translation:0
msgid "Gengo Translation Service Level"
msgstr ""
#. module: base_gengo
#: constraint:ir.translation:0
msgid ""
"The Gengo translation service selected is not supported for this language."
msgstr ""
#. module: base_gengo
#: selection:ir.translation,gengo_translation:0
msgid "Standard"
msgstr "Standardni"
#. module: base_gengo
#: help:ir.translation,gengo_translation:0
msgid ""
"You can select here the service level you want for an automatic translation "
"using Gengo."
msgstr ""
#. module: base_gengo
#: field:base.gengo.translations,restart_send_job:0
msgid "Restart Sending Job"
msgstr ""
#. module: base_gengo
#: view:ir.translation:0
msgid "To Approve In Gengo"
msgstr ""
#. module: base_gengo
#: view:res.company:0
msgid "Private Key"
msgstr "Privatni ključ"
#. module: base_gengo
#: view:res.company:0
msgid "Public Key"
msgstr "Javni ključ"
#. module: base_gengo
#: field:res.company,gengo_public_key:0
msgid "Gengo Public Key"
msgstr "Gengo Javni ključ"
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:123
#, python-format
msgid "Gengo Sync Translation (Request)"
msgstr ""
#. module: base_gengo
#: view:ir.translation:0
msgid "Translations"
msgstr "Prijevodi"
#. module: base_gengo
#: field:res.company,gengo_auto_approve:0
msgid "Auto Approve Translation ?"
msgstr ""
#. module: base_gengo
#: model:ir.actions.act_window,name:base_gengo.action_wizard_base_gengo_translations
#: model:ir.ui.menu,name:base_gengo.menu_action_wizard_base_gengo_translations
msgid "Gengo: Manual Request of Translation"
msgstr ""
#. module: base_gengo
#: code:addons/base_gengo/ir_translation.py:62
#: code:addons/base_gengo/wizard/base_gengo_translations.py:109
#, python-format
msgid "Gengo Authentication Error"
msgstr ""
#. module: base_gengo
#: model:ir.model,name:base_gengo.model_res_company
msgid "Companies"
msgstr "Organizacije"
#. module: base_gengo
#: view:ir.translation:0
msgid ""
"Note: If the translation state is 'In Progress', it means that the "
"translation has to be approved to be uploaded in this system. You are "
"supposed to do that directly by using your Gengo Account"
msgstr ""
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:82
#, python-format
msgid ""
"Gengo connection failed with this message:\n"
"``%s``"
msgstr ""
#. module: base_gengo
#: view:res.company:0
msgid "Gengo Parameters"
msgstr ""
#. module: base_gengo
#: view:base.gengo.translations:0
msgid "Send"
msgstr "Pošalji"
#. module: base_gengo
#: selection:ir.translation,gengo_translation:0
msgid "Ultra"
msgstr ""
#. module: base_gengo
#: model:ir.model,name:base_gengo.model_ir_translation
msgid "ir.translation"
msgstr ""
#. module: base_gengo
#: view:ir.translation:0
msgid "Gengo Translation Service"
msgstr ""
#. module: base_gengo
#: selection:ir.translation,gengo_translation:0
msgid "Pro"
msgstr ""
#. module: base_gengo
#: view:base.gengo.translations:0
msgid "Gengo Request Form"
msgstr ""
#. module: base_gengo
#: code:addons/base_gengo/wizard/base_gengo_translations.py:114
#, python-format
msgid "Warning"
msgstr "Upozoranje"
#. module: base_gengo
#: help:res.company,gengo_comment:0
msgid ""
"This comment will be automatically be enclosed in each an every request sent "
"to Gengo"
msgstr ""
#. module: base_gengo
#: view:base.gengo.translations:0
msgid "Cancel"
msgstr "Otkaži"
#. module: base_gengo
#: view:base.gengo.translations:0
msgid "or"
msgstr ""

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-29 15:28+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-12-07 10:31+0000\n"
"Last-Translator: Numérigraphe <Unknown>\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-11-30 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
"X-Launchpad-Export-Date: 2012-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: base_import
#. openerp-web
@ -1016,7 +1016,7 @@ msgstr ""
#: code:addons/base_import/static/src/xml/import.xml:170
#, python-format
msgid "CSV file for Products"
msgstr ""
msgstr "Fichier CSV des articles"
#. module: base_import
#. openerp-web

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -20,7 +20,6 @@
#
##############################################################################
import time
import wizard
import osv
import pooler
import urllib

View File

@ -7,19 +7,20 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-01-13 19:44+0000\n"
"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n"
"PO-Revision-Date: 2012-12-08 12:33+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:52+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-09 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: base_setup
#: view:sale.config.settings:0
msgid "Emails Integration"
msgstr ""
msgstr "EMail Integration"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
@ -29,7 +30,7 @@ msgstr "Gast"
#. module: base_setup
#: view:sale.config.settings:0
msgid "Contacts"
msgstr ""
msgstr "Kontakte"
#. module: base_setup
#: model:ir.model,name:base_setup.model_base_config_settings
@ -41,6 +42,8 @@ msgstr ""
msgid ""
"Use external authentication providers, sign in with google, facebook, ..."
msgstr ""
"Benutzen Sie eine externe Authentifizierung, z.B. von Anbietern wie google, "
"facebook, ..."
#. module: base_setup
#: view:sale.config.settings:0
@ -54,6 +57,16 @@ msgid ""
"OpenERP using specific\n"
" plugins for your preferred email application."
msgstr ""
"OpenERP ermöglicht die automatische Erstellung von Interessenten (und "
"anderen Belegen)\n"
" aus eingehenden EMails. Sie können Ihren "
"EMail Posteingang regelmässig synchronisieren, indem\n"
" Sie hierzu Ihre POP/IMAP Konten anbinden "
"und dann ein Script zur direkten EMail Integration \n"
" regelmässig anwenden, oder indem Sie "
"selektiv mit Hilfe eines Plugins für Ihre persönliche Arbeitsplatz \n"
" Mailanwendung bestimmte EMails nach "
"OpenERP transferieren."
#. module: base_setup
#: selection:base.setup.terminology,partner:0
@ -63,24 +76,24 @@ msgstr "Mitglied"
#. module: base_setup
#: view:base.config.settings:0
msgid "Portal access"
msgstr ""
msgstr "Portal Zugang"
#. module: base_setup
#: view:base.config.settings:0
msgid "Authentication"
msgstr ""
msgstr "Authentifizierung"
#. module: base_setup
#: view:sale.config.settings:0
msgid "Quotations and Sales Orders"
msgstr ""
msgstr "Angebote und Aufträge"
#. module: base_setup
#: view:base.config.settings:0
#: model:ir.actions.act_window,name:base_setup.action_general_configuration
#: model:ir.ui.menu,name:base_setup.menu_general_configuration
msgid "General Settings"
msgstr ""
msgstr "Grundeinstellungen"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
@ -90,12 +103,12 @@ msgstr "Spender"
#. module: base_setup
#: view:base.config.settings:0
msgid "Email"
msgstr ""
msgstr "EMail"
#. module: base_setup
#: field:sale.config.settings,module_crm:0
msgid "CRM"
msgstr ""
msgstr "CRM"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
@ -105,17 +118,17 @@ msgstr "Patient"
#. module: base_setup
#: field:base.config.settings,module_base_import:0
msgid "Allow users to import data from CSV files"
msgstr ""
msgstr "Ermöglicht Benutzern Import von .csv Dateien"
#. module: base_setup
#: field:base.config.settings,module_multi_company:0
msgid "Manage multiple companies"
msgstr ""
msgstr "Multi-Company Management"
#. module: base_setup
#: help:base.config.settings,module_portal:0
msgid "Give access your customers and suppliers to their documents."
msgstr ""
msgstr "Erlauben Sie Kunden oder Lieferanten Zugriff auf Ihre Belege"
#. module: base_setup
#: view:sale.config.settings:0
@ -125,12 +138,12 @@ msgstr ""
#. module: base_setup
#: field:sale.config.settings,module_web_linkedin:0
msgid "Get contacts automatically from linkedIn"
msgstr ""
msgstr "Kontakte aus linkedin Netzwerk importieren"
#. module: base_setup
#: field:sale.config.settings,module_plugin_thunderbird:0
msgid "Enable Thunderbird plug-in"
msgstr ""
msgstr "Aktiviere Thunderbird Plug-In"
#. module: base_setup
#: view:base.setup.terminology:0
@ -140,22 +153,22 @@ msgstr "res_config_contents"
#. module: base_setup
#: view:sale.config.settings:0
msgid "Customer Features"
msgstr ""
msgstr "Kunden Features"
#. module: base_setup
#: view:base.config.settings:0
msgid "Import / Export"
msgstr ""
msgstr "Import / Export"
#. module: base_setup
#: view:sale.config.settings:0
msgid "Sale Features"
msgstr ""
msgstr "Verkauf Features"
#. module: base_setup
#: field:sale.config.settings,module_plugin_outlook:0
msgid "Enable Outlook plug-in"
msgstr ""
msgstr "Aktiviere Outlook Plugin"
#. module: base_setup
#: view:base.setup.terminology:0
@ -174,7 +187,7 @@ msgstr "Mieter"
#. module: base_setup
#: help:base.config.settings,module_share:0
msgid "Share or embbed any screen of openerp."
msgstr ""
msgstr "Teilen oder einbetten von OpenERP Ansichten"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
@ -187,6 +200,9 @@ msgid ""
"When you create a new contact (person or company), you will be able to load "
"all the data from LinkedIn (photos, address, etc)."
msgstr ""
"Wenn Sie einen neuen Kontakt erstellen (Person oder Firma) können Sie "
"sämtliche in linkedin verknüpften Kontaktdaten einfach als neue Kontakte "
"bzw. Ansprechpartner importieren (Photo, Adresse, etc.)"
#. module: base_setup
#: help:base.config.settings,module_multi_company:0
@ -195,6 +211,9 @@ msgid ""
"companies.\n"
" This installs the module multi_company."
msgstr ""
"Arbeiten Sie in einer Multi-Company Organisation, und wenden Sie die "
"entsprechenden Berechtigungen für den wechselseitigen Unternehmenszugriff "
"einfach an."
#. module: base_setup
#: view:base.config.settings:0
@ -202,6 +221,9 @@ msgid ""
"You will find more options in your company details: address for the header "
"and footer, overdue payments texts, etc."
msgstr ""
"Sie finden weitere Optionen unter Ihren Unternehmenseinstellungen: "
"Adressanschrift für Kopf- und Fußzeile, Mahntexte für überfällige Zahlungen, "
"u.s.w."
#. module: base_setup
#: model:ir.model,name:base_setup.model_sale_config_settings
@ -227,6 +249,8 @@ msgstr "Klient"
#: help:base.config.settings,module_auth_anonymous:0
msgid "Enable the public part of openerp, openerp becomes a public website."
msgstr ""
"Aktivieren Sie den globalen Zugriff auf veröffentliche Bereiche und "
"Dokumente , OpenERP wird dadurch auch öffentlich verfügbar.."
#. module: base_setup
#: help:sale.config.settings,module_plugin_thunderbird:0
@ -239,6 +263,15 @@ msgid ""
" Partner from the selected emails.\n"
" This installs the module plugin_thunderbird."
msgstr ""
"Die Erweiterung erlaubt es, EMails inklusive Anhänge bei ausgewählten\n"
"                 OpenERP Objekten zu archivieren. Sie können bei der Auswahl "
"entscheiden, ob Sie den Anhang \n"
" als .eml Dateianhang beim Kunden oder bei einem "
"Interessenten zuordnen. Sie können auch neue \n"
" Dokumente anlegen, z.B. für einen neuen Interessenten (CRM "
"Lead), indem Sie die Auswahl\n"
" \"Neues Dokument\" anklicken. Durch Ihre Auswahl wird das "
"Modul plugin_thunderbird installiert."
#. module: base_setup
#: selection:base.setup.terminology,partner:0
@ -254,7 +287,7 @@ msgstr "Verwenden Sie ein anderes Wort für \"Kunde\""
#: model:ir.actions.act_window,name:base_setup.action_sale_config
#: view:sale.config.settings:0
msgid "Configure Sales"
msgstr ""
msgstr "Konfiguriere Verkauf"
#. module: base_setup
#: help:sale.config.settings,module_plugin_outlook:0
@ -267,36 +300,45 @@ msgid ""
" email into an OpenERP mail message with attachments.\n"
" This installs the module plugin_outlook."
msgstr ""
"Das Outlook Plugin erlaubt es, EMails inklusive Anhänge bei ausgewählten\n"
"                 OpenERP Objekten zu archivieren. Sie können bei der Auswahl "
"entscheiden, ob Sie den Anhang \n"
" als .eml Dateianhang beim Kunden oder bei einem "
"Interessenten zuordnen. Sie können auch neue \n"
" Dokumente anlegen, z.B. für einen neuen Interessenten (CRM "
"Lead), indem Sie die Auswahl\n"
" \"Neues Dokument\" anklicken. Durch Ihre Auswahl wird das "
"Modul plugin_outlook installiert."
#. module: base_setup
#: view:base.config.settings:0
msgid "Options"
msgstr ""
msgstr "Optionen"
#. module: base_setup
#: field:base.config.settings,module_portal:0
msgid "Activate the customer/supplier portal"
msgstr ""
msgstr "Aktivierung Kunden / Lieferanten Portal"
#. module: base_setup
#: field:base.config.settings,module_share:0
msgid "Allow documents sharing"
msgstr ""
msgstr "Ermögliche Dokumentenfreigabe"
#. module: base_setup
#: field:base.config.settings,module_auth_anonymous:0
msgid "Activate the public portal"
msgstr ""
msgstr "Aktivierung des öffentlichen Portals"
#. module: base_setup
#: view:base.config.settings:0
msgid "Configure outgoing email servers"
msgstr ""
msgstr "Konfigurieren des ausgehenden Mailservers"
#. module: base_setup
#: view:sale.config.settings:0
msgid "Social Network Integration"
msgstr ""
msgstr "Integration Soziale Netzwerke"
#. module: base_setup
#: view:base.config.settings:0
@ -308,7 +350,7 @@ msgstr "Abbruch"
#: view:base.config.settings:0
#: view:sale.config.settings:0
msgid "Apply"
msgstr ""
msgstr "Anwenden"
#. module: base_setup
#: view:base.setup.terminology:0
@ -319,12 +361,12 @@ msgstr "Spezifizieren Sie Ihre Terminologie"
#: view:base.config.settings:0
#: view:sale.config.settings:0
msgid "or"
msgstr ""
msgstr "oder"
#. module: base_setup
#: view:base.config.settings:0
msgid "Configure your company data"
msgstr ""
msgstr "Konfigurieren Sie Ihre Unternehmensdaten"
#~ msgid "City"
#~ msgstr "Stadt"

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-12-04 10:03+0000\n"
"PO-Revision-Date: 2012-12-07 10:32+0000\n"
"Last-Translator: WANTELLET Sylvain <Swantellet@tetra-info.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-05 05:19+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-08 04:58+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: base_setup
#: view:sale.config.settings:0
@ -63,12 +63,12 @@ msgstr "Membre"
#. module: base_setup
#: view:base.config.settings:0
msgid "Portal access"
msgstr ""
msgstr "Accès au portail"
#. module: base_setup
#: view:base.config.settings:0
msgid "Authentication"
msgstr ""
msgstr "Authentification"
#. module: base_setup
#: view:sale.config.settings:0
@ -80,7 +80,7 @@ msgstr "Devis et bons de commande"
#: model:ir.actions.act_window,name:base_setup.action_general_configuration
#: model:ir.ui.menu,name:base_setup.menu_general_configuration
msgid "General Settings"
msgstr ""
msgstr "Paramètres généraux"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
@ -95,7 +95,7 @@ msgstr ""
#. module: base_setup
#: field:sale.config.settings,module_crm:0
msgid "CRM"
msgstr ""
msgstr "CRM"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
@ -125,7 +125,7 @@ msgstr ""
#. module: base_setup
#: field:sale.config.settings,module_web_linkedin:0
msgid "Get contacts automatically from linkedIn"
msgstr ""
msgstr "Récupérer les contacts automatiquement de LinkedIn"
#. module: base_setup
#: field:sale.config.settings,module_plugin_thunderbird:0
@ -145,7 +145,7 @@ msgstr ""
#. module: base_setup
#: view:base.config.settings:0
msgid "Import / Export"
msgstr ""
msgstr "Import / Export"
#. module: base_setup
#: view:sale.config.settings:0

View File

@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-24 18:22+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"PO-Revision-Date: 2012-12-09 18:22+0000\n"
"Last-Translator: Leen Sonneveld <leen.sonneveld@opensol.nl>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:52+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: base_setup
#: view:sale.config.settings:0
msgid "Emails Integration"
msgstr "E-mail intergratie"
msgstr "E-mail integratie"
#. module: base_setup
#: selection:base.setup.terminology,partner:0

View File

@ -60,6 +60,7 @@ class sale_config_settings(osv.osv_memory):
'module_web_linkedin': fields.boolean('Get contacts automatically from linkedIn',
help="""When you create a new contact (person or company), you will be able to load all the data from LinkedIn (photos, address, etc)."""),
'module_crm': fields.boolean('CRM'),
'module_sale' : fields.boolean('SALE'),
'module_plugin_thunderbird': fields.boolean('Enable Thunderbird plug-in',
help="""The plugin allows you archive email and its attachments to the selected
OpenERP objects. You can select a partner, or a lead and

View File

@ -105,7 +105,8 @@
</div>
</group>
</div>
<div name="customer feature">
<div name="customer feature" attrs="{'invisible': [('module_sale','=',False)]}">
<field name="module_sale" invisible="1"/>
<separator string="Quotations and Sales Orders"/>
<group name="Customer">
<label for="id" string="Customer Features"/>

View File

@ -0,0 +1,91 @@
# 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-12-03 16:03+0000\n"
"PO-Revision-Date: 2012-12-08 13:50+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-09 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: base_status
#: code:addons/base_status/base_state.py:107
#, python-format
msgid "Error !"
msgstr "Fehler !"
#. module: base_status
#: code:addons/base_status/base_stage.py:326
#: code:addons/base_status/base_state.py:187
#, python-format
msgid "%s has been <b>opened</b>."
msgstr "%s wurde <b>eröffnet</b>."
#. module: base_status
#: code:addons/base_status/base_stage.py:350
#: code:addons/base_status/base_state.py:220
#, python-format
msgid "%s has been <b>renewed</b>."
msgstr "%s wurde <b>erneuert</b>."
#. module: base_status
#: code:addons/base_status/base_stage.py:211
#, python-format
msgid "Error!"
msgstr "Fehler !"
#. module: base_status
#: code:addons/base_status/base_state.py:107
#, python-format
msgid ""
"You can not escalate, you are already at the top level regarding your sales-"
"team category."
msgstr ""
"Keine weitere Eskalation möglich, da Sie bereits die obersten Ebene erreicht "
"haben."
#. module: base_status
#: code:addons/base_status/base_stage.py:344
#: code:addons/base_status/base_state.py:214
#, python-format
msgid "%s is now <b>pending</b>."
msgstr "%s wurde geändert auf <b>Wiedervorlage</b>."
#. module: base_status
#: code:addons/base_status/base_stage.py:338
#, python-format
msgid "%s has been <b>cancelled</b>."
msgstr "%s wurde <b>abgebrochen</b>."
#. module: base_status
#: code:addons/base_status/base_state.py:208
#, python-format
msgid "%s has been <b>canceled</b>."
msgstr "%s wurde <b>abgebrochen</b>."
#. module: base_status
#: code:addons/base_status/base_stage.py:211
#, python-format
msgid ""
"You are already at the top level of your sales-team category.\n"
"Therefore you cannot escalate furthermore."
msgstr ""
"Keine weitere Eskalation möglich, da Sie bereits die obersten Ebene erreicht "
"haben."
#. module: base_status
#: code:addons/base_status/base_stage.py:332
#: code:addons/base_status/base_state.py:202
#, python-format
msgid "%s has been <b>closed</b>."
msgstr "%s wurde <b>beendet</b>."

View File

@ -0,0 +1,88 @@
# Croatian 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-12-03 16:03+0000\n"
"PO-Revision-Date: 2012-12-09 19:46+0000\n"
"Last-Translator: Goran Kliska <gkliska@gmail.com>\n"
"Language-Team: Croatian <hr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: base_status
#: code:addons/base_status/base_state.py:107
#, python-format
msgid "Error !"
msgstr "Greška !"
#. module: base_status
#: code:addons/base_status/base_stage.py:326
#: code:addons/base_status/base_state.py:187
#, python-format
msgid "%s has been <b>opened</b>."
msgstr "%s je <b>otvoren</b>."
#. module: base_status
#: code:addons/base_status/base_stage.py:350
#: code:addons/base_status/base_state.py:220
#, python-format
msgid "%s has been <b>renewed</b>."
msgstr "%s je <b>obnovljen</b>."
#. module: base_status
#: code:addons/base_status/base_stage.py:211
#, python-format
msgid "Error!"
msgstr "Greška!"
#. module: base_status
#: code:addons/base_status/base_state.py:107
#, python-format
msgid ""
"You can not escalate, you are already at the top level regarding your sales-"
"team category."
msgstr "Ne možete eskaliarati. Vi ste na vrhu hijerarhije prodajnog tima."
#. module: base_status
#: code:addons/base_status/base_stage.py:344
#: code:addons/base_status/base_state.py:214
#, python-format
msgid "%s is now <b>pending</b>."
msgstr "%s je sada <b>na čekanju</b>."
#. module: base_status
#: code:addons/base_status/base_stage.py:338
#, python-format
msgid "%s has been <b>cancelled</b>."
msgstr "%s je <b>otkazan</b>."
#. module: base_status
#: code:addons/base_status/base_state.py:208
#, python-format
msgid "%s has been <b>canceled</b>."
msgstr "%s je <b>otkazan</b>."
#. module: base_status
#: code:addons/base_status/base_stage.py:211
#, python-format
msgid ""
"You are already at the top level of your sales-team category.\n"
"Therefore you cannot escalate furthermore."
msgstr ""
"Vi ste na vrhu hijerarhije prodajnog tima.\n"
"Stoga ne možete dalje eskalirati."
#. module: base_status
#: code:addons/base_status/base_stage.py:332
#: code:addons/base_status/base_state.py:202
#, python-format
msgid "%s has been <b>closed</b>."
msgstr "%s je <b>zatvoren</b>."

View File

@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:03+0000\n"
"PO-Revision-Date: 2011-01-01 13:29+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"PO-Revision-Date: 2012-12-09 20:30+0000\n"
"Last-Translator: Sergio Corato <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:19+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-10 04:37+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: base_vat
#: view:res.partner:0
msgid "Check Validity"
msgstr ""
msgstr "Verifica Validità"
#. module: base_vat
#: code:addons/base_vat/base_vat.py:147
@ -28,22 +28,24 @@ msgid ""
"This VAT number does not seem to be valid.\n"
"Note: the expected format is %s"
msgstr ""
"Questo numero IVA non sembra essere valido.\n"
"Nota: il formato atteso è %s"
#. module: base_vat
#: field:res.company,vat_check_vies:0
msgid "VIES VAT Check"
msgstr ""
msgstr "Verifica IVA VIES"
#. module: base_vat
#: model:ir.model,name:base_vat.model_res_company
msgid "Companies"
msgstr ""
msgstr "Aziende"
#. module: base_vat
#: code:addons/base_vat/base_vat.py:111
#, python-format
msgid "Error!"
msgstr ""
msgstr "Errore!"
#. module: base_vat
#: help:res.partner,vat_subjected:0
@ -65,6 +67,9 @@ msgid ""
"If checked, Partners VAT numbers will be fully validated against EU's VIES "
"service rather than via a simple format validation (checksum)."
msgstr ""
"Se selezionato, i numeri IVA dei Patner saranno validati interamente con il "
"service VIES UE invece che con una semplice validazione del formato (cifra "
"di controllo)."
#. module: base_vat
#: field:res.partner,vat_subjected:0

View File

@ -176,18 +176,21 @@ instance.web.form.DashBoard = instance.web.form.FormWidget.extend({
action = result,
view_mode = action_attrs.view_mode;
if (action_attrs.context && action_attrs.context['dashboard_merge_domains_contexts'] === false) {
// evaluate action_attrs context and domain
action_attrs.context = instance.web.pyeval.eval(
'context', action_attrs.context || {});
action_attrs.domain = instance.web.pyeval.eval(
'domain', action_attrs.domain || [], action_attrs.context);
if (action_attrs.context['dashboard_merge_domains_contexts'] === false) {
// TODO: replace this 6.1 workaround by attribute on <action/>
action.context = action_attrs.context || {};
action.domain = action_attrs.domain || [];
} else {
if (action_attrs.context) {
action.context = _.extend((action.context || {}), action_attrs.context);
}
if (action_attrs.domain) {
action.domain = action.domain || [];
action.domain.unshift.apply(action.domain, action_attrs.domain);
}
action.context = instance.web.pyeval.eval(
'contexts', [action.context || {}, action_attrs.context]);
action.domain = instance.web.pyeval.eval(
'domains', [action_attrs.domain, action.domain || []],
action.context)
}
var action_orig = _.extend({ flags : {} }, action);

View File

@ -8,29 +8,29 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2011-01-30 20:43+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-12-08 19:14+0000\n"
"Last-Translator: Kaare Pettersen <Unknown>\n"
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:23+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-09 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: claim_from_delivery
#: view:stock.picking.out:0
msgid "Claims"
msgstr ""
msgstr "Kravene."
#. module: claim_from_delivery
#: model:res.request.link,name:claim_from_delivery.request_link_claim_from_delivery
msgid "Delivery Order"
msgstr ""
msgstr "Leveringsordre"
#. module: claim_from_delivery
#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery
msgid "Claim From Delivery"
msgstr ""
msgstr "Kravene fra leveringen."
#~ msgid "Claim from delivery"
#~ msgstr "Krav fra leveranse"

View File

@ -8,29 +8,29 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2011-07-04 05:17+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-12-09 04:11+0000\n"
"Last-Translator: sum1201 <Unknown>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:23+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: claim_from_delivery
#: view:stock.picking.out:0
msgid "Claims"
msgstr ""
msgstr "索赔"
#. module: claim_from_delivery
#: model:res.request.link,name:claim_from_delivery.request_link_claim_from_delivery
msgid "Delivery Order"
msgstr ""
msgstr "送货单"
#. module: claim_from_delivery
#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery
msgid "Claim From Delivery"
msgstr ""
msgstr "交货索赔"
#~ msgid "Claim from delivery"
#~ msgstr "送货单索赔"

View File

@ -0,0 +1,37 @@
# Croatian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-12-09 19:40+0000\n"
"Last-Translator: Goran Kliska <gkliska@gmail.com>\n"
"Language-Team: Croatian <hr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: contacts
#: model:ir.actions.act_window,help:contacts.action_contacts
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to add a contact in your address book.\n"
" </p><p>\n"
" OpenERP helps you easily track all activities related to\n"
" a customer; discussions, history of business opportunities,\n"
" documents, etc.\n"
" </p>\n"
" "
msgstr ""
#. module: contacts
#: model:ir.actions.act_window,name:contacts.action_contacts
#: model:ir.ui.menu,name:contacts.menu_contacts
msgid "Contacts"
msgstr "Kontakti"

View File

@ -0,0 +1,37 @@
# Chinese (Simplified) translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-12-09 04:58+0000\n"
"Last-Translator: sum1201 <Unknown>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-10 04:39+0000\n"
"X-Generator: Launchpad (build 16341)\n"
#. module: contacts
#: model:ir.actions.act_window,help:contacts.action_contacts
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to add a contact in your address book.\n"
" </p><p>\n"
" OpenERP helps you easily track all activities related to\n"
" a customer; discussions, history of business opportunities,\n"
" documents, etc.\n"
" </p>\n"
" "
msgstr ""
#. module: contacts
#: model:ir.actions.act_window,name:contacts.action_contacts
#: model:ir.ui.menu,name:contacts.menu_contacts
msgid "Contacts"
msgstr "联系人列表"

View File

@ -28,7 +28,7 @@
'summary': 'Leads, Opportunities, Phone Calls',
'description': """
The generic OpenERP Customer Relationship Management
=====================================================
====================================================
This application enables a group of people to intelligently and efficiently manage leads, opportunities, meetings and phone calls.
@ -67,15 +67,11 @@ Dashboard for CRM will include:
'security/crm_security.xml',
'security/ir.model.access.csv',
'wizard/crm_lead_to_partner_view.xml',
'wizard/crm_lead_to_opportunity_view.xml',
'wizard/crm_phonecall_to_phonecall_view.xml',
'wizard/crm_phonecall_to_partner_view.xml',
'wizard/crm_phonecall_to_opportunity_view.xml',
'wizard/crm_opportunity_to_phonecall_view.xml',
'wizard/crm_partner_to_opportunity_view.xml',
'wizard/crm_merge_opportunities_view.xml',
@ -109,6 +105,7 @@ Dashboard for CRM will include:
'test': [
'test/process/communication_with_customer.yml',
'test/process/lead2opportunity2win.yml',
'test/process/lead2opportunity_assign_salesmen.yml',
'test/process/merge_opportunity.yml',
'test/process/cancel_lead.yml',
'test/process/action_rule.yml',

View File

@ -197,8 +197,9 @@ class crm_case_categ(osv.osv):
def _find_object_id(self, cr, uid, context=None):
"""Finds id for case object"""
object_id = context and context.get('object_id', False) or False
ids = self.pool.get('ir.model').search(cr, uid, [('id', '=', object_id)])
context = context or {}
object_id = context.get('object_id', False)
ids = self.pool.get('ir.model').search(cr, uid, ['|',('id', '=', object_id),('model', '=', context.get('object_name', False))])
return ids and ids[0] or False
_defaults = {

View File

@ -1,7 +1,13 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!-- email server actions -->
<!-- demo automated actions add messge on new lead after 5 days -->
<record id="filter_draft_lead" model="ir.filters">
<field name="name">Draft Leads</field>
<field name="model_id">crm.lead</field>
<field name="domain">[('state','=','draft')]</field>
<field name="user_id" eval="False"/>
</record>
<record id="action_email_reminder_lead" model="ir.actions.server">
<field name="name">Reminder to User</field>
<field name="model_id" ref="model_crm_lead"/>
@ -10,46 +16,12 @@
<field name="state">email</field>
<field name="email">object.user_id.email</field>
<field name="subject">Reminder on Lead: [[object.id ]] [[object.partner_id and 'of ' +object.partner_id.name or '']]</field>
<field name="message">Hello [[object.user_id.name]],
can you check following lead, it's not open since 5 days ?
Lead: [[object.id ]]
Description:
[[object.description]]
Thanks,
<field name="message">Warning unprocessed incoming lead is more than 5 day old.
Name: [[object.name ]]
ID: [[object.id ]]
Description: [[object.description]]
</field>
</record>
<record id="action_email_reminder_customer_lead" model="ir.actions.server">
<field name="name">Reminder to Customer</field>
<field name="model_id" ref="model_crm_lead"/>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="state">email</field>
<field name="email">object.email_from</field>
<field name="subject">Reminder on Lead: [[object.id ]]</field>
<field name="message">Hello [[object.partner_id and object.partner_id.name or '']],
your following lead is not open since 5 days.
Lead: [[object.id ]]
Description:
[[object.description]]
Thanks,
</field>
</record>
<record id="filter_draft_lead" model="ir.filters">
<field name="name">Draft Leads</field>
<field name="model_id">crm.lead</field>
<field name="domain">[('state','=','draft')]</field>
<field name="user_id" eval="False"/>
</record>
<!-- automated actions -->
<record id="rule_set_reminder_lead" model="base.action.rule">
<field name="name">Set Auto Reminder on leads which are not open since 5 days.</field>
<field name="model_id" ref="model_crm_lead"/>
@ -58,16 +30,16 @@ Thanks,
<field name="trg_date_type">create</field>
<field name="trg_date_range">5</field>
<field name="trg_date_range_type">day</field>
<field name="server_action_ids" eval="[(6,0,[ref('action_email_reminder_customer_lead'), ref('action_email_reminder_lead')])]"/>
<field name="server_action_ids" eval="[(6,0,[ref('action_email_reminder_lead')])]"/>
</record>
<!-- demo automated actions add a followers on urgent USA leads -->
<record id="filter_usa_lead" model="ir.filters">
<field name="name">Leads from USA</field>
<field name="model_id">crm.lead</field>
<field name="domain">[('country_id','=','United States')]</field>
<field name="user_id" eval="False"/>
</record>
<record id="rule_set_followers_lead" model="base.action.rule">
<field name="name">Set Auto Followers on leads which are urgent and come from USA.</field>
<field name="model_id" ref="model_crm_lead"/>

View File

@ -30,6 +30,36 @@ from tools import html2plaintext
from base.res.res_partner import format_address
CRM_LEAD_FIELDS_TO_MERGE = ['name',
'partner_id',
'channel_id',
'company_id',
'country_id',
'section_id',
'stage_id',
'state_id',
'type_id',
'user_id',
'title',
'city',
'contact_name',
'description',
'email',
'fax',
'mobile',
'partner_name',
'phone',
'probability',
'planned_revenue',
'street',
'street2',
'zip',
'create_date',
'date_action_last',
'date_action_next',
'email_from',
'email_cc',
'partner_name']
CRM_LEAD_PENDING_STATES = (
crm.AVAILABLE_STATES[2][0], # Cancelled
crm.AVAILABLE_STATES[3][0], # Done
@ -120,11 +150,7 @@ class crm_lead(base_stage, format_address, osv.osv):
def _compute_day(self, cr, uid, ids, fields, args, context=None):
"""
@param cr: the current row, from the database cursor,
@param uid: the current users ID for security checks,
@param ids: List of Opendays IDs
@return: difference between current date and log date
@param context: A standard dictionary for contextual values
:return dict: difference between current date and log date
"""
cal_obj = self.pool.get('resource.calendar')
res_obj = self.pool.get('resource.resource')
@ -427,15 +453,46 @@ class crm_lead(base_stage, format_address, osv.osv):
"""
return self.set_priority(cr, uid, ids, '3')
def _merge_get_result_type(self, cr, uid, opps, context=None):
"""
Define the type of the result of the merge. If at least one of the
element to merge is an opp, the resulting new element will be an opp.
Otherwise it will be a lead.
We'll directly use a list of browse records instead of a list of ids
for performances' sake: it will spare a second browse of the
leads/opps.
:param list opps: list of browse records containing the leads/opps to process
:return string type: the type of the final element
"""
for opp in opps:
if (opp.type == 'opportunity'):
return 'opportunity'
return 'lead'
def _merge_data(self, cr, uid, ids, oldest, fields, context=None):
# prepare opportunity data into dictionary for merging
"""
Prepare lead/opp data into a dictionary for merging. Different types
of fields are processed in different ways:
- text: all the values are concatenated
- m2m and o2m: those fields aren't processed
- m2o: the first not null value prevails (the other are dropped)
- any other type of field: same as m2o
:param list ids: list of ids of the leads to process
:param list fields: list of leads' fields to process
:return dict data: contains the merged values
"""
opportunities = self.browse(cr, uid, ids, context=context)
def _get_first_not_null(attr):
if hasattr(oldest, attr):
return getattr(oldest, attr)
for opportunity in opportunities:
if hasattr(opportunity, attr):
return getattr(opportunity, attr)
for opp in opportunities:
if hasattr(opp, attr):
return getattr(opp, attr)
return False
def _get_first_not_null_id(attr):
@ -443,8 +500,9 @@ class crm_lead(base_stage, format_address, osv.osv):
return res and res.id or False
def _concat_all(attr):
return ', '.join(filter(lambda x: x, [getattr(opportunity, attr) or '' for opportunity in opportunities if hasattr(opportunity, attr)]))
return ', '.join(filter(lambda x: x, [getattr(opp, attr) or '' for opp in opportunities if hasattr(opp, attr)]))
# Process the fields' values
data = {}
for field_name in fields:
field_info = self._all_columns.get(field_name)
@ -459,30 +517,41 @@ class crm_lead(base_stage, format_address, osv.osv):
data[field_name] = _concat_all(field_name) #not lost
else:
data[field_name] = _get_first_not_null(field_name) #not lost
# Define the resulting type ('lead' or 'opportunity')
data['type'] = self._merge_get_result_type(cr, uid, opportunities, context)
return data
def _merge_find_oldest(self, cr, uid, ids, context=None):
"""
Return the oldest lead found among ids.
:param list ids: list of ids of the leads to inspect
:return object: browse record of the oldest of the leads
"""
if context is None:
context = {}
#TOCHECK: where pass 'convert' in context ?
if context.get('convert'):
ids = list(set(ids) - set(context.get('lead_ids', False)) )
#search opportunities order by create date
opportunity_ids = self.search(cr, uid, [('id', 'in', ids)], order='create_date' , context=context)
oldest_id = opportunity_ids[0]
return self.browse(cr, uid, oldest_id, context=context)
if context.get('convert'):
ids = list(set(ids) - set(context.get('lead_ids', [])))
# Search opportunities order by create date
opportunity_ids = self.search(cr, uid, [('id', 'in', ids)], order='create_date', context=context)
oldest_opp_id = opportunity_ids[0]
return self.browse(cr, uid, oldest_opp_id, context=context)
def _mail_body(self, cr, uid, lead, fields, title=False, context=None):
body = []
if title:
body.append("%s\n" % (title))
for field_name in fields:
field_info = self._all_columns.get(field_name)
if field_info is None:
continue
field = field_info.column
value = None
value = ''
if field._type == 'selection':
if hasattr(field.selection, '__call__'):
@ -493,24 +562,33 @@ class crm_lead(base_stage, format_address, osv.osv):
elif field._type == 'many2one':
if lead[field_name]:
value = lead[field_name].name_get()[0][1]
elif field._type == 'many2many':
if lead[field_name]:
for val in lead[field_name]:
field_value = val.name_get()[0][1]
value += field_value + ","
else:
value = lead[field_name]
body.append("%s: %s" % (field.string, value or ''))
return "\n".join(body + ['---'])
return "<br/>".join(body + ['<br/>'])
def _merge_notification(self, cr, uid, opportunity_id, opportunities, context=None):
def _merge_notify(self, cr, uid, opportunity_id, opportunities, context=None):
"""
Create a message gathering merged leads/opps information.
"""
#TOFIX: mail template should be used instead of fix body, subject text
details = []
merge_message = _('Merged opportunities')
result_type = self._merge_get_result_type(cr, uid, opportunities, context)
if result_type == 'lead':
merge_message = _('Merged leads')
else:
merge_message = _('Merged opportunities')
subject = [merge_message]
fields = ['name', 'partner_id', 'stage_id', 'section_id', 'user_id', 'categ_ids', 'channel_id', 'company_id', 'contact_name',
'email_from', 'phone', 'fax', 'mobile', 'state_id', 'description', 'probability', 'planned_revenue',
'country_id', 'city', 'street', 'street2', 'zip']
for opportunity in opportunities:
subject.append(opportunity.name)
title = "%s : %s" % (merge_message, opportunity.name)
details.append(self._mail_body(cr, uid, opportunity, fields, title=title, context=context))
details.append(self._mail_body(cr, uid, opportunity, CRM_LEAD_FIELDS_TO_MERGE, title=title, context=context))
# Chatter message's subject
subject = subject[0] + ": " + ", ".join(subject[1:])
@ -554,42 +632,41 @@ class crm_lead(base_stage, format_address, osv.osv):
def merge_opportunity(self, cr, uid, ids, context=None):
"""
To merge opportunities
:param ids: list of opportunities ids to merge
Different cases of merge:
- merge leads together = 1 new lead
- merge at least 1 opp with anything else (lead or opp) = 1 new opp
:param list ids: leads/opportunities ids to merge
:return int id: id of the resulting lead/opp
"""
if context is None: context = {}
#TOCHECK: where pass lead_ids in context?
lead_ids = context and context.get('lead_ids', []) or []
if len(ids) <= 1:
raise osv.except_osv(_('Warning!'),_('Please select more than one opportunity from the list view.'))
raise osv.except_osv(_('Warning!'),_('Please select more than one element (lead or opportunity) from the list view.'))
lead_ids = context.get('lead_ids', [])
ctx_opportunities = self.browse(cr, uid, lead_ids, context=context)
opportunities = self.browse(cr, uid, ids, context=context)
opportunities_list = list(set(opportunities) - set(ctx_opportunities))
oldest = self._merge_find_oldest(cr, uid, ids, context=context)
if ctx_opportunities :
if ctx_opportunities:
first_opportunity = ctx_opportunities[0]
tail_opportunities = opportunities_list + ctx_opportunities[1:]
else:
first_opportunity = opportunities_list[0]
tail_opportunities = opportunities_list[1:]
fields = ['partner_id', 'title', 'name', 'categ_ids', 'channel_id', 'city', 'company_id', 'contact_name', 'country_id', 'type_id', 'user_id', 'section_id', 'state_id', 'description', 'email', 'fax', 'mobile',
'partner_name', 'phone', 'probability', 'planned_revenue', 'street', 'street2', 'zip', 'create_date', 'date_action_last',
'date_action_next', 'email_from', 'email_cc', 'partner_name']
data = self._merge_data(cr, uid, ids, oldest, fields, context=context)
merged_data = self._merge_data(cr, uid, ids, oldest, CRM_LEAD_FIELDS_TO_MERGE, context=context)
# Merge messages and attachements into the first opportunity
self._merge_opportunity_history(cr, uid, first_opportunity.id, tail_opportunities, context=context)
self._merge_opportunity_attachments(cr, uid, first_opportunity.id, tail_opportunities, context=context)
# Merge notifications about loss of information
self._merge_notification(cr, uid, first_opportunity, opportunities, context=context)
self._merge_notify(cr, uid, first_opportunity, opportunities, context=context)
# Write merged data into first opportunity
self.write(cr, uid, [first_opportunity.id], data, context=context)
self.write(cr, uid, [first_opportunity.id], merged_data, context=context)
# Delete tail opportunities
self.unlink(cr, uid, [x.id for x in tail_opportunities], context=context)
@ -613,17 +690,17 @@ class crm_lead(base_stage, format_address, osv.osv):
stage_id = stage_ids and stage_ids[0] or False
return {
'planned_revenue': lead.planned_revenue,
'probability': lead.probability,
'name': lead.name,
'partner_id': customer and customer.id or False,
'user_id': (lead.user_id and lead.user_id.id),
'type': 'opportunity',
'stage_id': stage_id or False,
'date_action': time.strftime('%Y-%m-%d %H:%M:%S'),
'date_open': time.strftime('%Y-%m-%d %H:%M:%S'),
'email_from': customer and customer.email or lead.email_from,
'phone': customer and customer.phone or lead.phone,
'planned_revenue': lead.planned_revenue,
'probability': lead.probability,
'name': lead.name,
'partner_id': customer and customer.id or False,
'user_id': (lead.user_id and lead.user_id.id),
'type': 'opportunity',
'stage_id': stage_id or False,
'date_action': fields.datetime.now(),
'date_open': fields.datetime.now(),
'email_from': customer and customer.email or lead.email_from,
'phone': customer and customer.phone or lead.phone,
}
def convert_opportunity(self, cr, uid, ids, partner_id, user_ids=False, section_id=False, context=None):
@ -682,48 +759,75 @@ class crm_lead(base_stage, format_address, osv.osv):
return partner_id
def _lead_set_partner(self, cr, uid, lead, partner_id, context=None):
"""
Assign a partner to a lead.
:param object lead: browse record of the lead to process
:param int partner_id: identifier of the partner to assign
:return bool: True if the partner has properly been assigned
"""
res = False
res_partner = self.pool.get('res.partner')
if partner_id:
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)
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):
def handle_partner_assignation(self, cr, uid, ids, action='create', partner_id=False, context=None):
"""
Convert partner based on action.
Handle partner assignation during a lead conversion.
if action is 'create', create new partner with contact and assign lead to new partner_id.
otherwise assign lead to specified partner_id
otherwise assign lead to the specified partner_id
:param list ids: leads/opportunities ids to process
:param string action: what has to be done regarding partners (create it, assign an existing one, or nothing)
:param int partner_id: partner to assign if any
:return dict: dictionary organized as followed: {lead_id: partner_assigned_id}
"""
if context is None:
context = {}
#TODO this is a duplication of the handle_partner_assignation method of crm_phonecall
partner_ids = {}
# If a partner_id is given, force this partner for all elements
force_partner_id = partner_id
for lead in self.browse(cr, uid, ids, context=context):
# If the action is set to 'create' and no partner_id is set, create a new one
if action == 'create':
if not partner_id:
partner_id = self._create_lead_partner(cr, uid, lead, context)
partner_id = force_partner_id or self._create_lead_partner(cr, uid, lead, context)
self._lead_set_partner(cr, uid, lead, partner_id, context=context)
partner_ids[lead.id] = partner_id
return partner_ids
def allocate_salesman(self, cr, uid, ids, user_ids, team_id=False, context=None):
def allocate_salesman(self, cr, uid, ids, user_ids=None, team_id=False, context=None):
"""
Assign salesmen and salesteam to a batch of leads. If there are more
leads than salesmen, these salesmen will be assigned in round-robin.
E.g.: 4 salesmen (S1, S2, S3, S4) for 6 leads (L1, L2, ... L6). They
will be assigned as followed: L1 - S1, L2 - S2, L3 - S3, L4 - S4,
L5 - S1, L6 - S2.
:param list ids: leads/opportunities ids to process
:param list user_ids: salesmen to assign
:param int team_id: salesteam to assign
:return bool
"""
index = 0
for lead_id in ids:
value = {}
if team_id:
value['section_id'] = team_id
if index < len(user_ids):
if user_ids:
value['user_id'] = user_ids[index]
index += 1
# Cycle through user_ids
index = (index + 1) % len(user_ids)
if value:
self.write(cr, uid, [lead_id], value, context=context)
return True
def schedule_phonecall(self, cr, uid, ids, schedule_time, call_summary, desc, phone, contact_name, user_id=False, section_id=False, categ_id=False, action='schedule', context=None):
"""
action :('schedule','Schedule a call'), ('log','Log a call')
:param string action: ('schedule','Schedule a call'), ('log','Log a call')
"""
phonecall = self.pool.get('crm.phonecall')
model_data = self.pool.get('ir.model.data')
@ -738,17 +842,17 @@ class crm_lead(base_stage, format_address, osv.osv):
if not user_id:
user_id = lead.user_id and lead.user_id.id or False
vals = {
'name' : call_summary,
'opportunity_id' : lead.id,
'user_id' : user_id or False,
'categ_id' : categ_id or False,
'description' : desc or '',
'date' : schedule_time,
'section_id' : section_id or False,
'partner_id': lead.partner_id and lead.partner_id.id or False,
'partner_phone' : phone or lead.phone or (lead.partner_id and lead.partner_id.phone or False),
'partner_mobile' : lead.partner_id and lead.partner_id.mobile or False,
'priority': lead.priority,
'name': call_summary,
'opportunity_id': lead.id,
'user_id': user_id or False,
'categ_id': categ_id or False,
'description': desc or '',
'date': schedule_time,
'section_id': section_id or False,
'partner_id': lead.partner_id and lead.partner_id.id or False,
'partner_phone': phone or lead.phone or (lead.partner_id and lead.partner_id.phone or False),
'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], context=context)
@ -758,30 +862,50 @@ class crm_lead(base_stage, format_address, osv.osv):
self.schedule_phonecall_send_note(cr, uid, [lead.id], new_id, action, context=context)
return phonecall_dict
def redirect_opportunity_view(self, cr, uid, opportunity_id, context=None):
models_data = self.pool.get('ir.model.data')
# Get Opportunity views
form_view = models_data.get_object_reference(cr, uid, 'crm', 'crm_case_form_view_oppor')
tree_view = models_data.get_object_reference(cr, uid, 'crm', 'crm_case_tree_view_oppor')
# Get opportunity views
dummy, form_view = models_data.get_object_reference(cr, uid, 'crm', 'crm_case_form_view_oppor')
dummy, tree_view = models_data.get_object_reference(cr, uid, 'crm', 'crm_case_tree_view_oppor')
return {
'name': _('Opportunity'),
'view_type': 'form',
'view_mode': 'tree, form',
'res_model': 'crm.lead',
'domain': [('type', '=', 'opportunity')],
'res_id': int(opportunity_id),
'view_id': False,
'views': [(form_view and form_view[1] or False, 'form'),
(tree_view and tree_view[1] or False, 'tree'),
(False, 'calendar'), (False, 'graph')],
'type': 'ir.actions.act_window',
'name': _('Opportunity'),
'view_type': 'form',
'view_mode': 'tree, form',
'res_model': 'crm.lead',
'domain': [('type', '=', 'opportunity')],
'res_id': int(opportunity_id),
'view_id': False,
'views': [(form_view or False, 'form'),
(tree_view or False, 'tree'),
(False, 'calendar'), (False, 'graph')],
'type': 'ir.actions.act_window',
}
def redirect_lead_view(self, cr, uid, lead_id, context=None):
models_data = self.pool.get('ir.model.data')
# Get lead views
dummy, form_view = models_data.get_object_reference(cr, uid, 'crm', 'crm_case_form_view_leads')
dummy, tree_view = models_data.get_object_reference(cr, uid, 'crm', 'crm_case_tree_view_leads')
return {
'name': _('Lead'),
'view_type': 'form',
'view_mode': 'tree, form',
'res_model': 'crm.lead',
'domain': [('type', '=', 'lead')],
'res_id': int(lead_id),
'view_id': False,
'views': [(form_view or False, 'form'),
(tree_view or False, 'tree'),
(False, 'calendar'), (False, 'graph')],
'type': 'ir.actions.act_window',
}
def action_makeMeeting(self, cr, uid, ids, context=None):
""" This opens Meeting's calendar view to schedule meeting on current Opportunity
@return : Dictionary value for created Meeting view
"""
Open meeting's calendar view to schedule meeting on current opportunity.
:return dict: dictionary value for created Meeting view
"""
opportunity = self.browse(cr, uid, ids[0], context)
res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'base_calendar', 'action_crm_meeting', context)

View File

@ -247,7 +247,7 @@ Andrew</field>
<field name="contact_name">Bojing Hú</field>
<field name="partner_name">Incom Corporation</field>
<field name="email_from">bhu.a100@gmail.com</field>
<field name="partner_id" ref=""/>
<field name="partner_id" ref="base.res_partner_1"/>
<field name="country_id" ref="base.cn"/>
<field name="city">Shenzhen</field>
<field name="type_id" ref="type_lead3"/>
@ -548,6 +548,31 @@ Andrew</field>
<field eval="1" name="active"/>
</record>
<record id="crm_case_26" model="crm.lead">
<field name="type">opportunity</field>
<field name="name">Would appreciate more information about your products</field>
<field eval="11000" name="planned_revenue"/>
<field eval="45.0" name="probability"/>
<field name="partner_name">Agrolait</field>
<field name="email_from">info@agrolait.com</field>
<field name="partner_id" ref="base.res_partner_2"/>
<field name="street">69 rue de Chimay</field>
<field name="country_id" ref="base.be"/>
<field name="city">Wavre</field>
<field name="zip">1300</field>
<field name="type_id" ref="type_lead3"/>
<field name="categ_ids" eval="[(6, 0, [categ_oppor2])]"/>
<field name="channel_id" ref="crm_case_channel_website"/>
<field name="priority">3</field>
<field eval="time.strftime('%Y-%m-23')" name="date_deadline"/>
<field eval="time.strftime('%Y-%m-10')" name="date_action"/>
<field name="title_action">Send Catalogue by Email</field>
<field name="section_id" ref="crm_case_section_4"/>
<field name="user_id" ref="base.user_demo"/>
<field name="stage_id" ref="crm.stage_lead3"/>
<field eval="1" name="active"/>
</record>
<!-- Unsubscribe Admin from case15, subscribe Demo -->
<record id="crm_case_15" model="crm.lead">
<field name="message_follower_ids" eval="[(3, ref('base.partner_root')), (4, ref('base.partner_demo'))]"/>

View File

@ -12,7 +12,7 @@
<field name="context">{'default_type':'lead', 'stage_type':'lead'}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create an unqualified lead.
Click to create an unqualified lead.
</p><p>
Use leads if you need a qualification step before creating an
opportunity or a customer. It can be a business card you received,
@ -39,48 +39,48 @@
<field name="act_window_id" ref="crm_case_category_act_leads_all"/>
</record>
<record model="ir.actions.act_window" id="crm_case_category_act_oppor11">
<field name="name">Opportunities</field>
<field name="res_model">crm.lead</field>
<field name="view_mode">kanban,tree,graph,form,calendar</field>
<field name="domain">[('type','=','opportunity')]</field>
<field name="context">{'stage_type': 'opportunity', 'default_type': 'opportunity'}</field>
<field name="view_id" eval="False"/>
<field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new opportunity.
</p><p>
OpenERP helps you keep track of your sales pipeline to follow
up potential sales and better forecast your future revenues.
</p><p>
You will be able to plan meetings and phone calls from
opportunities, convert them into quotations, attach related
documents, track all discussions, and much more.
</p>
</field>
</record>
<record model="ir.actions.act_window" id="crm_case_category_act_oppor11">
<field name="name">Opportunities</field>
<field name="res_model">crm.lead</field>
<field name="view_mode">kanban,tree,graph,form,calendar</field>
<field name="domain">[('type','=','opportunity')]</field>
<field name="context">{'stage_type': 'opportunity', 'default_type': 'opportunity', 'default_user_id': uid}</field>
<field name="view_id" eval="False"/>
<field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new opportunity.
</p><p>
OpenERP helps you keep track of your sales pipeline to follow
up potential sales and better forecast your future revenues.
</p><p>
You will be able to plan meetings and phone calls from
opportunities, convert them into quotations, attach related
documents, track all discussions, and much more.
</p>
</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_kanban_view_oppor11">
<field name="sequence" eval="0"/>
<field name="view_mode">kanban</field>
<field name="view_id" ref="crm_case_kanban_view_leads"/>
<field name="act_window_id" ref="crm_case_category_act_oppor11"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_kanban_view_oppor11">
<field name="sequence" eval="0"/>
<field name="view_mode">kanban</field>
<field name="view_id" ref="crm_case_kanban_view_leads"/>
<field name="act_window_id" ref="crm_case_category_act_oppor11"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_oppor11">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_tree_view_oppor"/>
<field name="act_window_id" ref="crm_case_category_act_oppor11"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_oppor11">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_tree_view_oppor"/>
<field name="act_window_id" ref="crm_case_category_act_oppor11"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form_view_oppor11">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view_oppor"/>
<field name="act_window_id" ref="crm_case_category_act_oppor11"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form_view_oppor11">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view_oppor"/>
<field name="act_window_id" ref="crm_case_category_act_oppor11"/>
</record>
<menuitem name="Sales" id="base.menu_sales" parent="base.menu_base_partner" sequence="1" />
<menuitem name="Leads" id="menu_crm_leads" parent="base.menu_sales" action="crm_case_category_act_leads_all" sequence="2" />

View File

@ -2,42 +2,6 @@
<openerp>
<data>
<!-- Read/Unread actions -->
<record id="actions_server_crm_lead_unread" model="ir.actions.server">
<field name="name">CRM Lead: Mark unread</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_crm_lead"/>
<field name="state">code</field>
<field name="code">self.message_mark_as_unread(cr, uid, context.get('active_ids'), context=context)</field>
</record>
<record id="action_crm_lead_unread" model="ir.values">
<field name="name">action_crm_lead_unread</field>
<field name="action_id" ref="actions_server_crm_lead_unread"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_lead_unread'))"/>
<field name="key">action</field>
<field name="model_id" ref="model_crm_lead"/>
<field name="model">crm.lead</field>
<field name="key2">client_action_multi</field>
</record>
<record id="actions_server_crm_lead_read" model="ir.actions.server">
<field name="name">CRM Lead: Mark read</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_crm_lead"/>
<field name="state">code</field>
<field name="code">self.message_mark_as_read(cr, uid, context.get('active_ids'), context=context)</field>
</record>
<record id="action_crm_lead_read" model="ir.values">
<field name="name">action_crm_lead_read</field>
<field name="action_id" ref="actions_server_crm_lead_read"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_lead_read'))"/>
<field name="key">action</field>
<field name="model_id" ref="model_crm_lead"/>
<field name="model">crm.lead</field>
<field name="key2">client_action_multi</field>
</record>
<!--
CRM CASE STAGE
@ -152,8 +116,11 @@
<group>
<group>
<field name="partner_name" string="Company Name"/>
<!-- Preload all the partner's information -->
<field name="partner_id" string="Customer"
on_change="on_change_partner(partner_id)" options='{"create_name_field": "name"}'/>
on_change="on_change_partner(partner_id)"
options='{"create_name_field": "name"}'
context="{'default_name': contact_name, 'default_street': street, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_function': function, 'default_phone': phone, 'default_mobile': mobile, 'default_fax': fax, 'default_email': email_from, 'default_user_id': user_id, 'default_section_id': section_id}"/>
<label for="street" string="Address"/>
<div>
<field name="street" placeholder="Street..."/>
@ -169,7 +136,7 @@
<group>
<label for="contact_name"/>
<div>
<field name="contact_name" class="oe_inline"/>,
<field name="contact_name" class="oe_inline"/><span attrs="{'invisible': [('title', '=', '')]}">, </span>
<field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline" options='{"no_open": True}'/>
</div>
<field name="email_from" widget="email"/>
@ -242,7 +209,6 @@
</field>
</record>
<!-- CRM Lead Tree View -->
<record model="ir.ui.view" id="crm_case_tree_view_leads">
<field name="name">Leads</field>
@ -308,7 +274,7 @@
<t t-if="widget.view.is_action_enabled('edit')"><li><a type="edit">Edit...</a></li></t>
<t t-if="widget.view.is_action_enabled('delete')"><li><a type="delete">Delete</a></li></t>
<li><a name="%(mail.action_email_compose_message_wizard)d" type="action">Send Email</a></li>
<li><a name="%(opportunity2phonecall_act)d" type="action">Log Call</a></li>
<li><a name="%(opportunity2phonecall_act)d" type="action">Schedule/Log Call</a></li>
<li><a name="action_makeMeeting" type="object">Schedule Meeting</a></li>
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
</ul>
@ -333,7 +299,7 @@
<div class="oe_kanban_bottom_right">
<a t-if="record.priority.raw_value == 1" type="object" name="set_normal_priority" class="oe_e oe_star_on">7</a>
<a t-if="record.priority.raw_value != 1" type="object" name="set_high_priority" class="oe_e oe_star_off">7</a>
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar"/>
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar" t-if="record.user_id.value"/>
</div>
<div class="oe_kanban_footer_left">
<t t-raw="record.message_summary.raw_value"/>
@ -460,6 +426,7 @@
<group>
<field name="categ_ids"
string="Categories" widget="many2many_tags"
context = "{'object_name': 'crm.lead'}"
domain="[('object_id.model', '=', 'crm.lead')]"/>
</group>
@ -568,7 +535,7 @@
<field name="model">crm.lead</field>
<field name="arch" type="xml">
<search string="Search Opportunities">
<field name="name" string="Opportunity / Customer"
<field name="name" string="Opportunity"
filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
<field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike', self)]"/>
<filter icon="terp-mail-message-new" string="Unread Messages" help="Unread messages" name="message_unread" domain="[('message_unread','=',True)]"/>
@ -596,7 +563,7 @@
<filter string="Exp.Closing" icon="terp-go-month" help="Expected Closing" domain="[]" context="{'group_by':'date_deadline'}"/>
</group>
<group string="Display">
<filter string="Show Sales Team" icon="terp-personal+" context="{'invisible_section': False}" domain="[]" help="Show Sales Team"/>
<filter string="Show Sales Team" context="{'invisible_section': False}" domain="[]" help="Show Sales Team"/>
</group>
</search>
</field>

View File

@ -182,17 +182,23 @@ class crm_phonecall(base_state, osv.osv):
'phone': phonecall.partner_phone,
})
def convert_partner(self, cr, uid, ids, action='create', partner_id=False, context=None):
def handle_partner_assignation(self, cr, uid, ids, action='create', partner_id=False, context=None):
"""
This function convert partner based on action.
Handle partner assignation during a lead conversion.
if action is 'create', create new partner with contact and assign lead to new partner_id.
otherwise assign lead to specified partner_id
:param list ids: phonecalls ids to process
:param string action: what has to be done regarding partners (create it, assign an existing one, or nothing)
:param int partner_id: partner to assign if any
:return dict: dictionary organized as followed: {lead_id: partner_assigned_id}
"""
if context is None:
context = {}
#TODO this is a duplication of the handle_partner_assignation method of crm_lead
partner_ids = {}
# If a partner_id is given, force this partner for all elements
force_partner_id = partner_id
for call in self.browse(cr, uid, ids, context=context):
# If the action is set to 'create' and no partner_id is set, create a new one
if action == 'create':
partner_id = force_partner_id or self._call_create_partner(cr, uid, call, context=context)
self._call_create_partner_address(cr, uid, call, partner_id, context=context)
@ -219,7 +225,6 @@ class crm_phonecall(base_state, osv.osv):
}
return value
def convert_opportunity(self, cr, uid, ids, opportunity_summary=False, partner_id=False, planned_revenue=0.0, probability=0.0, context=None):
partner = self.pool.get('res.partner')
opportunity = self.pool.get('crm.lead')
@ -256,8 +261,9 @@ class crm_phonecall(base_state, osv.osv):
return opportunity_dict
def action_make_meeting(self, cr, uid, ids, context=None):
""" This opens Meeting's calendar view to schedule meeting on current Phonecall
@return : Dictionary value for created Meeting view
"""
Open meeting's calendar view to schedule a meeting on current phonecall.
:return dict: dictionary value for created meeting view
"""
phonecall = self.browse(cr, uid, ids[0], context)
res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'base_calendar', 'action_crm_meeting', context)
@ -270,14 +276,27 @@ class crm_phonecall(base_state, osv.osv):
'default_name': phonecall.name,
}
return res
def action_button_convert2opportunity(self, cr, uid, ids, context=None):
"""
Convert a phonecall into an opp and then redirect to the opp view.
:param list ids: list of calls ids to convert (typically contains a single id)
:return dict: containing view information
"""
if len(ids) != 1:
raise osv.except_osv(_('Warning!'),_('It\'s only possible to convert one phonecall at a time.'))
opportunity_dict = self.convert_opportunity(cr, uid, ids, context=context)
return self.pool.get('crm.lead').redirect_opportunity_view(cr, uid, opportunity_dict[ids[0]], context)
# ----------------------------------------
# OpenChatter
# ----------------------------------------
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_post(cr, uid, ids, body=message, context=context)
@ -300,5 +319,4 @@ class crm_phonecall(base_state, osv.osv):
def _call_set_partner_send_note(self, cr, uid, ids, context=None):
return self.message_post(cr, uid, ids, body=_("Partner has been <b>created</b>."), context=context)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -2,44 +2,8 @@
<openerp>
<data>
<!-- Read/Unread actions -->
<record id="actions_server_crm_phonecall_unread" model="ir.actions.server">
<field name="name">CRM Phonecall: Mark unread</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_crm_phonecall"/>
<field name="state">code</field>
<field name="code">self.message_mark_as_unread(cr, uid, context.get('active_ids'), context=context)</field>
</record>
<record id="action_crm_phonecall_unread" model="ir.values">
<field name="name">action_crm_phonecall_unread</field>
<field name="action_id" ref="actions_server_crm_phonecall_unread"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_phonecall_unread'))"/>
<field name="key">action</field>
<field name="model_id" ref="model_crm_phonecall"/>
<field name="model">crm.phonecall</field>
<field name="key2">client_action_multi</field>
</record>
<record id="actions_server_crm_phonecall_read" model="ir.actions.server">
<field name="name">CRM Phonecall: Mark read</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_crm_phonecall"/>
<field name="state">code</field>
<field name="code">self.message_mark_as_read(cr, uid, context.get('active_ids'), context=context)</field>
</record>
<record id="action_crm_phonecall_read" model="ir.values">
<field name="name">action_crm_phonecall_read</field>
<field name="action_id" ref="actions_server_crm_phonecall_read"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_phonecall_read'))"/>
<field name="key">action</field>
<field name="model_id" ref="model_crm_phonecall"/>
<field name="model">crm.phonecall</field>
<field name="key2">client_action_multi</field>
</record>
<!-- Phonecall Categories Form View -->
<!-- Phonecall Categories Form View -->
<record id="crm_phonecall_categ_action" model="ir.actions.act_window">
<field name="name">Phonecall Categories</field>
<field name="res_model">crm.case.categ</field>
@ -60,8 +24,7 @@
<menuitem action="crm_phonecall_categ_action" name="Categories"
id="menu_crm_case_phonecall-act" parent="menu_crm_config_phonecall" groups="base.group_no_one"/>
<!-- PhoneCalls Tree View -->
<!-- Phonecalls Tree View -->
<record model="ir.ui.view" id="crm_case_phone_tree_view">
<field name="name">CRM - Phone Calls Tree</field>
<field name="model">crm.phonecall</field>
@ -71,13 +34,14 @@
<field name="name"/>
<field name="partner_id"/>
<button string="Meeting"
states="open,pending" icon="gtk-redo"
name="action_make_meeting" type="object"/>
<button string="Convert to Opportunity"
name="%(phonecall2opportunity_act)d"
states="open,pending"
icon="gtk-index"
type="action" attrs="{'invisible':[('opportunity_id','!=',False)]}"/>
name="action_make_meeting"
type="object"/>
<button string="Convert to Opportunity"
type="object"
name="action_button_convert2opportunity"
states="open,pending"
attrs="{'invisible':[('opportunity_id','!=',False)]}"/>
<field name="partner_phone"/>
<field name="user_id"/>
<field name="categ_id" invisible="1"/>
@ -96,27 +60,26 @@
</field>
</record>
<!-- Phonecalls Form View -->
<!-- Phonecalls Form View -->
<record model="ir.ui.view" id="crm_case_phone_form_view">
<field name="name">CRM - Phone Call Form</field>
<field name="model">crm.phonecall</field>
<field name="arch" type="xml">
<form string="Phone Call" version="7.0">
<header>
<button name="case_close" string="Call Done" type="object" class="oe_highlight"
states="open,pending"/>
<button name="case_reset" string="Reset to Todo" type="object"
states="cancel"/>
<button name="case_cancel" string="Cancel" type="object"
states="draft,open,pending"/>
<field name="state" widget="statusbar" nolabel="1" statusbar_visible="open,done"/>
</header>
<header>
<button name="case_close" string="Call Done" type="object" class="oe_highlight"
states="open,pending"/>
<button name="case_reset" string="Reset to Todo" type="object"
states="cancel"/>
<button name="case_cancel" string="Cancel" type="object"
states="draft,open,pending"/>
<field name="state" widget="statusbar" nolabel="1" statusbar_visible="open,done"/>
</header>
<sheet string="Phone Call">
<div class="oe_right">
<div class="oe_right">
<button string="Convert to Opportunity"
name="%(phonecall2opportunity_act)d"
type="action"
type="object"
name="action_button_convert2opportunity"
attrs="{'invisible':[ '|', ('opportunity_id','!=',False), ('state', 'not in', ('open', 'done'))]}"/>
<button string="Schedule Other Call"
name="%(phonecall_to_phonecall_act)d"
@ -133,7 +96,7 @@
</div>
<h2><field name="partner_phone"/></h2>
</div>
<group col="4">
<field name="date"/>
<field name="user_id"/>
@ -158,7 +121,6 @@
</record>
<!--Logged Phonecalls Tree View -->
<record model="ir.ui.view" id="crm_case_inbound_phone_tree_view">
<field name="name">CRM - Logged Phone Calls Tree</field>
<field name="model">crm.phonecall</field>
@ -185,7 +147,7 @@
icon="gtk-redo"
name="action_make_meeting" type="object"/>
<button string="Convert to Opportunity"
name="%(phonecall2opportunity_act)d"
name="action_button_convert2opportunity"
states="open,pending"
icon="gtk-index"
type="action" attrs="{'invisible':[('opportunity_id','!=',False)]}"/>
@ -194,7 +156,6 @@
</record>
<!-- Phonecalls Calendar View -->
<record model="ir.ui.view" id="crm_case_phone_calendar_view">
<field name="name">CRM - Phone Calls Calendar</field>
<field name="model">crm.phonecall</field>
@ -220,8 +181,8 @@
<separator/>
<filter string="Unassigned Phonecalls" icon="terp-personal-" domain="[('user_id','=',False)]" help="Unassigned Phonecalls"/>
<separator/>
<filter string="Phone Calls Assigned to Me or My Team(s)" icon="terp-personal+" domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
help="Phone Calls that are assigned to me or to my team(s)"/>
<filter string="Phone Calls Assigned to Me or My Team(s)" icon="terp-personal+" domain="['|', ('section_id.user_id','=',uid), ('user_id', '=', uid)]"
help="Phone Calls Assigned to the current user or with a team having the current user as team leader"/>
<field name="partner_id"/>
<field name="user_id"/>
<field name="section_id" string="Sales Team"/>
@ -236,4 +197,4 @@
</record>
</data>
</openerp>
</openerp>

View File

@ -293,7 +293,7 @@
<field name="view_id" ref="crm_case_resource_type_tree"/>
</record>
<menuitem action="crm_case_resource_type_act"
<menuitem action="crm_case_resource_type_act"
id="menu_crm_case_resource_type_act" sequence="4"
groups="base.group_no_one"
parent="base.menu_crm_config_lead"/>

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