diff --git a/addons/account/__openerp__.py b/addons/account/__openerp__.py index 114f0a5860c..e1b9078ec3f 100644 --- a/addons/account/__openerp__.py +++ b/addons/account/__openerp__.py @@ -29,25 +29,23 @@ Accounting and Financial Management. Financial and accounting module that covers: -------------------------------------------- -General accountings -Cost / Analytic accounting -Third party accounting -Taxes management -Budgets -Customer and Supplier Invoices -Bank statements -Reconciliation process by partner + * General Accounting + * Cost/Analytic accounting + * Third party accounting + * Taxes management + * Budgets + * Customer and Supplier Invoices + * Bank statements + * Reconciliation process by partner Creates a dashboard for accountants that includes: -------------------------------------------------- -* List of Customer Invoice to Approve -* Company Analysis -* Graph of Aged Receivables -* Graph of Treasury + * List of Customer Invoice to Approve + * Company Analysis + * Graph of Treasury -The processes like maintaining of general ledger is done through the defined financial Journals (entry move line or -grouping is maintained through journal) for a particular financial year and for preparation of vouchers there is a -module named account_voucher. +The processes like maintaining of general ledger is done through the defined financial Journals (entry move line orgrouping is maintained through journal) for a particular +financial year and for preparation of vouchers there is a module named account_voucher. """, 'website': 'http://www.openerp.com', 'images' : ['images/accounts.jpeg','images/bank_statement.jpeg','images/cash_register.jpeg','images/chart_of_accounts.jpeg','images/customer_invoice.jpeg','images/journal_entries.jpeg'], diff --git a/addons/account/account.py b/addons/account/account.py index c0877ec81e6..122016bad71 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -29,6 +29,8 @@ import pooler from osv import fields, osv import decimal_precision as dp from tools.translate import _ +from tools.float_utils import float_round + _logger = logging.getLogger(__name__) def check_cycle(self, cr, uid, ids, context=None): @@ -101,7 +103,7 @@ class account_payment_term_line(osv.osv): 'value': fields.selection([('procent', 'Percent'), ('balance', 'Balance'), ('fixed', 'Fixed Amount')], 'Valuation', - 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 threated."""), + 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."), 'days': fields.integer('Number of Days', required=True, help="Number of days to add before computation of the day of month." \ @@ -313,8 +315,8 @@ class account_account(osv.osv): cr.execute(request, params) _logger.debug('Status: %s',(cr.statusmessage)) - for res in cr.dictfetchall(): - accounts[res['id']] = res + for row in cr.dictfetchall(): + accounts[row['id']] = row # consolidate accounts with direct children children_and_consolidated.reverse() @@ -731,7 +733,7 @@ class account_journal(osv.osv): 'centralisation': fields.boolean('Centralised counterpart', help="Check this box to determine that each entry of this journal won't create a new counterpart but will share the same counterpart. This is used in fiscal year closing."), 'update_posted': fields.boolean('Allow Cancelling Entries', help="Check this box if you want to allow the cancellation the entries related to this journal or of the invoice related to this journal"), 'group_invoice_lines': fields.boolean('Group Invoice Lines', help="If this box is checked, the system will try to group the accounting lines when generating them from invoices."), - 'sequence_id': fields.many2one('ir.sequence', 'Entry Sequence', help="This field contains the informatin related to the numbering of the journal entries of this journal.", required=True), + 'sequence_id': fields.many2one('ir.sequence', 'Entry Sequence', help="This field contains the information related to the numbering of the journal entries of this journal.", required=True), 'user_id': fields.many2one('res.users', 'User', help="The user responsible for this journal"), 'groups_id': fields.many2many('res.groups', 'account_journal_group_rel', 'journal_id', 'group_id', 'Groups'), 'currency': fields.many2one('res.currency', 'Currency', help='The currency used to enter statement'), @@ -1269,7 +1271,7 @@ class account_move(osv.osv): 'period_id': fields.many2one('account.period', 'Period', required=True, states={'posted':[('readonly',True)]}), 'journal_id': fields.many2one('account.journal', 'Journal', required=True, states={'posted':[('readonly',True)]}), 'state': fields.selection([('draft','Unposted'), ('posted','Posted')], 'Status', required=True, readonly=True, - help='All manually created new journal entries are usually in the state \'Unposted\', but you can set the option to skip that state on the related journal. In that case, they will be behave as journal entries automatically created by the system on document validation (invoices, bank statements...) and will be created in \'Posted\' state.'), + help='All manually created new journal entries are usually in the state \'Unposted\', but you can set the option to skip that state on the related journal. In that case, they will behave as journal entries automatically created by the system on document validation (invoices, bank statements...) and will be created in \'Posted\' state.'), 'line_id': fields.one2many('account.move.line', 'move_id', 'Entries', states={'posted':[('readonly',True)]}), 'to_check': fields.boolean('To Review', help='Check this box if you are unsure of that journal entry and if you want to note it as \'to be reviewed\' by an accounting expert.'), 'partner_id': fields.related('line_id', 'partner_id', type="many2one", relation="res.partner", string="Partner", store=True), @@ -1788,7 +1790,7 @@ class account_tax_code(osv.osv): 'line_ids': fields.one2many('account.move.line', 'tax_code_id', 'Lines'), 'company_id': fields.many2one('res.company', 'Company', required=True), 'sign': fields.float('Coefficent for parent', required=True, help='You can specify here the coefficient that will be used when consolidating the amount of this case into its parent. For example, set 1/-1 if you want to add/substract it.'), - 'notprintable':fields.boolean("Not Printable in Invoice", help="Check this box if you don't want any VAT related to this Tax Code to appear on invoices"), + 'notprintable':fields.boolean("Not Printable in Invoice", help="Check this box if you don't want any tax related to this tax code to appear on invoices"), 'sequence': fields.integer('Sequence', help="Determine the display order in the report 'Accounting \ Reporting \ Generic Reporting \ Taxes \ Taxes Report'"), } @@ -1880,17 +1882,17 @@ class account_tax(osv.osv): 'python_applicable':fields.text('Python Code'), # - # Fields used for the VAT declaration + # Fields used for the Tax declaration # - 'base_code_id': fields.many2one('account.tax.code', 'Account Base Code', help="Use this code for the VAT declaration."), - 'tax_code_id': fields.many2one('account.tax.code', 'Account Tax Code', help="Use this code for the VAT declaration."), + 'base_code_id': fields.many2one('account.tax.code', 'Account Base Code', help="Use this code for the tax declaration."), + 'tax_code_id': fields.many2one('account.tax.code', 'Account Tax Code', help="Use this code for the tax declaration."), 'base_sign': fields.float('Base Code Sign', help="Usually 1 or -1."), 'tax_sign': fields.float('Tax Code Sign', help="Usually 1 or -1."), # Same fields for refund invoices - 'ref_base_code_id': fields.many2one('account.tax.code', 'Refund Base Code', help="Use this code for the VAT declaration."), - 'ref_tax_code_id': fields.many2one('account.tax.code', 'Refund Tax Code', help="Use this code for the VAT declaration."), + 'ref_base_code_id': fields.many2one('account.tax.code', 'Refund Base Code', help="Use this code for the tax declaration."), + 'ref_tax_code_id': fields.many2one('account.tax.code', 'Refund Tax Code', help="Use this code for the tax declaration."), 'ref_base_sign': fields.float('Base Code Sign', help="Usually 1 or -1."), 'ref_tax_sign': fields.float('Tax Code Sign', help="Usually 1 or -1."), 'include_base_amount': fields.boolean('Included in base amount', help="Indicates if the amount of tax must be included in the base amount for the computation of the next taxes"), @@ -2090,7 +2092,7 @@ class account_tax(osv.osv): tax_compute_precision = precision if taxes and taxes[0].company_id.tax_calculation_rounding_method == 'round_globally': tax_compute_precision += 5 - totalin = totalex = round(price_unit * quantity, precision) + totalin = totalex = float_round(price_unit * quantity, precision) tin = [] tex = [] for tax in taxes: @@ -2217,7 +2219,7 @@ class account_tax(osv.osv): def compute_inv(self, cr, uid, taxes, price_unit, quantity, product=None, partner=None, precision=None): """ Compute tax values for given PRICE_UNIT, QUANTITY and a buyer/seller ADDRESS_ID. - Price Unit is a VAT included price + Price Unit is a Tax included price RETURN: [ tax ] @@ -2673,7 +2675,7 @@ class account_tax_code_template(osv.osv): 'parent_id': fields.many2one('account.tax.code.template', 'Parent Code', select=True), 'child_ids': fields.one2many('account.tax.code.template', 'parent_id', 'Child Codes'), 'sign': fields.float('Sign For Parent', required=True), - 'notprintable':fields.boolean("Not Printable in Invoice", help="Check this box if you don't want any VAT related to this Tax Code to appear on invoices"), + 'notprintable':fields.boolean("Not Printable in Invoice", help="Check this box if you don't want any tax related to this tax Code to appear on invoices."), } _defaults = { @@ -2788,17 +2790,17 @@ class account_tax_template(osv.osv): 'python_applicable':fields.text('Python Code'), # - # Fields used for the VAT declaration + # Fields used for the Tax declaration # - 'base_code_id': fields.many2one('account.tax.code.template', 'Base Code', help="Use this code for the VAT declaration."), - 'tax_code_id': fields.many2one('account.tax.code.template', 'Tax Code', help="Use this code for the VAT declaration."), + 'base_code_id': fields.many2one('account.tax.code.template', 'Base Code', help="Use this code for the tax declaration."), + 'tax_code_id': fields.many2one('account.tax.code.template', 'Tax Code', help="Use this code for the tax declaration."), 'base_sign': fields.float('Base Code Sign', help="Usually 1 or -1."), 'tax_sign': fields.float('Tax Code Sign', help="Usually 1 or -1."), # Same fields for refund invoices - 'ref_base_code_id': fields.many2one('account.tax.code.template', 'Refund Base Code', help="Use this code for the VAT declaration."), - 'ref_tax_code_id': fields.many2one('account.tax.code.template', 'Refund Tax Code', help="Use this code for the VAT declaration."), + 'ref_base_code_id': fields.many2one('account.tax.code.template', 'Refund Base Code', help="Use this code for the tax declaration."), + 'ref_tax_code_id': fields.many2one('account.tax.code.template', 'Refund Tax Code', help="Use this code for the tax declaration."), 'ref_base_sign': fields.float('Base Code Sign', help="Usually 1 or -1."), 'ref_tax_sign': fields.float('Tax Code Sign', help="Usually 1 or -1."), 'include_base_amount': fields.boolean('Include in Base Amount', help="Set if the amount of tax must be included in the base amount before computing the next taxes."), diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py index 8f9c6ed1d6f..11bcf565260 100644 --- a/addons/account/account_bank_statement.py +++ b/addons/account/account_bank_statement.py @@ -173,7 +173,158 @@ class account_bank_statement(osv.osv): def button_dummy(self, cr, uid, ids, context=None): return self.write(cr, uid, ids, {}, context=context) + def _prepare_move(self, cr, uid, st_line, st_line_number, context=None): + """Prepare the dict of values to create the move from a + statement line. This method may be overridden to implement custom + move generation (making sure to call super() to establish + a clean extension chain). + + :param browse_record st_line: account.bank.statement.line record to + create the move from. + :param char st_line_number: will be used as the name of the generated account move + :return: dict of value to create() the account.move + """ + return { + 'journal_id': st_line.statement_id.journal_id.id, + 'period_id': st_line.statement_id.period_id.id, + 'date': st_line.date, + 'name': st_line_number, + 'ref': st_line.ref, + } + + def _prepare_bank_move_line(self, cr, uid, st_line, move_id, amount, company_currency_id, + context=None): + """Compute the args to build the dict of values to create the bank move line from a + statement line by calling the _prepare_move_line_vals. This method may be + overridden to implement custom move generation (making sure to call super() to + establish a clean extension chain). + + :param browse_record st_line: account.bank.statement.line record to + create the move from. + :param int/long move_id: ID of the account.move to link the move line + :param float amount: amount of the move line + :param int/long company_currency_id: ID of currency of the concerned company + :return: dict of value to create() the bank account.move.line + """ + anl_id = st_line.analytic_account_id and st_line.analytic_account_id.id or False + debit = ((amount<0) and -amount) or 0.0 + credit = ((amount>0) and amount) or 0.0 + cur_id = False + amt_cur = False + if st_line.statement_id.currency.id <> company_currency_id: + cur_id = st_line.statement_id.currency.id + if st_line.account_id and st_line.account_id.currency_id and st_line.account_id.currency_id.id <> company_currency_id: + cur_id = st_line.account_id.currency_id.id + if cur_id: + res_currency_obj = self.pool.get('res.currency') + amt_cur = -res_currency_obj.compute(cr, uid, company_currency_id, cur_id, amount, context=context) + + res = self._prepare_move_line_vals(cr, uid, st_line, move_id, debit, credit, + amount_currency=amt_cur, currency_id=cur_id, analytic_id=anl_id, context=context) + return res + + def _get_counter_part_account(sefl, cr, uid, st_line, context=None): + """Retrieve the account to use in the counterpart move. + This method may be overridden to implement custom move generation (making sure to + call super() to establish a clean extension chain). + + :param browse_record st_line: account.bank.statement.line record to + create the move from. + :return: int/long of the account.account to use as counterpart + """ + if st_line.amount >= 0: + return st_line.statement_id.journal_id.default_credit_account_id.id + return st_line.statement_id.journal_id.default_debit_account_id.id + + def _get_counter_part_partner(sefl, cr, uid, st_line, context=None): + """Retrieve the partner to use in the counterpart move. + This method may be overridden to implement custom move generation (making sure to + call super() to establish a clean extension chain). + + :param browse_record st_line: account.bank.statement.line record to + create the move from. + :return: int/long of the res.partner to use as counterpart + """ + return st_line.partner_id and st_line.partner_id.id or False + + def _prepare_counterpart_move_line(self, cr, uid, st_line, move_id, amount, company_currency_id, + context=None): + """Compute the args to build the dict of values to create the counter part move line from a + statement line by calling the _prepare_move_line_vals. This method may be + overridden to implement custom move generation (making sure to call super() to + establish a clean extension chain). + + :param browse_record st_line: account.bank.statement.line record to + create the move from. + :param int/long move_id: ID of the account.move to link the move line + :param float amount: amount of the move line + :param int/long account_id: ID of account to use as counter part + :param int/long company_currency_id: ID of currency of the concerned company + :return: dict of value to create() the bank account.move.line + """ + account_id = self._get_counter_part_account(cr, uid, st_line, context=context) + partner_id = self._get_counter_part_partner(cr, uid, st_line, context=context) + debit = ((amount > 0) and amount) or 0.0 + credit = ((amount < 0) and -amount) or 0.0 + cur_id = False + amt_cur = False + if st_line.statement_id.currency.id <> company_currency_id: + amt_cur = st_line.amount + cur_id = st_line.statement_id.currency.id + return self._prepare_move_line_vals(cr, uid, st_line, move_id, debit, credit, + amount_currency = amt_cur, currency_id = cur_id, account_id = account_id, + partner_id = partner_id, context=context) + + def _prepare_move_line_vals(self, cr, uid, st_line, move_id, debit, credit, currency_id = False, + amount_currency= False, account_id = False, analytic_id = False, + partner_id = False, context=None): + """Prepare the dict of values to create the move line from a + statement line. All non-mandatory args will replace the default computed one. + This method may be overridden to implement custom move generation (making sure to + call super() to establish a clean extension chain). + + :param browse_record st_line: account.bank.statement.line record to + create the move from. + :param int/long move_id: ID of the account.move to link the move line + :param float debit: debit amount of the move line + :param float credit: credit amount of the move line + :param int/long currency_id: ID of currency of the move line to create + :param float amount_currency: amount of the debit/credit expressed in the currency_id + :param int/long account_id: ID of the account to use in the move line if different + from the statement line account ID + :param int/long analytic_id: ID of analytic account to put on the move line + :param int/long partner_id: ID of the partner to put on the move line + :return: dict of value to create() the account.move.line + """ + acc_id = account_id or st_line.account_id.id + cur_id = currency_id or st_line.statement_id.currency.id + par_id = partner_id or (((st_line.partner_id) and st_line.partner_id.id) or False) + return { + 'name': st_line.name, + 'date': st_line.date, + 'ref': st_line.ref, + 'move_id': move_id, + 'partner_id': partner_id, + 'account_id': acc_id, + 'credit': credit, + 'debit': debit, + 'statement_id': st_line.statement_id.id, + 'journal_id': st_line.statement_id.journal_id.id, + 'period_id': st_line.statement_id.period_id.id, + 'currency_id': cur_id, + 'amount_currency': amount_currency, + 'analytic_account_id': analytic_id, + } + def create_move_from_st_line(self, cr, uid, st_line_id, company_currency_id, st_line_number, context=None): + """Create the account move from the statement line. + + :param int/long st_line_id: ID of the account.bank.statement.line to create the move from. + :param int/long company_currency_id: ID of the res.currency of the company + :param char st_line_number: will be used as the name of the generated account move + :return: ID of the account.move created + """ + if context is None: context = {} res_currency_obj = self.pool.get('res.currency') @@ -185,82 +336,28 @@ class account_bank_statement(osv.osv): context.update({'date': st_line.date}) - move_id = account_move_obj.create(cr, uid, { - 'journal_id': st.journal_id.id, - 'period_id': st.period_id.id, - 'date': st_line.date, - 'name': st_line_number, - 'ref': st_line.ref, - }, context=context) + move_vals = self._prepare_move(cr, uid, st_line, st_line_number, context=context) + move_id = account_move_obj.create(cr, uid, move_vals, context=context) account_bank_statement_line_obj.write(cr, uid, [st_line.id], { 'move_ids': [(4, move_id, False)] }) - torec = [] - if st_line.amount >= 0: - account_id = st.journal_id.default_credit_account_id.id - else: - account_id = st.journal_id.default_debit_account_id.id - acc_cur = ((st_line.amount<=0) and st.journal_id.default_debit_account_id) or st_line.account_id + context.update({ 'res.currency.compute.account': acc_cur, }) amount = res_currency_obj.compute(cr, uid, st.currency.id, company_currency_id, st_line.amount, context=context) - val = { - 'name': st_line.name, - 'date': st_line.date, - 'ref': st_line.ref, - 'move_id': move_id, - 'partner_id': ((st_line.partner_id) and st_line.partner_id.id) or False, - 'account_id': (st_line.account_id) and st_line.account_id.id, - 'credit': ((amount>0) and amount) or 0.0, - 'debit': ((amount<0) and -amount) or 0.0, - 'statement_id': st.id, - 'journal_id': st.journal_id.id, - 'period_id': st.period_id.id, - 'currency_id': st.currency.id, - 'analytic_account_id': st_line.analytic_account_id and st_line.analytic_account_id.id or False - } - - if st.currency.id <> company_currency_id: - amount_cur = res_currency_obj.compute(cr, uid, company_currency_id, - st.currency.id, amount, context=context) - val['amount_currency'] = -amount_cur - - if st_line.account_id and st_line.account_id.currency_id and st_line.account_id.currency_id.id <> company_currency_id: - val['currency_id'] = st_line.account_id.currency_id.id - amount_cur = res_currency_obj.compute(cr, uid, company_currency_id, - st_line.account_id.currency_id.id, amount, context=context) - val['amount_currency'] = -amount_cur - - move_line_id = account_move_line_obj.create(cr, uid, val, context=context) + bank_move_vals = self._prepare_bank_move_line(cr, uid, st_line, move_id, amount, + company_currency_id, context=context) + move_line_id = account_move_line_obj.create(cr, uid, bank_move_vals, context=context) torec.append(move_line_id) - # Fill the secondary amount/currency - # if currency is not the same than the company - amount_currency = False - currency_id = False - if st.currency.id <> company_currency_id: - amount_currency = st_line.amount - currency_id = st.currency.id - account_move_line_obj.create(cr, uid, { - 'name': st_line.name, - 'date': st_line.date, - 'ref': st_line.ref, - 'move_id': move_id, - 'partner_id': ((st_line.partner_id) and st_line.partner_id.id) or False, - 'account_id': account_id, - 'credit': ((amount < 0) and -amount) or 0.0, - 'debit': ((amount > 0) and amount) or 0.0, - 'statement_id': st.id, - 'journal_id': st.journal_id.id, - 'period_id': st.period_id.id, - 'amount_currency': amount_currency, - 'currency_id': currency_id, - }, context=context) + counterpart_move_vals = self._prepare_counterpart_move_line(cr, uid, st_line, move_id, + amount, company_currency_id, context=context) + account_move_line_obj.create(cr, uid, counterpart_move_vals, context=context) for line in account_move_line_obj.browse(cr, uid, [x.id for x in account_move_obj.browse(cr, uid, move_id, diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index c71a7d56aae..393c468c952 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -196,7 +196,7 @@ - + @@ -292,8 +292,10 @@
-
@@ -135,7 +137,7 @@ - + @@ -163,8 +165,7 @@ + on_change="onchange_partner_id(partner_id)"/> diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml index fc3cb3a3d2e..3f6e97fa186 100644 --- a/addons/crm/crm_view.xml +++ b/addons/crm/crm_view.xml @@ -2,10 +2,16 @@ - + + - \n" +"PO-Revision-Date: 2012-07-28 18:57+0000\n" +"Last-Translator: Fábio Martinelli \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-07-14 05:48+0000\n" -"X-Generator: Launchpad (build 15614)\n" +"X-Launchpad-Export-Date: 2012-07-29 04:37+0000\n" +"X-Generator: Launchpad (build 15694)\n" #. module: crm #: view:crm.lead.report:0 @@ -172,7 +172,7 @@ msgstr "Mês de fechamento esperado" #. module: crm #: view:crm.lead2opportunity.partner.mass:0 msgid "Assigned Opportunities to" -msgstr "" +msgstr "Oportunidades atribuídas para" #. module: crm #: view:crm.lead:0 field:crm.lead,partner_id:0 view:crm.lead.report:0 @@ -454,6 +454,13 @@ msgid "" "Revenue\" and the \"Expected Closing Date.\" You should also have a look at " "the tooltip of the field \"Change Probability Automatically\"." msgstr "" +"Estágios permitem ao vendedor para rastrear de uma forma fácil como uma " +"oportunidade está posicionada no ciclo de vendas. Para gerenciar de uma " +"forma eficiente seu funil de vendas, é importante definir condições para ir " +"para o próximo passo. Por Exemplo, marcando uma Oportunidade como " +"\"Qualificada\", você precisa especificar a \"Receita Esperada\" e o " +"\"Fechamento Esperado\". Você também poderá consultar a dica de \"Mudar a " +"Probabilidade Automaticamente\"." #. module: crm #: view:crm.lead.report:0 @@ -535,7 +542,7 @@ msgstr "E-mail" #. module: crm #: view:crm.phonecall:0 msgid "Phonecalls during last 7 days" -msgstr "Ligações de telefone dos últimos 7 dias" +msgstr "Ligações telefônicas dos últimos 7 dias" #. module: crm #: selection:crm.lead.report,creation_month:0 @@ -592,7 +599,7 @@ msgstr "Data de término" #. module: crm #: view:crm.opportunity2phonecall:0 view:crm.phonecall2phonecall:0 msgid "Schedule/Log a Call" -msgstr "" +msgstr "Agendar/Registrar uma Ligação" #. module: crm #: constraint:base.action.rule:0 @@ -737,6 +744,12 @@ msgid "" "opportunities, you can assign the following stage to the team: Territory, " "Qualified, Qualified Sponsors, Proposition, Negociaton, Won/Lost." msgstr "" +"Defina Equipe de Vendas para estruturar seu departamento de vendas e " +"associar usuários a cada Equipe. Você também deve definir o estágio de " +"vendas de cada equipe. Por exemplo, se você usar técnicas de Vendas de " +"Soluções para rastrear suas oportunidades, você pode associar o seguinte " +"estágio para a equipe: Território, Qualificado, Patrocinador Qualificado, " +"Proposta, Negociação, Ganha/Perda" #. module: crm #: code:addons/crm/crm_lead.py:718 view:crm.lead:0 selection:crm.lead,type:0 @@ -779,7 +792,7 @@ msgstr "Continuar" #. module: crm #: field:crm.segmentation,som_interval:0 msgid "Days per Period" -msgstr "" +msgstr "Dias por Período" #. module: crm #: field:crm.meeting,byday:0 @@ -906,7 +919,7 @@ msgstr "Fornecedor" #. module: crm #: view:crm.lead:0 msgid "Mark Won" -msgstr "Marcar como Vencido" +msgstr "Ganhamos!" #. module: crm #: selection:crm.segmentation.line,expr_name:0 @@ -916,7 +929,7 @@ msgstr "Total da Compra" #. module: crm #: view:crm.lead:0 msgid "Mark Lost" -msgstr "Marcar como Perdido" +msgstr "Perdemos" #. module: crm #: selection:crm.lead.report,creation_month:0 @@ -946,7 +959,7 @@ msgstr "Dias para Abrir" #. module: crm #: view:crm.meeting:0 msgid "Show Time as" -msgstr "" +msgstr "Mostrar horário como" #. module: crm #: view:crm.phonecall2partner:0 @@ -1183,7 +1196,7 @@ msgstr "Email para Parceiro" #. module: crm #: view:crm.opportunity2phonecall:0 view:crm.phonecall2phonecall:0 msgid "Call Details" -msgstr "Detalhes da Chamada" +msgstr "Detalhes da Ligação" #. module: crm #: field:crm.meeting,class:0 @@ -1329,7 +1342,7 @@ msgstr "Escrever Data" #. module: crm #: view:crm.meeting:0 msgid "End of Recurrency" -msgstr "" +msgstr "Fim da recorrência" #. module: crm #: view:crm.meeting:0 @@ -1353,7 +1366,7 @@ msgstr "Definir um alarme neste momento, antes da ocorrência do evento" #. module: crm #: model:ir.actions.act_window,name:crm.crm_case_categ_phone_create_partner msgid "Schedule a Call" -msgstr "Agendar Chamada" +msgstr "Agendar Ligação" #. module: crm #: view:crm.lead2partner:0 view:crm.phonecall:0 view:crm.phonecall2partner:0 @@ -1379,6 +1392,10 @@ msgid "" " \n" "If the call needs to be done then the state is set to 'Not Held'." msgstr "" +"A situação é marcada como \"A Fazer\", quando um chamado é criado.\n" +"Se o chamado está em progresso, a situação é marcada como \"Aberto\".\n" +"Quando a ligação é finalizada, a situação é marcada como \"Concluida\".\n" +"Se a chamada precisa ser refeita então a situação é marcada como \"Pendente\"" #. module: crm #: selection:crm.meeting,week_list:0 @@ -1593,7 +1610,7 @@ msgstr "Erro ! Você não pode criar um Time de Vends recursivo." #: selection:crm.opportunity2phonecall,action:0 #: selection:crm.phonecall2phonecall,action:0 msgid "Log a call" -msgstr "Logar a chamada" +msgstr "Registrar a Ligação" #. module: crm #: selection:crm.lead2opportunity.partner,action:0 @@ -1885,7 +1902,7 @@ msgstr "Responder-Para" #. module: crm #: view:crm.case.section:0 msgid "Select Stages for this Sales Team" -msgstr "" +msgstr "Escolha os estágios para esta Equipe de Vendas" #. module: crm #: view:board.board:0 @@ -1925,7 +1942,7 @@ msgstr "Canais" #: view:crm.phonecall.report:0 selection:crm.phonecall.report,state:0 #: view:res.partner:0 msgid "Held" -msgstr "Ajuda" +msgstr "Concluída" #. module: crm #: view:crm.lead:0 @@ -2000,7 +2017,7 @@ msgstr "Local" #. module: crm #: model:ir.model,name:crm.model_crm_lead2opportunity_partner_mass msgid "Mass Lead To Opportunity Partner" -msgstr "" +msgstr "Prospectos para Oportunidades em lote" #. module: crm #: view:crm.lead:0 @@ -2129,7 +2146,7 @@ msgstr "Prospecções/Oportunidades com o status de novo" #: view:crm.phonecall:0 selection:crm.phonecall,state:0 #: view:crm.phonecall.report:0 view:res.partner:0 msgid "Not Held" -msgstr "Não Segura" +msgstr "Pendente" #. module: crm #: field:crm.lead.report,probability:0 @@ -2198,7 +2215,7 @@ msgstr "Criar um Novo Parceiro" #: model:ir.actions.act_window,name:crm.crm_case_categ_phone_outgoing0 #: model:ir.ui.menu,name:crm.menu_crm_case_phone_outbound msgid "Scheduled Calls" -msgstr "Agendar Chamadas" +msgstr "Ligações Agendadas" #. module: crm #: view:crm.meeting:0 view:res.partner:0 @@ -2208,7 +2225,7 @@ msgstr "Data de Início" #. module: crm #: view:crm.phonecall:0 msgid "Scheduled Phonecalls" -msgstr "Agendar Chamadas Telefônicas" +msgstr "Ligações Agendadas" #. module: crm #: view:crm.meeting:0 @@ -2759,7 +2776,7 @@ msgstr "Endereço de E-mail do contato" #. module: crm #: field:crm.lead,referred:0 msgid "Referred by" -msgstr "" +msgstr "Indicado por" #. module: crm #: view:crm.lead:0 model:ir.model,name:crm.model_crm_add_note @@ -2797,7 +2814,7 @@ msgstr "Erro!" #. module: crm #: field:crm.opportunity2phonecall,name:0 field:crm.phonecall2phonecall,name:0 msgid "Call summary" -msgstr "Resumo da Chamada" +msgstr "Resumo da ligação" #. module: crm #: selection:crm.add.note,state:0 selection:crm.lead,state:0 @@ -2897,7 +2914,7 @@ msgstr "# Emails" #. module: crm #: field:crm.phonecall,name:0 view:res.partner:0 msgid "Call Summary" -msgstr "Resumo da Chamada" +msgstr "Resumo da Ligação" #. module: crm #: view:crm.lead:0 @@ -2913,6 +2930,12 @@ msgid "" "customer. You can also import a .CSV file with a list of calls to be done by " "your sales team." msgstr "" +"Ligações agendadas mostra todas as ligações que precisam ser feitas pela " +"equipe de vendas. Um vendedor pode gravar as informações sobre uma chamada " +"na visão de formulário. Esta informação será gravada no formulário de " +"parceiro para rastrear cada contato que você fizer com um cliente. Você " +"também pode importar um arquivo .CSV com uma lista de chamadas a serem " +"feitas por sua equipe." #. module: crm #: field:crm.segmentation.line,expr_operator:0 @@ -2928,7 +2951,7 @@ msgstr "Chamada Telefônica para Chamada Telefônica" #: view:crm.lead:0 #: model:ir.actions.act_window,name:crm.opportunity2phonecall_act msgid "Schedule/Log Call" -msgstr "Agenda/Registro de Chamadas" +msgstr "Agendar/Registrar Ligações" #. module: crm #: selection:crm.meeting,state:0 @@ -3133,6 +3156,13 @@ msgid "" "bought goods to another supplier. \n" "Use this functionality for recurring businesses." msgstr "" +"Um período é a média de dias entre dois ciclos de compras ou vendas para " +"esta segmentação. \n" +"É usado principalmente para detectar se um parceiro não vende ou compra a um " +"tempo,\n" +"então nós presumimos que seu estado de espírito esfriou por que " +"provavelmente ele comprou bens de outro fornecedor.\n" +"Use esta funcionalidade para negócios recorrentes." #. module: crm #: field:crm.meeting,vtimezone:0 @@ -3417,7 +3447,7 @@ msgstr "Fechar" #: selection:crm.opportunity2phonecall,action:0 #: selection:crm.phonecall2phonecall,action:0 msgid "Schedule a call" -msgstr "Agendar a chamada" +msgstr "Agendar a Ligação" #. module: crm #: view:crm.lead:0 view:crm.phonecall:0 @@ -4791,4 +4821,4 @@ msgstr "Notícias" #~ msgstr "Oportunidades atribuídas a" #~ msgid "Schedule call" -#~ msgstr "Agendar Chamada" +#~ msgstr "Agendar ligação" diff --git a/addons/crm/report/crm_lead_report.py b/addons/crm/report/crm_lead_report.py index 2ee1f2945f4..da5167da1e6 100644 --- a/addons/crm/report/crm_lead_report.py +++ b/addons/crm/report/crm_lead_report.py @@ -85,8 +85,6 @@ class crm_lead_report(osv.osv): 'probability': fields.float('Probability',digits=(16,2),readonly=True, group_operator="avg"), 'planned_revenue': fields.float('Planned Revenue',digits=(16,2),readonly=True), 'probable_revenue': fields.float('Probable Revenue', digits=(16,2),readonly=True), - 'categ_id': fields.many2one('crm.case.categ', 'Category',\ - domain="['|',('section_id','=',False),('section_id','=',section_id)]" , readonly=True), 'stage_id': fields.many2one ('crm.case.stage', 'Stage', readonly=True, domain="[('section_ids', '=', section_id)]"), 'partner_id': fields.many2one('res.partner', 'Partner' , readonly=True), 'nbr': fields.integer('# of Cases', readonly=True), @@ -134,7 +132,6 @@ class crm_lead_report(osv.osv): c.section_id, c.channel_id, c.type_id, - c.categ_id, c.partner_id, c.country_id, c.planned_revenue, diff --git a/addons/crm/report/crm_lead_report_view.xml b/addons/crm/report/crm_lead_report_view.xml index 142d44432f0..f45b9d621da 100644 --- a/addons/crm/report/crm_lead_report_view.xml +++ b/addons/crm/report/crm_lead_report_view.xml @@ -16,7 +16,6 @@ - @@ -114,7 +113,6 @@ - @@ -140,8 +138,6 @@ - - diff --git a/addons/crm/res_partner_view.xml b/addons/crm/res_partner_view.xml index 26c74427009..8ddf435138a 100644 --- a/addons/crm/res_partner_view.xml +++ b/addons/crm/res_partner_view.xml @@ -11,7 +11,7 @@ - + @@ -24,7 +24,7 @@ - + @@ -37,11 +37,16 @@ - + + + + + + @@ -88,12 +93,6 @@ - - - graph - - - @@ -101,16 +100,17 @@ res.partner kanban + - - + + Opportunities - + Meetings @@ -129,7 +129,7 @@

