diff --git a/addons/account/account_installer.xml b/addons/account/account_installer.xml index b35b37aa972..230078c4e33 100644 --- a/addons/account/account_installer.xml +++ b/addons/account/account_installer.xml @@ -28,7 +28,8 @@ - + + diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index 8f873065014..e100e174498 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -306,9 +306,9 @@ class account_invoice(osv.osv): view_id = view_id[0] res = super(account_invoice,self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu) - type = context.get('journal_type', 'sale') + type = context.get('journal_type', False) for field in res['fields']: - if field == 'journal_id': + if field == 'journal_id' and type: journal_select = journal_obj._name_search(cr, uid, '', [('type', '=', type)], context=context, limit=None, name_get_uid=1) res['fields'][field]['selection'] = journal_select @@ -1559,6 +1559,7 @@ class account_invoice_tax(osv.osv): for line in inv.invoice_line: for tax in tax_obj.compute_all(cr, uid, line.invoice_line_tax_id, (line.price_unit* (1-(line.discount or 0.0)/100.0)), line.quantity, inv.address_invoice_id.id, line.product_id, inv.partner_id)['taxes']: + tax['price_unit'] = cur_obj.round(cr, uid, cur, tax['price_unit']) val={} val['invoice_id'] = inv.id val['name'] = tax['name'] diff --git a/addons/account/configurable_account_chart.xml b/addons/account/configurable_account_chart.xml index bca024793fd..0ac7a51405d 100644 --- a/addons/account/configurable_account_chart.xml +++ b/addons/account/configurable_account_chart.xml @@ -199,15 +199,15 @@ - 111 + 12 Current Liabilities - + view - 1111 + 120 Creditors payable @@ -216,7 +216,7 @@ - 1112 + 121 Tax Received other @@ -224,7 +224,7 @@ - 1113 + 122 Reserve and Profit/Loss Account other @@ -233,7 +233,7 @@ - 1114 + 123 Opening Expense Account other diff --git a/addons/account/i18n/da.po b/addons/account/i18n/da.po index 448a89899b9..64893f3533f 100644 --- a/addons/account/i18n/da.po +++ b/addons/account/i18n/da.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-11-01 21:03+0000\n" +"PO-Revision-Date: 2011-11-08 11:58+0000\n" "Last-Translator: OpenERP Danmark / Mikhael Saxtorph \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-08 05:41+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-10 04:57+0000\n" +"X-Generator: Launchpad (build 14263)\n" #. module: account #: model:process.transition,name:account.process_transition_supplierreconcilepaid0 @@ -2439,7 +2439,7 @@ msgstr "Bankafstemning" #. module: account #: report:account.invoice:0 msgid "Disc.(%)" -msgstr "" +msgstr "Rabatprocent" #. module: account #: report:account.general.ledger:0 @@ -2744,6 +2744,8 @@ msgid "" "Set if the amount of tax must be included in the base amount before " "computing the next taxes." msgstr "" +"Vælg: Hvis afgiftsbeløbet, skal indgå i beregningsgrundlaget for beregning " +"af de følgende afgifter" #. module: account #: help:account.journal,user_id:0 @@ -4789,7 +4791,7 @@ msgstr "" #. module: account #: report:account.partner.balance:0 msgid "(Account/Partner) Name" -msgstr "" +msgstr "(Konto / Kontakt) Navn" #. module: account #: view:account.bank.statement:0 @@ -7125,7 +7127,7 @@ msgstr "" #. module: account #: field:account.tax.code,sum_period:0 msgid "Period Sum" -msgstr "" +msgstr "Periode sum" #. module: account #: help:account.tax,sequence:0 @@ -7257,7 +7259,7 @@ msgstr "" #: field:account.subscription,state:0 #: field:report.invoice.created,state:0 msgid "State" -msgstr "Stat" +msgstr "Tilstand" #. module: account #: help:account.open.closed.fiscalyear,fyear_id:0 diff --git a/addons/account/installer.py b/addons/account/installer.py index 530ea7ccc6f..6c6d6c41695 100644 --- a/addons/account/installer.py +++ b/addons/account/installer.py @@ -38,7 +38,9 @@ class account_installer(osv.osv_memory): def _get_charts(self, cr, uid, context=None): modules = self.pool.get('ir.module.module') - ids = modules.search(cr, uid, [('name', 'like', 'l10n_')], context=context) + # Looking for the module with the 'Account Charts' category + category_name, category_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base', 'module_category_localization_account_charts') + ids = modules.search(cr, uid, [('category_id', '=', category_id)], context=context) charts = list( sorted(((m.name, m.shortdesc) for m in modules.browse(cr, uid, ids, context=context)), @@ -59,12 +61,17 @@ class account_installer(osv.osv_memory): 'sale_tax': fields.float('Sale Tax(%)'), 'purchase_tax': fields.float('Purchase Tax(%)'), 'company_id': fields.many2one('res.company', 'Company', required=True), + 'has_default_company' : fields.boolean('Has Default Company', readonly=True), } def _default_company(self, cr, uid, context=None): user = self.pool.get('res.users').browse(cr, uid, uid, context=context) return user.company_id and user.company_id.id or False + def _default_has_default_company(self, cr, uid, context=None): + count = self.pool.get('res.company').search_count(cr, uid, [], context=context) + return bool(count == 1) + _defaults = { 'date_start': lambda *a: time.strftime('%Y-01-01'), 'date_stop': lambda *a: time.strftime('%Y-12-31'), @@ -72,6 +79,7 @@ class account_installer(osv.osv_memory): 'sale_tax': 0.0, 'purchase_tax': 0.0, 'company_id': _default_company, + 'has_default_company': _default_has_default_company, 'charts': 'configurable' } diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml index ec9ded68a12..b185c8ab10a 100644 --- a/addons/account/project/project_view.xml +++ b/addons/account/project/project_view.xml @@ -44,8 +44,8 @@ - - + + diff --git a/addons/account/report/account_balance.rml b/addons/account/report/account_balance.rml index 7b9bdfa03b3..0c4e633ec15 100644 --- a/addons/account/report/account_balance.rml +++ b/addons/account/report/account_balance.rml @@ -296,7 +296,7 @@ [[ (a['type']<>'view' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ '..'*(a['level']-1) ]][[ a['name'] ]] [[ (a['type']<>'view' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['debit']) ]][[ a['type']<>'view' and removeParentNode('font') ]] [[formatLang(a['debit']) ]] [[ (a['type']<>'view' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font')]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['credit']) ]][[ a['type']<>'view' and removeParentNode('font') ]] [[ formatLang(a['credit']) ]] - [[ (a['type']<>'view' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['balance'], currency_obj=company.currency_id) ]][[ a['type']<>'view' and removeParentNode('font') ]] [[ formatLang(a['balance'], currency = company.currency_id) ]] + [[ (a['type']<>'view' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['balance'], currency_obj=company.currency_id) ]][[ a['type']<>'view' and removeParentNode('font') ]] [[ formatLang(a['balance'], currency_obj=company.currency_id) ]] diff --git a/addons/account/wizard/account_fiscalyear_close.py b/addons/account/wizard/account_fiscalyear_close.py index 297911f15f7..d2295b5bbf2 100644 --- a/addons/account/wizard/account_fiscalyear_close.py +++ b/addons/account/wizard/account_fiscalyear_close.py @@ -69,6 +69,9 @@ class account_fiscalyear_close(osv.osv_memory): cr.execute("SELECT id FROM account_period WHERE date_start > (SELECT date_stop FROM account_fiscalyear WHERE id = %s)", (str(fy_id),)) fy2_period_set = ','.join(map(lambda id: str(id[0]), cr.fetchall())) + if not fy_period_set or not fy2_period_set: + raise osv.except_osv(_('UserError'), _('The periods to generate opening entries were not found')) + period = obj_acc_period.browse(cr, uid, data[0].period_id.id, context=context) new_fyear = obj_acc_fiscalyear.browse(cr, uid, data[0].fy2_id.id, context=context) old_fyear = obj_acc_fiscalyear.browse(cr, uid, fy_id, context=context) @@ -108,10 +111,10 @@ class account_fiscalyear_close(osv.osv_memory): #1. report of the accounts with defferal method == 'unreconciled' cr.execute(''' - SELECT a.id + SELECT a.id FROM account_account a LEFT JOIN account_account_type t ON (a.user_type = t.id) - WHERE a.active + WHERE a.active AND a.type != 'view' AND t.close_method = %s''', ('unreconciled', )) account_ids = map(lambda x: x[0], cr.fetchall()) @@ -122,15 +125,15 @@ class account_fiscalyear_close(osv.osv_memory): name, create_uid, create_date, write_uid, write_date, statement_id, journal_id, currency_id, date_maturity, partner_id, blocked, credit, state, debit, - ref, account_id, period_id, date, move_id, amount_currency, - quantity, product_id, company_id) + ref, account_id, period_id, date, move_id, amount_currency, + quantity, product_id, company_id) (SELECT name, create_uid, create_date, write_uid, write_date, statement_id, %s,currency_id, date_maturity, partner_id, blocked, credit, 'draft', debit, ref, account_id, %s, date, %s, amount_currency, quantity, product_id, company_id FROM account_move_line - WHERE account_id IN %s - AND ''' + query_line + ''' + WHERE account_id IN %s + AND ''' + query_line + ''' AND reconcile_id IS NULL)''', (new_journal.id, period.id, move_id, tuple(account_ids),)) #We have also to consider all move_lines that were reconciled @@ -197,7 +200,7 @@ class account_fiscalyear_close(osv.osv_memory): query_1st_part = """ INSERT INTO account_move_line ( debit, credit, name, date, move_id, journal_id, period_id, - account_id, currency_id, amount_currency, company_id, state) VALUES + account_id, currency_id, amount_currency, company_id, state) VALUES """ query_2nd_part = "" query_2nd_part_args = [] @@ -207,7 +210,7 @@ class account_fiscalyear_close(osv.osv_memory): cr.execute('SELECT sum(amount_currency) as balance_in_currency FROM account_move_line ' \ 'WHERE account_id = %s ' \ 'AND ' + query_line + ' ' \ - 'AND currency_id = %s', (account.id, account.currency_id.id)) + 'AND currency_id = %s', (account.id, account.currency_id.id)) balance_in_currency = cr.dictfetchone()['balance_in_currency'] company_currency_id = self.pool.get('res.users').browse(cr, uid, uid).company_id.currency_id diff --git a/addons/account_accountant/i18n/da.po b/addons/account_accountant/i18n/da.po index 43a16e89f86..5b199bb2909 100644 --- a/addons/account_accountant/i18n/da.po +++ b/addons/account_accountant/i18n/da.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2010-11-17 08:53+0000\n" -"Last-Translator: Martin Pihl \n" +"PO-Revision-Date: 2011-11-08 10:35+0000\n" +"Last-Translator: OpenERP Danmark / Mikhael Saxtorph \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:52+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-10 04:58+0000\n" +"X-Generator: Launchpad (build 14263)\n" #. module: account_accountant #: model:ir.module.module,description:account_accountant.module_meta_information @@ -27,8 +27,8 @@ msgid "" " " msgstr "" "\n" -"Dette modul giver administrator brugeren adgang til alle de regnskabsmæssige " -"funktioner som bogføringsjournaler og kontoplaner.\n" +"Dette modul giver brugeren admin adgang til alle regnskabsfunktioner som " +"bogføringsjournaler og kontoplaner.\n" " " #. module: account_accountant diff --git a/addons/account_analytic_analysis/__init__.py b/addons/account_analytic_analysis/__init__.py index a7bdb11ad67..429aa011f31 100644 --- a/addons/account_analytic_analysis/__init__.py +++ b/addons/account_analytic_analysis/__init__.py @@ -20,6 +20,7 @@ ############################################################################## import account_analytic_analysis +import cron_account_analytic_account # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_analytic_analysis/__openerp__.py b/addons/account_analytic_analysis/__openerp__.py index f75fe3d1615..32642caf49c 100644 --- a/addons/account_analytic_analysis/__openerp__.py +++ b/addons/account_analytic_analysis/__openerp__.py @@ -21,9 +21,9 @@ { - 'name' : 'Analytic Account View', + 'name' : 'Sales Contract Management', 'version' : '1.1', - 'category' : 'Hidden', + 'category' : 'Sales Management', 'complexity': "normal", 'description': """ This module is for modifying account analytic view to show important data to project manager of services companies. @@ -42,6 +42,7 @@ user-wise as well as month wise. "security/ir.model.access.csv", "account_analytic_analysis_view.xml", "account_analytic_analysis_menu.xml", + "account_analytic_analysis_cron.xml", ], 'demo_xml' : [], 'installable': True, diff --git a/addons/account_analytic_analysis/account_analytic_analysis.py b/addons/account_analytic_analysis/account_analytic_analysis.py index 22eb9401ad7..8ebb75244a1 100644 --- a/addons/account_analytic_analysis/account_analytic_analysis.py +++ b/addons/account_analytic_analysis/account_analytic_analysis.py @@ -374,7 +374,28 @@ class account_analytic_account(osv.osv): res[id] = round(res.get(id, 0.0),2) return res - _columns ={ + def _is_overdue_quantity(self, cr, uid, ids, fieldnames, args, context=None): + result = dict.fromkeys(ids, 0) + + for record in self.browse(cr, uid, ids, context=context): + if record.quantity == 0.0 and record.quantity_max == 0.0: + result[record.id] = 0 + else: + result[record.id] = int(record.quantity >= record.quantity_max) + + return result + + def _get_analytic_account(self, cr, uid, ids, context=None): + result = set() + for line in self.pool.get('account.analytic.line').browse(cr, uid, ids, context=context): + result.add(line.account_id.id) + return list(result) + + _columns = { + 'is_overdue_quantity' : fields.function(_is_overdue_quantity, method=True, type='boolean', string='Overdue Quantity', + store={ + 'account.analytic.line' : (_get_analytic_account, None, 20), + }), 'ca_invoiced': fields.function(_ca_invoiced_calc, type='float', string='Invoiced Amount', help="Total customer invoiced amount for this account.", digits_compute=dp.get_precision('Account')), diff --git a/addons/account_analytic_analysis/account_analytic_analysis_cron.xml b/addons/account_analytic_analysis/account_analytic_analysis_cron.xml new file mode 100644 index 00000000000..8564b1606eb --- /dev/null +++ b/addons/account_analytic_analysis/account_analytic_analysis_cron.xml @@ -0,0 +1,15 @@ + + + + + Analytic Account Report for Sales + 1 + weeks + -1 + + + + + + + diff --git a/addons/account_analytic_analysis/account_analytic_analysis_menu.xml b/addons/account_analytic_analysis/account_analytic_analysis_menu.xml index bfb7a892668..34840814154 100644 --- a/addons/account_analytic_analysis/account_analytic_analysis_menu.xml +++ b/addons/account_analytic_analysis/account_analytic_analysis_menu.xml @@ -20,6 +20,67 @@ tree,form,graph [('date','<=',time.strftime('%Y-%m-%d')),('state','=','open')] - + + + + account.analytic.account.search + account.analytic.account + search + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Overdue Accounts + account.analytic.account + form + tree,form,graph + {'search_default_has_partner':1, 'search_default_my_accounts':1, 'search_default_draft':1, 'search_default_pending':1, 'search_default_open':1, 'search_default_renew':1} + [('type','=','normal')] + + You will find here the contracts to be renewed because the deadline is passed or the working hours are higher than the allocated hours. OpenERP automatically sets these analytic accounts to the pending state, in order to raise a warning during the timesheets recording. Salesmen should review all pending accounts and reopen or close the according to the negotiation with the customer. + + + diff --git a/addons/account_analytic_analysis/cron_account_analytic_account.py b/addons/account_analytic_analysis/cron_account_analytic_account.py new file mode 100644 index 00000000000..581bbfe92e1 --- /dev/null +++ b/addons/account_analytic_analysis/cron_account_analytic_account.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python +from osv import osv +from mako.template import Template +import time +try: + import cStringIO as StringIO +except ImportError: + import StringIO + +import tools + +MAKO_TEMPLATE = u"""Hello ${user.name}, + +Here is a list of contracts that have to be renewed for two +possible reasons: + - the end of contract date is passed + - the customer consumed more hours than expected + +Can you contact the customer in order to sell a new or renew its contract. +The contract has been set with a pending state, can you update the status +of the analytic account following this rule: + - Set Done: if the customer does not want to renew + - Set Open: if the customer purchased an extra contract + +Here is the list of contracts to renew: +% for partner, accounts in partners.iteritems(): + * ${partner.name} + % for account in accounts: + - Name: ${account.name} + % if account.quantity_max != 0.0: + - Quantity: ${account.quantity}/${account.quantity_max} hours + % endif + - Dates: ${account.date_start} to ${account.date and account.date or '???'} + - Contacts: + % for address in account.partner_id.address: + . ${address.name}, ${address.phone}, ${address.email} + % endfor + + % endfor +% endfor + +You can use the report in the menu: Sales > Invoicing > Overdue Accounts + +Regards, + +-- +OpenERP +""" + +class analytic_account(osv.osv): + _inherit = 'account.analytic.account' + + def cron_account_analytic_account(self, cr, uid, context=None): + domain = [ + ('name', 'not ilike', 'maintenance'), + ('partner_id', '!=', False), + ('user_id', '!=', False), + ('user_id.user_email', '!=', False), + ('state', 'in', ('draft', 'open')), + '|', ('date', '<', time.strftime('%Y-%m-%d')), ('date', '=', False), + ] + + account_ids = self.search(cr, uid, domain, context=context, order='name asc') + accounts = self.browse(cr, uid, account_ids, context=context) + + users = dict() + for account in accounts: + users.setdefault(account.user_id, dict()).setdefault(account.partner_id, []).append(account) + + account.write({'state' : 'pending'}, context=context) + + for user, data in users.iteritems(): + subject = '[OPENERP] Reporting: Analytic Accounts' + body = Template(MAKO_TEMPLATE).render_unicode(user=user, partners=data) + tools.email_send('noreply@openerp.com', [user.user_email, ], subject, body) + + return True + +analytic_account() diff --git a/addons/account_analytic_analysis/i18n/da.po b/addons/account_analytic_analysis/i18n/da.po index 545c570647c..95f24a21b1f 100644 --- a/addons/account_analytic_analysis/i18n/da.po +++ b/addons/account_analytic_analysis/i18n/da.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2010-11-22 07:38+0000\n" -"Last-Translator: Martin Pihl \n" +"PO-Revision-Date: 2011-11-08 21:41+0000\n" +"Last-Translator: OpenERP Danmark / Henning Dinsen \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:20+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-10 04:57+0000\n" +"X-Generator: Launchpad (build 14263)\n" #. module: account_analytic_analysis #: help:account.analytic.account,hours_qtt_invoiced:0 @@ -134,7 +134,7 @@ msgstr "Bruger" #. module: account_analytic_analysis #: field:account.analytic.account,ca_to_invoice:0 msgid "Uninvoiced Amount" -msgstr "" +msgstr "Ufaktureret beløb" #. module: account_analytic_analysis #: help:account.analytic.account,real_margin:0 diff --git a/addons/account_analytic_default/i18n/da.po b/addons/account_analytic_default/i18n/da.po index 2cb76cfc57e..7e1a64488e0 100644 --- a/addons/account_analytic_default/i18n/da.po +++ b/addons/account_analytic_default/i18n/da.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-04-29 12:18+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2011-11-08 22:24+0000\n" +"Last-Translator: OpenERP Danmark / Henning Dinsen \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:25+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-10 04:58+0000\n" +"X-Generator: Launchpad (build 14263)\n" #. module: account_analytic_default #: model:ir.module.module,shortdesc:account_analytic_default.module_meta_information @@ -65,7 +65,7 @@ msgstr "Plukseddel" #. module: account_analytic_default #: view:account.analytic.default:0 msgid "Conditions" -msgstr "" +msgstr "Betingelser" #. module: account_analytic_default #: help:account.analytic.default,company_id:0 diff --git a/addons/account_analytic_default/security/ir.model.access.csv b/addons/account_analytic_default/security/ir.model.access.csv index 112fe2fcbf4..f92a9fd4dfa 100644 --- a/addons/account_analytic_default/security/ir.model.access.csv +++ b/addons/account_analytic_default/security/ir.model.access.csv @@ -2,3 +2,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_account_analytic_default,account.analytic.default,model_account_analytic_default,account.group_account_user,1,0,0,0 access_account_analytic_default_manager,account.analytic.default.manager,model_account_analytic_default,account.group_account_manager,1,1,1,1 access_account_analytic_default_invoice,account.analytic.default invoice,model_account_analytic_default,account.group_account_invoice,1,1,1,1 +access_account_analytic_default_salesman,account.analytic.default.salesman,model_account_analytic_default,base.group_sale_salesman,1,1,1,1 diff --git a/addons/account_anglo_saxon/i18n/da.po b/addons/account_anglo_saxon/i18n/da.po new file mode 100644 index 00000000000..bf144945725 --- /dev/null +++ b/addons/account_anglo_saxon/i18n/da.po @@ -0,0 +1,107 @@ +# Danish translation for openobject-addons +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-01-11 11:14+0000\n" +"PO-Revision-Date: 2011-11-09 21:36+0000\n" +"Last-Translator: OpenERP Danmark / Henning Dinsen \n" +"Language-Team: Danish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-11-10 04:58+0000\n" +"X-Generator: Launchpad (build 14263)\n" + +#. module: account_anglo_saxon +#: view:product.category:0 +msgid " Accounting Property" +msgstr "" + +#. module: account_anglo_saxon +#: sql_constraint:purchase.order:0 +msgid "Order Reference must be unique !" +msgstr "Ordre reference skal være unik !" + +#. module: account_anglo_saxon +#: constraint:product.category:0 +msgid "Error ! You can not create recursive categories." +msgstr "Fejl ! Du kan ikke oprette rekusive katagorier." + +#. module: account_anglo_saxon +#: constraint:product.template:0 +msgid "" +"Error: The default UOM and the purchase UOM must be in the same category." +msgstr "" + +#. module: account_anglo_saxon +#: model:ir.model,name:account_anglo_saxon.model_account_invoice_line +msgid "Invoice Line" +msgstr "Fakturalinie" + +#. module: account_anglo_saxon +#: model:ir.model,name:account_anglo_saxon.model_purchase_order +msgid "Purchase Order" +msgstr "Indkøbsordre" + +#. module: account_anglo_saxon +#: model:ir.model,name:account_anglo_saxon.model_product_template +msgid "Product Template" +msgstr "" + +#. module: account_anglo_saxon +#: model:ir.model,name:account_anglo_saxon.model_product_category +msgid "Product Category" +msgstr "Produkt katagori" + +#. module: account_anglo_saxon +#: model:ir.module.module,shortdesc:account_anglo_saxon.module_meta_information +msgid "Stock Accounting for Anglo Saxon countries" +msgstr "" + +#. module: account_anglo_saxon +#: field:product.category,property_account_creditor_price_difference_categ:0 +#: field:product.template,property_account_creditor_price_difference:0 +msgid "Price Difference Account" +msgstr "" + +#. module: account_anglo_saxon +#: model:ir.model,name:account_anglo_saxon.model_account_invoice +msgid "Invoice" +msgstr "Faktura" + +#. module: account_anglo_saxon +#: model:ir.model,name:account_anglo_saxon.model_stock_picking +msgid "Picking List" +msgstr "Plukliste" + +#. module: account_anglo_saxon +#: model:ir.module.module,description:account_anglo_saxon.module_meta_information +msgid "" +"This module will support the Anglo-Saxons accounting methodology by\n" +" changing the accounting logic with stock transactions. The difference " +"between the Anglo-Saxon accounting countries\n" +" and the Rhine or also called Continental accounting countries is the " +"moment of taking the Cost of Goods Sold versus Cost of Sales.\n" +" Anglo-Saxons accounting does take the cost when sales invoice is " +"created, Continental accounting will take the cost at the moment the goods " +"are shipped.\n" +" This module will add this functionality by using a interim account, to " +"store the value of shipped goods and will contra book this interim account\n" +" when the invoice is created to transfer this amount to the debtor or " +"creditor account.\n" +" Secondly, price differences between actual purchase price and fixed " +"product standard price are booked on a separate account" +msgstr "" + +#. module: account_anglo_saxon +#: help:product.category,property_account_creditor_price_difference_categ:0 +#: help:product.template,property_account_creditor_price_difference:0 +msgid "" +"This account will be used to value price difference between purchase price " +"and cost price." +msgstr "" diff --git a/addons/account_asset/account_asset.py b/addons/account_asset/account_asset.py index bacd29f1607..832ac75ba46 100644 --- a/addons/account_asset/account_asset.py +++ b/addons/account_asset/account_asset.py @@ -143,8 +143,12 @@ class account_asset_asset(osv.osv): depreciation_lin_obj.unlink(cr, uid, old_depreciation_line_ids, context=context) amount_to_depr = residual_amount = asset.value_residual - - depreciation_date = datetime.strptime(self._get_last_depreciation_date(cr, uid, [asset.id], context)[asset.id], '%Y-%m-%d') + if asset.prorata: + depreciation_date = datetime.strptime(self._get_last_depreciation_date(cr, uid, [asset.id], context)[asset.id], '%Y-%m-%d') + else: + # depreciation_date = 1st January of purchase year + purchase_date = datetime.strptime(asset.purchase_date, '%Y-%m-%d') + depreciation_date = datetime(purchase_date.year, 1, 1) day = depreciation_date.day month = depreciation_date.month year = depreciation_date.year diff --git a/addons/account_asset/account_asset_demo.xml b/addons/account_asset/account_asset_demo.xml index 004526b1022..77185081848 100644 --- a/addons/account_asset/account_asset_demo.xml +++ b/addons/account_asset/account_asset_demo.xml @@ -4,13 +4,33 @@ - + - Fixed Assets + Hardware - 3 Years + 3 + + + + + + + + Cars - 5 Years + 5 + + + + + + + + + Revenue Recognition Maintenance Contract - 3 Years + 3 + + diff --git a/addons/crm/__openerp__.py b/addons/crm/__openerp__.py index a6f5f1630f7..54dfc335a2b 100644 --- a/addons/crm/__openerp__.py +++ b/addons/crm/__openerp__.py @@ -55,7 +55,6 @@ Creates a dashboard for CRM that includes: 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', 'depends': [ - 'base', 'base_action_rule', 'base_setup', 'process', @@ -108,8 +107,8 @@ Creates a dashboard for CRM that includes: 'crm_installer_view.xml', 'res_partner_view.xml', - 'board_crm_view.xml', 'board_crm_statistical_view.xml', + 'board_crm_view.xml', ], 'demo_xml': [ diff --git a/addons/crm/board_crm_view.xml b/addons/crm/board_crm_view.xml index 53e0207fc5a..3eacb9e7755 100644 --- a/addons/crm/board_crm_view.xml +++ b/addons/crm/board_crm_view.xml @@ -117,32 +117,32 @@
- - - - - - - - + + + + + + + +
@@ -155,14 +155,7 @@ menu - - - - + diff --git a/addons/crm/crm.py b/addons/crm/crm.py index ac0874a6037..d12860b5ea5 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -486,8 +486,11 @@ class crm_case(crm_base): src = case_email dest = case.user_id.user_email or "" body = case.description or "" - if case.message_ids: - body = case.message_ids[0].body_text or "" + for message in case.message_ids: + if message.email_from: + body = message.description + break + if not destination: src, dest = dest, case.email_from if body and case.user_id.signature: diff --git a/addons/crm/crm_action_rule.py b/addons/crm/crm_action_rule.py index 559d257820a..3947eb58156 100644 --- a/addons/crm/crm_action_rule.py +++ b/addons/crm/crm_action_rule.py @@ -92,7 +92,6 @@ class base_action_rule(osv.osv): def do_action(self, cr, uid, action, model_obj, obj, context=None): res = super(base_action_rule, self).do_action(cr, uid, action, model_obj, obj, context=context) write = {} - if hasattr(action, 'act_section_id') and action.act_section_id: obj.section_id = action.act_section_id write['section_id'] = action.act_section_id.id @@ -110,6 +109,7 @@ class base_action_rule(osv.osv): model_obj.message_append(cr, uid, [obj], _(action.act_state)) model_obj.write(cr, uid, [obj.id], write, context) + super(base_action_rule, self).do_action(cr, uid, action, model_obj, obj, context=context) emails = [] if hasattr(obj, 'email_from') and action.act_mail_to_partner: diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index b53028c952a..0e479d33737 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -204,7 +204,6 @@ class crm_lead(crm_case, osv.osv): 'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.lead', context=c), 'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0], 'color': 0, - #'stage_id': _get_stage_id, } def onchange_partner_address_id(self, cr, uid, ids, add, email=False): diff --git a/addons/crm/crm_lead_demo.xml b/addons/crm/crm_lead_demo.xml index 7b2e696e181..576f258facc 100644 --- a/addons/crm/crm_lead_demo.xml +++ b/addons/crm/crm_lead_demo.xml @@ -270,7 +270,9 @@ - + + + BalmerInc S.A. Rue des Palais 51, bte 33 Bruxelles @@ -291,7 +293,9 @@ - + + + Lucie Vonck Chaussée de Namur Grand-Rosière @@ -313,7 +317,9 @@ - + + + Université de Liège Place du 20Août @@ -336,7 +342,9 @@ - + + + Bank Wealthy and sons 1 rue Rockfeller Paris @@ -359,6 +367,7 @@ + @@ -376,8 +385,10 @@ + + - + Dubois sprl Avenue de la Liberté 56 Brussels @@ -428,7 +439,9 @@ - + + + Axelor 12 rue Albert Einstein Champs sur Marne @@ -473,6 +486,8 @@ + + Eric Dubois Chaussée de Binche, 27 diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index 42587eea2b0..b37f1db6d55 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -284,7 +284,7 @@ + date_start="date_action" color="user_id"> @@ -345,7 +345,7 @@ - +
@@ -462,7 +462,7 @@
diff --git a/addons/hr_recruitment/test/test_hr_recruitment.yml b/addons/hr_recruitment/test/test_hr_recruitment.yml index 1acbf33eb72..b797353bde2 100644 --- a/addons/hr_recruitment/test/test_hr_recruitment.yml +++ b/addons/hr_recruitment/test/test_hr_recruitment.yml @@ -52,7 +52,12 @@ !python {model: hr.applicant}: | self.case_open(cr, uid, [ref("hr_applicant_fresher0")], {"active_ids": [ref("hr_recruitment.menu_crm_case_categ0_act_job")], }) - +- + I change the stages by clicking on stage next and stage previous buttons. +- + !python {model: hr.applicant}: | + self.stage_next(cr, uid, [ref('hr_applicant_fresher0')], None) + self.stage_previous(cr, uid, [ref('hr_applicant_fresher0')], None) - I create a new case category. - @@ -97,14 +102,38 @@ rrule_type: none state: open user_id: base.user_root - +- + I print the survery filled up by the applicant. +- + !python {model: hr.applicant}: | + self.action_print_survey(cr, uid, [ref('hr_applicant_fresher0')], None) +- + I assign the position to the applicant and its relevant department. +- + !python {model: hr.applicant}: | + res = self.onchange_job(cr, uid, [ref('hr_applicant_fresher0')], ref('hr.job_jr_developers'), None) + values = dict([('job_id', ref('hr.job_jr_developers'))] + res['value'].items()) + res1 = self.onchange_department_id(cr, uid, [ref('hr_applicant_fresher0')], ref('hr.dep_it'), None) + values.update(dict([('department_id', ref('hr.dep_it'))] + res1['value'].items())) + self.write(cr, uid, [ref('hr_applicant_fresher0')], values, None) - On a successful meeting with the applicant, I hired employee by click on "Hired" button. - - !python {model: hr.applicant}: | - self.case_close(cr, uid, [ref('hr_applicant_fresher0')]) + !python {model: hired.employee}: | + self.case_close(cr, uid, [], context={'active_ids': [ref('hr_applicant_fresher0')]}) - I check that applicant state is "Hired". - !assert {model: hr.applicant, id: hr_applicant_fresher0}: - state == 'done' +- + I create partner for the hired applicant for accounting purpose. +- + !record {model: hr.recruitment.partner.create, id: hr_recruitment_partner_create0}: + close: False +- + I click on Create Partner button to create a partner for applicant. +- + !python {model: hr.recruitment.partner.create}: | + self.make_order(cr, uid, [ref('hr_recruitment_partner_create0')], context={'active_ids': [ref('hr_applicant_fresher0')]}) + diff --git a/addons/hr_timesheet/test/test_hr_timesheet.yml b/addons/hr_timesheet/test/test_hr_timesheet.yml index 7ce2908f24f..30c97c3eb70 100644 --- a/addons/hr_timesheet/test/test_hr_timesheet.yml +++ b/addons/hr_timesheet/test/test_hr_timesheet.yml @@ -37,14 +37,6 @@ parent_id: 'hr_employee_employee0' user_id: 'test_timesheet_user1' -- - I create Timesheet journal for employee. -- - !record {model: account.analytic.journal, id: analytic_journal}: - code: TS - name: Timesheet Journal - type: general - - I create a product as "Consultancy - Senior Developer". - @@ -103,7 +95,26 @@ uid = ref('test_timesheet_user1') new_id = self.create(cr, uid, {'emp_id': ref('hr_employee_fracline1'), 'name': 'Francline', 'server_date': time.strftime('%Y-%m-%d %H:%M:%S'), 'state': 'absent'}) self.sign_in_result(cr, uid, [new_id], context) - +- + I create a timesheet line manually to check several default values. + I also assign proper date and user for that line. +- + !python {model: hr.analytic.timesheet}: | + import time + uid = ref('test_timesheet_user1') + current_date = time.strftime('%Y-%m-%d') + vals = {'name': 'Worked on project', + 'user_id': ref('test_timesheet_user1'), + 'account_id': ref('account.analytic_project_1_development'), + 'unit_amount': 5.00, + 'journal_id': ref('analytic_journal') + } + line_id = self.create(cr, uid, vals, None) + res = self.on_change_date(cr, uid, [line_id], current_date) + values = dict([('date', current_date)] + res['value'].items()) + res1 = self.on_change_user_id(cr, uid, [line_id], ref('base.user_root')) + values.update(dict([('user_id', ref('base.user_root'))] + res1['value'].items())) + self.write(cr, uid, [line_id], values, None) - To stop work I click on "Sign In/Sign Out" button of "Sign In/Sign Out by Project" wizard. Which check state in hr attendace form for user. @@ -113,7 +124,6 @@ ids = self.search(cr, uid, [('emp_id', '=', ref('hr_employee_fracline1')),('name', '=', 'Francline')]) self.check_state(cr, uid, ids, {"active_ids": [ref("hr_timesheet.action_hr_timesheet_sign_in")] }) - - I Create an analytic account "Project2". - @@ -136,3 +146,4 @@ - | I can see employee timesheet for particular month using "Employee Timesheet" report. + diff --git a/addons/hr_timesheet_invoice/test/test_hr_timesheet_invoice.yml b/addons/hr_timesheet_invoice/test/test_hr_timesheet_invoice.yml index cf068ac9ce9..ed50ccc5d4d 100644 --- a/addons/hr_timesheet_invoice/test/test_hr_timesheet_invoice.yml +++ b/addons/hr_timesheet_invoice/test/test_hr_timesheet_invoice.yml @@ -23,7 +23,17 @@ !record {model: account.analytic.account, id: account.analytic_sednacom}: partner_id: base.res_partner_desertic_hispafuentes pricelist_id: product.list0 - +- + I open this account and make the state as pending. +- + !python {model: account.analytic.account}: | + self.set_open(cr, uid, [ref('account.analytic_sednacom')], None) + self.set_pending(cr, uid, [ref('account.analytic_sednacom')], None) +- + I assign account on analytic account line. +- + !python {model: hr.analytic.timesheet}: | + self.on_change_account_id(cr, uid, [ref('account_analytic_line_developyamlforhrmodule0')], ref('account.analytic_sednacom')) - I create invoice on analytic Line using "Invoice analytic Line" wizard. - @@ -73,11 +83,15 @@ price: 1 time: 1 - - I click on "Create Invoice" button to create Invoice. + I click on "Create Invoice" button to create Invoice and validate the invoice. - !python {model: hr.timesheet.invoice.create.final}: | - self.do_create(cr, uid, [ref("hr_timesheet_invoice_create_final_0")], {"active_ids": [ref("account.analytic_sednacom")]}) - + import netsvc + wkf_service = netsvc.LocalService("workflow") + res = self.do_create(cr, uid, [ref("hr_timesheet_invoice_create_final_0")], {"active_ids": [ref("account.analytic_sednacom")]}) + invoice_ids = eval(res['domain'])[0][2] + for inv in invoice_ids: + wkf_service.trg_validate(uid, 'account.invoice', inv, 'invoice_open', cr) - I can also make some theoretical revenue reports. - diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py index c1c936ccc0f..089ade7c618 100644 --- a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py +++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py @@ -313,7 +313,7 @@ class hr_timesheet_sheet(osv.osv): def _default_employee(self, cr, uid, context=None): emp_ids = self.pool.get('hr.employee').search(cr, uid, [('user_id','=',uid)], context=context) return emp_ids and emp_ids[0] or False - + _defaults = { 'date_from' : _default_date_from, 'date_current' : lambda *a: time.strftime('%Y-%m-%d'), @@ -329,7 +329,7 @@ class hr_timesheet_sheet(osv.osv): if new_user_id: cr.execute('SELECT id \ FROM hr_timesheet_sheet_sheet \ - WHERE (date_from < %s and %s < date_to) \ + WHERE (date_from <= %s and %s <= date_to) \ AND user_id=%s \ AND id <> %s',(sheet.date_to, sheet.date_from, new_user_id, sheet.id)) if cr.fetchall(): diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml index 11e1789aa41..b14c9133319 100644 --- a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml +++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml @@ -186,7 +186,7 @@ hr_timesheet_sheet.sheet form - {'search_default_my_timesheet':1, } + {'search_default_my_timesheet':1,'group_by_no_leaf':1} Check your timesheets for a specific period. You can also encode time spent on a project (i.e. an analytic account) thus generating costs in the analytic account concerned. diff --git a/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml b/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml index 405c6585cf9..24ffe3bb178 100644 --- a/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml +++ b/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml @@ -71,13 +71,30 @@ user_id: base.user_demo employee_id: 'hr_employee_employee0' - - Now , at the time of login, I create Attendances and perform "Sign In" action. + Now, at the time of login, I create Attendances and perform "Sign In" action. - - !record {model: hr.attendance, id: hr_attendance_0}: - action: sign_in - employee_id: 'hr_employee_employee0' - name: !eval time.strftime('%Y-%m-%d')+' '+'%s:%s:%s' %(max(0,datetime.now().hour-1),max(0,datetime.now().minute-1),max(0,datetime.now().second-1)) - + !python {model: hr_timesheet_sheet.sheet}: + self.sign_in(cr, uid, [ref('hr_timesheet_sheet_sheet_deddk0')], {}) +- + I want to check attendance and work of yesterday. I click on <- button. +- + !python {model: hr_timesheet_sheet.sheet}: | + self.date_previous(cr, uid, [ref('hr_timesheet_sheet_sheet_deddk0')], None) +- + Then I click on "Today" button to fill today's timesheet. +- + !python {model: hr_timesheet_sheet.sheet}: | + self.date_today(cr, uid, [ref('hr_timesheet_sheet_sheet_deddk0')], None) +- + I want to go to a particular date and see attendance then I select the date and click on "Go to:" button. +- + !python {model: hr_timesheet_sheet.sheet}: | + self.button_dummy(cr, uid, [ref('hr_timesheet_sheet_sheet_deddk0')], None) +- + I can also move to next day by clicking on -> button. +- + !python {model: hr_timesheet_sheet.sheet}: | + self.date_next(cr, uid, [ref('hr_timesheet_sheet_sheet_deddk0')], None) - At the time of logout, I create attendance and perform "Sign Out". - @@ -88,7 +105,6 @@ - I create Timesheet Entry for time spend on today work. - - !record {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_deddk0}: timesheet_ids: diff --git a/addons/html_view/i18n/da.po b/addons/html_view/i18n/da.po index e340fd0f736..2c33fe8b010 100644 --- a/addons/html_view/i18n/da.po +++ b/addons/html_view/i18n/da.po @@ -8,24 +8,24 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2011-09-24 09:55+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2011-11-08 22:09+0000\n" +"Last-Translator: OpenERP Danmark / Henning Dinsen \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:53+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-10 04:58+0000\n" +"X-Generator: Launchpad (build 14263)\n" #. module: html_view #: field:html.view,name:0 msgid "Name" -msgstr "" +msgstr "Navn" #. module: html_view #: field:html.view,comp_id:0 msgid "Company" -msgstr "Virksomhed" +msgstr "Firma" #. module: html_view #: model:ir.actions.act_window,name:html_view.action_html_view_form @@ -36,17 +36,17 @@ msgstr "HTML test" #. module: html_view #: view:html.view:0 msgid "Html Example" -msgstr "" +msgstr "HTML eksempel" #. module: html_view #: model:ir.module.module,shortdesc:html_view.module_meta_information msgid "Html View" -msgstr "" +msgstr "HTML visning" #. module: html_view #: field:html.view,bank_ids:0 msgid "Banks" -msgstr "" +msgstr "Banker" #. module: html_view #: model:ir.module.module,description:html_view.module_meta_information @@ -56,8 +56,12 @@ msgid "" "view.\n" " " msgstr "" +"\n" +" Dette er testmodulet, der viser understøttelse af HTML tags i en normal " +"XML formular.\n" +" " #. module: html_view #: model:ir.model,name:html_view.model_html_view msgid "html.view" -msgstr "" +msgstr "html.view" diff --git a/addons/idea/__openerp__.py b/addons/idea/__openerp__.py index e6dab775d6e..66709824c4a 100644 --- a/addons/idea/__openerp__.py +++ b/addons/idea/__openerp__.py @@ -23,7 +23,7 @@ { 'name': 'Ideas Box', 'version': '0.1', - 'category': 'Hidden', + 'category': 'Human Resources', 'complexity': "easy", 'description': """ This module allows your user to easily and efficiently participate in enterprise innovation. diff --git a/addons/idea/i18n/da.po b/addons/idea/i18n/da.po index f26f0d38ffe..e285d0d1135 100644 --- a/addons/idea/i18n/da.po +++ b/addons/idea/i18n/da.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2011-11-01 20:17+0000\n" +"PO-Revision-Date: 2011-11-08 21:34+0000\n" "Last-Translator: OpenERP Danmark / Henning Dinsen \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:17+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-10 04:57+0000\n" +"X-Generator: Launchpad (build 14263)\n" #. module: idea #: help:idea.category,visibility:0 @@ -154,7 +154,7 @@ msgstr "Idéstemme" #. module: idea #: field:idea.category,parent_id:0 msgid "Parent Categories" -msgstr "" +msgstr "Forældrekategorier" #. module: idea #: selection:idea.idea,my_vote:0 @@ -443,7 +443,7 @@ msgstr "Brugernavn" #. module: idea #: model:ir.model,name:idea.model_idea_vote_stat msgid "Idea Votes Statistics" -msgstr "" +msgstr "Stemme statistik" #. module: idea #: field:idea.comment,user_id:0 @@ -451,7 +451,7 @@ msgstr "" #: field:idea.vote,user_id:0 #: view:report.vote:0 msgid "User" -msgstr "Bruger" +msgstr "User" #. module: idea #: field:idea.vote,date:0 @@ -461,7 +461,7 @@ msgstr "Dato" #. module: idea #: view:idea.post.vote:0 msgid "Post" -msgstr "" +msgstr "Send" #. module: idea #: field:idea.idea,my_vote:0 @@ -512,7 +512,7 @@ msgstr "Historik" #. module: idea #: view:idea.idea:0 msgid "Vots Statistics" -msgstr "" +msgstr "Stemme statistik" #. module: idea #: field:report.vote,date:0 @@ -551,7 +551,7 @@ msgstr "Luk" #: view:idea.idea:0 #: view:report.vote:0 msgid "Open" -msgstr "Åbn" +msgstr "Åben" #. module: idea #: view:report.vote:0 @@ -640,17 +640,17 @@ msgstr "April" #. module: idea #: field:idea.idea,count_comments:0 msgid "Count of comments" -msgstr "" +msgstr "Antal kommentarer" #. module: idea #: field:idea.vote,score:0 msgid "Vote Status" -msgstr "" +msgstr "Stemme status" #. module: idea #: field:idea.idea,vote_avg:0 msgid "Average Score" -msgstr "" +msgstr "Gennemsnitlig score" #. module: idea #: field:idea.comment,idea_id:0 @@ -662,7 +662,7 @@ msgstr "" #: view:report.vote:0 #: field:report.vote,idea_id:0 msgid "Idea" -msgstr "" +msgstr "Idé" #. module: idea #: view:idea.idea:0 @@ -672,7 +672,7 @@ msgstr "Godkend" #. module: idea #: field:idea.post.vote,vote:0 msgid "Post Vote" -msgstr "" +msgstr "Send stemme" #. module: idea #: view:report.vote:0 diff --git a/addons/knowledge/i18n/da.po b/addons/knowledge/i18n/da.po new file mode 100644 index 00000000000..f198a77905b --- /dev/null +++ b/addons/knowledge/i18n/da.po @@ -0,0 +1,155 @@ +# Danish translation for openobject-addons +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-01-11 11:15+0000\n" +"PO-Revision-Date: 2011-11-09 21:31+0000\n" +"Last-Translator: OpenERP Danmark / Henning Dinsen \n" +"Language-Team: Danish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-11-10 04:58+0000\n" +"X-Generator: Launchpad (build 14263)\n" + +#. module: knowledge +#: model:ir.ui.menu,name:knowledge.menu_document +msgid "Knowledge" +msgstr "Viden" + +#. module: knowledge +#: help:knowledge.installer,wiki_quality_manual:0 +msgid "Creates an example skeleton for a standard quality manual." +msgstr "" + +#. module: knowledge +#: view:knowledge.installer:0 +msgid "Share information within the company with these specific Addons." +msgstr "" + +#. module: knowledge +#: field:knowledge.installer,document_ftp:0 +msgid "Shared Repositories (FTP)" +msgstr "" + +#. module: knowledge +#: model:ir.module.module,shortdesc:knowledge.module_meta_information +msgid "Knowledge Management System" +msgstr "" + +#. module: knowledge +#: field:knowledge.installer,wiki:0 +msgid "Collaborative Content (Wiki)" +msgstr "" + +#. module: knowledge +#: help:knowledge.installer,document_ftp:0 +msgid "" +"Provides an FTP access to your OpenERP's Document Management System. It lets " +"you access attachments and virtual documents through a standard FTP client." +msgstr "" + +#. module: knowledge +#: help:knowledge.installer,document_webdav:0 +msgid "" +"Provides a WebDAV access to your OpenERP's Document Management System. Lets " +"you access attachments and virtual documents through your standard file " +"browser." +msgstr "" + +#. module: knowledge +#: view:knowledge.installer:0 +msgid "Configure" +msgstr "Konfigurer" + +#. module: knowledge +#: view:knowledge.installer:0 +msgid "title" +msgstr "titel" + +#. module: knowledge +#: model:ir.module.module,description:knowledge.module_meta_information +msgid "" +"Installer for knowledge-based tools\n" +" " +msgstr "" + +#. module: knowledge +#: model:ir.ui.menu,name:knowledge.menu_document_configuration +msgid "Configuration" +msgstr "Konfiguration" + +#. module: knowledge +#: model:ir.actions.act_window,name:knowledge.action_knowledge_installer +msgid "Knowledge Modules Installation" +msgstr "" + +#. module: knowledge +#: field:knowledge.installer,wiki_quality_manual:0 +msgid "Quality Manual" +msgstr "" + +#. module: knowledge +#: field:knowledge.installer,document_webdav:0 +msgid "Shared Repositories (WebDAV)" +msgstr "" + +#. module: knowledge +#: field:knowledge.installer,progress:0 +msgid "Configuration Progress" +msgstr "Konfigurationsfremgang" + +#. module: knowledge +#: help:knowledge.installer,wiki_faq:0 +msgid "" +"Creates a skeleton internal FAQ pre-filled with documentation about " +"OpenERP's Document Management System." +msgstr "" + +#. module: knowledge +#: field:knowledge.installer,wiki_faq:0 +msgid "Internal FAQ" +msgstr "" + +#. module: knowledge +#: model:ir.ui.menu,name:knowledge.menu_document2 +msgid "Collaborative Content" +msgstr "" + +#. module: knowledge +#: field:knowledge.installer,config_logo:0 +msgid "Image" +msgstr "Billede" + +#. module: knowledge +#: model:ir.actions.act_window,name:knowledge.action_knowledge_installer +#: view:knowledge.installer:0 +msgid "Knowledge Application Configuration" +msgstr "" + +#. module: knowledge +#: model:ir.model,name:knowledge.model_knowledge_installer +msgid "knowledge.installer" +msgstr "" + +#. module: knowledge +#: view:knowledge.installer:0 +msgid "Configure Your Knowledge Application" +msgstr "" + +#. module: knowledge +#: help:knowledge.installer,wiki:0 +msgid "" +"Lets you create wiki pages and page groups in order to keep track of " +"business knowledge and share it with and between your employees." +msgstr "" + +#. module: knowledge +#: view:knowledge.installer:0 +msgid "Content templates" +msgstr "" diff --git a/addons/l10n_hn/__init__.py b/addons/l10n_hn/__init__.py old mode 100755 new mode 100644 diff --git a/addons/l10n_hn/__openerp__.py b/addons/l10n_hn/__openerp__.py old mode 100755 new mode 100644 index c4428759af0..31d9344cb65 --- a/addons/l10n_hn/__openerp__.py +++ b/addons/l10n_hn/__openerp__.py @@ -35,7 +35,7 @@ { 'name': 'Honduras - Plan contable general', 'version': '0.1', - 'category': 'Localisation/Account Charts', + 'category': 'Localization/Account Charts', 'description': """Agrega una nomenclatura contable para Honduras. También incluye impuestos y la moneda Lempira. -- Adds accounting chart for Honduras. It also includes taxes and the Lempira currency""", 'author': 'Salvatore Josue Trimarchi Pinto', 'website': 'http://trimarchi.co.cc', diff --git a/addons/l10n_hn/account_chart.xml b/addons/l10n_hn/account_chart.xml old mode 100755 new mode 100644 diff --git a/addons/l10n_hn/account_tax.xml b/addons/l10n_hn/account_tax.xml old mode 100755 new mode 100644 diff --git a/addons/l10n_hn/account_types.xml b/addons/l10n_hn/account_types.xml old mode 100755 new mode 100644 diff --git a/addons/l10n_hn/i18n/ca.po b/addons/l10n_hn/i18n/ca.po old mode 100755 new mode 100644 index 24de725e214..aad943ef40d --- a/addons/l10n_hn/i18n/ca.po +++ b/addons/l10n_hn/i18n/ca.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:58+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-10 04:58+0000\n" +"X-Generator: Launchpad (build 14263)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/i18n/es.po b/addons/l10n_hn/i18n/es.po old mode 100755 new mode 100644 index 54a8a33376c..fa71768c797 --- a/addons/l10n_hn/i18n/es.po +++ b/addons/l10n_hn/i18n/es.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:58+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-10 04:58+0000\n" +"X-Generator: Launchpad (build 14263)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/i18n/es_PY.po b/addons/l10n_hn/i18n/es_PY.po old mode 100755 new mode 100644 diff --git a/addons/l10n_hn/i18n/fr.po b/addons/l10n_hn/i18n/fr.po old mode 100755 new mode 100644 index f61ad5dae13..9d2e759a734 --- a/addons/l10n_hn/i18n/fr.po +++ b/addons/l10n_hn/i18n/fr.po @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:58+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-10 04:58+0000\n" +"X-Generator: Launchpad (build 14263)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/i18n/gl.po b/addons/l10n_hn/i18n/gl.po old mode 100755 new mode 100644 index ef2997a1875..0c718c8e4eb --- a/addons/l10n_hn/i18n/gl.po +++ b/addons/l10n_hn/i18n/gl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:58+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-10 04:58+0000\n" +"X-Generator: Launchpad (build 14263)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/i18n/hu.po b/addons/l10n_hn/i18n/hu.po old mode 100755 new mode 100644 index 305ba7c6e40..8cb0490fdaa --- a/addons/l10n_hn/i18n/hu.po +++ b/addons/l10n_hn/i18n/hu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:58+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-10 04:58+0000\n" +"X-Generator: Launchpad (build 14263)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/i18n/it.po b/addons/l10n_hn/i18n/it.po old mode 100755 new mode 100644 index 36b0d853598..b2cbae2b860 --- a/addons/l10n_hn/i18n/it.po +++ b/addons/l10n_hn/i18n/it.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:58+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-10 04:58+0000\n" +"X-Generator: Launchpad (build 14263)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/i18n/l10n_hn.pot b/addons/l10n_hn/i18n/l10n_hn.pot old mode 100755 new mode 100644 diff --git a/addons/l10n_hn/i18n/pt_BR.po b/addons/l10n_hn/i18n/pt_BR.po old mode 100755 new mode 100644 index 811711bfd59..85231507ac5 --- a/addons/l10n_hn/i18n/pt_BR.po +++ b/addons/l10n_hn/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:58+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-10 04:58+0000\n" +"X-Generator: Launchpad (build 14263)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/i18n/sr@latin.po b/addons/l10n_hn/i18n/sr@latin.po old mode 100755 new mode 100644 index 861c48c341e..60d3fcb2dec --- a/addons/l10n_hn/i18n/sr@latin.po +++ b/addons/l10n_hn/i18n/sr@latin.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:58+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-10 04:58+0000\n" +"X-Generator: Launchpad (build 14263)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/l10n_hn_base.xml b/addons/l10n_hn/l10n_hn_base.xml old mode 100755 new mode 100644 diff --git a/addons/lunch/__openerp__.py b/addons/lunch/__openerp__.py index 2a493f39dcf..6d5cd576912 100644 --- a/addons/lunch/__openerp__.py +++ b/addons/lunch/__openerp__.py @@ -33,7 +33,7 @@ """, "version": "0.1", "depends": ["base_tools"], - "category" : "Hidden", + "category" : "Human Resources", 'description': """ The base module to manage lunch diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index 621eef59da5..9c535966e17 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -74,7 +74,7 @@ class mail_message_common(osv.osv_memory): 'model': fields.char('Related Document model', size=128, select=1, readonly=1), 'res_id': fields.integer('Related Document ID', select=1, readonly=1), 'date': fields.datetime('Date'), - 'email_from': fields.char('From', size=128, help='Message sender, taken from user preferences'), + 'email_from': fields.char('From', size=128, help='Message sender, taken from user preferences. If empty, this is not a mail but a message.'), 'email_to': fields.char('To', size=256, help='Message recipients'), 'email_cc': fields.char('Cc', size=256, help='Carbon copy message recipients'), 'email_bcc': fields.char('Bcc', size=256, help='Blind carbon copy message recipients'), @@ -334,8 +334,8 @@ class mail_message(osv.osv): 'subtype': msg_mime_subtype, 'body_text': plaintext_body 'body_html': html_body, - 'attachments': { 'file1': 'bytes', - 'file2': 'bytes' } + 'attachments': [('file1', 'bytes'), + ('file2', 'bytes') } # ... 'original': source_of_email, } @@ -416,7 +416,7 @@ class mail_message(osv.osv): body = tools.html2plaintext(body) msg['body_text'] = tools.ustr(body, encoding) - attachments = {} + attachments = [] if msg_txt.is_multipart() or 'multipart/alternative' in msg.get('content-type', ''): body = "" if 'multipart/alternative' in msg.get('content-type', ''): @@ -432,7 +432,7 @@ class mail_message(osv.osv): if part.get_content_maintype()=='text': content = part.get_payload(decode=True) if filename: - attachments[filename] = content + attachments.append((filename, content)) content = tools.ustr(content, encoding) if part.get_content_subtype() == 'html': msg['body_html'] = content @@ -442,7 +442,7 @@ class mail_message(osv.osv): body = content elif part.get_content_maintype() in ('application', 'image'): if filename : - attachments[filename] = part.get_payload(decode=True) + attachments.append((filename,part.get_payload(decode=True))) else: res = part.get_payload(decode=True) body += tools.ustr(res, encoding) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index fa785c3517c..c8f7da9a5bb 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -201,7 +201,8 @@ class mail_thread(osv.osv): for thread in threads: to_attach = [] - for fname, fcontent in attachments.items(): + for attachment in attachments: + fname, fcontent = attachment if isinstance(fcontent, unicode): fcontent = fcontent.encode('utf-8') data_attach = { diff --git a/addons/membership/wizard/membership_invoice.py b/addons/membership/wizard/membership_invoice.py index b97926e564c..d0be223158f 100644 --- a/addons/membership/wizard/membership_invoice.py +++ b/addons/membership/wizard/membership_invoice.py @@ -35,7 +35,7 @@ class membership_invoice(osv.osv_memory): """This function returns value of product's member price based on product id. """ if not product_id: - return {'value': {'unit_price': False}} + return {'value': {'member_price': False}} return {'value': {'member_price': self.pool.get('product.product').price_get(cr, uid, [product_id])[product_id]}} def membership_invoice(self, cr, uid, ids, context=None): @@ -67,4 +67,4 @@ class membership_invoice(osv.osv_memory): membership_invoice() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/membership/wizard/membership_invoice_view.xml b/addons/membership/wizard/membership_invoice_view.xml index 500885d35f1..dedecf1e9dc 100644 --- a/addons/membership/wizard/membership_invoice_view.xml +++ b/addons/membership/wizard/membership_invoice_view.xml @@ -10,7 +10,7 @@ - +