From to

@@ -151,7 +155,7 @@ - + @@ -222,7 +226,7 @@ - + event.event.kanban event.event kanban @@ -286,7 +290,7 @@ - + event.event.calendar @@ -316,7 +320,7 @@ - + Events @@ -362,7 +366,7 @@ - + Events ir.actions.act_window event.event @@ -371,9 +375,9 @@ {"search_default_upcoming":1} Event is the low level object used by meeting and others documents that should be synchronized with mobile devices or calendar applications through caldav. Most of the users should work in the Calendar menu, and not in the list of events. - + - - + - + diff --git a/addons/event/i18n/nb.po b/addons/event/i18n/nb.po new file mode 100644 index 00000000000..4a868590e68 --- /dev/null +++ b/addons/event/i18n/nb.po @@ -0,0 +1,1264 @@ +# Norwegian Bokmal 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 , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-07-25 13:20+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-26 04:39+0000\n" +"X-Generator: Launchpad (build 15679)\n" + +#. module: event +#: view:event.event:0 +msgid "Invoice Information" +msgstr "Fakturainformasjon" + +#. module: event +#: view:partner.event.registration:0 +msgid "Event Details" +msgstr "Hendelsesdetaljer" + +#. module: event +#: field:event.event,main_speaker_id:0 +msgid "Main Speaker" +msgstr "Hovedtaler" + +#. module: event +#: view:event.event:0 +#: view:event.registration:0 +#: view:report.event.registration:0 +msgid "Group By..." +msgstr "Grupper etter..." + +#. module: event +#: field:event.event,register_min:0 +msgid "Minimum Registrations" +msgstr "Minimum registrerte" + +#. module: event +#: model:ir.model,name:event.model_event_confirm_registration +msgid "Confirmation for Event Registration" +msgstr "Bekreftelse for hendelsesregistrering" + +#. module: event +#: field:event.registration.badge,title:0 +msgid "Title" +msgstr "Tittel" + +#. module: event +#: field:event.event,mail_registr:0 +msgid "Registration Email" +msgstr "Epost for registrering" + +#. module: event +#: model:ir.actions.act_window,name:event.action_event_confirm_registration +msgid "Make Invoices" +msgstr "Lag fakturaer" + +#. module: event +#: view:event.event:0 +#: view:event.registration:0 +msgid "Registration Date" +msgstr "Registreringsdato" + +#. module: event +#: view:partner.event.registration:0 +msgid "_Close" +msgstr "_Lukk" + +#. module: event +#: model:event.event,name:event.event_0 +msgid "Concert of Bon Jovi" +msgstr "Konsert med Bon Jovi" + +#. module: event +#: view:report.event.registration:0 +msgid "Invoiced Registrations only" +msgstr "Bare fakturerte registreringer" + +#. module: event +#: selection:report.event.registration,month:0 +msgid "March" +msgstr "Mars" + +#. module: event +#: field:event.event,mail_confirm:0 +msgid "Confirmation Email" +msgstr "Bekreftelsesepost" + +#. module: event +#: field:event.registration,nb_register:0 +msgid "Quantity" +msgstr "Kvantum" + +#. module: event +#: code:addons/event/wizard/event_make_invoice.py:63 +#, python-format +msgid "Registration doesn't have any partner to invoice." +msgstr "Registreringer har ingen partner å fakturere mot" + +#. module: event +#: field:event.event,company_id:0 +#: field:event.registration,company_id:0 +#: view:report.event.registration:0 +#: field:report.event.registration,company_id:0 +msgid "Company" +msgstr "Firma" + +#. module: event +#: field:event.make.invoice,invoice_date:0 +msgid "Invoice Date" +msgstr "Fakturadato" + +#. module: event +#: help:event.event,pricelist_id:0 +msgid "Pricelist version for current event." +msgstr "Prisliste for gjeldende hendelse." + +#. module: event +#: code:addons/event/wizard/partner_event_registration.py:88 +#: view:event.registration:0 +#: model:ir.actions.act_window,name:event.action_partner_event_registration +#: model:ir.model,name:event.model_event_registration +#: view:partner.event.registration:0 +#, python-format +msgid "Event Registration" +msgstr "Hendelseregistrering" + +#. module: event +#: field:event.event,parent_id:0 +msgid "Parent Event" +msgstr "" + +#. module: event +#: model:ir.actions.act_window,name:event.action_make_invoices +msgid "Make Invoice" +msgstr "Lag faktura" + +#. module: event +#: field:event.registration,price_subtotal:0 +msgid "Subtotal" +msgstr "Subtotal" + +#. module: event +#: view:report.event.registration:0 +msgid "Event on Registration" +msgstr "" + +#. module: event +#: help:event.event,reply_to:0 +msgid "The email address put in the 'Reply-To' of all emails sent by OpenERP" +msgstr "" + +#. module: event +#: view:event.registration:0 +msgid "Add Internal Note" +msgstr "Legg til internt notat" + +#. module: event +#: view:event.event:0 +msgid "Confirmed events" +msgstr "Bekreftede hendelser" + +#. module: event +#: view:report.event.registration:0 +msgid "Event Beginning Date" +msgstr "Startdato hendelse" + +#. module: event +#: model:ir.actions.act_window,name:event.action_report_event_registration +#: model:ir.model,name:event.model_report_event_registration +#: model:ir.ui.menu,name:event.menu_report_event_registration +#: view:report.event.registration:0 +msgid "Events Analysis" +msgstr "Hendelse analyse" + +#. module: event +#: field:event.registration,message_ids:0 +msgid "Messages" +msgstr "Meldinger" + +#. module: event +#: model:ir.model,name:event.model_event_registration_badge +msgid "event.registration.badge" +msgstr "event.registration.badge" + +#. module: event +#: field:event.event,mail_auto_confirm:0 +msgid "Mail Auto Confirm" +msgstr "" + +#. module: event +#: model:product.template,name:event.event_product_1_product_template +msgid "Ticket for Opera" +msgstr "Operabillett" + +#. module: event +#: code:addons/event/event.py:125 +#: view:event.event:0 +#, python-format +msgid "Confirm Event" +msgstr "Bekreft hendelse" + +#. module: event +#: selection:event.event,state:0 +#: selection:event.registration,state:0 +#: selection:report.event.registration,state:0 +msgid "Cancelled" +msgstr "Kansellert" + +#. module: event +#: field:event.event,reply_to:0 +msgid "Reply-To" +msgstr "Svar til" + +#. module: event +#: model:ir.actions.act_window,name:event.open_board_associations_manager +#: model:ir.ui.menu,name:event.menu_board_associations_manager +msgid "Event Dashboard" +msgstr "Hendelse konsoll" + +#. module: event +#: model:event.event,name:event.event_1 +msgid "Opera of Verdi" +msgstr "Verdis opera" + +#. module: event +#: selection:report.event.registration,month:0 +msgid "July" +msgstr "Juli" + +#. module: event +#: help:event.event,register_prospect:0 +msgid "Total of Prospect Registrations" +msgstr "" + +#. module: event +#: help:event.event,mail_auto_confirm:0 +msgid "" +"Check this box if you want to use automatic confirmation emailing or " +"reminder." +msgstr "" + +#. module: event +#: field:event.registration,ref:0 +msgid "Reference" +msgstr "Referanse" + +#. module: event +#: help:event.event,date_end:0 +#: help:partner.event.registration,end_date:0 +msgid "Closing Date of Event" +msgstr "Siste dato for hendelse" + +#. module: event +#: view:event.registration:0 +msgid "Emails" +msgstr "E-poster" + +#. module: event +#: view:event.registration:0 +msgid "Extra Info" +msgstr "Ekstra informasjon" + +#. module: event +#: code:addons/event/wizard/event_make_invoice.py:83 +#, python-format +msgid "Customer Invoices" +msgstr "Kundefaktura" + +#. module: event +#: selection:event.event,state:0 +#: selection:report.event.registration,state:0 +msgid "Draft" +msgstr "Utkast" + +#. module: event +#: field:event.type,name:0 +msgid "Event type" +msgstr "Hendelsetype" + +#. module: event +#: model:ir.model,name:event.model_event_type +msgid " Event Type " +msgstr " Hendelsestype " + +#. module: event +#: view:event.event:0 +#: view:event.registration:0 +#: field:event.registration,event_id:0 +#: model:ir.model,name:event.model_event_event +#: field:partner.event.registration,event_id:0 +#: view:report.event.registration:0 +#: field:report.event.registration,event_id:0 +#: view:res.partner:0 +msgid "Event" +msgstr "Hendelse" + +#. module: event +#: view:event.registration:0 +#: field:event.registration,badge_ids:0 +msgid "Badges" +msgstr "Skilt" + +#. module: event +#: view:event.event:0 +#: selection:event.event,state:0 +#: view:event.registration:0 +#: selection:event.registration,state:0 +#: selection:report.event.registration,state:0 +msgid "Confirmed" +msgstr "Bekreftet" + +#. module: event +#: view:event.confirm.registration:0 +msgid "Registration Confirmation" +msgstr "" + +#. module: event +#: view:event.event:0 +msgid "Events in New state" +msgstr "" + +#. module: event +#: view:report.event.registration:0 +msgid "Confirm" +msgstr "Bekreft" + +#. module: event +#: view:event.event:0 +#: field:event.event,speaker_ids:0 +msgid "Other Speakers" +msgstr "Andre talere" + +#. module: event +#: model:ir.model,name:event.model_event_make_invoice +msgid "Event Make Invoice" +msgstr "" + +#. module: event +#: help:event.registration,nb_register:0 +msgid "Number of Registrations or Tickets" +msgstr "Antall registreringer eller billetter" + +#. module: event +#: code:addons/event/wizard/event_make_invoice.py:50 +#: code:addons/event/wizard/event_make_invoice.py:54 +#: code:addons/event/wizard/event_make_invoice.py:58 +#: code:addons/event/wizard/event_make_invoice.py:62 +#, python-format +msgid "Warning !" +msgstr "Advarsel !" + +#. module: event +#: view:event.registration:0 +msgid "Send New Email" +msgstr "Send ny e-post" + +#. module: event +#: help:event.event,register_min:0 +msgid "Provide Minimum Number of Registrations" +msgstr "" + +#. module: event +#: view:event.event:0 +msgid "Location" +msgstr "Plassering" + +#. module: event +#: view:event.event:0 +#: view:event.registration:0 +#: view:report.event.registration:0 +msgid "New" +msgstr "Ny" + +#. module: event +#: field:event.event,register_current:0 +#: view:report.event.registration:0 +msgid "Confirmed Registrations" +msgstr "Bekreftede registreringer" + +#. module: event +#: field:event.event,mail_auto_registr:0 +msgid "Mail Auto Register" +msgstr "" + +#. module: event +#: field:event.event,type:0 +#: field:partner.event.registration,event_type:0 +msgid "Type" +msgstr "Type" + +#. module: event +#: field:event.registration,email_from:0 +msgid "Email" +msgstr "E-post" + +#. module: event +#: help:event.event,mail_confirm:0 +msgid "" +"This email will be sent when the event gets confirmed or when someone " +"subscribes to a confirmed event. This is also the email sent to remind " +"someone about the event." +msgstr "" + +#. module: event +#: field:event.registration,tobe_invoiced:0 +msgid "To be Invoiced" +msgstr "Til fakturering" + +#. module: event +#: view:event.event:0 +msgid "My Sales Team(s)" +msgstr "Mine salgsteam" + +#. module: event +#: code:addons/event/event.py:398 +#, python-format +msgid "Error !" +msgstr "Feil !" + +#. module: event +#: field:event.event,name:0 +#: field:event.registration,name:0 +msgid "Summary" +msgstr "Sammendrag" + +#. module: event +#: field:event.registration,create_date:0 +msgid "Creation Date" +msgstr "Opprettelsesdato" + +#. module: event +#: view:event.event:0 +#: view:event.registration:0 +#: view:res.partner:0 +msgid "Cancel Registration" +msgstr "Kanseller registrering" + +#. module: event +#: code:addons/event/event.py:399 +#, python-format +msgid "Registered partner doesn't have an address to make the invoice." +msgstr "" + +#. module: event +#: view:report.event.registration:0 +msgid "Events created in last month" +msgstr "Arrangementer opprettet forrige måned" + +#. module: event +#: view:report.event.registration:0 +msgid "Events created in current year" +msgstr "Arrangementer opprettet dette år" + +#. module: event +#: help:event.event,type:0 +msgid "Type of Event like Seminar, Exhibition, Conference, Training." +msgstr "" +"Type arrangement som f.eks- seminar, utstilling, konferanse, trening." + +#. module: event +#: view:event.registration:0 +msgid "Confirmed registrations" +msgstr "Bekreftede registreringer" + +#. module: event +#: view:event.event:0 +msgid "Event Organization" +msgstr "Arrangementsorganisasjon" + +#. module: event +#: view:event.registration:0 +msgid "History Information" +msgstr "Historisk informasjon" + +#. module: event +#: view:event.registration:0 +msgid "Dates" +msgstr "Datoer" + +#. module: event +#: view:event.confirm:0 +#: view:event.confirm.registration:0 +msgid "Confirm Anyway" +msgstr "Bekreft uansett" + +#. module: event +#: code:addons/event/wizard/event_confirm_registration.py:54 +#, python-format +msgid "Warning: The Event '%s' has reached its Maximum Limit (%s)." +msgstr "" + +#. module: event +#: view:report.event.registration:0 +msgid " Month-1 " +msgstr " Måned-1 " + +#. module: event +#: view:event.event:0 +#: view:event.registration:0 +#: field:event.registration.badge,registration_id:0 +#: model:ir.actions.act_window,name:event.act_event_list_register_event +msgid "Registration" +msgstr "Registrering" + +#. module: event +#: field:report.event.registration,nbevent:0 +msgid "Number Of Events" +msgstr "Antall arrangementer" + +#. module: event +#: help:event.event,main_speaker_id:0 +msgid "Speaker who will be giving speech at the event." +msgstr "" + +#. module: event +#: help:event.event,state:0 +msgid "" +"If event is created, the state is 'Draft'.If event is confirmed for the " +"particular dates the state is set to 'Confirmed'. If the event is over, the " +"state is set to 'Done'.If event is cancelled the state is set to 'Cancelled'." +msgstr "" + +#. module: event +#: view:event.event:0 +msgid "Cancel Event" +msgstr "Kanseller arrangement" + +#. module: event +#: view:event.event:0 +#: view:event.registration:0 +msgid "Contact" +msgstr "Kontakt" + +#. module: event +#: view:event.event:0 +#: view:event.registration:0 +#: field:event.registration,partner_id:0 +#: model:ir.model,name:event.model_res_partner +msgid "Partner" +msgstr "Partner" + +#. module: event +#: view:board.board:0 +#: model:ir.actions.act_window,name:event.act_event_reg +#: view:report.event.registration:0 +msgid "Events Filling Status" +msgstr "" + +#. module: event +#: field:event.make.invoice,grouped:0 +msgid "Group the invoices" +msgstr "Gruppering av fakturaer" + +#. module: event +#: view:event.event:0 +msgid "Mailing" +msgstr "" + +#. module: event +#: view:report.event.registration:0 +msgid "Events States" +msgstr "" + +#. module: event +#: view:board.board:0 +#: field:event.event,register_prospect:0 +msgid "Unconfirmed Registrations" +msgstr "Ubekreftede registreringer" + +#. module: event +#: field:event.registration,partner_invoice_id:0 +msgid "Partner Invoiced" +msgstr "Partner fakturert" + +#. module: event +#: help:event.event,register_max:0 +msgid "Provide Maximum Number of Registrations" +msgstr "" + +#. module: event +#: field:event.registration,log_ids:0 +msgid "Logs" +msgstr "Logger" + +#. module: event +#: view:event.event:0 +#: field:event.event,state:0 +#: view:event.registration:0 +#: field:event.registration,state:0 +#: view:report.event.registration:0 +#: field:report.event.registration,state:0 +msgid "State" +msgstr "" + +#. module: event +#: selection:report.event.registration,month:0 +msgid "September" +msgstr "September" + +#. module: event +#: selection:report.event.registration,month:0 +msgid "December" +msgstr "Desember" + +#. module: event +#: field:event.registration,event_product:0 +msgid "Invoice Name" +msgstr "Fakturanavn" + +#. module: event +#: field:report.event.registration,draft_state:0 +msgid " # No of Draft Registrations" +msgstr " # Antall foreløpige registreringer" + +#. module: event +#: view:report.event.registration:0 +#: field:report.event.registration,month:0 +msgid "Month" +msgstr "Måned" + +#. module: event +#: view:event.event:0 +msgid "Event Done" +msgstr "Arrangement gjennomført" + +#. module: event +#: view:event.registration:0 +msgid "Registrations in unconfirmed state" +msgstr "" + +#. module: event +#: help:event.event,register_current:0 +msgid "Total of Open and Done Registrations" +msgstr "" + +#. module: event +#: field:event.confirm.registration,msg:0 +msgid "Message" +msgstr "Melding" + +#. module: event +#: constraint:event.event:0 +msgid "Error ! You cannot create recursive event." +msgstr "" + +#. module: event +#: field:event.registration,ref2:0 +msgid "Reference 2" +msgstr "Referanse 2" + +#. module: event +#: code:addons/event/event.py:361 +#: view:report.event.registration:0 +#, python-format +msgid "Invoiced" +msgstr "Fakturert" + +#. module: event +#: view:event.event:0 +#: view:report.event.registration:0 +msgid "My Events" +msgstr "Mine arrangementer" + +#. module: event +#: view:event.event:0 +msgid "Speakers" +msgstr "Talere" + +#. module: event +#: view:event.make.invoice:0 +msgid "Create invoices" +msgstr "Opprett fakturaer" + +#. module: event +#: help:event.registration,email_cc:0 +msgid "" +"These email addresses will be added to the CC field of all inbound and " +"outbound emails for this record before being sent. Separate multiple email " +"addresses with a comma" +msgstr "" + +#. module: event +#: view:event.make.invoice:0 +msgid "Do you really want to create the invoice(s) ?" +msgstr "Vil du virkerlig opprette faktura(ene) ?" + +#. module: event +#: view:event.event:0 +msgid "Beginning Date" +msgstr "Startdato" + +#. module: event +#: field:event.registration,date_closed:0 +msgid "Closed" +msgstr "Lukket" + +#. module: event +#: view:report.event.registration:0 +msgid "Events which are in New state" +msgstr "" + +#. module: event +#: view:event.event:0 +#: model:ir.actions.act_window,name:event.action_event_view +#: model:ir.ui.menu,name:event.menu_event_event +#: model:ir.ui.menu,name:event.menu_event_event_assiciation +#: view:res.partner:0 +msgid "Events" +msgstr "Arrangementer" + +#. module: event +#: field:partner.event.registration,nb_register:0 +msgid "Number of Registration" +msgstr "Antall registreringer" + +#. module: event +#: field:event.event,child_ids:0 +msgid "Child Events" +msgstr "" + +#. module: event +#: selection:report.event.registration,month:0 +msgid "August" +msgstr "August" + +#. module: event +#: field:res.partner,event_ids:0 +#: field:res.partner,event_registration_ids:0 +msgid "unknown" +msgstr "ukjent" + +#. module: event +#: help:event.event,product_id:0 +msgid "" +"The invoices of this event registration will be created with this Product. " +"Thus it allows you to set the default label and the accounting info you want " +"by default on these invoices." +msgstr "" + +#. module: event +#: selection:report.event.registration,month:0 +msgid "June" +msgstr "Juni" + +#. module: event +#: model:product.template,name:event.event_product_0_product_template +msgid "Ticket for Concert" +msgstr "Konsertbillett" + +#. module: event +#: field:event.registration,write_date:0 +msgid "Write Date" +msgstr "Utskriftsdato" + +#. module: event +#: view:event.registration:0 +msgid "My Registrations" +msgstr "Mine registreringer" + +#. module: event +#: view:event.confirm:0 +msgid "" +"Warning: This Event has not reached its Minimum Registration Limit. Are you " +"sure you want to confirm it?" +msgstr "" + +#. module: event +#: field:event.registration,active:0 +msgid "Active" +msgstr "Aktiv" + +#. module: event +#: field:event.registration,date:0 +msgid "Start Date" +msgstr "Startdato" + +#. module: event +#: selection:report.event.registration,month:0 +msgid "November" +msgstr "November" + +#. module: event +#: view:report.event.registration:0 +msgid "Extended Filters..." +msgstr "Utvidede filtre ..." + +#. module: event +#: field:partner.event.registration,start_date:0 +msgid "Start date" +msgstr "Startdato" + +#. module: event +#: selection:report.event.registration,month:0 +msgid "October" +msgstr "Oktober" + +#. module: event +#: field:event.event,language:0 +msgid "Language" +msgstr "Språk" + +#. module: event +#: view:event.registration:0 +#: field:event.registration,email_cc:0 +msgid "CC" +msgstr "CC" + +#. module: event +#: selection:report.event.registration,month:0 +msgid "January" +msgstr "Januar" + +#. module: event +#: help:event.registration,email_from:0 +msgid "These people will receive email." +msgstr "Disse personene vil motta e-post." + +#. module: event +#: view:event.event:0 +msgid "Set To Draft" +msgstr "" + +#. module: event +#: code:addons/event/event.py:499 +#: view:event.event:0 +#: view:event.registration:0 +#: view:res.partner:0 +#, python-format +msgid "Confirm Registration" +msgstr "Bekreft registrering" + +#. module: event +#: view:event.event:0 +#: view:report.event.registration:0 +#: view:res.partner:0 +msgid "Date" +msgstr "Dato" + +#. module: event +#: view:event.event:0 +msgid "Registration Email Body" +msgstr "" + +#. module: event +#: view:event.event:0 +msgid "Confirmation Email Body" +msgstr "" + +#. module: event +#: view:report.event.registration:0 +msgid "Registrations in confirmed or done state" +msgstr "" + +#. module: event +#: view:event.registration:0 +#: view:res.partner:0 +msgid "History" +msgstr "Historikk" + +#. module: event +#: field:event.event,address_id:0 +msgid "Location Address" +msgstr "Lokasjonsadresse" + +#. module: event +#: model:ir.actions.act_window,name:event.action_event_type +#: model:ir.ui.menu,name:event.menu_event_type +msgid "Types of Events" +msgstr "Type arrangement" + +#. module: event +#: field:event.registration,contact_id:0 +msgid "Partner Contact" +msgstr "Partnerkontakt" + +#. module: event +#: field:event.event,pricelist_id:0 +msgid "Pricelist" +msgstr "Prisliste" + +#. module: event +#: code:addons/event/wizard/event_make_invoice.py:59 +#, python-format +msgid "Event related doesn't have any product defined" +msgstr "" + +#. module: event +#: view:event.event:0 +msgid "Auto Confirmation Email" +msgstr "" + +#. module: event +#: view:event.registration:0 +msgid "Misc" +msgstr "Div." + +#. module: event +#: constraint:event.event:0 +msgid "Error ! Closing Date cannot be set before Beginning Date." +msgstr "Feil ! Sluttdato kan ikke settes før startdato." + +#. module: event +#: code:addons/event/event.py:446 +#: selection:event.event,state:0 +#: view:event.make.invoice:0 +#: selection:event.registration,state:0 +#: selection:report.event.registration,state:0 +#, python-format +msgid "Done" +msgstr "Utført" + +#. module: event +#: field:event.event,date_begin:0 +msgid "Beginning date" +msgstr "Startdato" + +#. module: event +#: view:event.registration:0 +#: field:event.registration,invoice_id:0 +msgid "Invoice" +msgstr "faktura" + +#. module: event +#: view:report.event.registration:0 +#: field:report.event.registration,year:0 +msgid "Year" +msgstr "År" + +#. module: event +#: code:addons/event/event.py:465 +#, python-format +msgid "Cancel" +msgstr "Kanseller" + +#. module: event +#: view:event.confirm:0 +#: view:event.confirm.registration:0 +#: view:event.make.invoice:0 +msgid "Close" +msgstr "Lukk" + +#. module: event +#: view:event.event:0 +msgid "Event by Registration" +msgstr "" + +#. module: event +#: code:addons/event/event.py:436 +#, python-format +msgid "Open" +msgstr "Åpen" + +#. module: event +#: field:event.event,user_id:0 +msgid "Responsible User" +msgstr "Ansvarlig bruker" + +#. module: event +#: code:addons/event/event.py:561 +#: code:addons/event/event.py:568 +#, python-format +msgid "Auto Confirmation: [%s] %s" +msgstr "Automatisk bekreftelse: [%s] %s" + +#. module: event +#: view:event.event:0 +#: view:event.registration:0 +#: field:event.registration,user_id:0 +#: view:report.event.registration:0 +#: field:report.event.registration,user_id:0 +msgid "Responsible" +msgstr "Ansvarlig" + +#. module: event +#: field:event.event,unit_price:0 +#: view:event.registration:0 +#: field:partner.event.registration,unit_price:0 +msgid "Registration Cost" +msgstr "Registreringskostnad" + +#. module: event +#: field:event.registration,unit_price:0 +msgid "Unit Price" +msgstr "Enhetspris" + +#. module: event +#: view:report.event.registration:0 +#: field:report.event.registration,speaker_id:0 +#: field:res.partner,speaker:0 +msgid "Speaker" +msgstr "Taler" + +#. module: event +#: model:event.event,name:event.event_2 +msgid "Conference on ERP Buisness" +msgstr "Konferanse om ERP forretningsområdet" + +#. module: event +#: view:event.registration:0 +msgid "Reply" +msgstr "Svar" + +#. module: event +#: view:report.event.registration:0 +msgid "Events created in current month" +msgstr "" + +#. module: event +#: help:event.event,mail_auto_registr:0 +msgid "" +"Check this box if you want to use automatic emailing for new registration." +msgstr "" + +#. module: event +#: field:event.event,date_end:0 +#: field:partner.event.registration,end_date:0 +msgid "Closing date" +msgstr "Sluttdato" + +#. module: event +#: field:event.event,product_id:0 +#: view:report.event.registration:0 +#: field:report.event.registration,product_id:0 +msgid "Product" +msgstr "Produkt" + +#. module: event +#: view:event.event:0 +#: field:event.event,note:0 +#: view:event.registration:0 +#: field:event.registration,description:0 +msgid "Description" +msgstr "Beskrivelse" + +#. module: event +#: field:report.event.registration,confirm_state:0 +msgid " # No of Confirmed Registrations" +msgstr " # Antall bekreftede registreringer" + +#. module: event +#: model:ir.actions.act_window,name:event.act_register_event_partner +msgid "Subscribe" +msgstr "Abonner" + +#. module: event +#: selection:report.event.registration,month:0 +msgid "May" +msgstr "Mai" + +#. module: event +#: view:res.partner:0 +msgid "Events Registration" +msgstr "Arrangemnetsregistrering" + +#. module: event +#: help:event.event,mail_registr:0 +msgid "This email will be sent when someone subscribes to the event." +msgstr "" + +#. module: event +#: model:product.template,name:event.event_product_2_product_template +msgid "Ticket for Conference" +msgstr "Konferansebillett" + +#. module: event +#: model:ir.ui.menu,name:event.menu_event_type_association +msgid "Events Type" +msgstr "Arrangementstype" + +#. module: event +#: field:event.registration.badge,address_id:0 +msgid "Address" +msgstr "Adresse" + +#. module: event +#: view:board.board:0 +#: model:ir.actions.act_window,name:event.act_event_view +msgid "Next Events" +msgstr "Neste arrangement" + +#. module: event +#: view:partner.event.registration:0 +msgid "_Subcribe" +msgstr "_Abonner" + +#. module: event +#: model:ir.model,name:event.model_partner_event_registration +msgid " event Registration " +msgstr "" + +#. module: event +#: help:event.event,date_begin:0 +#: help:partner.event.registration,start_date:0 +msgid "Beginning Date of Event" +msgstr "Startdato for arrangementet" + +#. module: event +#: selection:event.registration,state:0 +msgid "Unconfirmed" +msgstr "Ubekreftet" + +#. module: event +#: code:addons/event/event.py:565 +#, python-format +msgid "Auto Registration: [%s] %s" +msgstr "Autoregistrering: [%s] %s" + +#. module: event +#: field:event.registration,date_deadline:0 +msgid "End Date" +msgstr "Sluttdato" + +#. module: event +#: selection:report.event.registration,month:0 +msgid "February" +msgstr "Februar" + +#. module: event +#: view:board.board:0 +msgid "Association Dashboard" +msgstr "" + +#. module: event +#: view:event.event:0 +#: field:event.registration.badge,name:0 +msgid "Name" +msgstr "Navn" + +#. module: event +#: field:event.event,section_id:0 +#: field:event.registration,section_id:0 +#: view:report.event.registration:0 +#: field:report.event.registration,section_id:0 +msgid "Sale Team" +msgstr "Salgsteam" + +#. module: event +#: field:event.event,country_id:0 +msgid "Country" +msgstr "Land" + +#. module: event +#: code:addons/event/wizard/event_make_invoice.py:55 +#, python-format +msgid "Registration is set as Cannot be invoiced" +msgstr "Regsitreringen har stus 'kan ikke faktureres'" + +#. module: event +#: code:addons/event/event.py:527 +#: view:event.event:0 +#: view:event.registration:0 +#: view:res.partner:0 +#, python-format +msgid "Close Registration" +msgstr "Lukk registrering" + +#. module: event +#: selection:report.event.registration,month:0 +msgid "April" +msgstr "April" + +#. module: event +#: help:event.event,unit_price:0 +msgid "" +"This will be the default price used as registration cost when invoicing this " +"event. Note that you can specify a specific amount for each registration." +msgstr "" + +#. module: event +#: view:report.event.registration:0 +msgid "Events which are in confirm state" +msgstr "Arrangementer som ahr en bekreftetstatus" + +#. module: event +#: view:event.event:0 +#: view:event.type:0 +#: view:report.event.registration:0 +#: field:report.event.registration,type:0 +msgid "Event Type" +msgstr "Arrangementstype" + +#. module: event +#: view:event.event:0 +#: field:event.event,registration_ids:0 +#: model:ir.actions.act_window,name:event.action_registration +#: model:ir.ui.menu,name:event.menu_action_registration +#: model:ir.ui.menu,name:event.menu_action_registration_association +msgid "Registrations" +msgstr "Registreringer" + +#. module: event +#: field:event.registration,id:0 +msgid "ID" +msgstr "ID" + +#. module: event +#: field:event.event,register_max:0 +#: field:report.event.registration,register_max:0 +msgid "Maximum Registrations" +msgstr "Maksimum registreringer" + +#. module: event +#: constraint:res.partner:0 +msgid "Error ! You cannot create recursive associated members." +msgstr "" + +#. module: event +#: field:report.event.registration,date:0 +msgid "Event Start Date" +msgstr "" + +#. module: event +#: view:partner.event.registration:0 +msgid "Event For Registration" +msgstr "" + +#. module: event +#: code:addons/event/wizard/event_make_invoice.py:51 +#, python-format +msgid "Invoice cannot be created if the registration is in %s state." +msgstr "" + +#. module: event +#: view:event.confirm:0 +#: model:ir.actions.act_window,name:event.action_event_confirm +#: model:ir.model,name:event.model_event_confirm +msgid "Event Confirmation" +msgstr "" + +#. module: event +#: view:event.event:0 +msgid "Auto Registration Email" +msgstr "" + +#. module: event +#: view:event.registration:0 +#: view:report.event.registration:0 +#: field:report.event.registration,total:0 +msgid "Total" +msgstr "" + +#. module: event +#: field:event.event,speaker_confirmed:0 +msgid "Speaker Confirmed" +msgstr "" + +#. module: event +#: model:ir.actions.act_window,help:event.action_event_view +msgid "" +"Event is the low level object used by meeting and others documents that " +"should be synchronized with mobile devices or calendar applications through " +"caldav. Most of the users should work in the Calendar menu, and not in the " +"list of events." +msgstr "" diff --git a/addons/event/res_partner_view.xml b/addons/event/res_partner_view.xml index 410030408c7..c8760c0b07f 100644 --- a/addons/event/res_partner_view.xml +++ b/addons/event/res_partner_view.xml @@ -4,8 +4,8 @@ - - res.partner.speaker.info.inherit + + res.partner.event.info.inherit res.partner form @@ -13,33 +13,32 @@ - - - - res.partner.event.info.inherit - res.partner - form - - - - - - - - - - - - - - - -
- + @@ -150,7 +150,7 @@ - + @@ -182,10 +184,6 @@ - - - - diff --git a/addons/hr_recruitment/security/ir.model.access.csv b/addons/hr_recruitment/security/ir.model.access.csv index 7d082070be5..8b029c9324a 100644 --- a/addons/hr_recruitment/security/ir.model.access.csv +++ b/addons/hr_recruitment/security/ir.model.access.csv @@ -3,7 +3,6 @@ access_hr_applicant_user,hr.applicant.user,model_hr_applicant,base.group_hr_user access_hr_recruitment_report,hr.recruitment.report,model_hr_recruitment_report,base.group_hr_manager,1,1,1,1 access_hr_recruitment_stage_user,hr.recruitment.stage.user,model_hr_recruitment_stage,base.group_hr_user,1,1,1,1 access_hr_recruitment_degree,hr.recruitment.degree,model_hr_recruitment_degree,base.group_hr_user,1,1,1,1 -access_mail_message_user,mail.message.user,mail.model_mail_message,base.group_hr_user,1,1,1,1 access_res_partner_hr_user,res.partner.user,base.model_res_partner,base.group_hr_user,1,1,1,1 access_survey_hr_user,survey.hr.user,survey.model_survey,base.group_hr_user,1,1,1,0 access_crm_meeting_hruser,crm.meeting.hruser,base_calendar.model_crm_meeting,base.group_hr_user,1,1,1,1 diff --git a/addons/hr_timesheet/__openerp__.py b/addons/hr_timesheet/__openerp__.py index 6b8e618116e..d6a6232d1a0 100644 --- a/addons/hr_timesheet/__openerp__.py +++ b/addons/hr_timesheet/__openerp__.py @@ -34,8 +34,8 @@ the analytic account. Lots of reporting on time and employee tracking are provided. -It is completely integrated with the cost accounting module. It allows you -to set up a management by affair. +It is completely integrated with the cost accounting module. It allows you to set +up a management by affair. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/hr_timesheet/hr_timesheet.py b/addons/hr_timesheet/hr_timesheet.py index 66911f25ff5..53119853c31 100644 --- a/addons/hr_timesheet/hr_timesheet.py +++ b/addons/hr_timesheet/hr_timesheet.py @@ -198,6 +198,13 @@ class account_analytic_account(osv.osv): _columns = { 'use_timesheets': fields.boolean('Timesheets', help="Check this field if this project manages timesheets"), } + + def on_change_template(self, cr, uid, ids, template_id, context=None): + res = super(account_analytic_account, self).on_change_template(cr, uid, ids, template_id, context=context) + if template_id and 'value' in res: + template = self.browse(cr, uid, template_id, context=context) + res['value']['use_timesheets'] = template.use_timesheets + return res account_analytic_account() diff --git a/addons/hr_timesheet_invoice/__openerp__.py b/addons/hr_timesheet_invoice/__openerp__.py index 65b8905fca0..e233158bda3 100644 --- a/addons/hr_timesheet_invoice/__openerp__.py +++ b/addons/hr_timesheet_invoice/__openerp__.py @@ -24,12 +24,14 @@ 'name': 'Invoice on Timesheets', 'version': '1.0', 'category': 'Sales Management', - 'description': """Generate your Invoices from Expenses, Timesheet Entries, ... + 'description': """ +Generate your Invoices from Expenses, Timesheet Entries. +======================================================== + Module to generate invoices based on costs (human resources, expenses, ...). -============================================================================ You can define price lists in analytic account, make some theoretical revenue -reports, etc.""", +reports.""", 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', 'images': ['images/hr_bill_task_work.jpeg','images/hr_type_of_invoicing.jpeg'], diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice.py b/addons/hr_timesheet_invoice/hr_timesheet_invoice.py index f1138d7b246..54257f5efba 100644 --- a/addons/hr_timesheet_invoice/hr_timesheet_invoice.py +++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice.py @@ -64,7 +64,7 @@ class account_analytic_account(osv.osv): _inherit = "account.analytic.account" _columns = { 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', - help="The product to invoice is defined on the employee form, the price will be deduced by this pricelist on the product."), + help="The product to invoice is defined on the employee form, the price will be deducted by this pricelist on the product."), 'amount_max': fields.float('Max. Invoice Price', help="Keep empty if this contract is not limited to a total fixed price."), 'amount_invoiced': fields.function(_invoiced_calc, string='Invoiced Amount', diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml b/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml index 9888972105e..81dc1e3c9cf 100644 --- a/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml +++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml @@ -114,7 +114,7 @@ form - + diff --git a/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py b/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py index 30edae72d9a..c9b2439596d 100644 --- a/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py +++ b/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py @@ -90,32 +90,28 @@ class account_analytic_line(osv.osv): context2 = context.copy() context2['lang'] = partner.lang - cr.execute("SELECT product_id, to_invoice, sum(unit_amount), product_uom_id " \ + cr.execute("SELECT product_id, to_invoice, sum(unit_amount), product_uom_id, name " \ "FROM account_analytic_line as line " \ "WHERE account_id = %s " \ "AND id IN %s AND to_invoice IS NOT NULL " \ - "GROUP BY product_id,to_invoice,product_uom_id", (account.id, tuple(ids),)) + "GROUP BY product_id, to_invoice, product_uom_id, name", (account.id, tuple(ids),)) - for product_id, factor_id, qty, uom in cr.fetchall(): - product = product_obj.browse(cr, uid, product_id, context2) + for product_id, factor_id, qty, uom, line_name in cr.fetchall(): + if data.get('product'): + product_id = data['product'][0] + product = product_obj.browse(cr, uid, product_id, context=context2) if not product: - raise osv.except_osv(_('Error'), _('At least one line has no product !')) - factor_name = '' - factor = invoice_factor_obj.browse(cr, uid, factor_id, context2) - if not data.get('product', False): - if factor.customer_name: - factor_name = product.name+' - '+factor.customer_name - else: - factor_name = product.name - else: - data['product'] = data['product'][0] - factor_name = product_obj.name_get(cr, uid, [data['product']], context=context)[0][1] + raise osv.except_osv(_('Error'), _('There is no product defined for the line %s. Please select one or force the product through the wizard.') % (line_name)) + factor = invoice_factor_obj.browse(cr, uid, factor_id, context=context2) + factor_name = product_obj.name_get(cr, uid, [product_id], context=context2)[0][1] + if factor.customer_name: + factor_name += ' - ' + factor.customer_name ctx = context.copy() ctx.update({'uom':uom}) if account.pricelist_id: pl = account.pricelist_id.id - price = pro_price_obj.price_get(cr,uid,[pl], data.get('product', False) or product_id, qty or 1.0, account.partner_id.id, context=ctx)[pl] + price = pro_price_obj.price_get(cr,uid,[pl], product_id, qty or 1.0, account.partner_id.id, context=ctx)[pl] else: price = 0.0 @@ -131,7 +127,7 @@ class account_analytic_line(osv.osv): 'invoice_line_tax_id': [(6,0,tax )], 'invoice_id': last_invoice, 'name': factor_name, - 'product_id': data.get('product',product_id), + 'product_id': product_id, 'invoice_line_tax_id': [(6,0,tax)], 'uos_id': uom, 'account_id': account_id, @@ -179,7 +175,7 @@ class hr_timesheet_invoice_create(osv.osv_memory): 'time': fields.boolean('Time spent', help='The time of each work done will be displayed on the invoice'), 'name': fields.boolean('Description', help='The detail of each work done will be displayed on the invoice'), 'price': fields.boolean('Cost', help='The cost of each work done will be displayed on the invoice. You probably don\'t want to check this'), - 'product': fields.many2one('product.product', 'Product', help='Complete this field only if you want to force to use a specific product. Keep empty to use the real product that comes from the cost.'), + 'product': fields.many2one('product.product', 'Force Product', help='Fill this field only if you want to force to use a specific product. Keep empty to use the real product that comes from the cost.'), } _defaults = { diff --git a/addons/hr_timesheet_sheet/__openerp__.py b/addons/hr_timesheet_sheet/__openerp__.py index defa3ee5873..1acaa5780b8 100644 --- a/addons/hr_timesheet_sheet/__openerp__.py +++ b/addons/hr_timesheet_sheet/__openerp__.py @@ -21,30 +21,31 @@ { - 'name': 'Timesheets Validation', + 'name': 'Timesheets', 'version': '1.0', 'category': 'Human Resources', "sequence": 16, + "summary": "Timesheets, Attendances, Activities", 'description': """ This module helps you to easily encode and validate timesheet and attendances within the same view. =================================================================================================== -The upper part of the view is for attendances and track (sign in/sign out) events. -The lower part is for timesheet. + * It will maintain attendances and track (sign in/sign out) events. + * Track the timesheet lines. Other tabs contains statistics views to help you analyse your time or the time of your team: -* Time spent by day (with attendances) -* Time spent by project + * Time spent by day (with attendances) + * Time spent by project This module also implements a complete timesheet validation process: -* Draft sheet -* Confirmation at the end of the period by the employee -* Validation by the project manager + * Draft sheet + * Confirmation at the end of the period by the employee + * Validation by the project manager The validation can be configured in the company: -* Period size (day, week, month, year) -* Maximal difference between timesheet and attendances + * Period size (day, week, month, year) + * Maximal difference between timesheet and attendances """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet_data.xml b/addons/hr_timesheet_sheet/hr_timesheet_sheet_data.xml index e66694223d2..c5839f886d3 100644 --- a/addons/hr_timesheet_sheet/hr_timesheet_sheet_data.xml +++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet_data.xml @@ -1,6 +1,15 @@ + + + + + Module Timesheets Validation has been installed + From the top menu "Human Resources", encode and validate + timesheets and attendances. + + diff --git a/addons/hr_timesheet_sheet/i18n/pt_BR.po b/addons/hr_timesheet_sheet/i18n/pt_BR.po index 8ca428bafc5..b37c1f5577b 100644 --- a/addons/hr_timesheet_sheet/i18n/pt_BR.po +++ b/addons/hr_timesheet_sheet/i18n/pt_BR.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: pt_BR\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 01:37+0100\n" -"PO-Revision-Date: 2012-02-19 15:16+0000\n" +"PO-Revision-Date: 2012-07-28 22:13+0000\n" "Last-Translator: Joe Pimentel \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-07-14 06:05+0000\n" -"X-Generator: Launchpad (build 15614)\n" +"X-Launchpad-Export-Date: 2012-07-29 04:37+0000\n" +"X-Generator: Launchpad (build 15694)\n" #. module: hr_timesheet_sheet #: field:hr.analytic.timesheet,sheet_id:0 field:hr.attendance,sheet_id:0 @@ -746,7 +746,7 @@ msgstr "Dia" #: model:ir.actions.server,name:hr_timesheet_sheet.ir_actions_server_timsheet_sheet #: model:ir.ui.menu,name:hr_timesheet_sheet.menu_act_hr_timesheet_sheet_form_my_current msgid "My Current Timesheet" -msgstr "" +msgstr "Minha Planilha de Horas Atual" #. module: hr_timesheet_sheet #: view:timesheet.report:0 selection:timesheet.report,state:0 diff --git a/addons/idea/__openerp__.py b/addons/idea/__openerp__.py index 3a9a44c6436..7ee4a72de05 100644 --- a/addons/idea/__openerp__.py +++ b/addons/idea/__openerp__.py @@ -25,8 +25,8 @@ 'version': '0.1', 'category': 'Tools', 'description': """ -This module allows your user to easily and efficiently participate in enterprise innovation. -============================================================================================ +This module allows user to easily and efficiently participate in enterprise innovation. +======================================================================================= It allows everybody to express ideas about different subjects. Then, other users can comment on these ideas and vote for particular ideas. diff --git a/addons/import_base/__openerp__.py b/addons/import_base/__openerp__.py index 7e4334f4a1d..294f864a0e3 100644 --- a/addons/import_base/__openerp__.py +++ b/addons/import_base/__openerp__.py @@ -20,12 +20,12 @@ ############################################################################## { - 'name': 'Framework for complex import', + 'name': 'Framework for Complex Import', 'version': '0.9', 'category': 'Hidden/Dependency', 'description': """ - This module provide a class import_framework to help importing - complex data from other software +This module provide a class import_framework to help importing complex data from +other software. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/import_google/__openerp__.py b/addons/import_google/__openerp__.py index 5242633747f..9e47a213072 100644 --- a/addons/import_google/__openerp__.py +++ b/addons/import_google/__openerp__.py @@ -23,7 +23,7 @@ 'name': 'Google Import', 'version': '1.0', 'category': 'Customer Relationship Management', - 'description': """The module adds google contact in partner address and add google calendar events details in Meeting""", + 'description': """The module adds google contact in partner address and add google calendar events details in Meeting.""", 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', 'depends': ['base', 'import_base', 'google_base_account', 'base_calendar'], diff --git a/addons/import_google/i18n/es.po b/addons/import_google/i18n/es.po new file mode 100644 index 00000000000..325df15688c --- /dev/null +++ b/addons/import_google/i18n/es.po @@ -0,0 +1,217 @@ +# Spanish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-07-21 21:08+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-22 04:45+0000\n" +"X-Generator: Launchpad (build 15654)\n" + +#. module: import_google +#: help:synchronize.google.import,group_name:0 +msgid "Choose which group to import, By default it takes all." +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "Import Google Calendar Events" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "_Import Events" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:71 +#, python-format +msgid "" +"No Google Username or password Defined for user.\n" +"Please define in user view" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:127 +#, python-format +msgid "" +"Invalid login detail !\n" +" Specify Username/Password." +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,supplier:0 +msgid "Supplier" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "Import Options" +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,group_name:0 +msgid "Group Name" +msgstr "" + +#. module: import_google +#: model:ir.model,name:import_google.model_crm_case_categ +msgid "Category of Case" +msgstr "" + +#. module: import_google +#: model:ir.actions.act_window,name:import_google.act_google_login_contact_form +#: model:ir.ui.menu,name:import_google.menu_sync_contact +msgid "Import Google Contacts" +msgstr "" + +#. module: import_google +#: view:google.import.message:0 +msgid "Import Google Data" +msgstr "" + +#. module: import_google +#: view:crm.meeting:0 +msgid "Meeting Type" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google.py:38 +#: code:addons/import_google/wizard/import_google_data.py:28 +#, python-format +msgid "" +"Please install gdata-python-client from http://code.google.com/p/gdata-" +"python-client/downloads/list" +msgstr "" + +#. module: import_google +#: model:ir.model,name:import_google.model_google_login +msgid "Google Contact" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "Import contacts from a google account" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:133 +#, python-format +msgid "Please specify correct user and password !" +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,customer:0 +msgid "Customer" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "_Cancel" +msgstr "" + +#. module: import_google +#: model:ir.model,name:import_google.model_synchronize_google_import +msgid "synchronize.google.import" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "_Import Contacts" +msgstr "" + +#. module: import_google +#: model:ir.actions.act_window,name:import_google.act_google_login_form +#: model:ir.ui.menu,name:import_google.menu_sync_calendar +msgid "Import Google Calendar" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:50 +#, python-format +msgid "Import google" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:127 +#: code:addons/import_google/wizard/import_google_data.py:133 +#, python-format +msgid "Error" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:71 +#, python-format +msgid "Warning !" +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,create_partner:0 +msgid "Options" +msgstr "" + +#. module: import_google +#: view:google.import.message:0 +msgid "_Ok" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google.py:38 +#: code:addons/import_google/wizard/import_google_data.py:28 +#, python-format +msgid "Google Contacts Import Error!" +msgstr "" + +#. module: import_google +#: model:ir.model,name:import_google.model_google_import_message +msgid "Import Message" +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,calendar_name:0 +msgid "Calendar Name" +msgstr "" + +#. module: import_google +#: help:synchronize.google.import,supplier:0 +msgid "Check this box to set newly created partner as Supplier." +msgstr "" + +#. module: import_google +#: selection:synchronize.google.import,create_partner:0 +msgid "Import only address" +msgstr "" + +#. module: import_google +#: field:crm.case.categ,user_id:0 +msgid "User" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "Partner Status for this Group:" +msgstr "" + +#. module: import_google +#: field:google.import.message,name:0 +msgid "Message" +msgstr "" + +#. module: import_google +#: selection:synchronize.google.import,create_partner:0 +msgid "Create partner for each contact" +msgstr "" + +#. module: import_google +#: help:synchronize.google.import,customer:0 +msgid "Check this box to set newly created partner as Customer." +msgstr "" diff --git a/addons/import_google/i18n/pt_BR.po b/addons/import_google/i18n/pt_BR.po index 56654d0f9e7..e130a50e59a 100644 --- a/addons/import_google/i18n/pt_BR.po +++ b/addons/import_google/i18n/pt_BR.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2012-07-16 20:10+0000\n" -"Last-Translator: Rafael \n" +"PO-Revision-Date: 2012-07-28 21:30+0000\n" +"Last-Translator: Fábio Martinelli \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-07-17 04:49+0000\n" -"X-Generator: Launchpad (build 15627)\n" +"X-Launchpad-Export-Date: 2012-07-29 04:38+0000\n" +"X-Generator: Launchpad (build 15694)\n" #. module: import_google #: help:synchronize.google.import,group_name:0 msgid "Choose which group to import, By default it takes all." -msgstr "" +msgstr "Escolha qual grupo importar, por padrão todos são importados." #. module: import_google #: view:synchronize.google.import:0 @@ -30,7 +30,7 @@ msgstr "Importar o Calendário de Eventos da Google" #. module: import_google #: view:synchronize.google.import:0 msgid "_Import Events" -msgstr "" +msgstr "_Importar Eventos" #. module: import_google #: code:addons/import_google/wizard/import_google_data.py:71 @@ -39,6 +39,8 @@ msgid "" "No Google Username or password Defined for user.\n" "Please define in user view" msgstr "" +"Não foi definido nome de usuário ou senha para o usuário Google.\n" +"Por favor definir na visão de usuário" #. module: import_google #: code:addons/import_google/wizard/import_google_data.py:127 @@ -47,6 +49,8 @@ msgid "" "Invalid login detail !\n" " Specify Username/Password." msgstr "" +"Detalhes de acesso inválidos!\n" +" Especificar Usuário/Senha." #. module: import_google #: field:synchronize.google.import,supplier:0 @@ -66,7 +70,7 @@ msgstr "Nome do Grupo" #. module: import_google #: model:ir.model,name:import_google.model_crm_case_categ msgid "Category of Case" -msgstr "" +msgstr "Categoria de Caso" #. module: import_google #: model:ir.actions.act_window,name:import_google.act_google_login_contact_form @@ -77,12 +81,12 @@ msgstr "Importar Contatos do Google" #. module: import_google #: view:google.import.message:0 msgid "Import Google Data" -msgstr "" +msgstr "Importar Dados do Google" #. module: import_google #: view:crm.meeting:0 msgid "Meeting Type" -msgstr "" +msgstr "Tipo de Reunião" #. module: import_google #: code:addons/import_google/wizard/import_google.py:38 @@ -92,22 +96,24 @@ msgid "" "Please install gdata-python-client from http://code.google.com/p/gdata-" "python-client/downloads/list" msgstr "" +"Por favor instale gdata-python-client de http://code.google.com/p/gdata-" +"python-client/downloads/list" #. module: import_google #: model:ir.model,name:import_google.model_google_login msgid "Google Contact" -msgstr "" +msgstr "Contatos do Google" #. module: import_google #: view:synchronize.google.import:0 msgid "Import contacts from a google account" -msgstr "" +msgstr "Importar contatos de uma conta Google" #. module: import_google #: code:addons/import_google/wizard/import_google_data.py:133 #, python-format msgid "Please specify correct user and password !" -msgstr "" +msgstr "Por favor especificar usuário e senha corretos !" #. module: import_google #: field:synchronize.google.import,customer:0 @@ -117,7 +123,7 @@ msgstr "Cliente" #. module: import_google #: view:synchronize.google.import:0 msgid "_Cancel" -msgstr "" +msgstr "_Cancelar" #. module: import_google #: model:ir.model,name:import_google.model_synchronize_google_import @@ -127,7 +133,7 @@ msgstr "sincronizar.importação.google" #. module: import_google #: view:synchronize.google.import:0 msgid "_Import Contacts" -msgstr "" +msgstr "_Importar Contatos" #. module: import_google #: model:ir.actions.act_window,name:import_google.act_google_login_form @@ -139,7 +145,7 @@ msgstr "Importar Calendário do Google" #: code:addons/import_google/wizard/import_google_data.py:50 #, python-format msgid "Import google" -msgstr "" +msgstr "Importar do Google" #. module: import_google #: code:addons/import_google/wizard/import_google_data.py:127 @@ -169,12 +175,12 @@ msgstr "_Ok" #: code:addons/import_google/wizard/import_google_data.py:28 #, python-format msgid "Google Contacts Import Error!" -msgstr "" +msgstr "Erro de importação dos contatos Google!" #. module: import_google #: model:ir.model,name:import_google.model_google_import_message msgid "Import Message" -msgstr "" +msgstr "Importar Mensagem" #. module: import_google #: field:synchronize.google.import,calendar_name:0 @@ -184,12 +190,12 @@ msgstr "Nome do Calendário" #. module: import_google #: help:synchronize.google.import,supplier:0 msgid "Check this box to set newly created partner as Supplier." -msgstr "" +msgstr "Selecione para marcar este parceiro recém criado como Fornecedor." #. module: import_google #: selection:synchronize.google.import,create_partner:0 msgid "Import only address" -msgstr "" +msgstr "Importar somente endereços" #. module: import_google #: field:crm.case.categ,user_id:0 @@ -199,7 +205,7 @@ msgstr "Usuário" #. module: import_google #: view:synchronize.google.import:0 msgid "Partner Status for this Group:" -msgstr "" +msgstr "Situação do Parceiro para este grupo." #. module: import_google #: field:google.import.message,name:0 @@ -209,9 +215,12 @@ msgstr "Mensagem" #. module: import_google #: selection:synchronize.google.import,create_partner:0 msgid "Create partner for each contact" -msgstr "" +msgstr "Criar um parceiro para cada contato" #. module: import_google #: help:synchronize.google.import,customer:0 msgid "Check this box to set newly created partner as Customer." -msgstr "" +msgstr "Selecione para marcar o parceiro recém criado como Cliente" + +#~ msgid "Partner status for this group:" +#~ msgstr "Situação do Parceiro para este grupo" diff --git a/addons/import_sugarcrm/__openerp__.py b/addons/import_sugarcrm/__openerp__.py index ea23247761d..f84b096e28a 100644 --- a/addons/import_sugarcrm/__openerp__.py +++ b/addons/import_sugarcrm/__openerp__.py @@ -23,8 +23,9 @@ 'name': 'SugarCRM Import', 'version': '1.0', 'category': 'Customer Relationship Management', - 'description': """This Module Import SugarCRM "Leads", "Opportunities", "Users", "Accounts", - "Contacts", "Employees", Meetings, Phonecalls, Emails, and Project, Project Tasks Data into OpenERP Module.""", + 'description': """ +This Module Import SugarCRM Leads, Opportunities, Users, Accounts, Contacts, Employees, +Meetings, Phonecalls, Emails, Project and Project Tasks Data into OpenERP Module.""", 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', 'depends': ['import_base','crm', 'document'], diff --git a/addons/import_sugarcrm/import_sugarcrm_view.xml b/addons/import_sugarcrm/import_sugarcrm_view.xml index 7188108ba6c..6ef9be1a5bd 100644 --- a/addons/import_sugarcrm/import_sugarcrm_view.xml +++ b/addons/import_sugarcrm/import_sugarcrm_view.xml @@ -13,7 +13,7 @@