diff --git a/addons/account/account.py b/addons/account/account.py index e92bd3a7879..a68c1de0939 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -648,10 +648,10 @@ class account_account(osv.osv): if line_obj.search(cr, uid, [('account_id', 'in', account_ids)]): #Check for 'Closed' type if old_type == 'closed' and new_type !='closed': - raise osv.except_osv(_('Warning !'), _("You cannot change the type of account from 'Closed' to any other type as it contains journal items!")) + raise osv.except_osv(_('Warning!'), _("You cannot change the type of account from 'Closed' to any other type as it contains journal items!")) # Forbid to change an account type for restricted_groups as it contains journal items (or if one of its children does) if (new_type in restricted_groups): - raise osv.except_osv(_('Warning !'), _("You cannot change the type of account to '%s' type as it contains journal items!") % (new_type,)) + raise osv.except_osv(_('Warning!'), _("You cannot change the type of account to '%s' type as it contains journal items!") % (new_type,)) return True @@ -1015,14 +1015,14 @@ class account_period(osv.osv): if not result: result = self.search(cr, uid, args, context=context) if not result: - raise osv.except_osv(_('Error !'), _('There is no period defined for this date: %s.\nPlease create one.')%dt) + raise osv.except_osv(_('Error!'), _('There is no period defined for this date: %s.\nPlease create one.')%dt) return result def action_draft(self, cr, uid, ids, *args): mode = 'draft' for period in self.browse(cr, uid, ids): if period.fiscalyear_id.state == 'done': - raise osv.except_osv(_('Warning !'), _('You can not re-open a period which belongs to closed fiscal year')) + raise osv.except_osv(_('Warning!'), _('You can not re-open a period which belongs to closed fiscal year')) cr.execute('update account_journal_period set state=%s where period_id in %s', (mode, tuple(ids),)) cr.execute('update account_period set state=%s where id in %s', (mode, tuple(ids),)) return True @@ -1034,9 +1034,15 @@ class account_period(osv.osv): context = {} ids = [] if name: - ids = self.search(cr, user, [('code','ilike',name)]+ args, limit=limit) + ids = self.search(cr, user, + [('code', 'ilike', name)] + args, + limit=limit, + context=context) if not ids: - ids = self.search(cr, user, [('name',operator,name)]+ args, limit=limit) + ids = self.search(cr, user, + [('name', operator, name)] + args, + limit=limit, + context=context) return self.name_get(cr, user, ids, context=context) def write(self, cr, uid, ids, vals, context=None): @@ -1059,10 +1065,14 @@ class account_period(osv.osv): raise osv.except_osv(_('Error!'), _('You should choose the periods that belong to the same company.')) if period_date_start > period_date_stop: raise osv.except_osv(_('Error!'), _('Start period should precede then end period.')) + + # /!\ We do not include a criterion on the company_id field below, to allow producing consolidated reports + # on multiple companies. It will only work when start/end periods are selected and no fiscal year is chosen. + #for period from = january, we want to exclude the opening period (but it has same date_from, so we have to check if period_from is special or not to include that clause or not in the search). if period_from.special: - return self.search(cr, uid, [('date_start', '>=', period_date_start), ('date_stop', '<=', period_date_stop), ('company_id', '=', company1_id)]) - return self.search(cr, uid, [('date_start', '>=', period_date_start), ('date_stop', '<=', period_date_stop), ('company_id', '=', company1_id), ('special', '=', False)]) + return self.search(cr, uid, [('date_start', '>=', period_date_start), ('date_stop', '<=', period_date_stop)]) + return self.search(cr, uid, [('date_start', '>=', period_date_start), ('date_stop', '<=', period_date_stop), ('special', '=', False)]) class account_journal_period(osv.osv): @@ -1854,6 +1864,12 @@ class account_tax_code(osv.osv): _order = 'code' +def get_precision_tax(): + def change_digit_tax(cr): + res = openerp.registry(cr.dbname)['decimal.precision'].precision_get(cr, SUPERUSER_ID, 'Account') + return (16, res+3) + return change_digit_tax + class account_tax(osv.osv): """ A tax object. @@ -1874,12 +1890,6 @@ class account_tax(osv.osv): default.update({'name': name + _(' (Copy)')}) return super(account_tax, self).copy_data(cr, uid, id, default=default, context=context) - def get_precision_tax(): - def change_digit_tax(cr): - res = openerp.registry(cr.dbname)['decimal.precision'].precision_get(cr, SUPERUSER_ID, 'Account') - return (16, res+2) - return change_digit_tax - _name = 'account.tax' _description = 'Tax' _columns = { @@ -2307,7 +2317,7 @@ class account_model(osv.osv): try: entry['name'] = model.name%{'year': move_date.strftime('%Y'), 'month': move_date.strftime('%m'), 'date': move_date.strftime('%Y-%m')} except: - raise osv.except_osv(_('Wrong model !'), _('You have a wrong expression "%(...)s" in your model !')) + raise osv.except_osv(_('Wrong Model!'), _('You have a wrong expression "%(...)s" in your model!')) move_id = account_move_obj.create(cr, uid, { 'ref': entry['name'], 'period_id': period_id, @@ -2319,7 +2329,7 @@ class account_model(osv.osv): analytic_account_id = False if line.analytic_account_id: if not model.journal_id.analytic_journal_id: - raise osv.except_osv(_('No Analytic Journal !'),_("You have to define an analytic journal on the '%s' journal!") % (model.journal_id.name,)) + raise osv.except_osv(_('No Analytic Journal!'),_("You have to define an analytic journal on the '%s' journal!") % (model.journal_id.name,)) analytic_account_id = line.analytic_account_id.id val = { 'move_id': move_id, @@ -2795,7 +2805,7 @@ class account_tax_template(osv.osv): 'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True), 'name': fields.char('Tax Name', size=64, required=True), 'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the taxes lines from lower sequences to higher ones. The order is important if you have a tax that has several tax children. In this case, the evaluation order is important."), - 'amount': fields.float('Amount', required=True, digits=(14,4), help="For Tax Type percent enter % ratio between 0-1."), + 'amount': fields.float('Amount', required=True, digits_compute=get_precision_tax(), help="For Tax Type percent enter % ratio between 0-1."), 'type': fields.selection( [('percent','Percent'), ('fixed','Fixed'), ('none','None'), ('code','Python Code'), ('balance','Balance')], 'Tax Type', required=True), 'applicable_type': fields.selection( [('true','True'), ('code','Python Code')], 'Applicable Type', required=True, help="If not applicable (computed through a Python code), the tax won't appear on the invoice."), 'domain':fields.char('Domain', size=32, help="This field is only used if you develop your own module allowing developers to create specific taxes in a custom domain."), diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py index 023765d73f0..8a15321b9c6 100644 --- a/addons/account/account_bank_statement.py +++ b/addons/account/account_bank_statement.py @@ -420,7 +420,7 @@ class account_bank_statement(osv.osv): for st_line in st.line_ids: if st_line.analytic_account_id: if not st.journal_id.analytic_journal_id: - raise osv.except_osv(_('No Analytic Journal !'),_("You have to assign an analytic journal on the '%s' journal!") % (st.journal_id.name,)) + raise osv.except_osv(_('No Analytic Journal!'),_("You have to assign an analytic journal on the '%s' journal!") % (st.journal_id.name,)) if not st_line.amount: continue st_line_number = self.get_next_st_line_number(cr, uid, st_number, st_line, context) diff --git a/addons/account/account_cash_statement.py b/addons/account/account_cash_statement.py index 40f0ca80738..8e3e250d41c 100644 --- a/addons/account/account_cash_statement.py +++ b/addons/account/account_cash_statement.py @@ -252,7 +252,7 @@ class account_cash_statement(osv.osv): for statement in statement_pool.browse(cr, uid, ids, context=context): vals = {} if not self._user_allow(cr, uid, statement.id, context=context): - raise osv.except_osv(_('Error!'), (_('You do not have rights to open this %s journal !') % (statement.journal_id.name, ))) + raise osv.except_osv(_('Error!'), (_('You do not have rights to open this %s journal!') % (statement.journal_id.name, ))) if statement.name and statement.name == '/': c = {'fiscalyear_id': statement.period_id.fiscalyear_id.id} diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index 14aabed86ad..01476374cf4 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -69,7 +69,7 @@ class account_invoice(osv.osv): tt = type2journal.get(type_inv, 'sale') result = self.pool.get('account.analytic.journal').search(cr, uid, [('type','=',tt)], context=context) if not result: - raise osv.except_osv(_('No Analytic Journal !'),_("You must define an analytic journal of type '%s'!") % (tt,)) + raise osv.except_osv(_('No Analytic Journal!'),_("You must define an analytic journal of type '%s'!") % (tt,)) return result[0] def _get_type(self, cr, uid, context=None): @@ -89,13 +89,43 @@ class account_invoice(osv.osv): return [('none', _('Free Reference'))] def _amount_residual(self, cr, uid, ids, name, args, context=None): + """Function of the field residua. It computes the residual amount (balance) for each invoice""" + if context is None: + context = {} + ctx = context.copy() result = {} + currency_obj = self.pool.get('res.currency') for invoice in self.browse(cr, uid, ids, context=context): + nb_inv_in_partial_rec = max_invoice_id = 0 result[invoice.id] = 0.0 if invoice.move_id: - for m in invoice.move_id.line_id: - if m.account_id.type in ('receivable','payable'): - result[invoice.id] += m.amount_residual_currency + for aml in invoice.move_id.line_id: + if aml.account_id.type in ('receivable','payable'): + if aml.currency_id and aml.currency_id.id == invoice.currency_id.id: + result[invoice.id] += aml.amount_residual_currency + else: + ctx['date'] = aml.date + result[invoice.id] += currency_obj.compute(cr, uid, aml.company_id.currency_id.id, invoice.currency_id.id, aml.amount_residual, context=ctx) + + if aml.reconcile_partial_id.line_partial_ids: + #we check if the invoice is partially reconciled and if there are other invoices + #involved in this partial reconciliation (and we sum these invoices) + for line in aml.reconcile_partial_id.line_partial_ids: + if line.invoice: + nb_inv_in_partial_rec += 1 + #store the max invoice id as for this invoice we will make a balance instead of a simple division + max_invoice_id = max(max_invoice_id, line.invoice.id) + if nb_inv_in_partial_rec: + #if there are several invoices in a partial reconciliation, we split the residual by the number + #of invoice to have a sum of residual amounts that matches the partner balance + new_value = currency_obj.round(cr, uid, invoice.currency_id, result[invoice.id] / nb_inv_in_partial_rec) + if invoice.id == max_invoice_id: + #if it's the last the invoice of the bunch of invoices partially reconciled together, we make a + #balance to avoid rounding errors + result[invoice.id] = result[invoice.id] - ((nb_inv_in_partial_rec - 1) * new_value) + else: + result[invoice.id] = new_value + #prevent the residual amount on the invoice to be less than 0 result[invoice.id] = max(result[invoice.id], 0.0) return result @@ -600,7 +630,7 @@ class account_invoice(osv.osv): obj_l = account_obj.browse(cr, uid, inv_line[2]['account_id']) if obj_l.company_id.id != company_id: raise osv.except_osv(_('Configuration Error!'), - _('Invoice line account\'s company and invoice\'s compnay does not match.')) + _('Invoice line account\'s company and invoice\'s company does not match.')) else: continue if company_id and type: @@ -756,7 +786,7 @@ class account_invoice(osv.osv): else: ref = self._convert_ref(cr, uid, inv.number) if not inv.journal_id.analytic_journal_id: - raise osv.except_osv(_('No Analytic Journal !'),_("You have to define an analytic journal on the '%s' journal!") % (inv.journal_id.name,)) + raise osv.except_osv(_('No Analytic Journal!'),_("You have to define an analytic journal on the '%s' journal!") % (inv.journal_id.name,)) il['analytic_lines'] = [(0,0, { 'name': il['name'], 'date': inv['date_invoice'], @@ -882,7 +912,7 @@ class account_invoice(osv.osv): if not inv.journal_id.sequence_id: raise osv.except_osv(_('Error!'), _('Please define sequence on the journal related to this invoice.')) if not inv.invoice_line: - raise osv.except_osv(_('No Invoice Lines !'), _('Please create some invoice lines.')) + raise osv.except_osv(_('No Invoice Lines!'), _('Please create some invoice lines.')) if inv.move_id: continue @@ -903,7 +933,7 @@ class account_invoice(osv.osv): group_check_total = self.pool.get('res.groups').browse(cr, uid, group_check_total_id, context=context) if group_check_total and uid in [x.id for x in group_check_total.users]: if (inv.type in ('in_invoice', 'in_refund') and abs(inv.check_total - inv.amount_total) >= (inv.currency_id.rounding/2.0)): - raise osv.except_osv(_('Bad total !'), _('Please verify the price of the invoice !\nThe encoded total does not match the computed total.')) + raise osv.except_osv(_('Bad Total!'), _('Please verify the price of the invoice!\nThe encoded total does not match the computed total.')) if inv.payment_term: total_fixed = total_percent = 0 @@ -1445,7 +1475,7 @@ class account_invoice_line(osv.osv): context = dict(context) context.update({'company_id': company_id, 'force_company': company_id}) if not partner_id: - raise osv.except_osv(_('No Partner Defined !'),_("You must first select a partner !") ) + raise osv.except_osv(_('No Partner Defined!'),_("You must first select a partner!") ) if not product: if type in ('in_invoice', 'in_refund'): return {'value': {}, 'domain':{'product_uom':[]}} @@ -1460,6 +1490,7 @@ class account_invoice_line(osv.osv): result = {} res = self.pool.get('product.product').browse(cr, uid, product, context=context) + result['name'] = res.partner_ref if type in ('out_invoice','out_refund'): a = res.property_account_income.id if not a: @@ -1474,19 +1505,21 @@ class account_invoice_line(osv.osv): if type in ('out_invoice', 'out_refund'): taxes = res.taxes_id and res.taxes_id or (a and self.pool.get('account.account').browse(cr, uid, a, context=context).tax_ids or False) + if res.description_sale: + result['name'] += '\n'+res.description_sale else: taxes = res.supplier_taxes_id and res.supplier_taxes_id or (a and self.pool.get('account.account').browse(cr, uid, a, context=context).tax_ids or False) + if res.description_purchase: + result['name'] += '\n'+res.description_purchase + tax_id = fpos_obj.map_tax(cr, uid, fpos, taxes) if type in ('in_invoice', 'in_refund'): result.update( {'price_unit': price_unit or res.standard_price,'invoice_line_tax_id': tax_id} ) else: result.update({'price_unit': res.list_price, 'invoice_line_tax_id': tax_id}) - result['name'] = res.partner_ref result['uos_id'] = uom_id or res.uom_id.id - if res.description: - result['name'] += '\n'+res.description domain = {'uos_id':[('category_id','=',res.uom_id.category_id.id)]} diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 7469c38decb..c71b97d5796 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -197,7 +197,7 @@ @@ -320,7 +320,7 @@ @@ -353,7 +353,7 @@ diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index d6c25364784..e604cc6d1a4 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -192,7 +192,7 @@ class account_move_line(osv.osv): for obj_line in self.browse(cr, uid, ids, context=context): if obj_line.analytic_account_id: if not obj_line.journal_id.analytic_journal_id: - raise osv.except_osv(_('No Analytic Journal !'),_("You have to define an analytic journal on the '%s' journal!") % (obj_line.journal_id.name, )) + raise osv.except_osv(_('No Analytic Journal!'),_("You have to define an analytic journal on the '%s' journal!") % (obj_line.journal_id.name, )) vals_line = self._prepare_analytic_line(cr, uid, obj_line, context=context) acc_ana_line_obj.create(cr, uid, vals_line) return True @@ -1101,7 +1101,7 @@ class account_move_line(osv.osv): period = period_obj.browse(cr, uid, period_id, context=context) for (state,) in result: if state == 'done': - raise osv.except_osv(_('Error !'), _('You can not add/modify entries in a closed period %s of journal %s.' % (period.name,journal.name))) + raise osv.except_osv(_('Error!'), _('You can not add/modify entries in a closed period %s of journal %s.' % (period.name,journal.name))) if not result: jour_period_obj.create(cr, uid, { 'name': (journal.code or journal.name)+':'+(period.name or ''), @@ -1181,7 +1181,7 @@ class account_move_line(osv.osv): move_id = move_obj.create(cr, uid, v, context) vals['move_id'] = move_id else: - raise osv.except_osv(_('No piece number !'), _('Cannot create an automatic sequence for this piece.\nPut a sequence in the journal definition for automatic numbering or create a sequence manually for this piece.')) + raise osv.except_osv(_('No Piece Number!'), _('Cannot create an automatic sequence for this piece.\nPut a sequence in the journal definition for automatic numbering or create a sequence manually for this piece.')) ok = not (journal.type_control_ids or journal.account_control_ids) if ('account_id' in vals): account = account_obj.browse(cr, uid, vals['account_id'], context=context) diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 603c4254b19..e921e639642 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -907,9 +907,7 @@ diff --git a/addons/account_followup/i18n/ru.po b/addons/account_followup/i18n/ru.po index f6cb2cf0412..b57c8e4315e 100644 --- a/addons/account_followup/i18n/ru.po +++ b/addons/account_followup/i18n/ru.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2011-11-11 15:21+0000\n" -"Last-Translator: Fabien (Open ERP) \n" +"PO-Revision-Date: 2013-05-31 10:28+0000\n" +"Last-Translator: Chertykov Denis \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: 2013-03-16 05:11+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-06-01 05:16+0000\n" +"X-Generator: Launchpad (build 16660)\n" #. module: account_followup #: model:email.template,subject:account_followup.email_template_account_followup_default @@ -22,7 +22,7 @@ msgstr "" #: model:email.template,subject:account_followup.email_template_account_followup_level1 #: model:email.template,subject:account_followup.email_template_account_followup_level2 msgid "${user.company_id.name} Payment Reminder" -msgstr "" +msgstr "${user.company_id.name} напоминание о платеже" #. module: account_followup #: help:res.partner,latest_followup_level_id:0 @@ -43,12 +43,12 @@ msgstr "Дальнейшие действия" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(date)s" -msgstr "" +msgstr "%(date)s" #. module: account_followup #: field:res.partner,payment_next_action_date:0 msgid "Next Action Date" -msgstr "" +msgstr "Дата следующего действия" #. module: account_followup #: view:account_followup.followup.line:0 @@ -64,7 +64,7 @@ msgstr "" #. module: account_followup #: view:res.partner:0 msgid "⇾ Mark as Done" -msgstr "" +msgstr "⇾ отметить как сделанное" #. module: account_followup #: field:account_followup.followup.line,manual_action_note:0 @@ -94,7 +94,7 @@ msgstr "Тема эл.письма" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(user_signature)s" -msgstr "" +msgstr "%(user_signature)s" #. module: account_followup #: view:account_followup.followup.line:0 @@ -109,19 +109,19 @@ msgstr "" #. module: account_followup #: field:account_followup.print,email_body:0 msgid "Email Body" -msgstr "" +msgstr "Тело эл. письма" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_account_followup_print msgid "Send Follow-Ups" -msgstr "" +msgstr "Послать напоминания" #. module: account_followup #: report:account_followup.followup.print:0 #: code:addons/account_followup/account_followup.py:263 #, python-format msgid "Amount" -msgstr "" +msgstr "Сумма" #. module: account_followup #: help:res.partner,payment_next_action:0 @@ -133,7 +133,7 @@ msgstr "" #. module: account_followup #: view:res.partner:0 msgid "No Responsible" -msgstr "" +msgstr "Нет ответственного" #. module: account_followup #: model:account_followup.followup.line,description:account_followup.demo_followup_line2 @@ -209,17 +209,17 @@ msgstr "Всего по дебету" #. module: account_followup #: field:res.partner,payment_next_action:0 msgid "Next Action" -msgstr "" +msgstr "Следующее действие" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": Partner Name" -msgstr "" +msgstr ": Название партнера" #. module: account_followup #: field:account_followup.followup.line,manual_action_responsible_id:0 msgid "Assign a Responsible" -msgstr "" +msgstr "Назначить ответственного" #. module: account_followup #: view:account_followup.followup:0 @@ -305,7 +305,7 @@ msgstr "" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(partner_name)s" -msgstr "" +msgstr "%(partner_name)s" #. module: account_followup #: model:email.template,body_html:account_followup.email_template_account_followup_level1 @@ -377,7 +377,7 @@ msgstr "Определяет порядок вывода списка напом #: code:addons/account_followup/wizard/account_followup_print.py:166 #, python-format msgid " will be sent" -msgstr "" +msgstr " будет отправлен" #. module: account_followup #: view:account_followup.followup.line:0 @@ -388,7 +388,7 @@ msgstr "" #: view:account_followup.followup.line:0 #: field:account_followup.followup.line,send_letter:0 msgid "Send a Letter" -msgstr "" +msgstr "Отправить письмо" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_account_followup_definition_form @@ -466,7 +466,7 @@ msgstr "Напечатанное сообщение" #: code:addons/account_followup/wizard/account_followup_print.py:155 #, python-format msgid "Anybody" -msgstr "" +msgstr "Кто угодно" #. module: account_followup #: help:account_followup.followup.line,send_email:0 @@ -528,7 +528,7 @@ msgstr "" #. module: account_followup #: view:res.partner:0 msgid "Search Partner" -msgstr "" +msgstr "Поиск партнера" #. module: account_followup #: model:ir.ui.menu,name:account_followup.account_followup_print_menu @@ -554,7 +554,7 @@ msgstr "" #. module: account_followup #: view:account_followup.print:0 msgid "or" -msgstr "" +msgstr "или" #. module: account_followup #: view:res.partner:0 diff --git a/addons/account_followup/report/account_followup_report.xml b/addons/account_followup/report/account_followup_report.xml index 6fee6a77ac1..b7c38e89f5e 100644 --- a/addons/account_followup/report/account_followup_report.xml +++ b/addons/account_followup/report/account_followup_report.xml @@ -6,7 +6,7 @@ account_followup.stat.tree account_followup.stat - + diff --git a/addons/account_followup/security/account_followup_security.xml b/addons/account_followup/security/account_followup_security.xml index 1586403d701..69c9a44a1b9 100644 --- a/addons/account_followup/security/account_followup_security.xml +++ b/addons/account_followup/security/account_followup_security.xml @@ -4,7 +4,7 @@ Account Follow-up multi company rule - + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] diff --git a/addons/account_payment/security/account_payment_security.xml b/addons/account_payment/security/account_payment_security.xml index 4bca00eaa6d..fbe29699e86 100644 --- a/addons/account_payment/security/account_payment_security.xml +++ b/addons/account_payment/security/account_payment_security.xml @@ -15,21 +15,21 @@ Payment Mode company rule - + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] Payment order multi company rule - + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] Payment line multi company rule - + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] diff --git a/addons/account_payment/wizard/account_payment_order.py b/addons/account_payment/wizard/account_payment_order.py index 08d36c45eff..03e25dfbc45 100644 --- a/addons/account_payment/wizard/account_payment_order.py +++ b/addons/account_payment/wizard/account_payment_order.py @@ -23,6 +23,7 @@ import time from lxml import etree from openerp.osv import fields, osv +from openerp.tools.translate import _ class payment_order_create(osv.osv_memory): """ @@ -108,7 +109,7 @@ class payment_order_create(osv.osv_memory): context.update({'line_ids': line_ids}) model_data_ids = mod_obj.search(cr, uid,[('model', '=', 'ir.ui.view'), ('name', '=', 'view_create_payment_order_lines')], context=context) resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id'] - return {'name': ('Entrie Lines'), + return {'name': _('Entry Lines'), 'context': context, 'view_type': 'form', 'view_mode': 'form', diff --git a/addons/account_test/i18n/ru.po b/addons/account_test/i18n/ru.po new file mode 100644 index 00000000000..d36d83d2e99 --- /dev/null +++ b/addons/account_test/i18n/ru.po @@ -0,0 +1,241 @@ +# Russian translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-06-05 07:09+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-06-06 05:21+0000\n" +"X-Generator: Launchpad (build 16667)\n" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "" +"Code should always set a variable named `result` with the result of your " +"test, that can be a list or\n" +"a dictionary. If `result` is an empty list, it means that the test was " +"succesful. Otherwise it will\n" +"try to translate and print what is inside `result`.\n" +"\n" +"If the result of your test is a dictionary, you can set a variable named " +"`column_order` to choose in\n" +"what order you want to print `result`'s content.\n" +"\n" +"Should you need them, you can also use the following variables into your " +"code:\n" +" * cr: cursor to the database\n" +" * uid: ID of the current user\n" +"\n" +"In any ways, the code must be legal python statements with correct " +"indentation (if needed).\n" +"\n" +"Example: \n" +" sql = '''SELECT id, name, ref, date\n" +" FROM account_move_line \n" +" WHERE account_id IN (SELECT id FROM account_account WHERE type " +"= 'view')\n" +" '''\n" +" cr.execute(sql)\n" +" result = cr.dictfetchall()" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_02 +msgid "Test 2: Opening a fiscal year" +msgstr "Проверка 2: Открытие фискального года" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_05 +msgid "" +"Check that reconciled invoice for Sales/Purchases has reconciled entries for " +"Payable and Receivable Accounts" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_03 +msgid "" +"Check if movement lines are balanced and have the same date and period" +msgstr "" + +#. module: account_test +#: field:accounting.assert.test,name:0 +msgid "Test Name" +msgstr "" + +#. module: account_test +#: report:account.test.assert.print:0 +msgid "Accouting tests on" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_01 +msgid "Test 1: General balance" +msgstr "Проверка 1: Общий баланс" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_06 +msgid "Check that paid/reconciled invoices are not in 'Open' state" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_05_2 +msgid "" +"Check that reconciled account moves, that define Payable and Receivable " +"accounts, are belonging to reconciled invoices" +msgstr "" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Tests" +msgstr "Проверки" + +#. module: account_test +#: field:accounting.assert.test,desc:0 +msgid "Test Description" +msgstr "Описание проверки" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Description" +msgstr "Описание" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_06_1 +msgid "Check that there's no move for any account with « View » account type" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_08 +msgid "Test 9 : Accounts and partners on account moves" +msgstr "" + +#. module: account_test +#: model:ir.actions.act_window,name:account_test.action_accounting_assert +#: model:ir.actions.report.xml,name:account_test.account_assert_test_report +#: model:ir.ui.menu,name:account_test.menu_action_license +msgid "Accounting Tests" +msgstr "" + +#. module: account_test +#: code:addons/account_test/report/account_test_report.py:74 +#, python-format +msgid "The test was passed successfully" +msgstr "Проверка прошла успешно" + +#. module: account_test +#: field:accounting.assert.test,active:0 +msgid "Active" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_06 +msgid "Test 6 : Invoices status" +msgstr "" + +#. module: account_test +#: model:ir.model,name:account_test.model_accounting_assert_test +msgid "accounting.assert.test" +msgstr "accounting.assert.test" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_05 +msgid "" +"Test 5.1 : Payable and Receivable accountant lines of reconciled invoices" +msgstr "" + +#. module: account_test +#: field:accounting.assert.test,code_exec:0 +msgid "Python code" +msgstr "Код на Python" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_07 +msgid "" +"Check on bank statement that the Closing Balance = Starting Balance + sum of " +"statement lines" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_07 +msgid "Test 8 : Closing balance on bank statements" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_03 +msgid "Test 3: Movement lines" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_05_2 +msgid "Test 5.2 : Reconcilied invoices and Payable/Receivable accounts" +msgstr "" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Expression" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_04 +msgid "Test 4: Totally reconciled mouvements" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_04 +msgid "Check if the totally reconciled movements are balanced" +msgstr "" + +#. module: account_test +#: field:accounting.assert.test,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_02 +msgid "" +"Check if the balance of the new opened fiscal year matches with last year's " +"balance" +msgstr "" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Python Code" +msgstr "Код на Python" + +#. module: account_test +#: model:ir.actions.act_window,help:account_test.action_accounting_assert +msgid "" +"

\n" +" Click to create Accounting Test.\n" +"

\n" +" " +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_01 +msgid "Check the balance: Debit sum = Credit sum" +msgstr "Проверяет баланс: сумма дебита = сумма кредита" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_08 +msgid "Check that general accounts and partners on account moves are active" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_06_1 +msgid "Test 7: « View  » account type" +msgstr "" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Code Help" +msgstr "" diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py index 850162ccf84..81eb76ff3a8 100644 --- a/addons/account_voucher/account_voucher.py +++ b/addons/account_voucher/account_voucher.py @@ -1622,7 +1622,7 @@ class account_bank_statement(osv.osv): for bk_st in self.browse(cr, uid, ids, context=context): if vals.get('journal_id') and bk_st.line_ids: if any([x.voucher_id and True or False for x in bk_st.line_ids]): - raise osv.except_osv(_('Unable to change journal !'), _('You can not change the journal as you already reconciled some statement lines!')) + raise osv.except_osv(_('Unable to Change Journal!'), _('You can not change the journal as you already reconciled some statement lines!')) return super(account_bank_statement, self).write(cr, uid, ids, vals, context=context) diff --git a/addons/account_voucher/html/index.html b/addons/account_voucher/html/index.html index 581dbb4fb96..d59c110dde5 100644 --- a/addons/account_voucher/html/index.html +++ b/addons/account_voucher/html/index.html @@ -7,7 +7,6 @@ Online Demo -   @@ -137,4 +136,5 @@ material. Define recurrencies to produce recurring invoice automatically. -
+
+
diff --git a/addons/account_voucher/i18n/ru.po b/addons/account_voucher/i18n/ru.po index 63cad344ed0..ef38a07e478 100644 --- a/addons/account_voucher/i18n/ru.po +++ b/addons/account_voucher/i18n/ru.po @@ -7,24 +7,24 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2012-05-10 17:46+0000\n" +"PO-Revision-Date: 2013-05-29 13:17+0000\n" "Last-Translator: Chertykov Denis \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: 2013-03-16 05:33+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-05-30 05:45+0000\n" +"X-Generator: Launchpad (build 16652)\n" #. module: account_voucher #: field:account.bank.statement.line,voucher_id:0 msgid "Reconciliation" -msgstr "" +msgstr "Сверка" #. module: account_voucher #: model:ir.model,name:account_voucher.model_account_config_settings msgid "account.config.settings" -msgstr "" +msgstr "account.config.settings" #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:369 @@ -45,7 +45,7 @@ msgstr "Общая сумма" #. module: account_voucher #: view:account.voucher:0 msgid "Open Customer Journal Entries" -msgstr "" +msgstr "Открыть записи журнала по заказчику" #. module: account_voucher #: view:account.voucher:0 @@ -63,7 +63,7 @@ msgstr "" #. module: account_voucher #: view:account.voucher:0 msgid "(Update)" -msgstr "" +msgstr "(Обновить)" #. module: account_voucher #: view:account.voucher:0 @@ -90,7 +90,7 @@ msgstr "Март" #. module: account_voucher #: field:account.voucher,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Непрочитанные" #. module: account_voucher #: view:account.voucher:0 @@ -115,13 +115,13 @@ msgstr "Номер транзакции." #. module: account_voucher #: view:sale.receipt.report:0 msgid "Group by year of Invoice Date" -msgstr "" +msgstr "Группировать по году в дате счета" #. module: account_voucher #: view:sale.receipt.report:0 #: field:sale.receipt.report,user_id:0 msgid "Salesperson" -msgstr "" +msgstr "Продавец" #. module: account_voucher #: view:account.voucher:0 @@ -135,6 +135,8 @@ msgid "" "You can not change the journal as you already reconciled some statement " "lines!" msgstr "" +"Вы не можете изменить журнал, так как вы уже сверили некоторые позиции " +"документа!" #. module: account_voucher #: view:account.voucher:0 @@ -145,7 +147,7 @@ msgstr "Утвердить" #: model:ir.actions.act_window,name:account_voucher.action_vendor_payment #: model:ir.ui.menu,name:account_voucher.menu_action_vendor_payment msgid "Supplier Payments" -msgstr "" +msgstr "Оплаты поставщикам" #. module: account_voucher #: model:ir.actions.act_window,help:account_voucher.action_purchase_receipt @@ -167,7 +169,7 @@ msgstr "Искать ваучеры" #. module: account_voucher #: field:account.voucher,writeoff_acc_id:0 msgid "Counterpart Account" -msgstr "" +msgstr "Корреспондирующий счет" #. module: account_voucher #: field:account.voucher,account_id:0 @@ -189,7 +191,7 @@ msgstr "OK" #. module: account_voucher #: field:account.voucher.line,reconcile:0 msgid "Full Reconcile" -msgstr "" +msgstr "Полная сверка" #. module: account_voucher #: field:account.voucher,date_due:0 @@ -207,7 +209,7 @@ msgstr "Примечания" #. module: account_voucher #: field:account.voucher,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Сообщения" #. module: account_voucher #: model:ir.actions.act_window,name:account_voucher.action_purchase_receipt @@ -225,7 +227,7 @@ msgstr "Элемент журнала" #: code:addons/account_voucher/account_voucher.py:981 #, python-format msgid "Error!" -msgstr "" +msgstr "Ошибка!" #. module: account_voucher #: field:account.voucher.line,amount:0 @@ -235,7 +237,7 @@ msgstr "Суммма" #. module: account_voucher #: view:account.voucher:0 msgid "Payment Options" -msgstr "" +msgstr "Варианты оплаты" #. module: account_voucher #: view:account.voucher:0 @@ -254,6 +256,8 @@ msgstr "Отменено" msgid "" "You have to configure account base code and account tax code on the '%s' tax!" msgstr "" +"Вы должны настроить код базового счета и код налогового счета для налога " +"'%s'!" #. module: account_voucher #: model:ir.actions.act_window,help:account_voucher.action_sale_receipt @@ -271,7 +275,7 @@ msgstr "" #. module: account_voucher #: help:account.voucher,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Если отмечено, новые сообщения требуют вашего внимания." #. module: account_voucher #: model:ir.model,name:account_voucher.model_account_bank_statement_line @@ -294,12 +298,12 @@ msgstr "Налог" #: code:addons/account_voucher/account_voucher.py:879 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Неверное действие!" #. module: account_voucher #: field:account.voucher,comment:0 msgid "Counterpart Comment" -msgstr "" +msgstr "Корреспондирующий коментарий" #. module: account_voucher #: field:account.voucher.line,account_analytic_id:0 @@ -312,6 +316,8 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Содержит сводку по Чаттеру (количество сообщений,...). Эта сводка в формате " +"html для возможности использования в канбан виде" #. module: account_voucher #: view:account.voucher:0 @@ -326,7 +332,7 @@ msgstr "Информация о платеже" #. module: account_voucher #: view:account.voucher:0 msgid "(update)" -msgstr "" +msgstr "(обновить)" #. module: account_voucher #: view:account.voucher:0 @@ -395,7 +401,7 @@ msgstr "Ваучер поставщика" #. module: account_voucher #: field:account.voucher,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Подписчики" #. module: account_voucher #: selection:account.voucher.line,type:0 @@ -406,7 +412,7 @@ msgstr "Дебет" #: code:addons/account_voucher/account_voucher.py:1547 #, python-format msgid "Unable to change journal !" -msgstr "" +msgstr "Невозможно изменить журнал!" #. module: account_voucher #: view:sale.receipt.report:0 @@ -446,7 +452,7 @@ msgstr "" #. module: account_voucher #: view:account.voucher:0 msgid "Open Supplier Journal Entries" -msgstr "" +msgstr "Открыть журнал проводок по поставщику" #. module: account_voucher #: model:ir.actions.act_window,name:account_voucher.action_review_voucher_list @@ -461,7 +467,7 @@ msgstr "Памятка" #. module: account_voucher #: view:account.voucher:0 msgid "Are you sure to unreconcile and cancel this record ?" -msgstr "" +msgstr "Вы уверены, что надо отменить сверку и саму запись ?" #. module: account_voucher #: field:account.voucher,is_multi_currency:0 @@ -494,13 +500,13 @@ msgstr "" #. module: account_voucher #: field:account.voucher,writeoff_amount:0 msgid "Difference Amount" -msgstr "" +msgstr "Сумма разницы" #. module: account_voucher #: view:sale.receipt.report:0 #: field:sale.receipt.report,due_delay:0 msgid "Avg. Due Delay" -msgstr "" +msgstr "Средн. задержка" #. module: account_voucher #: code:addons/account_voucher/invoice.py:34 @@ -554,7 +560,7 @@ msgstr "Оплаченная сумма" #. module: account_voucher #: field:account.voucher,payment_option:0 msgid "Payment Difference" -msgstr "" +msgstr "Оплата разницы" #. module: account_voucher #: view:account.voucher:0 @@ -568,7 +574,7 @@ msgstr "Для проверки" #: code:addons/account_voucher/account_voucher.py:1194 #, python-format msgid "change" -msgstr "" +msgstr "изменить" #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:1014 @@ -599,7 +605,7 @@ msgstr "" #. module: account_voucher #: view:account.invoice:0 msgid "Register Payment" -msgstr "" +msgstr "Регистрация оплаты" #. module: account_voucher #: field:account.statement.from.invoice.lines,line_ids:0 @@ -614,7 +620,7 @@ msgstr "декабрём" #. module: account_voucher #: view:sale.receipt.report:0 msgid "Group by month of Invoice Date" -msgstr "" +msgstr "Группировать по месяцу даты счета" #. module: account_voucher #: view:sale.receipt.report:0 @@ -647,7 +653,7 @@ msgstr "" #. module: account_voucher #: view:account.voucher:0 msgid "Are you sure to unreconcile this record?" -msgstr "" +msgstr "Вы уверены в отмене сверки" #. module: account_voucher #: field:account.voucher,company_id:0 @@ -665,13 +671,13 @@ msgstr "" #. module: account_voucher #: selection:account.voucher,payment_option:0 msgid "Reconcile Payment Balance" -msgstr "" +msgstr "Сверка платежного баланса" #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:975 #, python-format msgid "Configuration Error !" -msgstr "" +msgstr "Ошибка конфигурации !" #. module: account_voucher #: view:account.voucher:0 @@ -695,18 +701,18 @@ msgstr "" #: field:account.voucher,state:0 #: view:sale.receipt.report:0 msgid "Status" -msgstr "" +msgstr "Статус" #. module: account_voucher #: view:account.voucher:0 msgid "Allocation" -msgstr "" +msgstr "Распределение" #. module: account_voucher #: view:account.statement.from.invoice.lines:0 #: view:account.voucher:0 msgid "or" -msgstr "" +msgstr "или" #. module: account_voucher #: selection:sale.receipt.report,month:0 @@ -716,7 +722,7 @@ msgstr "Август" #. module: account_voucher #: view:account.voucher:0 msgid "Validate Payment" -msgstr "" +msgstr "Утвердить оплату" #. module: account_voucher #: help:account.voucher,audit:0 @@ -724,6 +730,8 @@ msgid "" "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." msgstr "" +"Отметьте, если вы не уверены в этой проводке журнала и хотите отметить её " +"\"для проверки\" опытному бухгалтеру." #. module: account_voucher #: selection:sale.receipt.report,month:0 @@ -734,7 +742,7 @@ msgstr "Октябрь" #: code:addons/account_voucher/account_voucher.py:976 #, python-format msgid "Please activate the sequence of selected journal !" -msgstr "" +msgstr "Пожалуйста, включите нумерацию выбранного журнала!" #. module: account_voucher #: selection:sale.receipt.report,month:0 @@ -749,7 +757,7 @@ msgstr "" #. module: account_voucher #: field:account.voucher,paid:0 msgid "Paid" -msgstr "" +msgstr "Оплачено" #. module: account_voucher #: model:ir.actions.act_window,name:account_voucher.action_sale_receipt @@ -760,7 +768,7 @@ msgstr "" #. module: account_voucher #: field:account.voucher,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Подписан" #. module: account_voucher #: field:account.voucher,analytic_id:0 @@ -787,7 +795,7 @@ msgstr "Расширенные фильтры..." #. module: account_voucher #: field:account.voucher,paid_amount_in_company_currency:0 msgid "Paid Amount in Company Currency" -msgstr "" +msgstr "Оплаченная сумма в валюте компании" #. module: account_voucher #: field:account.bank.statement.line,amount_reconciled:0 @@ -814,7 +822,7 @@ msgstr "Предыдущие платежи ?" #: code:addons/account_voucher/account_voucher.py:1112 #, python-format msgid "The invoice you are willing to pay is not valid anymore." -msgstr "" +msgstr "Счет, который вы готовы платить, уже не актуален ." #. module: account_voucher #: selection:sale.receipt.report,month:0 @@ -830,30 +838,30 @@ msgstr "Журнал ваучеров" #. module: account_voucher #: model:ir.model,name:account_voucher.model_res_company msgid "Companies" -msgstr "" +msgstr "Компании" #. module: account_voucher #: field:account.voucher,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Итог" #. module: account_voucher #: field:account.voucher,active:0 msgid "Active" -msgstr "" +msgstr "Активно" #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:982 #, python-format msgid "Please define a sequence on the journal." -msgstr "" +msgstr "Пожалуйста, определите нумерацию журнала." #. module: account_voucher #: model:ir.actions.act_window,name:account_voucher.act_pay_voucher #: model:ir.actions.act_window,name:account_voucher.action_vendor_receipt #: model:ir.ui.menu,name:account_voucher.menu_action_vendor_receipt msgid "Customer Payments" -msgstr "" +msgstr "Платежи клиентов" #. module: account_voucher #: model:ir.actions.act_window,name:account_voucher.action_sale_receipt_report_all @@ -865,7 +873,7 @@ msgstr "" #. module: account_voucher #: view:sale.receipt.report:0 msgid "Group by Invoice Date" -msgstr "" +msgstr "Группировать по дате счета" #. module: account_voucher #: view:account.voucher:0 diff --git a/addons/account_voucher/security/account_voucher_security.xml b/addons/account_voucher/security/account_voucher_security.xml index 04540fd8aa0..daa5934b256 100644 --- a/addons/account_voucher/security/account_voucher_security.xml +++ b/addons/account_voucher/security/account_voucher_security.xml @@ -3,13 +3,13 @@ Voucher multi-company - + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] Voucher Line multi-company - + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py index ac298713b04..ce79c4d5ffb 100644 --- a/addons/analytic/analytic.py +++ b/addons/analytic/analytic.py @@ -157,7 +157,7 @@ class account_analytic_account(osv.osv): for account in self.browse(cr, uid, ids, context=context): if account.company_id: if account.company_id.currency_id.id != value: - raise osv.except_osv(_('Error!'), _("If you set a company, the currency selected has to be the same as it's currency. \nYou can remove the company belonging, and thus change the currency, only on analytic account of type 'view'. This can be really usefull for consolidation purposes of several companies charts with different currencies, for example.")) + raise osv.except_osv(_('Error!'), _("If you set a company, the currency selected has to be the same as it's currency. \nYou can remove the company belonging, and thus change the currency, only on analytic account of type 'view'. This can be really useful for consolidation purposes of several companies charts with different currencies, for example.")) if value: return cr.execute("""update account_analytic_account set currency_id=%s where id=%s""", (value, account.id, )) diff --git a/addons/analytic/security/analytic_security.xml b/addons/analytic/security/analytic_security.xml index 70688275de2..bf103ca8988 100644 --- a/addons/analytic/security/analytic_security.xml +++ b/addons/analytic/security/analytic_security.xml @@ -4,14 +4,14 @@ Analytic multi company rule - + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] Analytic line multi company rule - + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] diff --git a/addons/analytic_user_function/analytic_user_function.py b/addons/analytic_user_function/analytic_user_function.py index 0573292c1f6..1adefb2d59d 100644 --- a/addons/analytic_user_function/analytic_user_function.py +++ b/addons/analytic_user_function/analytic_user_function.py @@ -104,7 +104,7 @@ class hr_analytic_timesheet(osv.osv): a = r.product_id.categ_id.property_account_expense_categ.id if not a: raise osv.except_osv(_('Error!'), - _('There is no expense account define ' \ + _('There is no expense account defined ' \ 'for this product: "%s" (id:%d)') % \ (r.product_id.name, r.product_id.id,)) # Compute based on pricetype @@ -133,7 +133,7 @@ class hr_analytic_timesheet(osv.osv): a = r.product_id.categ_id.property_account_expense_categ.id if not a: raise osv.except_osv(_('Error!'), - _('There is no expense account define ' \ + _('There is no expense account defined ' \ 'for this product: "%s" (id:%d)') % \ (r.product_id.name, r.product_id.id,)) # Compute based on pricetype diff --git a/addons/anonymization/anonymization.py b/addons/anonymization/anonymization.py index 0477efa5b1f..c82afde103f 100644 --- a/addons/anonymization/anonymization.py +++ b/addons/anonymization/anonymization.py @@ -86,11 +86,11 @@ class ir_model_fields_anonymization(osv.osv): if context.get('manual'): global_state = self._get_global_state(cr, uid, context=context) if global_state == 'anonymized': - raise osv.except_osv('Error !', "The database is currently anonymized, you cannot create, modify or delete fields.") + raise osv.except_osv('Error!', "The database is currently anonymized, you cannot create, modify or delete fields.") elif global_state == 'unstable': msg = _("The database anonymization is currently in an unstable state. Some fields are anonymized," + \ " while some fields are not anonymized. You should try to solve this problem before trying to create, write or delete fields.") - raise osv.except_osv('Error !', msg) + raise osv.except_osv('Error!', msg) return True @@ -357,7 +357,7 @@ class ir_model_fields_anonymize_wizard(osv.osv_memory): else: msg = _("The database anonymization is currently in an unstable state. Some fields are anonymized," + \ " while some fields are not anonymized. You should try to solve this problem before trying to do anything else.") - raise osv.except_osv('Error !', msg) + raise osv.except_osv('Error!', msg) res['arch'] = etree.tostring(eview) @@ -521,11 +521,11 @@ class ir_model_fields_anonymize_wizard(osv.osv_memory): # check that all the defined fields are in the 'anonymized' state state = ir_model_fields_anonymization_model._get_global_state(cr, uid, context=context) if state == 'clear': - raise osv.except_osv_('Error !', "The database is not currently anonymized, you cannot reverse the anonymization.") + raise osv.except_osv_('Error!', "The database is not currently anonymized, you cannot reverse the anonymization.") elif state == 'unstable': msg = _("The database anonymization is currently in an unstable state. Some fields are anonymized," + \ " while some fields are not anonymized. You should try to solve this problem before trying to do anything.") - raise osv.except_osv('Error !', msg) + raise osv.except_osv('Error!', msg) wizards = self.browse(cr, uid, ids, context=context) for wizard in wizards: diff --git a/addons/auth_openid/i18n/ru.po b/addons/auth_openid/i18n/ru.po index 809589efd37..68b36626056 100644 --- a/addons/auth_openid/i18n/ru.po +++ b/addons/auth_openid/i18n/ru.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-05-27 12:13+0000\n" +"PO-Revision-Date: 2013-05-28 06:19+0000\n" "Last-Translator: Глория Хрусталёва \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-05-28 05:17+0000\n" +"X-Launchpad-Export-Date: 2013-05-29 05:37+0000\n" "X-Generator: Launchpad (build 16640)\n" #. module: auth_openid @@ -46,7 +46,7 @@ msgstr "" #: code:addons/auth_openid/static/src/xml/auth_openid.xml:10 #, python-format msgid "Google" -msgstr "" +msgstr "Google" #. module: auth_openid #. openerp-web diff --git a/addons/auth_signup/res_users.py b/addons/auth_signup/res_users.py index f4a985280ac..891837f8813 100644 --- a/addons/auth_signup/res_users.py +++ b/addons/auth_signup/res_users.py @@ -23,6 +23,7 @@ import random from urllib import urlencode from urlparse import urljoin +from openerp.addons.base.ir.ir_mail_server import MailDeliveryException from openerp.osv import osv, fields from openerp.tools.misc import DEFAULT_SERVER_DATETIME_FORMAT from openerp.tools.safe_eval import safe_eval @@ -55,19 +56,22 @@ class res_partner(osv.Model): def _get_signup_url_for_action(self, cr, uid, ids, action='login', view_type=None, menu_id=None, res_id=None, model=None, context=None): """ generate a signup url for the given partner ids and action, possibly overriding the url state components (menu_id, id, view_type) """ + if context is None: + context= {} res = dict.fromkeys(ids, False) base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url') for partner in self.browse(cr, uid, ids, context): # when required, make sure the partner has a valid signup token - if context and context.get('signup_valid') and not partner.user_ids: + if context.get('signup_valid') and not partner.user_ids: self.signup_prepare(cr, uid, [partner.id], context=context) partner.refresh() # the parameters to encode for the query and fragment part of url query = {'db': cr.dbname} - fragment = {'action': action, 'type': partner.signup_type} + signup_type = context.get('signup_force_type_in_url', partner.signup_type or '') + fragment = {'action': action, 'type': signup_type} - if partner.signup_token: + if partner.signup_token and signup_type: fragment['token'] = partner.signup_token elif partner.user_ids: fragment['db'] = cr.dbname @@ -103,6 +107,9 @@ class res_partner(osv.Model): def action_signup_prepare(self, cr, uid, ids, context=None): return self.signup_prepare(cr, uid, ids, context=context) + def signup_cancel(self, cr, uid, ids, context=None): + return self.write(cr, uid, ids, {'signup_token': False, 'signup_type': False, 'signup_expiration': False}, context=context) + def signup_prepare(self, cr, uid, ids, signup_type="signup", expiration=False, context=None): """ generate a new token for the partners with the given validity, if necessary :param expiration: the expiration datetime of the token (string, optional) @@ -202,7 +209,7 @@ class res_users(osv.Model): }) if partner.company_id: values['company_id'] = partner.company_id.id - values['company_ids'] = [(6,0,[partner.company_id.id])] + values['company_ids'] = [(6, 0, [partner.company_id.id])] self._signup_create_user(cr, uid, values, context=context) else: # no token, sign up an external user @@ -259,25 +266,26 @@ class res_users(osv.Model): pass if not bool(template): template = self.pool.get('ir.model.data').get_object(cr, uid, 'auth_signup', 'reset_password_email') - mail_obj = self.pool.get('mail.mail') assert template._name == 'email.template' for user in self.browse(cr, uid, ids, context): if not user.email: raise osv.except_osv(_("Cannot send email: user has no email address."), user.name) - mail_id = self.pool.get('email.template').send_mail(cr, uid, template.id, user.id, True, context=context) - mail_state = mail_obj.read(cr, uid, mail_id, ['state'], context=context) - - if mail_state and mail_state['state'] == 'exception': - raise self.pool.get('res.config.settings').get_config_warning(cr, _("Cannot send email: no outgoing email server configured.\nYou can configure it under %(menu:base_setup.menu_general_configuration)s."), context) - else: - return True + try: + self.pool.get('email.template').send_mail(cr, uid, template.id, user.id, force_send=True, raise_exception=True, context=context) + except Exception: + raise def create(self, cr, uid, values, context=None): + if context is None: + context = {} # overridden to automatically invite user to sign up user_id = super(res_users, self).create(cr, uid, values, context=context) user = self.browse(cr, uid, user_id, context=context) - if context and context.get('reset_password') and user.email: - ctx = dict(context, create_user=True) - self.action_reset_password(cr, uid, [user.id], context=ctx) + if user.email and not context.get('no_reset_password'): + context.update({'create_user': True}) + try: + self.action_reset_password(cr, uid, [user.id], context=context) + except MailDeliveryException: + self.pool.get('res.partner').signup_cancel(cr, uid, [user.partner_id.id], context=context) return user_id diff --git a/addons/auth_signup/res_users_view.xml b/addons/auth_signup/res_users_view.xml index 28f66eb101d..60c419db737 100644 --- a/addons/auth_signup/res_users_view.xml +++ b/addons/auth_signup/res_users_view.xml @@ -31,9 +31,11 @@
-
+
+
diff --git a/addons/mrp/i18n/mn.po b/addons/mrp/i18n/mn.po index 8d3c0aee785..53f793c1804 100644 --- a/addons/mrp/i18n/mn.po +++ b/addons/mrp/i18n/mn.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2012-07-21 12:33+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-06-04 04:00+0000\n" +"Last-Translator: erdenebold \n" "Language-Team: Mongolian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-16 05:01+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-06-05 05:32+0000\n" +"X-Generator: Launchpad (build 16660)\n" #. module: mrp #: help:mrp.config.settings,module_mrp_repair:0 @@ -48,7 +48,7 @@ msgstr "Дамжлагуудын Ашиглалт" #. module: mrp #: view:mrp.routing.workcenter:0 msgid "Routing Work Centers" -msgstr "Дамжлагуудын маршрут" +msgstr "Шугамын дамжлагууд" #. module: mrp #: field:mrp.production.workcenter.line,cycle:0 @@ -86,12 +86,12 @@ msgstr "" #: model:ir.actions.act_window,name:mrp.mrp_routing_action #: model:ir.ui.menu,name:mrp.menu_mrp_routing_action msgid "Routings" -msgstr "Маршрут" +msgstr "Шугам" #. module: mrp #: view:mrp.bom:0 msgid "Search Bill Of Material" -msgstr "Жор Хайх" +msgstr "Орц Хайх" #. module: mrp #: model:process.node,note:mrp.process_node_stockproduct1 @@ -112,8 +112,8 @@ msgid "" "Number of iterations this work center has to do in the specified operation " "of the routing." msgstr "" -"Үйлдвэрлэлийн нэг маршрутын хувьд уг дамжлага өөрийн үйлдлийг давтан " -"гүйцэтгэх давтамжын тоо." +"Үйлдвэрлэлийн нэг шугамын хувьд уг дамжлага өөрийн үйлдлийг давтан гүйцэтгэх " +"давтамжын тоо." #. module: mrp #: view:product.product:0 @@ -214,7 +214,7 @@ msgstr "" #: code:addons/mrp/mrp.py:633 #, python-format msgid "Cannot cancel manufacturing order!" -msgstr "" +msgstr "Үйлдвэрийн захиалгыг цуцлах боломжгүй!" #. module: mrp #: field:mrp.workcenter,costs_cycle_account_id:0 @@ -337,7 +337,7 @@ msgstr "Бараа Үйлдвэрлэх" #. module: mrp #: constraint:mrp.bom:0 msgid "Error ! You cannot create recursive BoM." -msgstr "Алдаа ! Тойрог хамааралтай жор үүсгэж болохгүй." +msgstr "Алдаа ! Тойрог хамааралтай орц үүсгэж болохгүй." #. module: mrp #: model:ir.model,name:mrp.model_mrp_routing_workcenter @@ -423,7 +423,7 @@ msgstr "" #: field:mrp.production,product_qty:0 #: field:mrp.production.product.line,product_qty:0 msgid "Product Quantity" -msgstr "" +msgstr "Барааны тоо" #. module: mrp #: help:mrp.production,picking_id:0 @@ -491,13 +491,13 @@ msgstr "Товлогдсон огноо" #: code:addons/mrp/procurement.py:124 #, python-format msgid "Manufacturing Order %s created." -msgstr "" +msgstr "Үйлдвэрлэлийн захиалга %s үүсгэгдлээ." #. module: mrp #: view:mrp.bom:0 #: report:mrp.production.order:0 msgid "Bill Of Material" -msgstr "Жор" +msgstr "Орц" #. module: mrp #: help:mrp.routing,location_id:0 @@ -518,7 +518,7 @@ msgstr "Нөөцийн Үнийн Хазайлт" #. module: mrp #: model:ir.actions.act_window,name:mrp.action2 msgid "Bill of Materials Structure" -msgstr "Жорын Бүтэц" +msgstr "Орцын Бүтэц" #. module: mrp #: model:process.node,note:mrp.process_node_serviceproduct0 @@ -560,7 +560,7 @@ msgstr "" msgid "" "The Bill of Material is linked to a routing, i.e. the succession of work " "centers." -msgstr "Жор нь маршруттай холбогдсон, ө.х. дамжлагуудын цуваанууд" +msgstr "Орц нь шугамтай холбогдсон, ө.х. дамжлагуудын цуваанууд" #. module: mrp #: view:mrp.production:0 @@ -592,7 +592,7 @@ msgstr "Нөөцийн үнэ" #. module: mrp #: model:ir.actions.act_window,name:mrp.action_product_bom_structure msgid "Product BoM Structure" -msgstr "Барааны Жорын Бүтэц" +msgstr "Барааны Орцын Бүтэц" #. module: mrp #: view:mrp.production:0 @@ -603,12 +603,12 @@ msgstr "Үйлдвэрлэл Хайх" #: help:mrp.routing.workcenter,sequence:0 msgid "" "Gives the sequence order when displaying a list of routing Work Centers." -msgstr "Маршруутын дамжлагуудыг жагсаалтаар харуулах дэс дарааллыг өгнө." +msgstr "Шугамын дамжлагуудыг жагсаалтаар харуулах дэс дарааллыг өгнө." #. module: mrp #: field:mrp.bom,child_complete_ids:0 msgid "BoM Hierarchy" -msgstr "Жорын удамшил" +msgstr "Орцын удамшил" #. module: mrp #: model:process.transition,name:mrp.process_transition_stockproduction0 @@ -637,7 +637,7 @@ msgstr "Бэлтгэлтийн Сондгойрол" #. module: mrp #: field:mrp.bom,bom_lines:0 msgid "BoM Lines" -msgstr "Жорын мөрүүд" +msgstr "Орцын мөрүүд" #. module: mrp #: field:mrp.workcenter,time_start:0 @@ -650,13 +650,13 @@ msgid "" "If the active field is set to False, it will allow you to hide the routing " "without removing it." msgstr "" -"Идэвхтэй талбар нь худал буюу тэмдэглэгдээгүй байвал машрутыг устгалгүйгээр " +"Идэвхтэй талбар нь худал буюу тэмдэглэгдээгүй байвал шугамыг устгалгүйгээр " "нуудаг." #. module: mrp #: model:process.transition,name:mrp.process_transition_billofmaterialrouting0 msgid "Material Routing" -msgstr "Материалын Машрут" +msgstr "Материалын Шугам" #. module: mrp #: view:mrp.production:0 @@ -676,13 +676,13 @@ msgstr "Дамжлагын Ачаалал" #: code:addons/mrp/procurement.py:50 #, python-format msgid "No BoM defined for this product !" -msgstr "Энэ бараанд жор тодорхойлогдоогүй байна !" +msgstr "Энэ бараанд орц тодорхойлогдоогүй байна !" #. module: mrp #: model:ir.actions.act_window,name:mrp.mrp_bom_form_action2 #: model:ir.ui.menu,name:mrp.menu_mrp_bom_form_action2 msgid "Bill of Material Components" -msgstr "Жорын бүрдэлүүд" +msgstr "Орцын бүрдэлүүд" #. module: mrp #: model:ir.model,name:mrp.model_stock_move @@ -708,7 +708,7 @@ msgid "" "operations and to plan future loads on work centers based on production " "plannification." msgstr "" -"Эцсийн барааг үйлдвэрлэх үйлдлүүд (дамжлагууд)-н жагсаалт. Машрут гэдэг нь " +"Эцсийн барааг үйлдвэрлэх үйлдлүүд (дамжлагууд)-н жагсаалт. Шугам гэдэг нь " "үндсэндээ дамжлагуудын өртөгийг тооцоолох болон ажлын ачааллыг тооцоолоход " "үйлдвэрлэлийн төлөвлөгөөн дээр суурилан бодоход хэрэглэгддэг." @@ -734,7 +734,7 @@ msgstr "" #. module: mrp #: constraint:mrp.bom:0 msgid "BoM line product should not be same as BoM product." -msgstr "Жорын мөр нь жорын бараатайгаа ижил байж болохгүй." +msgstr "Орцын мөр нь орцын бараатайгаа ижил байж болохгүй." #. module: mrp #: view:mrp.production:0 @@ -744,7 +744,7 @@ msgstr "Үйлдвэрлэгдэж буй" #. module: mrp #: model:ir.ui.menu,name:mrp.menu_mrp_property msgid "Master Bill of Materials" -msgstr "Мастер жор" +msgstr "Мастер орц" #. module: mrp #: help:mrp.config.settings,module_product_manufacturer:0 @@ -907,7 +907,7 @@ msgid "" "All product quantities must be greater than 0.\n" "You should install the mrp_byproduct module if you want to manage extra " "products on BoMs !" -msgstr "" +msgstr "Бүх бүтээгдэхүүнийг тоог 0-оос эхэлж үүсгэнэ." #. module: mrp #: view:mrp.production:0 @@ -954,7 +954,7 @@ msgstr "" #. module: mrp #: field:mrp.bom,type:0 msgid "BoM Type" -msgstr "Жорын төрөл" +msgstr "Орцын төрөл" #. module: mrp #: code:addons/mrp/procurement.py:52 @@ -962,7 +962,7 @@ msgstr "Жорын төрөл" msgid "" "Procurement '%s' has an exception: 'No BoM defined for this product !'" msgstr "" -"'%s' татан авалтад сондгойрол байна: 'Бараанд жор тодорхойлогдоогүй !'" +"'%s' татан авалтад сондгойрол байна: 'Бараанд орц тодорхойлогдоогүй !'" #. module: mrp #: view:mrp.property:0 @@ -1077,7 +1077,7 @@ msgstr "Нөөцлүүлэх" #. module: mrp #: report:bom.structure:0 msgid "BOM Name" -msgstr "Жорын нэр" +msgstr "Орцын нэр" #. module: mrp #: model:ir.actions.act_window,name:mrp.act_product_manufacturing_open @@ -1167,7 +1167,7 @@ msgstr "Хийгдэж байгаа үйлдвэрлэлийн захиалгу #. module: mrp #: model:ir.actions.client,name:mrp.action_client_mrp_menu msgid "Open MRP Menu" -msgstr "" +msgstr "Нээлттэй MRP цэс" #. module: mrp #: model:ir.actions.act_window,name:mrp.mrp_production_action4 @@ -1194,7 +1194,7 @@ msgstr "Циклийн Өртөг" #: code:addons/mrp/wizard/change_production_qty.py:88 #, python-format msgid "Cannot find bill of material for this product." -msgstr "" +msgstr "Энэ бараа материалаар хайх боломжгүй." #. module: mrp #: selection:mrp.workcenter.load,measure_unit:0 @@ -1216,8 +1216,7 @@ msgstr "Нөөцүүд" msgid "" "Time in hours for this Work Center to achieve the operation of the specified " "routing." -msgstr "" -"Заагдсан маршрутын үйлдлийг гүйцэтгэхэд энэ дамжлагын хугацаа цагаар." +msgstr "Заагдсан шугамын үйлдлийг гүйцэтгэхэд энэ дамжлагын хугацаа цагаар." #. module: mrp #: field:mrp.workcenter,costs_journal_id:0 @@ -1272,7 +1271,7 @@ msgstr "Үйлдвэрлэлийг эхлүүлэхэд бэлэн Үйлдвэ #: field:mrp.production,bom_id:0 #: model:process.node,name:mrp.process_node_billofmaterial0 msgid "Bill of Material" -msgstr "Жор" +msgstr "Орц" #. module: mrp #: view:mrp.workcenter.load:0 @@ -1304,9 +1303,9 @@ msgid "" "Routing is indicated then,the third tab of a production order (Work Centers) " "will be automatically pre-completed." msgstr "" -"Маршрут нь дамжлагууд ямар хугацаагаар хэдэн циклээр ашиглагдахыг " -"илэрхийлдэг. Хэрэв маршрут байгаа бол гурав дахь үйлдвэрлэлийн дарааллын " -"хавтас автоматаар бөглөгддөг." +"Шугам нь дамжлагууд ямар хугацаагаар хэдэн циклээр ашиглагдахыг илэрхийлдэг. " +"Хэрэв шугам байгаа бол гурав дахь үйлдвэрлэлийн дарааллын хавтас автоматаар " +"бөглөгддөг." #. module: mrp #: code:addons/mrp/mrp.py:505 @@ -1431,7 +1430,7 @@ msgstr "Үйлдвэрлэлийн дамжлагыг хайх" #. module: mrp #: view:mrp.bom:0 msgid "BoM Structure" -msgstr "Жорын бүтэц" +msgstr "Орцын бүтэц" #. module: mrp #: field:mrp.production,date_start:0 @@ -1541,7 +1540,7 @@ msgstr "БЗ Дугаар" #: code:addons/mrp/mrp.py:505 #, python-format msgid "Cannot delete a manufacturing order in state '%s'." -msgstr "" +msgstr "Үйлдвэрлэлийн захиалгын '%s' төлөвт устгах боломжгүй." #. module: mrp #: selection:mrp.production,state:0 @@ -1689,7 +1688,7 @@ msgstr "Нөөц" #: help:mrp.bom,date_stop:0 msgid "Validity of this BoM or component. Keep empty if it's always valid." msgstr "" -"Энэ жор эсвэл бүрэлдхүүний зөв эсэхийн шалгалт. Хэрэв байнга зөв бол хоосон " +"Орц эсвэл бүрэлдэхүүний зөв эсэхийн шалгалт. Хэрэв байнга зөв бол хоосон " "үлдээнэ." #. module: mrp @@ -1710,7 +1709,7 @@ msgid "" "operations and to plan future loads on work centers based on production " "planning." msgstr "" -"Барааг үйлдвэрлэх үйлдлийн жагсаалт (дамжлагын жагсаалт). Машрут нь " +"Барааг үйлдвэрлэх үйлдлийн жагсаалт (дамжлагын жагсаалт). Шугам нь " "үйлдвэрлэлийн захиалга дээр үндэслэн дамжлагуудын өртөгийг тооцох, ажлын " "ирээдүйн ачааллыг тооцоолох зэрэгт голчлон хэрэглэгддэг." @@ -1816,8 +1815,8 @@ msgid "" "are products themselves) can also have their own Bill of Material (multi-" "level)." msgstr "" -"Жор гэдэг нь барааны задаргаа юм. Бүрэлдхүүнүүд (мөн бараанууд) нь мөн " -"өөрийн жортой буюу олон түвшний жор байж болно." +"Орц гэдэг нь барааны задаргаа юм. Бүрэлдэхүүнүүд (мөн бараанууд) нь мөн " +"өөрийн орцтой буюу олон түвшний орц байж болно." #. module: mrp #: field:mrp.bom,company_id:0 @@ -1882,7 +1881,7 @@ msgstr "Бүрэлдэхүүнүүд" #: report:bom.structure:0 #: model:ir.actions.report.xml,name:mrp.report_bom_structure msgid "BOM Structure" -msgstr "Жорын бүтэц" +msgstr "Орцын бүтэц" #. module: mrp #: field:mrp.config.settings,module_mrp_jit:0 @@ -1902,7 +1901,7 @@ msgstr "Хүчинтэй байх эхлэл" #. module: mrp #: selection:mrp.bom,type:0 msgid "Normal BoM" -msgstr "Хэвийн жор" +msgstr "Хэвийн орц" #. module: mrp #: field:res.company,manufacturing_lead:0 @@ -1958,7 +1957,7 @@ msgid "" "If the active field is set to False, it will allow you to hide the bills of " "material without removing it." msgstr "" -"Идэвхтэй талбар худал буюу тэмдэглэгдээгүй бол жорыг устгалгүйгээр нууна." +"Идэвхтэй талбар худал буюу тэмдэглэгдээгүй бол орцыг устгалгүйгээр нууна." #. module: mrp #: field:mrp.bom,product_rounding:0 @@ -2083,7 +2082,7 @@ msgstr "" #. module: mrp #: field:procurement.order,bom_id:0 msgid "BoM" -msgstr "Жор" +msgstr "Орц" #. module: mrp #: model:ir.model,name:mrp.model_report_mrp_inout @@ -2145,12 +2144,12 @@ msgstr "Хангах болон Үйлдвэрлэх" #. module: mrp #: field:mrp.bom,bom_id:0 msgid "Parent BoM" -msgstr "Эцэг жор" +msgstr "Эцэг орц" #. module: mrp #: report:bom.structure:0 msgid "BOM Ref" -msgstr "Жорын код" +msgstr "Орцын код" #. module: mrp #: code:addons/mrp/mrp.py:765 @@ -2190,7 +2189,7 @@ msgstr "Тоо хэмжээг сонго" #: view:product.product:0 #: field:product.product,bom_ids:0 msgid "Bill of Materials" -msgstr "Жорууд" +msgstr "Орцууд" #. module: mrp #: code:addons/mrp/mrp.py:610 @@ -2322,7 +2321,7 @@ msgstr "" msgid "" "a manufacturing\n" " order" -msgstr "" +msgstr "үйлдвэрлэл" #. module: mrp #: field:mrp.config.settings,group_mrp_properties:0 @@ -2344,7 +2343,7 @@ msgstr "Үзүүлэлтийн бүлэгүүд" #: view:mrp.routing:0 #: model:process.node,name:mrp.process_node_routing0 msgid "Routing" -msgstr "Маршрут" +msgstr "Шугам" #. module: mrp #: model:process.transition,note:mrp.process_transition_procurestockableproduct0 @@ -2390,8 +2389,8 @@ msgid "" "the BOM, through a run of the schedulers (MRP)." msgstr "" "Түүхий эдийг хангахын тулд (худалдан авах эсвэл үйлдвэрлэх) үйлдвэрлэлийн " -"захиалга нь жорд тодорхойлогдсон бүрдлүүдээр татан авах захиалга үүсгэдэг ба " -"энэ нь товлогчийг ажиллахад үүсдэг." +"захиалга нь орцонд тодорхойлогдсон бүрдлүүдээр татан авах захиалга үүсгэдэг " +"ба энэ нь товлогчийг ажиллахад үүсдэг." #. module: mrp #: help:mrp.product_price,number:0 @@ -2423,7 +2422,7 @@ msgstr "Нөөцийн Амралт, Чөлөө" #. module: mrp #: help:mrp.bom,sequence:0 msgid "Gives the sequence order when displaying a list of bills of material." -msgstr "Жорын жагсаалтыг харуулах дэс дарааллыг өгдөг." +msgstr "Орцын жагсаалтыг харуулах дэс дарааллыг өгдөг." #. module: mrp #: model:ir.model,name:mrp.model_mrp_config_settings diff --git a/addons/mrp/process/procurement_process.xml b/addons/mrp/process/procurement_process.xml index b827a2731c9..dd52268e2d1 100644 --- a/addons/mrp/process/procurement_process.xml +++ b/addons/mrp/process/procurement_process.xml @@ -131,96 +131,96 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + diff --git a/addons/mrp/process/service_product_process.xml b/addons/mrp/process/service_product_process.xml index 965f3f57d69..0005be6f48c 100644 --- a/addons/mrp/process/service_product_process.xml +++ b/addons/mrp/process/service_product_process.xml @@ -39,9 +39,9 @@ - - + + - \ No newline at end of file + diff --git a/addons/mrp/process/stockable_product_process.xml b/addons/mrp/process/stockable_product_process.xml index e3fa1136822..a43a09313b8 100644 --- a/addons/mrp/process/stockable_product_process.xml +++ b/addons/mrp/process/stockable_product_process.xml @@ -69,16 +69,16 @@ - - + + - - + + diff --git a/addons/mrp/procurement.py b/addons/mrp/procurement.py index 3ad7155dad6..6347e22d576 100644 --- a/addons/mrp/procurement.py +++ b/addons/mrp/procurement.py @@ -33,6 +33,11 @@ class procurement_order(osv.osv): 'production_id': fields.many2one('mrp.production', 'Manufacturing Order'), } + def _prepare_order_line_procurement(self, cr, uid, order, line, move_id, date_planned, context=None): + result = super(procurement_order, self)._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, context) + result['property_ids'] = [(6, 0, [x.id for x in line.property_ids])] + return result + def check_produce_product(self, cr, uid, procurement, context=None): ''' Depict the capacity of the procurement workflow to produce products (not services)''' return True diff --git a/addons/mrp/report/order.rml b/addons/mrp/report/order.rml index 8833d08e596..f413a6cfc70 100644 --- a/addons/mrp/report/order.rml +++ b/addons/mrp/report/order.rml @@ -139,37 +139,18 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + @@ -178,16 +159,16 @@ - Product + Product - Quantity + Quantity - Source Location + Source Location - Destination Location + Destination Location @@ -196,20 +177,20 @@ - Production Order N° : [[ o.name ]] + Production Order N° : [[ o.name ]] - Source Document + Source Document - Product + Product - Quantity + Quantity @@ -232,16 +213,16 @@ - Scheduled Date + Scheduled Date - Printing date + Printing date - Partner Ref + Partner Ref - SO Number + SO Number @@ -266,26 +247,26 @@ - Work Orders [[ o.workcenter_lines ==[] and removeParentNode('para')]] + Work Orders [[ o.workcenter_lines ==[] and removeParentNode('para')]] - Sequence + Sequence - Name [[ o.workcenter_lines ==[] and removeParentNode('blockTable')]] + Name [[ o.workcenter_lines ==[] and removeParentNode('blockTable')]] - WorkCenter + WorkCenter - No. Of Cycles + No. Of Cycles - No. Of Hours + No. Of Hours @@ -317,28 +298,28 @@ - Bill Of Material + Bill Of Material - Product + Product - Quantity + Quantity - Source Location + Source Location - Destination Location + Destination Location
- Products to Consume [[ o.move_lines ==[] and removeParentNode('section')]] + Products to Consume [[ o.move_lines ==[] and removeParentNode('section')]]
[[ repeatIn(o.move_lines,'line') ]] @@ -363,7 +344,7 @@ - Consumed Products [[ o.move_lines2 ==[] and removeParentNode('section')]] + Consumed Products [[ o.move_lines2 ==[] and removeParentNode('section')]]
[[ repeatIn(o.move_lines2,'line2') ]] diff --git a/addons/mrp_operations/mrp_operations.py b/addons/mrp_operations/mrp_operations.py index d6f026530dc..87861ba8fc6 100644 --- a/addons/mrp_operations/mrp_operations.py +++ b/addons/mrp_operations/mrp_operations.py @@ -128,7 +128,7 @@ class mrp_production_workcenter_line(osv.osv): elif prod_obj.state =='in_production': return else: - raise osv.except_osv(_('Error!'),_('Manufacturing order cannot start in state "%s"!') % (prod_obj.state,)) + raise osv.except_osv(_('Error!'),_('Manufacturing order cannot be started in state "%s"!') % (prod_obj.state,)) else: oper_ids = self.search(cr,uid,[('production_id','=',prod_obj.id)]) obj = self.browse(cr,uid,oper_ids) @@ -443,7 +443,7 @@ class mrp_operations_operation(osv.osv): if not oper_objs: if code.start_stop!='start': - raise osv.except_osv(_('Sorry!'),_('Operation is not started yet !')) + raise osv.except_osv(_('Sorry!'),_('Operation is not started yet!')) return False else: for oper in oper_objs: diff --git a/addons/mrp_operations/process/mrp_operation_process.xml b/addons/mrp_operations/process/mrp_operation_process.xml index 452434bbe92..d448b6a299a 100644 --- a/addons/mrp_operations/process/mrp_operation_process.xml +++ b/addons/mrp_operations/process/mrp_operation_process.xml @@ -75,32 +75,32 @@ - - + + - - + + - - + + - - + + diff --git a/addons/mrp_repair/mrp_repair.py b/addons/mrp_repair/mrp_repair.py index 43ee34b0c05..f7b082db74b 100644 --- a/addons/mrp_repair/mrp_repair.py +++ b/addons/mrp_repair/mrp_repair.py @@ -365,7 +365,7 @@ class mrp_repair(osv.osv): if repair.state in ('draft','cancel') or repair.invoice_id: continue if not (repair.partner_id.id and repair.partner_invoice_id.id): - raise osv.except_osv(_('No partner !'),_('You have to select a Partner Invoice Address in the repair form !')) + raise osv.except_osv(_('No partner!'),_('You have to select a Partner Invoice Address in the repair form!')) comment = repair.quotation_notes if (repair.invoice_method != 'none'): if group and repair.partner_invoice_id.id in invoices_group: @@ -582,7 +582,7 @@ class ProductChangeMixin(object): result['product_uom'] = product_obj.uom_id and product_obj.uom_id.id or False if not pricelist: warning = { - 'title':'No Pricelist !', + 'title':'No Pricelist!', 'message': 'You have to select a pricelist in the Repair form !\n' 'Please set one before choosing a product.' diff --git a/addons/mrp_repair/security/mrp_repair_security.xml b/addons/mrp_repair/security/mrp_repair_security.xml index 0b34310fc4e..e94b675b57f 100644 --- a/addons/mrp_repair/security/mrp_repair_security.xml +++ b/addons/mrp_repair/security/mrp_repair_security.xml @@ -11,4 +11,4 @@ - \ No newline at end of file + diff --git a/addons/multi_company/i18n/ru.po b/addons/multi_company/i18n/ru.po index 3dea680c371..e1665d9c838 100644 --- a/addons/multi_company/i18n/ru.po +++ b/addons/multi_company/i18n/ru.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-08-17 11:09+0000\n" +"PO-Revision-Date: 2013-06-06 10:25+0000\n" "Last-Translator: Chertykov Denis \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-16 05:36+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-06-07 05:48+0000\n" +"X-Generator: Launchpad (build 16667)\n" #. module: multi_company #: model:ir.ui.menu,name:multi_company.menu_custom_multicompany @@ -45,6 +45,16 @@ msgid "" "Thank you in advance for your cooperation.\n" "Best Regards," msgstr "" +"Уважаемые господа,\n" +"\n" +"Наши записи зафиксировали что некоторые платежи остаются неоплаченными. " +"Пожалуйста ознакомьтесь с подробностями ниже.\n" +"Если сумма уже была оплачена, пожалуйста проигнорируйте это оповещение. В " +"ином случае, пожалуйста перечислите нам всю сумму отображенную ниже.\n" +"Если у вас есть какие-либо замечания, пожалуйста свяжитесь с нами.\n" +"\n" +"Заранее благодарим за сотрудничество.\n" +"С наилучшими пожеланиями," #. module: multi_company #: view:multi_company.default:0 diff --git a/addons/multi_company/multi_company_demo.xml b/addons/multi_company/multi_company_demo.xml index 088aa35e915..c772a8fd67d 100644 --- a/addons/multi_company/multi_company_demo.xml +++ b/addons/multi_company/multi_company_demo.xml @@ -192,8 +192,8 @@ SAJ-OpenERP IN sale - - + + @@ -204,8 +204,8 @@ SCNJ-OpenERP IN sale_refund - - + + @@ -216,8 +216,8 @@ EXJ-OpenERP IN purchase - - + + @@ -228,8 +228,8 @@ ECNJ-OpenERP IN purchase_refund - - + + @@ -240,8 +240,8 @@ BNK-OpenERP IN bank - - + + @@ -252,8 +252,8 @@ CHK-OpenERP IN bank - - + + @@ -264,8 +264,8 @@ CSH-OpenERP IN cash - - + + @@ -277,8 +277,8 @@ SAJ-OpenERP US sale - - + + @@ -289,8 +289,8 @@ SCNJ-OpenERP US sale_refund - - + + @@ -301,8 +301,8 @@ EXJ-OpenERP US purchase - - + + @@ -313,8 +313,8 @@ ECNJ-OpenERP US purchase_refund - - + + @@ -325,8 +325,8 @@ BNK-OpenERP US bank - - + + @@ -337,8 +337,8 @@ CHK-OpenERP US bank - - + + @@ -349,8 +349,8 @@ CSH-OpenERP US cash - - + + @@ -363,8 +363,8 @@ SAJ-OpenERP BE sale - - + + @@ -375,8 +375,8 @@ SCNJ-OpenERP BE sale_refund - - + + @@ -387,8 +387,8 @@ EXJ-OpenERP BE purchase - - + + @@ -399,8 +399,8 @@ ECNJ-OpenERP BE purchase_refund - - + + @@ -411,8 +411,8 @@ BNK-OpenERP BE bank - - + + @@ -423,8 +423,8 @@ CHK-OpenERP BE bank - - + + @@ -435,8 +435,8 @@ CSH-OpenERP BE cash - - + + diff --git a/addons/note/html/index.html b/addons/note/html/index.html index 97736520f2f..7ef37c646e9 100644 --- a/addons/note/html/index.html +++ b/addons/note/html/index.html @@ -7,7 +7,6 @@ -   @@ -113,4 +112,5 @@ The real time collaborative writings on notes makes it the perfect tool to colla
-
+
+
diff --git a/addons/note/i18n/ru.po b/addons/note/i18n/ru.po new file mode 100644 index 00000000000..ef2cd6be0c1 --- /dev/null +++ b/addons/note/i18n/ru.po @@ -0,0 +1,286 @@ +# Russian translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:04+0000\n" +"PO-Revision-Date: 2013-06-06 10:35+0000\n" +"Last-Translator: Chertykov Denis \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-06-07 05:48+0000\n" +"X-Generator: Launchpad (build 16667)\n" + +#. module: note +#: field:note.note,memo:0 +msgid "Note Content" +msgstr "Содержание заметки" + +#. module: note +#: view:note.stage:0 +msgid "Stages of Notes" +msgstr "Этапы заметок" + +#. module: note +#: model:note.stage,name:note.demo_note_stage_04 +#: model:note.stage,name:note.note_stage_02 +msgid "This Week" +msgstr "Эта неделя" + +#. module: note +#: model:ir.model,name:note.model_base_config_settings +msgid "base.config.settings" +msgstr "base.config.settings" + +#. module: note +#: model:ir.model,name:note.model_note_tag +msgid "Note Tag" +msgstr "Тег заметки" + +#. module: note +#: model:res.groups,name:note.group_note_fancy +msgid "Notes / Fancy mode" +msgstr "" + +#. module: note +#: model:ir.model,name:note.model_note_note +#: view:note.note:0 +msgid "Note" +msgstr "Заметка" + +#. module: note +#: view:note.note:0 +msgid "Group By..." +msgstr "Группировать по ..." + +#. module: note +#: field:note.note,message_follower_ids:0 +msgid "Followers" +msgstr "Подписчики" + +#. module: note +#: model:ir.actions.act_window,help:note.action_note_note +msgid "" +"

\n" +" Click to add a personal note.\n" +"

\n" +" Use notes to organize personal tasks or notes. All\n" +" notes are private; no one else will be able to see them. " +"However\n" +" you can share some notes with other people by inviting " +"followers\n" +" on the note. (Useful for meeting minutes, especially if\n" +" you activate the pad feature for collaborative writings).\n" +"

\n" +" You can customize how you process your notes/tasks by adding,\n" +" removing or modifying columns.\n" +"

\n" +" " +msgstr "" + +#. module: note +#: model:note.stage,name:note.demo_note_stage_01 +#: model:note.stage,name:note.note_stage_01 +msgid "Today" +msgstr "Сегодня" + +#. module: note +#: model:ir.model,name:note.model_res_users +msgid "Users" +msgstr "Пользователи" + +#. module: note +#: view:note.note:0 +msgid "í" +msgstr "" + +#. module: note +#: view:note.stage:0 +msgid "Stage of Notes" +msgstr "Этап заметок" + +#. module: note +#: field:note.note,message_unread:0 +msgid "Unread Messages" +msgstr "Непрочитанные" + +#. module: note +#: field:note.note,current_partner_id:0 +msgid "unknown" +msgstr "неизвестно" + +#. module: note +#: view:note.note:0 +msgid "By sticky note Category" +msgstr "" + +#. module: note +#: help:note.note,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "Если отмечено, новые сообщения требуют вашего внимания." + +#. module: note +#: field:note.stage,name:0 +msgid "Stage Name" +msgstr "Название этапа" + +#. module: note +#: field:note.note,message_is_follower:0 +msgid "Is a Follower" +msgstr "Подписан" + +#. module: note +#: model:note.stage,name:note.demo_note_stage_02 +msgid "Tomorrow" +msgstr "Завтра" + +#. module: note +#: view:note.note:0 +#: field:note.note,open:0 +msgid "Active" +msgstr "Активно" + +#. module: note +#: help:note.stage,user_id:0 +msgid "Owner of the note stage." +msgstr "Владелец этапа заметки" + +#. module: note +#: model:ir.ui.menu,name:note.menu_notes_stage +msgid "Categories" +msgstr "Категории" + +#. module: note +#: view:note.note:0 +#: field:note.note,stage_id:0 +msgid "Stage" +msgstr "Этап" + +#. module: note +#: field:note.tag,name:0 +msgid "Tag Name" +msgstr "Название тега" + +#. module: note +#: field:note.note,message_ids:0 +msgid "Messages" +msgstr "Сообщения" + +#. module: note +#: view:base.config.settings:0 +#: model:ir.actions.act_window,name:note.action_note_note +#: model:ir.ui.menu,name:note.menu_note_notes +#: view:note.note:0 +#: model:note.stage,name:note.note_stage_04 +msgid "Notes" +msgstr "Заметки" + +#. module: note +#: model:note.stage,name:note.demo_note_stage_03 +#: model:note.stage,name:note.note_stage_03 +msgid "Later" +msgstr "Позже" + +#. module: note +#: model:ir.model,name:note.model_note_stage +msgid "Note Stage" +msgstr "Этап заметки" + +#. module: note +#: field:note.note,message_summary:0 +msgid "Summary" +msgstr "Итог" + +#. module: note +#: field:note.note,stage_ids:0 +msgid "Stages of Users" +msgstr "Этапы пользователей" + +#. module: note +#: field:note.note,name:0 +msgid "Note Summary" +msgstr "Заметка - кратко" + +#. module: note +#: model:ir.actions.act_window,name:note.action_note_stage +#: view:note.note:0 +msgid "Stages" +msgstr "Этапы" + +#. module: note +#: help:note.note,message_ids:0 +msgid "Messages and communication history" +msgstr "Сообщения и история общения" + +#. module: note +#: view:note.note:0 +msgid "Delete" +msgstr "Удалить" + +#. module: note +#: field:note.note,color:0 +msgid "Color Index" +msgstr "Цветовая палитра" + +#. module: note +#: field:note.note,sequence:0 +#: field:note.stage,sequence:0 +msgid "Sequence" +msgstr "Нумерация" + +#. module: note +#: view:note.note:0 +#: field:note.note,tag_ids:0 +msgid "Tags" +msgstr "Теги" + +#. module: note +#: view:note.note:0 +msgid "Archive" +msgstr "Архив" + +#. module: note +#: field:base.config.settings,module_note_pad:0 +msgid "Use collaborative pads (etherpad)" +msgstr "Используйте совместный планшет (etherpad)" + +#. module: note +#: help:note.note,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" +"Содержит сводку по Чаттеру (количество сообщений,...). Эта сводка в формате " +"html для возможности использования в канбан виде" + +#. module: note +#: field:base.config.settings,group_note_fancy:0 +msgid "Use fancy layouts for notes" +msgstr "" + +#. module: note +#: field:note.note,current_partner_id:0 +#: field:note.stage,user_id:0 +msgid "Owner" +msgstr "Владелец" + +#. module: note +#: help:note.stage,sequence:0 +msgid "Used to order the note stages" +msgstr "Используется для сортировки этапов заметок" + +#. module: note +#: field:note.note,date_done:0 +msgid "Date done" +msgstr "Дата выполнения" + +#. module: note +#: field:note.stage,fold:0 +msgid "Folded by Default" +msgstr "Свернуто по умолчанию" diff --git a/addons/note/note_view.xml b/addons/note/note_view.xml index 68ec6bfc4f7..f3b9e4669c7 100644 --- a/addons/note/note_view.xml +++ b/addons/note/note_view.xml @@ -175,7 +175,7 @@ form kanban,tree,form - {'search_default_open_true':True} + {}

Click to add a personal note. diff --git a/addons/note/security/ir.rule.xml b/addons/note/security/ir.rule.xml index b0c79561355..2c6e9f3bc7f 100644 --- a/addons/note/security/ir.rule.xml +++ b/addons/note/security/ir.rule.xml @@ -3,7 +3,7 @@ Only followers can access a sticky notes - + [('message_follower_ids','=',user.partner_id.id)] @@ -14,7 +14,7 @@ Each user have his stage name - + ['|',('user_id','=',False),('user_id','=',user.id)] diff --git a/addons/point_of_sale/html/index.html b/addons/point_of_sale/html/index.html index 41f935d8ad9..130806ddb11 100644 --- a/addons/point_of_sale/html/index.html +++ b/addons/point_of_sale/html/index.html @@ -9,7 +9,6 @@ -  

diff --git a/addons/point_of_sale/i18n/he.po b/addons/point_of_sale/i18n/he.po new file mode 100644 index 00000000000..31f12afc166 --- /dev/null +++ b/addons/point_of_sale/i18n/he.po @@ -0,0 +1,4053 @@ +# Hebrew translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:04+0000\n" +"PO-Revision-Date: 2013-06-09 16:04+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Hebrew \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-06-11 05:40+0000\n" +"X-Generator: Launchpad (build 16667)\n" + +#. module: point_of_sale +#: field:report.transaction.pos,product_nb:0 +msgid "Product Nb." +msgstr "מס' מוצר" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_trans_pos_tree_today +msgid "Sales by day" +msgstr "מחיר לפי יום" + +#. module: point_of_sale +#: model:ir.actions.act_window,help:point_of_sale.pos_category_action +msgid "" +"

\n" +" Click to define a new category.\n" +"

\n" +" Categories are used to browse your products through the\n" +" touchscreen interface.\n" +"

\n" +" If you put a photo on the category, the layout of the\n" +" touchscreen interface will automatically. We suggest not to " +"put\n" +" a photo on categories for small (1024x768) screens.\n" +"

\n" +" " +msgstr "" +"

\n" +" לחץ כדי להגדיר קטגוריה חדש.\n" +"

\n" +" קטגרויות נועדו לכך שתוכל לנווט במוצרים שלך\n" +" באמצעות מסך המגע.\n" +"

\n" +" במידה ותבחר תמונה עבור הקטגוריה תראה אותה בקטלוג\n" +" מוצרים בתוך הקופה שלך. אנו מציעים לא להשתמש בתמונות\n" +" עבור מסכים קטנים כגון 1024X768.\n" +"

\n" +" " + +#. module: point_of_sale +#: view:pos.receipt:0 +msgid "Print the Receipt of the Sale" +msgstr "הדפס קבלה עבור המכירה" + +#. module: point_of_sale +#: field:pos.session,cash_register_balance_end:0 +msgid "Computed Balance" +msgstr "יתרה מחושבת" + +#. module: point_of_sale +#: view:pos.session:0 +#: view:report.pos.order:0 +msgid "Today" +msgstr "נוכחי" + +#. module: point_of_sale +#: field:pos.config,iface_electronic_scale:0 +msgid "Electronic Scale Interface" +msgstr "ממשק משקל דיגיטלי" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.plain_water +msgid "Plain Water" +msgstr "מיים רגילים" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.poire_conference_product_template +msgid "Conference pears" +msgstr "אגסים" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:398 +#, python-format +msgid "ã" +msgstr "ã" + +#. module: point_of_sale +#: field:pos.config,journal_id:0 +#: field:pos.order,sale_journal:0 +msgid "Sale Journal" +msgstr "יומן מכירות" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.spa_2l_product_template +msgid "Spa Reine 2L" +msgstr "ספא רני 2 ליטר" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.pos_lines_detail +#: report:pos.details:0 +#: report:pos.details_summary:0 +msgid "Details of Sales" +msgstr "פרטי מכירות" + +#. module: point_of_sale +#: constraint:pos.config:0 +msgid "You cannot have two cash controls in one Point Of Sale !" +msgstr "לא ניתן לשייך שתי בקרי מזומן לקופה רושמת אחת!" + +#. module: point_of_sale +#: field:pos.payment.report.user,user_id:0 +#: field:pos.sale.user,user_id:0 +#: field:pos.sales.user.today,user_id:0 +#: view:report.pos.order:0 +#: field:report.pos.order,user_id:0 +msgid "Salesperson" +msgstr "איש מכירות" + +#. module: point_of_sale +#: view:report.pos.order:0 +#: field:report.pos.order,day:0 +msgid "Day" +msgstr "יום" + +#. module: point_of_sale +#: field:report.sales.by.margin.pos,product_name:0 +#: field:report.sales.by.margin.pos.month,product_name:0 +msgid "Product Name" +msgstr "שם המוצר" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.pamplemousse_rouge_pamplemousse_product_template +msgid "Red grapefruit" +msgstr "אשכולית אדומה" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:1373 +#, python-format +msgid "Assign a Custom EAN" +msgstr "שייך מספר סידורי מותאם אישית" + +#. module: point_of_sale +#: view:pos.session.opening:0 +msgid "" +"You may have to control your cash amount in your cash register, before\n" +" being able to start selling through the " +"touchscreen interface." +msgstr "" +"יתכן ותצתרך לעשות ספירת מזומנים, לפני\n" +" שתוכל להתחיל למכור באמצעות קופה רושמת." + +#. module: point_of_sale +#: report:account.statement:0 +#: field:pos.box.entries,amount:0 +#: report:pos.invoice:0 +#: field:pos.make.payment,amount:0 +#: report:pos.user.product:0 +#: field:report.transaction.pos,amount:0 +msgid "Amount" +msgstr "סכום" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_box_out +#: view:pos.session:0 +msgid "Take Money Out" +msgstr "הוצא את הכסף" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:105 +#, python-format +msgid "not used" +msgstr "לא בשימוש" + +#. module: point_of_sale +#: field:pos.config,iface_vkeyboard:0 +msgid "Virtual KeyBoard Interface" +msgstr "ממשק מקלדת וירטואלית" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:96 +#, python-format +msgid "+/-" +msgstr "+/-" + +#. module: point_of_sale +#: field:pos.ean_wizard,ean13_pattern:0 +msgid "Reference" +msgstr "ייחוס" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:1066 +#: code:addons/point_of_sale/point_of_sale.py:1083 +#: report:pos.invoice:0 +#: report:pos.lines:0 +#, python-format +msgid "Tax" +msgstr "מס" + +#. module: point_of_sale +#: report:pos.user.product:0 +msgid "Starting Date" +msgstr "תאריך התחלה" + +#. module: point_of_sale +#: constraint:pos.session:0 +msgid "You cannot create two active sessions with the same responsible!" +msgstr "אתה לא יכול ליצור שני מפגשים פעילים עם אותו אחראי!" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:473 +#, python-format +msgid "Weighting" +msgstr "שוקל" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.fenouil_fenouil_product_template +msgid "Fennel" +msgstr "שומר" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:472 +#, python-format +msgid "Help needed" +msgstr "צריך עזרה" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:760 +#, python-format +msgid "Configuration Error!" +msgstr "שגיאת הגדרות!" + +#. module: point_of_sale +#: report:account.statement:0 +#: model:ir.model,name:point_of_sale.model_res_partner +#: field:report.pos.order,partner_id:0 +msgid "Partner" +msgstr "שותף" + +#. module: point_of_sale +#: view:pos.session:0 +msgid "Closing Cash Control" +msgstr "סגירת קופת מזומנים" + +#. module: point_of_sale +#: report:pos.details:0 +#: report:pos.details_summary:0 +msgid "Total of the day" +msgstr "סה\"כ ליום" + +#. module: point_of_sale +#: view:report.pos.order:0 +#: field:report.pos.order,average_price:0 +msgid "Average Price" +msgstr "מחיר ממוצע" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Accounting Information" +msgstr "פרטי חשבון" + +#. module: point_of_sale +#: field:pos.session.opening,show_config:0 +msgid "Show Config" +msgstr "הצג הגדרות" + +#. module: point_of_sale +#: report:pos.lines:0 +msgid "Disc. (%)" +msgstr "תיאור (%)" + +#. module: point_of_sale +#: report:pos.details:0 +#: report:pos.details_summary:0 +msgid "Total discount" +msgstr "סה\"כ הנחה" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:441 +#, python-format +msgid "Debug Window" +msgstr "חלון ניפוי שגיאות" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:241 +#: code:addons/point_of_sale/static/src/xml/pos.xml:613 +#, python-format +msgid "Change:" +msgstr "עודף:" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_regular_2l_product_template +msgid "Coca-Cola Regular 2L" +msgstr "קוקה קולה רגילה 2 ליטר" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_trans_pos_tree_month +msgid "Sales by month" +msgstr "מכירות לפי חודש" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.soda_orange +msgid "Orange" +msgstr "תפוז" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_sales_by_user_pos_today +#: view:report.sales.by.user.pos:0 +#: view:report.sales.by.user.pos.month:0 +msgid "Sales by User" +msgstr "מכירות למשתמש" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Disc.(%)" +msgstr "תיאור (%)" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:1031 +#, python-format +msgid "Please define income account for this product: \"%s\" (id:%d)." +msgstr "אנה הגדר חשבון הכנסות עבור מוצר זה: \"%s\" (id:%d)" + +#. module: point_of_sale +#: view:report.pos.order:0 +#: field:report.pos.order,price_total:0 +msgid "Total Price" +msgstr "סה\"כ מחיר" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.leffe_brune_33cl_product_template +msgid "Leffe Brune 33cl" +msgstr "לף קהה 330 מ\"ל" + +#. module: point_of_sale +#: help:pos.config,iface_self_checkout:0 +msgid "" +"Check this if this point of sale should open by default in a self checkout " +"mode. If unchecked, OpenERP uses the normal cashier mode by default." +msgstr "" +"סמן כאן במידה וקופה זה תומכת ברכישה אצמעית. במידה ולא סומן, OpenERP יגדיר " +"קופה רגילה כברירת מחדל." + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.pos_sales_user +#: report:pos.sales.user:0 +msgid "Sales Report" +msgstr "דוח מכירות" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.beverage +msgid "Beverages" +msgstr "משקאות" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_session_opening +#: model:ir.ui.menu,name:point_of_sale.menu_pos_session_opening +msgid "Your Session" +msgstr "חשבון מכירות שלך" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.stella_50cl_product_template +msgid "Stella Artois 50cl" +msgstr "סטלה ארטוס 0.5 ליטר" + +#. module: point_of_sale +#: view:pos.details:0 +msgid "Dates" +msgstr "תאריכים" + +#. module: point_of_sale +#: field:pos.category,parent_id:0 +msgid "Parent Category" +msgstr "קטגוריית אב" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:482 +#, python-format +msgid "Open Cashbox" +msgstr "פתח מגירה" + +#. module: point_of_sale +#: view:pos.session.opening:0 +msgid "Select your Point of Sale" +msgstr "אנה בחר את הקופה שלך" + +#. module: point_of_sale +#: field:report.sales.by.margin.pos,total:0 +#: field:report.sales.by.margin.pos.month,total:0 +msgid "Margin" +msgstr "שוליים" + +#. module: point_of_sale +#: field:pos.discount,discount:0 +#: field:pos.order.line,discount:0 +msgid "Discount (%)" +msgstr "הנחה (%)" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_speciale_product_template +msgid "Dr. Oetker Ristorante Speciale" +msgstr "דר. אוייטקר מומחה מסעדנות" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:480 +#, python-format +msgid "Payment Request" +msgstr "בקשת תשלום" + +#. module: point_of_sale +#: field:product.product,to_weight:0 +msgid "To Weight" +msgstr "עבור משקל" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:476 +#, python-format +msgid "Hardware Events" +msgstr "איורעי חומרה" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:301 +#, python-format +msgid "You should assign a Point of Sale to your session." +msgstr "הינך חייב לבחור קופה לחשבון המכירות שלך" + +#. module: point_of_sale +#: view:pos.order.line:0 +msgid "Total qty" +msgstr "כמות כוללת" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.fanta_orange_33cl_product_template +msgid "Fanta Orange 33cl" +msgstr "פאנטה תופזים 330 מ\"ל" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:423 +#, python-format +msgid "" +"Please set your profit and loss accounts on your payment method '%s'. This " +"will allow OpenERP to post the difference of %.2f in your ending balance. To " +"close this session, you can update the 'Closing Cash Control' to avoid any " +"difference." +msgstr "" +"אנה בחר חשבון הרווח וההפסד שלך עבור שיתת תשלום '%s'. זה יאפשר לOpenERP להזין " +"הפרשי %.2f בתוך חשבון הסופי שלך. על מנת לסגור חשבון מכירות זה, אתה יכול " +"לעדכן את 'סיגרת קופת מזומנים' על מנת לא לגרום להפרשים." + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:315 +#: code:addons/point_of_sale/point_of_sale.py:514 +#, python-format +msgid "error!" +msgstr "שגיא!" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_sales_by_user_pos_month +msgid "Sales by User Monthly" +msgstr "מכירות חודשיות לפי משתמש" + +#. module: point_of_sale +#: help:pos.session,cash_register_difference:0 +msgid "" +"Difference between the counted cash control at the closing and the computed " +"balance." +msgstr "הפרשים בין ספירה ידנית לספירה ממוחשבת." + +#. module: point_of_sale +#: view:pos.session.opening:0 +msgid ") is \"" +msgstr ") הוא \"" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.Onions_product_template +msgid "Onions" +msgstr "בצלים" + +#. module: point_of_sale +#: view:pos.session:0 +msgid "Validate & Open Session" +msgstr "אמת ופתח יומן מכירות" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:99 +#: selection:pos.session,state:0 +#: selection:pos.session.opening,pos_state:0 +#, python-format +msgid "In Progress" +msgstr "בתהליך" + +#. module: point_of_sale +#: view:pos.session:0 +#: field:pos.session,opening_details_ids:0 +msgid "Opening Cash Control" +msgstr "פתח קופת מזומנים" + +#. module: point_of_sale +#: help:res.users,ean13:0 +msgid "BarCode" +msgstr "ברקוד" + +#. module: point_of_sale +#: help:pos.category,image_medium:0 +msgid "" +"Medium-sized image of the category. It is automatically resized as a " +"128x128px image, with aspect ratio preserved. Use this field in form views " +"or some kanban views." +msgstr "" +"תמונה בגודל בינוני עבור קטגוריה זו. התמונות יוקטנו אוטומטית לגודל 128X128 " +"פיקסל, תוך כדי שמירה על יחס התמונה." + +#. module: point_of_sale +#: view:pos.session.opening:0 +msgid "Open Session" +msgstr "פתח הפעלה" + +#. module: point_of_sale +#: model:ir.ui.menu,name:point_of_sale.menu_point_of_sale +msgid "Daily Operations" +msgstr "פעולות יומיות" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:42 +#, python-format +msgid "Google Chrome" +msgstr "גוגל כרום" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.sparkling_water +msgid "Sparkling Water" +msgstr "מים מוגזים" + +#. module: point_of_sale +#: view:account.bank.statement:0 +msgid "Search Cash Statements" +msgstr "חיפוש דוחות מזומנים" + +#. module: point_of_sale +#: view:account.bank.statement:0 +#: field:pos.config,state:0 +#: view:pos.order:0 +#: field:pos.order,state:0 +#: report:pos.sales.user:0 +#: report:pos.sales.user.today:0 +#: field:pos.session,state:0 +#: field:pos.session.opening,pos_state_str:0 +#: field:report.pos.order,state:0 +msgid "Status" +msgstr "סטטוס" + +#. module: point_of_sale +#: selection:report.pos.order,month:0 +msgid "August" +msgstr "אוגוסט" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.pepsi_max_lemon_33cl_product_template +msgid "Pepsi Max Cool Lemon 33cl" +msgstr "פפסי מקס בטעם לימון 330 מ\"ל" + +#. module: point_of_sale +#: selection:report.pos.order,month:0 +msgid "June" +msgstr "יוני" + +#. module: point_of_sale +#: view:pos.order.line:0 +msgid "POS Order line" +msgstr "שורת הזמנה בקופה" + +#. module: point_of_sale +#: view:pos.config:0 +msgid "Point of Sale Configuration" +msgstr "הגדרות קופה רושמת" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:359 +#, python-format +msgid "Your order has to be validated by a cashier." +msgstr "הזמנת חייבת לעבור עימות על ידי קופאי" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.fanta_orange_50cl_product_template +msgid "Fanta Orange 50cl" +msgstr "פנטה תפוזים 0.5 ליטר" + +#. module: point_of_sale +#: field:pos.category,child_id:0 +msgid "Children Categories" +msgstr "קטגוריות ילדים" + +#. module: point_of_sale +#: model:ir.actions.act_window,help:point_of_sale.action_pos_session +msgid "" +"

\n" +" Click to start a new session.\n" +"

\n" +" A session is a period of time, usually one day, during " +"which\n" +" you sell through the point of sale. The user has to check " +"the\n" +" currencies in your cash registers at the beginning and the " +"end\n" +" of each session.\n" +"

\n" +" Note that you should better to use the menu Your " +"Session\n" +" to quickly open a new session.\n" +"

\n" +" " +msgstr "" +"

\n" +" לחץ כאן על מנת לפתוח יומן מכירות חדש.\n" +"

\n" +" יומן מכירות הינה תקופת עבודה בקופה, בדרך כלל\n" +" יום מכירות אחד, באה הינך מוכר באמצעות הקופה.\n" +" משתמש חייב לבחור מטבעה בכל תחילת וסוף יום.\n" +"

\n" +" שים לב, עדיף שתשתמש ב יומן מכירות שלך\n" +" על מנת לפתוח במהירות יומן מכירות.\n" +"

\n" +" " + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:888 +#, python-format +msgid "Customer Invoice" +msgstr "חשבונית לקוח" + +#. module: point_of_sale +#: view:pos.session.opening:0 +msgid "" +"You can continue sales from the touchscreen interface by clicking on \"Start " +"Selling\" or close the cash register session." +msgstr "" +"הינך יכול להמשיך את המכירות שלך על ידי לחיצה על \"התחל למכור\" או לסגור את " +"יומן המכירות הנוכחי." + +#. module: point_of_sale +#: report:account.statement:0 +#: report:all.closed.cashbox.of.the.day:0 +#: field:pos.session,stop_at:0 +msgid "Closing Date" +msgstr "תריך סגירה" + +#. module: point_of_sale +#: view:pos.session:0 +msgid "Opening Cashbox Lines" +msgstr "שורת פתיחה של קופת מזומנים" + +#. module: point_of_sale +#: selection:report.pos.order,month:0 +msgid "October" +msgstr "אוקטובר" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_1l_product_template +msgid "Coca-Cola Light 1L" +msgstr "קוקה קולה דיאט 1 ליטר" + +#. module: point_of_sale +#: report:pos.details:0 +#: report:pos.details_summary:0 +msgid "Summary" +msgstr "סיכום" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_naturel_45g_product_template +msgid "Lays Natural 45g" +msgstr "לייס בטעם טבעי 45 גר'" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.chaudfontaine_50cl_product_template +msgid "Chaudfontaine 50cl" +msgstr "Chaudfontaine 50 מ\"ל" + +#. module: point_of_sale +#: report:pos.invoice:0 +#: report:pos.lines:0 +#: field:pos.order.line,qty:0 +#: field:report.sales.by.user.pos,qty:0 +#: field:report.sales.by.user.pos.month,qty:0 +msgid "Quantity" +msgstr "כמות" + +#. module: point_of_sale +#: field:pos.order.line,name:0 +msgid "Line No" +msgstr "שורה מס'" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:453 +#, python-format +msgid "Set Weight" +msgstr "קבע משקל" + +#. module: point_of_sale +#: view:account.bank.statement:0 +msgid "Period" +msgstr "תקופה" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Net Total:" +msgstr "סה\"כ נטו:" + +#. module: point_of_sale +#: model:ir.actions.client,name:point_of_sale.action_client_pos_menu +msgid "Open POS Menu" +msgstr "פתח תפריט קופה" + +#. module: point_of_sale +#: report:pos.details_summary:0 +msgid "Mode of Payment" +msgstr "צורת תשלום" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_confirm +msgid "Post POS Journal Entries" +msgstr "הזן ערך לתוך יומן" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:457 +#, python-format +msgid "Barcode Scanner" +msgstr "סורק ברקודים" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.pomme_granny_smith_product_template +msgid "Granny Smith apples" +msgstr "תפוחי ספתה טובה" + +#. module: point_of_sale +#: help:product.product,expense_pdt:0 +msgid "" +"Check if, this is a product you can use to take cash from a statement for " +"the point of sale backend, example: money lost, transfer to bank, etc." +msgstr "" +"סמן כאן במידה ומוצר זה יכול להשתמש ביתרה מיוחדת כגון: חוב אבוד, העבורת לבנק " +"וכו'." + +#. module: point_of_sale +#: view:report.pos.order:0 +#: field:report.pos.order,total_discount:0 +msgid "Total Discount" +msgstr "סה\"כ הנחה" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:39 +#, python-format +msgid "" +"The Point of Sale is not supported by Microsoft Internet Explorer. Please " +"use\n" +" a modern browser like" +msgstr "" +"קופה רושמת זו אינה תומכת באינטרנט אקספלורר, אנה השתמש בדפדפן\n" +" מודרני יותר על מנת להשתמש בקופה רושמת." + +#. module: point_of_sale +#: view:pos.session.opening:0 +msgid "Click to start a session." +msgstr "הקלק על מנת לפתוח יומן מכירות" + +#. module: point_of_sale +#: view:pos.details:0 +#: view:pos.payment.report:0 +#: view:pos.payment.report.user:0 +#: view:pos.sale.user:0 +msgid "Print Report" +msgstr "הדפס דוח" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_bolognese_product_template +msgid "Dr. Oetker Ristorante Bolognese" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.pizza +msgid "Pizza" +msgstr "פיצה" + +#. module: point_of_sale +#: view:pos.session:0 +msgid "= Theoretical Balance" +msgstr "= יתרה טאורטית" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_return.py:85 +#: code:addons/point_of_sale/wizard/pos_return.py:240 +#, python-format +msgid "Add Product" +msgstr "הוסף מוצר" + +#. module: point_of_sale +#: field:pos.config,name:0 +msgid "Point of Sale Name" +msgstr "שם קופה רושמת" + +#. module: point_of_sale +#: field:report.transaction.pos,invoice_am:0 +msgid "Invoice Amount" +msgstr "סכום חשבונית" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.coke +msgid "Coke" +msgstr "קוקה קולה" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Tel. :" +msgstr "טל:" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:254 +#: model:ir.actions.act_window,name:point_of_sale.action_report_pos_receipt +#, python-format +msgid "Receipt" +msgstr "קבלה" + +#. module: point_of_sale +#: field:report.sales.by.margin.pos,net_margin_per_qty:0 +#: field:report.sales.by.margin.pos.month,net_margin_per_qty:0 +msgid "Net margin per Qty" +msgstr "רווח נקי לכמות" + +#. module: point_of_sale +#: view:pos.confirm:0 +msgid "Post All Orders" +msgstr "פרסם את כל ההזמנות" + +#. module: point_of_sale +#: report:account.statement:0 +#: report:all.closed.cashbox.of.the.day:0 +#: field:pos.session,cash_register_balance_end_real:0 +msgid "Ending Balance" +msgstr "יתרה סופית" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_box_out.py:89 +#, python-format +msgid "please check that account is set to %s." +msgstr "אנה בדוק שחשבון זה מקושר ל %s." + +#. module: point_of_sale +#: help:pos.category,image:0 +msgid "" +"This field holds the image used as image for the cateogry, limited to " +"1024x1024px." +msgstr "" +"בשדה זה נמצאת תמונה של קטגוריה, מוגבל לגודל מקסימאלי 1024X1024 פיקסלים." + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.pepsi_max_50cl_product_template +msgid "Pepsi Max 50cl" +msgstr "פפסי מאקס 50 מ\"ל" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.san_pellegrino_1l_product_template +msgid "San Pellegrino 1L" +msgstr "סאן פלגרינו 1 ליטר" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_open_statement.py:49 +#, python-format +msgid "" +"You have to define which payment method must be available in the point of " +"sale by reusing existing bank and cash through \"Accounting / Configuration " +"/ Journals / Journals\". Select a journal and check the field \"PoS Payment " +"Method\" from the \"Point of Sale\" tab. You can also create new payment " +"methods directly from menu \"PoS Backend / Configuration / Payment Methods\"." +msgstr "" +"הינך חייב לבחור בצורת תשלום שתהיה זמינה בקופה על ידי שימוש בחשבון בנק קיים " +"דרך : \"חשבונות\\ הגדרות\\ יומנים\\ יומים\". בחר יומן זמין וסמן בשורת \"צורת " +"תשלום עבור קופה רושמת\". אתה יכול ליצור צורת תשלום חדשה ישירות מתוך התפריט : " +"\"הגדרות\\ צורות תשלום\"." + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.rouges_noyau_fruits +msgid "Berries" +msgstr "פירות יער" + +#. module: point_of_sale +#: view:pos.ean_wizard:0 +msgid "Ean13 Generator" +msgstr "מחולל EAN 13" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.spa_1l_product_template +msgid "Spa Reine 1L" +msgstr "" + +#. module: point_of_sale +#: constraint:res.partner:0 +#: constraint:res.users:0 +msgid "Error: Invalid ean code" +msgstr "שגיאה : קוד EAN אינו תקין" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.legumes_racine +msgid "Root vegetables" +msgstr "ירקות שורש" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.act_pos_open_statement +#: model:ir.model,name:point_of_sale.model_pos_open_statement +#: view:pos.open.statement:0 +msgid "Open Statements" +msgstr "פתח דוחות" + +#. module: point_of_sale +#: field:pos.details,date_end:0 +#: field:pos.sale.user,date_end:0 +msgid "Date End" +msgstr "תאריך סיום" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.pomme_jonagold_product_template +msgid "Jonagold apples" +msgstr "" + +#. module: point_of_sale +#: view:account.bank.statement:0 +#: report:account.statement:0 +#: report:all.closed.cashbox.of.the.day:0 +#: model:ir.model,name:point_of_sale.model_account_journal +#: field:report.pos.order,journal_id:0 +msgid "Journal" +msgstr "יומן" + +#. module: point_of_sale +#: view:pos.session:0 +msgid "Statements" +msgstr "דוחות" + +#. module: point_of_sale +#: report:pos.details:0 +msgid "Sales total(Revenue)" +msgstr "סה\"כ מכירות (רווחים)" + +#. module: point_of_sale +#: help:pos.config,group_by:0 +msgid "" +"Check this if you want to group the Journal Items by Product while closing a " +"Session" +msgstr "" +"סמן כאן במידה והינך רוצה לשלב פרטי יומן על ידי מוצרים בזמן סגירת יומן מכירות" + +#. module: point_of_sale +#: report:pos.details:0 +#: report:pos.details_summary:0 +msgid "Total paid" +msgstr "שולם סה\"כ" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_session_opening +msgid "pos.session.opening" +msgstr "" + +#. module: point_of_sale +#: view:res.users:0 +msgid "Edit EAN" +msgstr "ערוך EAN" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_open_statement.py:80 +#, python-format +msgid "List of Cash Registers" +msgstr "רשימת קופות מזומן" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.maes_50cl_product_template +msgid "Maes 50cl" +msgstr "" + +#. module: point_of_sale +#: view:report.pos.order:0 +msgid "Not Invoiced" +msgstr "ללא חשבונית" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_pickles_250g_product_template +msgid "250g Lays Pickels" +msgstr "" + +#. module: point_of_sale +#: field:pos.session.opening,pos_session_id:0 +msgid "PoS Session" +msgstr "יומן מכירות" + +#. module: point_of_sale +#: selection:report.pos.order,month:0 +msgid "March" +msgstr "מרץ" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.pos_users_product_re +#: report:pos.user.product:0 +msgid "User's Product" +msgstr "מוצרי משתמש" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:1173 +#, python-format +msgid "" +"You have to select a pricelist in the sale form !\n" +"Please set one before choosing a product." +msgstr "" +"הינך חייב לבחור מחירון עבור מכירה זו!\n" +"אנה בחר אחד לפני בחירת המוצר." + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.fanta_orange_2l_product_template +msgid "Fanta Orange 2L" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.perrier_1l_product_template +msgid "Perrier 1L" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.spa_33cl_product_template +msgid "Spa Reine 33cl" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_discount +msgid "Add a Global Discount" +msgstr "הוסף הנחה כוללת" + +#. module: point_of_sale +#: view:pos.config:0 +msgid "Journals" +msgstr "יומנים" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_prosciutto_product_template +msgid "Dr. Oetker Ristorante Prosciutto" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_light_paprika_170g_product_template +#: model:product.template,name:point_of_sale.lays_paprika_170g_product_template +msgid "Lays Light Paprika 170g" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_lemon_50cl_product_template +msgid "Coca-Cola Light Lemon 50cl" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/point_of_sale.py:520 +#: code:addons/point_of_sale/static/src/xml/pos.xml:689 +#: code:addons/point_of_sale/static/src/xml/pos.xml:744 +#, python-format +msgid "return" +msgstr "חזרה" + +#. module: point_of_sale +#: view:product.product:0 +msgid "Set a Custom EAN" +msgstr "בחר מספר EAN מותאם אישית" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:235 +#, python-format +msgid "Remaining:" +msgstr "נותרו:" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.legumes +msgid "Fresh vegetables" +msgstr "ירקות טריים" + +#. module: point_of_sale +#: view:pos.session:0 +msgid "tab of the" +msgstr "לשונית של" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:478 +#, python-format +msgid "Scan Item Success" +msgstr "סירקת המוצר הושלמה" + +#. module: point_of_sale +#: report:account.statement:0 +#: report:all.closed.cashbox.of.the.day:0 +#: field:pos.session,cash_register_balance_start:0 +msgid "Starting Balance" +msgstr "יתרת התחלה" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_naturel_oven_150g_product_template +msgid "Oven Baked Lays Natural 150g" +msgstr "" + +#. module: point_of_sale +#: sql_constraint:pos.session:0 +msgid "The name of this POS Session must be unique !" +msgstr "שם יומן מכירות זה חייב להיות ייחודי !" + +#. module: point_of_sale +#: view:pos.session:0 +msgid "Opening Subtotal" +msgstr "יתרת פתיחה" + +#. module: point_of_sale +#: view:pos.session:0 +msgid "payment method." +msgstr "צורת תשלום." + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Re-Print" +msgstr "הדפס מחדש" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.chimay_bleu_75cl_product_template +msgid "Chimay Bleu 75cl" +msgstr "" + +#. module: point_of_sale +#: report:pos.payment.report.user:0 +msgid "Payment By User" +msgstr "תשלומים ללקוח" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:215 +#: code:addons/point_of_sale/static/src/xml/pos.xml:285 +#: code:addons/point_of_sale/wizard/pos_payment.py:79 +#: model:ir.actions.act_window,name:point_of_sale.action_pos_payment +#: report:pos.details:0 +#: view:pos.order:0 +#, python-format +msgid "Payment" +msgstr "תשלום" + +#. module: point_of_sale +#: view:report.pos.order:0 +#: field:report.pos.order,nbr:0 +msgid "# of Lines" +msgstr "# שורות" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:89 +#, python-format +msgid "Disc" +msgstr "הנחה" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "(update)" +msgstr "(עדכן)" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.ijsboerke_vanille_2,5l_product_template +msgid "IJsboerke Vanilla 2.5L" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_pos_details +#: model:ir.ui.menu,name:point_of_sale.menu_pos_details +msgid "Sale Details" +msgstr "פרטי מכירה" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.evian_2l_product_template +msgid "2L Evian" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:373 +#: code:addons/point_of_sale/point_of_sale.py:474 +#: code:addons/point_of_sale/wizard/pos_session_opening.py:33 +#, python-format +msgid "Start Point Of Sale" +msgstr "התחלה יומן מכירות" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.pils +msgid "Pils" +msgstr "כדורים" + +#. module: point_of_sale +#: help:pos.session,cash_register_balance_end_real:0 +msgid "Computed using the cash control lines" +msgstr "מחושב לפי שורות קופה" + +#. module: point_of_sale +#: report:all.closed.cashbox.of.the.day:0 +msgid "St.Name" +msgstr "רחוב" + +#. module: point_of_sale +#: report:pos.details_summary:0 +msgid "Sales total" +msgstr "סה\"כ מכירות" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:741 +#, python-format +msgid "ABC" +msgstr "ABC" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.ijsboerke_dame_blanche_2,5l_product_template +msgid "IJsboerke 2.5L White Lady" +msgstr "" + +#. module: point_of_sale +#: field:pos.order,lines:0 +msgid "Order Lines" +msgstr "שורות הזמנה" + +#. module: point_of_sale +#: view:report.transaction.pos:0 +msgid "Total Transaction" +msgstr "סה\"כ עסקה" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.chaudfontaine_petillante_50cl_product_template +msgid "Chaudfontaine Petillante 50cl" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:485 +#, python-format +msgid "Read Weighting Scale" +msgstr "קראה משקל דיגיטלי" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:426 +#, python-format +msgid "0.00 €" +msgstr "0.00 ₪" + +#. module: point_of_sale +#: field:pos.order.line,create_date:0 +msgid "Creation Date" +msgstr "תאריך יצירה" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.pos_sales_user_today +msgid "Today's Sales" +msgstr "מכירות להיום" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:264 +#: code:addons/point_of_sale/static/src/xml/pos.xml:324 +#, python-format +msgid "Welcome" +msgstr "ברוכים הבאים" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_box_entries.py:46 +#, python-format +msgid "" +"You do not have any open cash register. You must create a payment method or " +"open a cash register." +msgstr "" +"לא נמצאו קופות מזומנים. הינך חייב ליצור שיתת תשלום או לפתוח קופת מזומנים." + +#. module: point_of_sale +#: view:report.sales.by.margin.pos:0 +#: view:report.sales.by.margin.pos.month:0 +#: view:report.sales.by.user.pos:0 +#: view:report.sales.by.user.pos.month:0 +#: view:report.transaction.pos:0 +msgid "POS " +msgstr "קופה " + +#. module: point_of_sale +#: report:account.statement:0 +#: report:pos.user.product:0 +msgid "Total :" +msgstr "סה\"כ:" + +#. module: point_of_sale +#: view:report.pos.order:0 +msgid "My Sales" +msgstr "המכירות שלי" + +#. module: point_of_sale +#: view:pos.config:0 +msgid "Set to Deprecated" +msgstr "הגדר לחסרי ערך" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.limon_product_template +msgid "Stringers" +msgstr "סטרינגרים" + +#. module: point_of_sale +#: field:pos.order,pricelist_id:0 +msgid "Pricelist" +msgstr "מחירון" + +#. module: point_of_sale +#: report:pos.details:0 +#: report:pos.details_summary:0 +msgid "Total invoiced" +msgstr "סה\"כ עם חשבונית" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_category +#: field:product.product,pos_categ_id:0 +msgid "Point of Sale Category" +msgstr "קטגוריית קופה" + +#. module: point_of_sale +#: view:report.pos.order:0 +#: field:report.pos.order,product_qty:0 +msgid "# of Qty" +msgstr "# כמות" + +#. module: point_of_sale +#: help:pos.config,sequence_id:0 +msgid "" +"This sequence is automatically created by OpenERP but you can change it to " +"customize the reference numbers of your orders." +msgstr "" +"רצף זה נוצר באופן אוטומטי על ידי OpenERP אבל אתה יכול לשנות את זה כדי להתאים " +"אישית את התייחסות למספרים של ההזמנות שלך." + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:324 +#, python-format +msgid "Choose your type of receipt:" +msgstr "בחר את סוג הקבלה שלך:" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_report_sales_by_margin_pos_month +msgid "Sales by margin monthly" +msgstr "מכירות לפי מרווח חודשי" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.poivron_jaunes_product_template +msgid "Yellow Peppers" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +#: field:pos.order,date_order:0 +#: field:report.sales.by.margin.pos,date_order:0 +#: field:report.sales.by.margin.pos.month,date_order:0 +#: field:report.sales.by.user.pos,date_order:0 +#: field:report.sales.by.user.pos.month,date_order:0 +msgid "Order Date" +msgstr "תאריך הזמנה" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.stella_33cl_product_template +msgid "Stella Artois 33cl" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_naturel_300g_product_template +msgid "Lays Natural XXL 300g" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:479 +#, python-format +msgid "Scan Item Unrecognized" +msgstr "סרוק פריט ללא קטגוריה" + +#. module: point_of_sale +#: report:all.closed.cashbox.of.the.day:0 +msgid "Today's Closed Cashbox" +msgstr "דוח מזומנים להיום" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:920 +#, python-format +msgid "Selected orders do not have the same session!" +msgstr "הזמנות שנבחרו לא בוצעו באותו יומן מכירות!" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Draft Invoice" +msgstr "חשבונית ברירת מחדל" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_paprika_oven_150g_product_template +msgid "Oven Baked Lays Paprika 150g" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Fiscal Position Remark :" +msgstr "הערת מצב פיסקלי:" + +#. module: point_of_sale +#: selection:report.pos.order,month:0 +msgid "September" +msgstr "ספטמבר" + +#. module: point_of_sale +#: report:account.statement:0 +#: report:all.closed.cashbox.of.the.day:0 +#: field:pos.session,start_at:0 +msgid "Opening Date" +msgstr "תאריך פתיחה" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_session +#: model:ir.ui.menu,name:point_of_sale.menu_pos_session_all +msgid "All Sessions" +msgstr "כל היומנים" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:663 +#, python-format +msgid "tab" +msgstr "לשונית" + +#. module: point_of_sale +#: report:pos.lines:0 +msgid "Taxes :" +msgstr "מיסים:" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:271 +#, python-format +msgid "Thank you for shopping with us." +msgstr "תודה על כך שעשיתה קניות אתנו." + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_2l_product_template +msgid "Coca-Cola Light 2L" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_funghi_product_template +msgid "Dr. Oetker Ristorante Funghi" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.pos_category_action +#: model:ir.ui.menu,name:point_of_sale.menu_pos_category +msgid "Product Categories" +msgstr "קטגוריות מוצרים" + +#. module: point_of_sale +#: help:pos.config,journal_id:0 +msgid "Accounting journal used to post sales entries." +msgstr "יומן מכירות להזנת מכירות." + +#. module: point_of_sale +#: field:report.transaction.pos,disc:0 +msgid "Disc." +msgstr "תיאור" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:467 +#, python-format +msgid "Invalid Ean" +msgstr "EAN שגוי" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lindemans_kriek_37,5cl_product_template +msgid "Lindemans Kriek 37.5cl" +msgstr "" + +#. module: point_of_sale +#: view:pos.config:0 +msgid "Point of Sale Config" +msgstr "הגדרות קופה" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_zero_33cl_product_template +msgid "Coca-Cola Zero 33cl" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:405 +#, python-format +msgid "ä" +msgstr "ä" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "VAT :" +msgstr "" + +#. module: point_of_sale +#: view:pos.order.line:0 +msgid "POS Order lines" +msgstr "שורות הזמנה לקופה" + +#. module: point_of_sale +#: view:pos.receipt:0 +msgid "Receipt :" +msgstr "קבלה:" + +#. module: point_of_sale +#: field:account.bank.statement,pos_session_id:0 +#: field:account.bank.statement.line,pos_statement_id:0 +#: field:pos.order,amount_return:0 +#: field:pos.session.opening,pos_session_name:0 +#: field:pos.session.opening,pos_session_username:0 +msgid "unknown" +msgstr "לא ידוע" + +#. module: point_of_sale +#: field:product.product,income_pdt:0 +msgid "Point of Sale Cash In" +msgstr "כניסת מזומנים לקופה" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:590 +#, python-format +msgid "Tax:" +msgstr "מע\"מ:" + +#. module: point_of_sale +#: view:pos.session:0 +msgid "+ Transactions" +msgstr "+ עסקאות" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_discount +#: view:pos.discount:0 +msgid "Apply Discount" +msgstr "עדכן הנחה" + +#. module: point_of_sale +#: report:account.statement:0 +#: report:all.closed.cashbox.of.the.day:0 +#: field:pos.box.entries,user_id:0 +#: report:pos.sales.user:0 +#: report:pos.sales.user.today:0 +#: view:pos.session:0 +#: report:pos.user.product:0 +#: field:report.sales.by.margin.pos,user_id:0 +#: field:report.sales.by.margin.pos.month,user_id:0 +#: field:report.sales.by.user.pos,user_id:0 +#: field:report.sales.by.user.pos.month,user_id:0 +#: field:report.transaction.pos,user_id:0 +#: model:res.groups,name:point_of_sale.group_pos_user +msgid "User" +msgstr "משתמש/ת" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:194 +#, python-format +msgid "Kg" +msgstr "ק\"ג" + +#. module: point_of_sale +#: field:product.product,available_in_pos:0 +msgid "Available in the Point of Sale" +msgstr "זמין בקופה" + +#. module: point_of_sale +#: selection:pos.config,state:0 +msgid "Deprecated" +msgstr "מומלץ לשימוש" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_decaf_33cl_product_template +msgid "Coca-Cola Light 33cl Decaf" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:338 +#, python-format +msgid "The scanned product was not recognized" +msgstr "מוצר נסרק אינו מזוהה" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_report_transaction_pos +msgid "transaction for the pos" +msgstr "עסקאות לקופה" + +#. module: point_of_sale +#: report:pos.details:0 +#: field:report.transaction.pos,date_create:0 +msgid "Date" +msgstr "תאריך" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_box_entries +msgid "Pos Box Entries" +msgstr "תנועות קופה" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.boon_framboise_37,5cl_product_template +msgid "Boon Framboise 37.5cl" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_config +msgid "pos.config" +msgstr "" + +#. module: point_of_sale +#: view:pos.ean_wizard:0 +msgid "" +"Enter a reference, it will be converted\n" +" automatically to a valid EAN number." +msgstr "" +"הזן מספק, הוא יומר אוטומטית\n" +" לקוד EAN חוקי לשימוש." + +#. module: point_of_sale +#: field:product.product,expense_pdt:0 +msgid "Point of Sale Cash Out" +msgstr "מכירות במזומן" + +#. module: point_of_sale +#: selection:report.pos.order,month:0 +msgid "November" +msgstr "נובמבר" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:267 +#, python-format +msgid "Please scan an item or your member card" +msgstr "אנה סרוק מוצר או כרטיס חבר מועדון" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.poivron_verts_product_template +msgid "Green Peppers" +msgstr "פלפלים ירוקים" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.timmermans_faro_37,5cl_product_template +msgid "Timmermans Faro 37.5cl" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:410 +#, python-format +msgid "" +"Your ending balance is too different from the theorical cash closing (%.2f), " +"the maximum allowed is: %.2f. You can contact your manager to force it." +msgstr "" +"בסיגרת הקופה נמצאה הבדל של (%.2f), כאשר המקסימום המותר הינו %.2f. אנה צור " +"קשר עם אחראי משמרת." + +#. module: point_of_sale +#: view:pos.session:0 +msgid "Validate Closing & Post Entries" +msgstr "אמת סגירה ותנועות קופה" + +#. module: point_of_sale +#: field:report.transaction.pos,no_trans:0 +msgid "Number of Transaction" +msgstr "מספר עסקאות" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:759 +#, python-format +msgid "" +"There is no receivable account defined to make payment for the partner: " +"\"%s\" (id:%d)." +msgstr "לא נמצא חשבון אשר יכול לקבל כספים עבור שותף : \"%s\" (id:%d)." + +#. module: point_of_sale +#: view:pos.config:0 +#: selection:pos.config,state:0 +msgid "Inactive" +msgstr "לא פעיל" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:313 +#: view:pos.confirm:0 +#: view:pos.details:0 +#: view:pos.discount:0 +#: view:pos.ean_wizard:0 +#: view:pos.make.payment:0 +#: view:pos.open.statement:0 +#: view:pos.payment.report:0 +#: view:pos.payment.report.user:0 +#: view:pos.receipt:0 +#: view:pos.sale.user:0 +#, python-format +msgid "Cancel" +msgstr "ביטול" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:296 +#, python-format +msgid "Please put your product on the scale" +msgstr "אנה מקם את המוצר שלך על משקל דיגיטלי" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.pos_details_summary +msgid "Sales (summary)" +msgstr "מכירות (סה\"כ)" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.nectarine_product_template +msgid "Peach" +msgstr "אפרסק" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.timmermans_kriek_37,5cl_product_template +msgid "Timmermans Kriek 37.5cl" +msgstr "" + +#. module: point_of_sale +#: field:pos.config,sequence_id:0 +msgid "Order IDs Sequence" +msgstr "רצף מספרי הזמנות" + +#. module: point_of_sale +#: report:pos.invoice:0 +#: report:pos.lines:0 +#: field:pos.order.line,price_unit:0 +#: report:pos.payment.report.user:0 +msgid "Unit Price" +msgstr "מחיר ליחידה" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:190 +#, python-format +msgid "Product Weighting" +msgstr "משקל המוצר" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:704 +#: code:addons/point_of_sale/static/src/xml/pos.xml:746 +#, python-format +msgid "close" +msgstr "סגור" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.report_user_label +msgid "User Labels" +msgstr "תוויות משתמש" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_order_line +msgid "Lines of Point of Sale" +msgstr "שורות קופה" + +#. module: point_of_sale +#: view:pos.order:0 +#: view:report.transaction.pos:0 +msgid "Amount total" +msgstr "סכום כולל" + +#. module: point_of_sale +#: view:pos.session:0 +msgid "End of Session" +msgstr "סוף ההפעלה" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_new_bank_statement_all_tree +#: view:pos.session:0 +msgid "Cash Registers" +msgstr "קופות מזומן" + +#. module: point_of_sale +#: help:pos.session,cash_register_balance_end:0 +msgid "Computed with the initial cash control and the sum of all payments." +msgstr "מחושב עם שליטה הראשונית במזומן והסכום של כל התשלומים." + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:474 +#, python-format +msgid "In Transaction" +msgstr "בעסקה" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.food +msgid "Food" +msgstr "מזון" + +#. module: point_of_sale +#: field:pos.box.entries,ref:0 +msgid "Ref" +msgstr "הפניה" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:94 +#: report:pos.details:0 +#: report:pos.invoice:0 +#: report:pos.lines:0 +#, python-format +msgid "Price" +msgstr "מחיר" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_33cl_product_template +msgid "Coca-Cola Light 33cl" +msgstr "" + +#. module: point_of_sale +#: view:report.sales.by.margin.pos:0 +#: view:report.sales.by.margin.pos.month:0 +#: view:report.sales.by.user.pos:0 +#: view:report.sales.by.user.pos.month:0 +#: view:report.transaction.pos:0 +msgid "POS" +msgstr "קופה" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_regular_33cl_product_template +msgid "Coca-Cola Regular 33cl" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:325 +#, python-format +msgid "Ticket" +msgstr "פנייה" + +#. module: point_of_sale +#: field:pos.session,cash_register_difference:0 +msgid "Difference" +msgstr "הפרש" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:549 +#, python-format +msgid "Unable to Delete !" +msgstr "לא ניתן למחיקה!" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.autres_agrumes +msgid "Other Citrus" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 +#: report:pos.details_summary:0 +msgid "Start Period" +msgstr "תקופת הדוח" + +#. module: point_of_sale +#: report:account.statement:0 +#: field:pos.category,complete_name:0 +#: field:pos.category,name:0 +#: report:pos.sales.user:0 +#: report:pos.sales.user.today:0 +msgid "Name" +msgstr "שם" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.spa_gazeuse_33cl_product_template +msgid "Spa Barisart 33cl" +msgstr "" + +#. module: point_of_sale +#: view:pos.confirm:0 +msgid "" +"Generate all sale journal entries for non invoiced orders linked to a closed " +"cash register or statement." +msgstr "חולל את כל המכירות להם לא הונפקה חשבונית אשר קשורים לקופה זו." + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.unreferenced_product_product_template +msgid "Unreferenced Products" +msgstr "מוצרים מנותקים מ" + +#. module: point_of_sale +#: view:pos.ean_wizard:0 +msgid "Apply" +msgstr "החל" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:288 +#, python-format +msgid "" +"Please insert your card in the reader and follow the instructions to " +"complete\n" +" your purchase" +msgstr "" +"אנה הכנס את הכרטיס שלך לתוך קורא הכרטיסיפ ועקוב אחר ההוראות להשלמת\n" +" " +" הקניה שלך" + +#. module: point_of_sale +#: help:product.product,income_pdt:0 +msgid "" +"Check if, this is a product you can use to put cash into a statement for the " +"point of sale backend." +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.ijsboerke_moka_2,5l_product_template +msgid "IJsboerke Mocha 2.5L" +msgstr "" + +#. module: point_of_sale +#: field:pos.session,cash_control:0 +msgid "Has Cash Control" +msgstr "יש קופת מזומן" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_pos_order_all +#: model:ir.ui.menu,name:point_of_sale.menu_report_pos_order_all +msgid "Orders Analysis" +msgstr "ניתוח הזמנות" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:563 +#, python-format +msgid "User:" +msgstr "משתמש:" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:316 +#, python-format +msgid "" +"Unable to open the session. You have to assign a sale journal to your point " +"of sale." +msgstr "לא ניתן לפתוח יומן מכירות. הינך חייב לקשר יומן לקופה." + +#. module: point_of_sale +#: view:report.pos.order:0 +msgid "POS ordered created during current year" +msgstr "זמנות קופה שנוצרו במהלך השנה הנוכחית" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.peche_product_template +msgid "Fishing" +msgstr "דייג" + +#. module: point_of_sale +#: report:pos.details:0 +#: report:pos.details_summary:0 +#: report:pos.lines:0 +#: report:pos.payment.report.user:0 +#: report:pos.sales.user:0 +#: report:pos.sales.user.today:0 +#: report:pos.user.product:0 +msgid "Print Date" +msgstr "תאריך הדפסה" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.poireaux_poireaux_product_template +msgid "Leeks" +msgstr "כרישה" + +#. module: point_of_sale +#: help:pos.category,sequence:0 +msgid "" +"Gives the sequence order when displaying a list of product categories." +msgstr "נותן את סדר הרצף בעת הצגת רשימה של קטגוריות מוצר." + +#. module: point_of_sale +#: view:account.bank.statement:0 +#: view:pos.order:0 +#: view:pos.session:0 +#: view:report.pos.order:0 +msgid "Group By..." +msgstr "מקובץ על ידי ..." + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:564 +#, python-format +msgid "Shop:" +msgstr "חנות:" + +#. module: point_of_sale +#: field:account.journal,self_checkout_payment_method:0 +msgid "Self Checkout Payment Method" +msgstr "צורות תשלום ברכישה עצמית" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "POS Orders" +msgstr "הזמנות קופה" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.all_closed_cashbox_of_the_day +msgid "All Closed CashBox" +msgstr "כל קופות מזומן סגורות" + +#. module: point_of_sale +#: field:pos.details,user_ids:0 +msgid "Salespeople" +msgstr "אנשי מכירות" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:777 +#: code:addons/point_of_sale/wizard/pos_box_entries.py:118 +#: code:addons/point_of_sale/wizard/pos_box_out.py:91 +#, python-format +msgid "You have to open at least one cashbox." +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:1172 +#, python-format +msgid "No Pricelist !" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.poivron_rouges_product_template +msgid "Red Pepper" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:677 +#, python-format +msgid "caps lock" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.grisette_cerise_25cl_product_template +msgid "Grisette Cherry 25cl" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Base" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:702 +#: code:addons/point_of_sale/static/src/xml/pos.xml:742 +#, python-format +msgid " " +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.categ_others +msgid "Others" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.autres_legumes_frais +msgid "Other fresh vegetables" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_open_statement.py:49 +#, python-format +msgid "No Cash Register Defined !" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:515 +#, python-format +msgid "" +"No cash statement found for this session. Unable to record returned cash." +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.oignons_ail_echalotes +msgid "Onions / Garlic / Shallots" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.evian_50cl_product_template +msgid "Evian 50cl" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Notes" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_lemon_2l_product_template +msgid "Coca-Cola Light Lemon 2L" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 +#: report:pos.invoice:0 +#: field:pos.order,amount_tax:0 +msgid "Taxes" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_order_line +#: model:ir.actions.act_window,name:point_of_sale.action_pos_order_line_day +#: model:ir.actions.act_window,name:point_of_sale.action_pos_order_line_form +msgid "Sale line" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:741 +#, python-format +msgid "123" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.product_normal_action +#: model:ir.ui.menu,name:point_of_sale.menu_point_of_sale_product +#: model:ir.ui.menu,name:point_of_sale.menu_pos_products +#: view:pos.order:0 +msgid "Products" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_4formaggi_product_template +msgid "Dr. Oetker Ristorante Quattro Formaggi" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.croky_naturel_45g_product_template +msgid "Croky Natural 45g" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.tomate_en_grappe_product_template +msgid "In Cluster Tomatoes" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.client,name:point_of_sale.action_pos_pos +msgid "Start Point of Sale" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:84 +#: report:pos.details:0 +#: report:pos.payment.report.user:0 +#: report:pos.user.product:0 +#: field:report.sales.by.margin.pos,qty:0 +#: field:report.sales.by.margin.pos.month,qty:0 +#, python-format +msgid "Qty" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_zero_1l_product_template +msgid "Coca-Cola Zero 1L" +msgstr "" + +#. module: point_of_sale +#: report:pos.sales.user:0 +#: report:pos.sales.user.today:0 +#: field:report.pos.order,date:0 +msgid "Date Order" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Point of Sale Orders" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.spa_et_fruit_50cl_product_template +msgid "Spa Fruit and Orange 50cl" +msgstr "" + +#. module: point_of_sale +#: view:pos.config:0 +#: field:pos.config,journal_ids:0 +#: field:pos.session,journal_ids:0 +msgid "Available Payment Methods" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,help:point_of_sale.product_normal_action +msgid "" +"

\n" +" Click to add a new product.\n" +"

\n" +" You must define a product for everything you sell through\n" +" the point of sale interface.\n" +"

\n" +" Do not forget to set the price and the point of sale " +"category\n" +" in which it should appear. If a product has no point of " +"sale\n" +" category, you can not sell it through the point of sale\n" +" interface.\n" +"

\n" +" " +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Extra Info" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Fax :" +msgstr "" + +#. module: point_of_sale +#: view:pos.session:0 +msgid "Point of Sale Session" +msgstr "" + +#. module: point_of_sale +#: report:account.statement:0 +#: model:ir.actions.report.xml,name:point_of_sale.account_statement +msgid "Statement" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Source" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:461 +#, python-format +msgid "Admin Badge" +msgstr "" + +#. module: point_of_sale +#: field:pos.make.payment,journal_id:0 +msgid "Payment Mode" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_paprika_45g_product_template +msgid "Lays Paprika 45g" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_account_bank_statement +#: field:pos.session,statement_ids:0 +msgid "Bank Statement" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:101 +#: selection:pos.session,state:0 +#: selection:pos.session.opening,pos_state:0 +#, python-format +msgid "Closed & Posted" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_pos_sale_user +#: model:ir.model,name:point_of_sale.model_pos_sale_user +#: view:pos.payment.report.user:0 +msgid "Sale by User" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:562 +#, python-format +msgid "Phone:" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.evian_1l_product_template +msgid "Evian 1L" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.water +msgid "Water" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_ean_wizard +msgid "pos.ean_wizard" +msgstr "" + +#. module: point_of_sale +#: selection:report.pos.order,month:0 +msgid "July" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_config_pos +#: model:ir.ui.menu,name:point_of_sale.menu_pos_config_pos +#: view:pos.session:0 +msgid "Point of Sales" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 +#: report:pos.details_summary:0 +msgid "Qty of product" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.pomme_golden_perlim_product_template +msgid "Golden Apples Perlim" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:100 +#: selection:pos.session,state:0 +#: selection:pos.session.opening,pos_state:0 +#, python-format +msgid "Closing Control" +msgstr "" + +#. module: point_of_sale +#: field:report.pos.order,delay_validation:0 +msgid "Delay Validation" +msgstr "" + +#. module: point_of_sale +#: field:pos.order,nb_print:0 +msgid "Number of Print" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_make_payment +msgid "Point of Sale Payment" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_50cl_product_template +msgid "Coca-Cola Light 50cl" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:466 +#, python-format +msgid "Unknown Product" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:36 +#, python-format +msgid "" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.jupiler_50cl_product_template +msgid "Jupiler 50cl" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 +#: report:pos.details_summary:0 +msgid "End Period" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_lemon_33cl_product_template +msgid "Coca-Cola Light Lemon 33cl" +msgstr "" + +#. module: point_of_sale +#. openerp-web +#: code:addons/point_of_sale/static/src/xml/pos.xml:33 +#, python-format +msgid " + + diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index e24a6e45fe0..d8d038eb002 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -307,7 +307,7 @@ - + diff --git a/addons/sale_analytic_plans/i18n/ru.po b/addons/sale_analytic_plans/i18n/ru.po index 90d9eb5c3b9..8995b7b45c0 100644 --- a/addons/sale_analytic_plans/i18n/ru.po +++ b/addons/sale_analytic_plans/i18n/ru.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" -"PO-Revision-Date: 2010-12-25 22:14+0000\n" +"PO-Revision-Date: 2013-06-03 08:05+0000\n" "Last-Translator: Chertykov Denis \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: 2013-03-16 05:32+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-06-04 05:20+0000\n" +"X-Generator: Launchpad (build 16660)\n" #. module: sale_analytic_plans #: field:sale.order.line,analytics_id:0 @@ -24,7 +24,7 @@ msgstr "Разнесение аналитики" #. module: sale_analytic_plans #: model:ir.model,name:sale_analytic_plans.model_sale_order msgid "Sales Order" -msgstr "" +msgstr "Заказ продаж" #. module: sale_analytic_plans #: model:ir.model,name:sale_analytic_plans.model_sale_order_line diff --git a/addons/sale_crm/__openerp__.py b/addons/sale_crm/__openerp__.py index 6591589342e..7db1aa1eff0 100644 --- a/addons/sale_crm/__openerp__.py +++ b/addons/sale_crm/__openerp__.py @@ -47,7 +47,11 @@ modules. 'security/ir.model.access.csv', 'report/sale_crm_account_invoice_report_view.xml', ], - 'demo': [], + 'js': [ + 'static/lib/justgage.js', + 'static/src/js/sale_crm.js', + ], + 'demo': ['sale_crm_demo.xml'], 'test': ['test/sale_crm.yml'], 'installable': True, 'auto_install': True, diff --git a/addons/sale_crm/i18n/ru.po b/addons/sale_crm/i18n/ru.po index 8ae90e42303..f6266edf8ca 100644 --- a/addons/sale_crm/i18n/ru.po +++ b/addons/sale_crm/i18n/ru.po @@ -7,20 +7,20 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" -"PO-Revision-Date: 2011-03-23 13:50+0000\n" +"PO-Revision-Date: 2013-06-03 08:05+0000\n" "Last-Translator: Chertykov Denis \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: 2013-03-16 05:10+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-06-04 05:20+0000\n" +"X-Generator: Launchpad (build 16660)\n" #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:90 #, python-format msgid "Insufficient Data!" -msgstr "" +msgstr "Недостаточно данных!" #. module: sale_crm #: view:crm.lead:0 @@ -31,12 +31,12 @@ msgstr "Преобразовать в предложение" #. module: sale_crm #: model:ir.model,name:sale_crm.model_account_invoice_report msgid "Invoices Statistics" -msgstr "" +msgstr "Статистика по счетам" #. module: sale_crm #: field:crm.make.sale,close:0 msgid "Mark Won" -msgstr "" +msgstr "Отметить \"Выиграна\"" #. module: sale_crm #: field:res.users,default_section_id:0 @@ -51,23 +51,23 @@ msgstr "Мои отделы продаж" #. module: sale_crm #: model:ir.model,name:sale_crm.model_res_users msgid "Users" -msgstr "" +msgstr "Пользователи" #. module: sale_crm #: help:crm.make.sale,close:0 msgid "" "Check this to close the opportunity after having created the sales order." -msgstr "" +msgstr "Отметьте, для закрытия предложения после создания заказа продажи." #. module: sale_crm #: model:mail.message.subtype,name:sale_crm.mt_salesteam_order_sent msgid "Quotation Send" -msgstr "" +msgstr "Отправить предложение" #. module: sale_crm #: field:sale.order,categ_ids:0 msgid "Categories" -msgstr "" +msgstr "Категории" #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:124 @@ -94,7 +94,7 @@ msgstr "Продать" #. module: sale_crm #: model:ir.model,name:sale_crm.model_account_invoice msgid "Invoice" -msgstr "" +msgstr "Счет" #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:93 @@ -106,7 +106,7 @@ msgstr "Предложение: %s" #: code:addons/sale_crm/wizard/crm_make_sale.py:110 #, python-format msgid "Opportunity has been converted to the quotation %s." -msgstr "" +msgstr "Предложение преобразовано в заявку %s." #. module: sale_crm #: field:crm.make.sale,shop_id:0 @@ -117,12 +117,12 @@ msgstr "Магазин" #: code:addons/sale_crm/wizard/crm_make_sale.py:90 #, python-format msgid "No addresse(s) defined for this customer." -msgstr "" +msgstr "Не задан адрес для этого заказчика" #. module: sale_crm #: model:mail.message.subtype,name:sale_crm.mt_salesteam_order_confirmed msgid "Sales Order Confirmed" -msgstr "" +msgstr "Заказ продаж подтвержден" #. module: sale_crm #: view:account.invoice:0 @@ -136,7 +136,7 @@ msgstr "Отдел продаж" #. module: sale_crm #: view:crm.lead:0 msgid "Create Quotation" -msgstr "" +msgstr "Создать заявку" #. module: sale_crm #: model:ir.actions.act_window,name:sale_crm.action_crm_make_sale @@ -156,7 +156,7 @@ msgstr "Заказ продаж" #. module: sale_crm #: view:crm.make.sale:0 msgid "or" -msgstr "" +msgstr "или" #~ msgid "Create" #~ msgstr "Создать" diff --git a/addons/sale_crm/process/sale_crm_process.xml b/addons/sale_crm/process/sale_crm_process.xml index 721508a2ba5..21297e12dbd 100644 --- a/addons/sale_crm/process/sale_crm_process.xml +++ b/addons/sale_crm/process/sale_crm_process.xml @@ -42,8 +42,8 @@ - - + + @@ -51,24 +51,24 @@ - - + + - - + + - - + + --> diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index 3172999c545..97c5f4579e0 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -19,7 +19,10 @@ # ############################################################################## -from datetime import datetime +from datetime import date +from dateutil import relativedelta + +from openerp import tools from openerp.osv import osv, fields @@ -41,31 +44,51 @@ class sale_order(osv.osv): class crm_case_section(osv.osv): _inherit = 'crm.case.section' - def _get_sum_month_invoice(self, cr, uid, ids, field_name, arg, context=None): - res = dict.fromkeys(ids, 0) + def _get_sale_orders_data(self, cr, uid, ids, field_name, arg, context=None): + obj = self.pool.get('sale.order') + res = dict.fromkeys(ids, False) + month_begin = date.today().replace(day=1) + groupby_begin = (month_begin + relativedelta.relativedelta(months=-4)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT) + for id in ids: + res[id] = dict() + created_domain = [('section_id', '=', id), ('state', 'in', ['draft', 'sent']), ('date_order', '>=', groupby_begin)] + res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order'], 'amount_total', 'date_order', context=context) + validated_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'sent']), ('date_confirm', '>=', groupby_begin)] + res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_confirm'], 'amount_total', 'date_confirm', context=context) + return res + + def _get_invoices_data(self, cr, uid, ids, field_name, arg, context=None): obj = self.pool.get('account.invoice.report') - when = datetime.today() - for section_id in ids: - invoice_ids = obj.search(cr, uid, [("section_id", "=", section_id), ('state', 'not in', ['draft', 'cancel']), ('year', '=', when.year), ('month', '=', when.month > 9 and when.month or "0%s" % when.month)], context=context) - for invoice in obj.browse(cr, uid, invoice_ids, context=context): - res[section_id] += invoice.price_total + res = dict.fromkeys(ids, False) + month_begin = date.today().replace(day=1) + groupby_begin = (month_begin + relativedelta.relativedelta(months=-4)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT) + for id in ids: + created_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'cancel']), ('date', '>=', groupby_begin)] + res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date'], 'price_total', 'date', context=context) return res _columns = { - 'quotation_ids': fields.one2many('sale.order', 'section_id', - string='Quotations', readonly=True, - domain=[('state', 'in', ['draft', 'sent', 'cancel'])]), - 'sale_order_ids': fields.one2many('sale.order', 'section_id', - string='Sale Orders', readonly=True, - domain=[('state', 'not in', ['draft', 'sent', 'cancel'])]), - 'invoice_ids': fields.one2many('account.invoice', 'section_id', - string='Invoices', readonly=True, - domain=[('state', 'not in', ['draft', 'cancel'])]), - 'sum_month_invoice': fields.function(_get_sum_month_invoice, - string='Total invoiced this month', - type='integer', readonly=True), + 'invoiced_forecast': fields.integer(string='Invoice Forecast', + help="Forecast of the invoice revenue for the current month. This is the amount the sales \n" + "team should invoice this month. It is used to compute the progression ratio \n" + " of the current and forecast revenue on the kanban view."), + 'invoiced_target': fields.integer(string='Invoice Target', + help="Target of invoice revenue for the current month. This is the amount the sales \n" + "team estimates to be able to invoice this month."), + 'monthly_quoted': fields.function(_get_sale_orders_data, + type='string', readonly=True, multi='_get_sale_orders_data', + string='Rate of created quotation per duration'), + 'monthly_confirmed': fields.function(_get_sale_orders_data, + type='string', readonly=True, multi='_get_sale_orders_data', + string='Rate of validate sales orders per duration'), + 'monthly_invoiced': fields.function(_get_invoices_data, + type='string', readonly=True, + string='Rate of sent invoices per duration'), } + def action_forecast(self, cr, uid, id, value, context=None): + return self.write(cr, uid, [id], {'invoiced_forecast': value}, context=context) + class res_users(osv.Model): _inherit = 'res.users' diff --git a/addons/sale_crm/sale_crm_demo.xml b/addons/sale_crm/sale_crm_demo.xml new file mode 100644 index 00000000000..0c2822719dd --- /dev/null +++ b/addons/sale_crm/sale_crm_demo.xml @@ -0,0 +1,130 @@ + + + + + + 52700 + 60000 + + + + Indirect Sales + IM + 36000 + 40000 + + + + + + + + + + + draft + out_invoice + + Test invoice 1 + + + Basic computer with Dvorak keyboard and left-handed mouse + + 250 + 1 + + + + Little server with raid 1 and 512ECC ram + + 800 + 2 + + + + Server with raid 10 and 2048ECC ram + + 4800 + 4 + + + + + + + + + + + + + + + + + + + + + + + + + draft + out_invoice + + Test invoice 1 + + + Basic formation with Dvorak + + 500 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index 31c0317969a..ae21934ce61 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -43,7 +43,7 @@ + help="My Sales Team(s)" groups="base.group_multi_salesteams"/> @@ -75,7 +75,7 @@ - + @@ -101,7 +101,7 @@ - + @@ -135,7 +135,6 @@ { 'search_default_section_id': [active_id], 'default_section_id': active_id, - 'search_default_my_sale_orders_filter': 1, } @@ -158,8 +157,8 @@ tree,form,calendar,graph { 'search_default_section_id': [active_id], - 'default_section_id': active_id, 'show_address': 1, - 'search_default_my_sale_orders_filter': 1 + 'default_section_id': active_id, + 'show_address': 1, } [('state','in',('draft','sent','cancel'))] @@ -190,7 +189,7 @@ ('type', '=', 'out_invoice')] { 'search_default_section_id': [active_id], - 'default_section_id': active_id}, + 'default_section_id': active_id, 'default_type':'out_invoice', 'type':'out_invoice', 'journal_type': 'sale', @@ -212,38 +211,68 @@ + + crm.case.section.form + crm.case.section + + + + + + + + + + + crm.case.section.kanban crm.case.section - - - - + + + + + + - - - - Quotations - Quotation - - - - Sales Orders - Sales Order - - - - Invoices - Invoice - + + + + + + -
-
-
Invoiced this month
+
+ Invoiced + Forecast +
+
+
Define an invoicing target in the sales team settings to see the period's achievement and forecast at a glance.
diff --git a/addons/sale_crm/static/lib/justgage.js b/addons/sale_crm/static/lib/justgage.js new file mode 100644 index 00000000000..52b5c6ea0c3 --- /dev/null +++ b/addons/sale_crm/static/lib/justgage.js @@ -0,0 +1,883 @@ +/** + * JustGage - this is work-in-progress, unreleased, unofficial code, so it might not work top-notch :) + * Check http://www.justgage.com for official releases + * Licensed under MIT. + * @author Bojan Djuricic (@Toorshia) + * + * LATEST UPDATES + + * ----------------------------- + * April 01, 2013. + * ----------------------------- + * fix - https://github.com/toorshia/justgage/issues/46 + + * ----------------------------- + * March 26, 2013. + * ----------------------------- + * customSectors - define specific color for value range (0-10 : red, 10-30 : blue etc.) + + * ----------------------------- + * March 23, 2013. + * ----------------------------- + * counter - option to animate value in counting fashion + * fix - https://github.com/toorshia/justgage/issues/45 + + * ----------------------------- + * March 13, 2013. + * ----------------------------- + * refresh method - added optional 'max' parameter to use when you need to update max value + + * ----------------------------- + * February 26, 2013. + * ----------------------------- + * decimals - option to define/limit number of decimals when not using humanFriendly or customRenderer to display value + * fixed a missing parameters bug when calling generateShadow() for IE < 9 + + * ----------------------------- + * December 31, 2012. + * ----------------------------- + * fixed text y-position for hidden divs - workaround for Raphael 'dy' bug - https://github.com/DmitryBaranovskiy/raphael/issues/491 + * 'show' parameters, like showMinMax are now 'hide' because I am lame developer - please update these in your setups + * Min and Max labels are now auto-off when in donut mode + * Start angle in donut mode is now 90 + * donutStartAngle - option to define start angle for donut + + * ----------------------------- + * November 25, 2012. + * ----------------------------- + * Option to define custom rendering function for displayed value + + * ----------------------------- + * November 19, 2012. + * ----------------------------- + * Config.value is now updated after gauge refresh + + * ----------------------------- + * November 13, 2012. + * ----------------------------- + * Donut display mode added + * Option to hide value label + * Option to enable responsive gauge size + * Removed default title attribute + * Option to accept min and max defined as string values + * Option to configure value symbol + * Fixed bad aspect ratio calculations + * Option to configure minimum font size for all texts + * Option to show shorthand big numbers (human friendly) + */ + + JustGage = function(config) { + + if (!config.id) {alert("Missing id parameter for gauge!"); return false;} + if (!config.node) { + if (!document.getElementById(config.id)) {alert("No element with id: \""+config.id+"\" found!"); return false;} + config.node = document.getElementById(config.id); + } + + var obj = this; + + // configurable parameters + obj.config = + { + // id : string + // this is container element id + id : config.id, + + // node : string + // the node to use instead of DOM + node : config.node, + + // title : string + // gauge title + title : (config.title) ? config.title : "", + + // titleFontColor : string + // color of gauge title + titleFontColor : (config.titleFontColor) ? config.titleFontColor : "#999999", + + // value : int + // value gauge is showing + value : (config.value) ? config.value : 0, + + + // valueFontColor : string + // color of label showing current value + valueFontColor : (config.valueFontColor) ? config.valueFontColor : "#010101", + + // symbol : string + // special symbol to show next to value + symbol : (config.symbol) ? config.symbol : "", + + // min : int + // min value + min : (config.min) ? parseFloat(config.min) : 0, + + // max : int + // max value + max : (config.max) ? parseFloat(config.max) : 100, + + // humanFriendlyDecimal : int + // number of decimal places for our human friendly number to contain + humanFriendlyDecimal : (config.humanFriendlyDecimal) ? config.humanFriendlyDecimal : 0, + + // textRenderer: func + // function applied before rendering text + textRenderer : (config.textRenderer) ? config.textRenderer : null, + + // gaugeWidthScale : float + // width of the gauge element + gaugeWidthScale : (config.gaugeWidthScale) ? config.gaugeWidthScale : 1.0, + + // gaugeColor : string + // background color of gauge element + gaugeColor : (config.gaugeColor) ? config.gaugeColor : "#edebeb", + + // label : string + // text to show below value + label : (config.label) ? config.label : "", + + // labelFontColor : string + // color of label showing label under value + labelFontColor : (config.labelFontColor) ? config.labelFontColor : "#b3b3b3", + + // shadowOpacity : int + // 0 ~ 1 + shadowOpacity : (config.shadowOpacity) ? config.shadowOpacity : 0.2, + + // shadowSize: int + // inner shadow size + shadowSize : (config.shadowSize) ? config.shadowSize : 5, + + // shadowVerticalOffset : int + // how much shadow is offset from top + shadowVerticalOffset : (config.shadowVerticalOffset) ? config.shadowVerticalOffset : 3, + + // levelColors : string[] + // colors of indicator, from lower to upper, in RGB format + levelColors : (config.levelColors) ? config.levelColors : [ + "#a9d70b", + "#f9c802", + "#ff0000" + ], + + // startAnimationTime : int + // length of initial animation + startAnimationTime : (config.startAnimationTime) ? config.startAnimationTime : 700, + + // startAnimationType : string + // type of initial animation (linear, >, <, <>, bounce) + startAnimationType : (config.startAnimationType) ? config.startAnimationType : ">", + + // refreshAnimationTime : int + // length of refresh animation + refreshAnimationTime : (config.refreshAnimationTime) ? config.refreshAnimationTime : 700, + + // refreshAnimationType : string + // type of refresh animation (linear, >, <, <>, bounce) + refreshAnimationType : (config.refreshAnimationType) ? config.refreshAnimationType : ">", + + // donutStartAngle : int + // angle to start from when in donut mode + donutStartAngle : (config.donutStartAngle) ? config.donutStartAngle : 90, + + // valueMinFontSize : int + // absolute minimum font size for the value + valueMinFontSize : config.valueMinFontSize || 16, + + // titleMinFontSize + // absolute minimum font size for the title + titleMinFontSize : config.titleMinFontSize || 10, + + // labelMinFontSize + // absolute minimum font size for the label + labelMinFontSize : config.labelMinFontSize || 10, + + // minLabelMinFontSize + // absolute minimum font size for the minimum label + minLabelMinFontSize : config.minLabelMinFontSize || 10, + + // maxLabelMinFontSize + // absolute minimum font size for the maximum label + maxLabelMinFontSize : config.maxLabelMinFontSize || 10, + + // hideValue : bool + // hide value text + hideValue : (config.hideValue) ? config.hideValue : false, + + // hideMinMax : bool + // hide min and max values + hideMinMax : (config.hideMinMax) ? config.hideMinMax : false, + + // hideInnerShadow : bool + // hide inner shadow + hideInnerShadow : (config.hideInnerShadow) ? config.hideInnerShadow : false, + + // humanFriendly : bool + // convert large numbers for min, max, value to human friendly (e.g. 1234567 -> 1.23M) + humanFriendly : (config.humanFriendly) ? config.humanFriendly : false, + + // noGradient : bool + // whether to use gradual color change for value, or sector-based + noGradient : (config.noGradient) ? config.noGradient : false, + + // donut : bool + // show full donut gauge + donut : (config.donut) ? config.donut : false, + + // relativeGaugeSize : bool + // whether gauge size should follow changes in container element size + relativeGaugeSize : (config.relativeGaugeSize) ? config.relativeGaugeSize : false, + + // counter : bool + // animate level number change + counter : (config.counter) ? config.counter : false, + + // decimals : int + // number of digits after floating point + decimals : (config.decimals) ? config.decimals : 0, + + // customSectors : [] of objects + // number of digits after floating point + customSectors : (config.customSectors) ? config.customSectors : [] + }; + + // variables + var + canvasW, + canvasH, + widgetW, + widgetH, + aspect, + dx, + dy, + titleFontSize, + titleX, + titleY, + valueFontSize, + valueX, + valueY, + labelFontSize, + labelX, + labelY, + minFontSize, + minX, + minY, + maxFontSize, + maxX, + maxY; + + // overflow values + if (this.config.value > this.config.max) this.config.value = this.config.max; + if (this.config.value < this.config.min) this.config.value = this.config.min; + this.originalValue = config.value; + + // canvas + this.canvas = Raphael(this.config.node, "100%", "100%"); + if (this.config.relativeGaugeSize === true) { + this.canvas.setViewBox(0, 0, 200, 150, true); + } + + // canvas dimensions + if (this.config.relativeGaugeSize === true) { + canvasW = 200; + canvasH = 150; + } else { + canvasW = getStyle(this.config.node, "width").slice(0, -2) * 1; + canvasH = getStyle(this.config.node, "height").slice(0, -2) * 1; + } + + // widget dimensions + if (this.config.donut === true) { + + // DONUT ******************************* + + // width more than height + if(canvasW > canvasH) { + widgetH = canvasH; + widgetW = widgetH; + // width less than height + } else if (canvasW < canvasH) { + widgetW = canvasW; + widgetH = widgetW; + // if height don't fit, rescale both + if(widgetH > canvasH) { + aspect = widgetH / canvasH; + widgetH = widgetH / aspect; + widgetW = widgetH / aspect; + } + // equal + } else { + widgetW = canvasW; + widgetH = widgetW; + } + + // delta + dx = (canvasW - widgetW)/2; + dy = (canvasH - widgetH)/2; + + // title + titleFontSize = ((widgetH / 8) > 10) ? (widgetH / 10) : 10; + titleX = dx + widgetW / 2; + titleY = dy + widgetH / 11; + + // value + valueFontSize = ((widgetH / 6.4) > 16) ? (widgetH / 5.4) : 18; + valueX = dx + widgetW / 2; + if(this.config.label !== '') { + valueY = dy + widgetH / 1.85; + } else { + valueY = dy + widgetH / 1.7; + } + + // label + labelFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10; + labelX = dx + widgetW / 2; + labelY = valueY + labelFontSize; + + // min + minFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10; + minX = dx + (widgetW / 10) + (widgetW / 6.666666666666667 * this.config.gaugeWidthScale) / 2 ; + minY = labelY; + + // max + maxFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10; + maxX = dx + widgetW - (widgetW / 10) - (widgetW / 6.666666666666667 * this.config.gaugeWidthScale) / 2 ; + maxY = labelY; + + } else { + // HALF ******************************* + + // width more than height + if(canvasW > canvasH) { + widgetH = canvasH; + widgetW = widgetH * 1.25; + //if width doesn't fit, rescale both + if(widgetW > canvasW) { + aspect = widgetW / canvasW; + widgetW = widgetW / aspect; + widgetH = widgetH / aspect; + } + // width less than height + } else if (canvasW < canvasH) { + widgetW = canvasW; + widgetH = widgetW / 1.25; + // if height don't fit, rescale both + if(widgetH > canvasH) { + aspect = widgetH / canvasH; + widgetH = widgetH / aspect; + widgetW = widgetH / aspect; + } + // equal + } else { + widgetW = canvasW; + widgetH = widgetW * 0.75; + } + + // delta + dx = (canvasW - widgetW)/2; + dy = (canvasH - widgetH)/2; + + // title + titleFontSize = ((widgetH / 8) > this.config.titleMinFontSize) ? (widgetH / 10) : this.config.titleMinFontSize; + titleX = dx + widgetW / 2; + titleY = dy + widgetH / 6.4; + + // value + valueFontSize = ((widgetH / 6.5) > this.config.valueMinFontSize) ? (widgetH / 6.5) : this.config.valueMinFontSize; + valueX = dx + widgetW / 2; + valueY = dy + widgetH / 1.275; + + // label + labelFontSize = ((widgetH / 16) > this.config.labelMinFontSize) ? (widgetH / 16) : this.config.labelMinFontSize; + labelX = dx + widgetW / 2; + labelY = valueY + valueFontSize / 2 + 5; + + // min + minFontSize = ((widgetH / 16) > this.config.minLabelMinFontSize) ? (widgetH / 16) : this.config.minLabelMinFontSize; + minX = dx + (widgetW / 10) + (widgetW / 6.666666666666667 * this.config.gaugeWidthScale) / 2 ; + minY = labelY; + + // max + maxFontSize = ((widgetH / 16) > this.config.maxLabelMinFontSize) ? (widgetH / 16) : this.config.maxLabelMinFontSize; + maxX = dx + widgetW - (widgetW / 10) - (widgetW / 6.666666666666667 * this.config.gaugeWidthScale) / 2 ; + maxY = labelY; + } + + // parameters + this.params = { + canvasW : canvasW, + canvasH : canvasH, + widgetW : widgetW, + widgetH : widgetH, + dx : dx, + dy : dy, + titleFontSize : titleFontSize, + titleX : titleX, + titleY : titleY, + valueFontSize : valueFontSize, + valueX : valueX, + valueY : valueY, + labelFontSize : labelFontSize, + labelX : labelX, + labelY : labelY, + minFontSize : minFontSize, + minX : minX, + minY : minY, + maxFontSize : maxFontSize, + maxX : maxX, + maxY : maxY + }; + + // var clear + canvasW, canvasH, widgetW, widgetH, aspect, dx, dy, titleFontSize, titleX, titleY, valueFontSize, valueX, valueY, labelFontSize, labelX, labelY, minFontSize, minX, minY, maxFontSize, maxX, maxY = null + + // pki - custom attribute for generating gauge paths + this.canvas.customAttributes.pki = function (value, min, max, w, h, dx, dy, gws, donut) { + + var alpha, Ro, Ri, Cx, Cy, Xo, Yo, Xi, Yi, path; + + if (donut) { + alpha = (1 - 2 * (value - min) / (max - min)) * Math.PI; + Ro = w / 2 - w / 7; + Ri = Ro - w / 6.666666666666667 * gws; + + Cx = w / 2 + dx; + Cy = h / 1.95 + dy; + + Xo = w / 2 + dx + Ro * Math.cos(alpha); + Yo = h - (h - Cy) + 0 - Ro * Math.sin(alpha); + Xi = w / 2 + dx + Ri * Math.cos(alpha); + Yi = h - (h - Cy) + 0 - Ri * Math.sin(alpha); + + path += "M" + (Cx - Ri) + "," + Cy + " "; + path += "L" + (Cx - Ro) + "," + Cy + " "; + if (value > ((max - min) / 2)) { + path += "A" + Ro + "," + Ro + " 0 0 1 " + (Cx + Ro) + "," + Cy + " "; + } + path += "A" + Ro + "," + Ro + " 0 0 1 " + Xo + "," + Yo + " "; + path += "L" + Xi + "," + Yi + " "; + if (value > ((max - min) / 2)) { + path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx + Ri) + "," + Cy + " "; + } + path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx - Ri) + "," + Cy + " "; + path += "Z "; + + return { path: path }; + + } else { + alpha = (1 - (value - min) / (max - min)) * Math.PI; + Ro = w / 2 - w / 10; + Ri = Ro - w / 6.666666666666667 * gws; + + Cx = w / 2 + dx; + Cy = h / 1.25 + dy; + + Xo = w / 2 + dx + Ro * Math.cos(alpha); + Yo = h - (h - Cy) + 0 - Ro * Math.sin(alpha); + Xi = w / 2 + dx + Ri * Math.cos(alpha); + Yi = h - (h - Cy) + 0 - Ri * Math.sin(alpha); + + path += "M" + (Cx - Ri) + "," + Cy + " "; + path += "L" + (Cx - Ro) + "," + Cy + " "; + path += "A" + Ro + "," + Ro + " 0 0 1 " + Xo + "," + Yo + " "; + path += "L" + Xi + "," + Yi + " "; + path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx - Ri) + "," + Cy + " "; + path += "Z "; + + return { path: path }; + } + + // var clear + alpha, Ro, Ri, Cx, Cy, Xo, Yo, Xi, Yi, path = null; + }; + + // gauge + this.gauge = this.canvas.path().attr({ + "stroke": "none", + "fill": this.config.gaugeColor, + pki: [this.config.max, this.config.min, this.config.max, this.params.widgetW, this.params.widgetH, this.params.dx, this.params.dy, this.config.gaugeWidthScale, this.config.donut] + }); + this.gauge.id = this.config.id+"-gauge"; + + // level + this.level = this.canvas.path().attr({ + "stroke": "none", + "fill": getColor(this.config.value, (this.config.value - this.config.min) / (this.config.max - this.config.min), this.config.levelColors, this.config.noGradient, this.config.customSectors), + pki: [this.config.min, this.config.min, this.config.max, this.params.widgetW, this.params.widgetH, this.params.dx, this.params.dy, this.config.gaugeWidthScale, this.config.donut] + }); + if(this.config.donut) { + this.level.transform("r" + this.config.donutStartAngle + ", " + (this.params.widgetW/2 + this.params.dx) + ", " + (this.params.widgetH/1.95 + this.params.dy)); + } + this.level.id = this.config.id+"-level"; + + // title + this.txtTitle = this.canvas.text(this.params.titleX, this.params.titleY, this.config.title); + this.txtTitle.attr({ + "font-size":this.params.titleFontSize, + "font-weight":"bold", + "font-family":"Arial", + "fill":this.config.titleFontColor, + "fill-opacity":"1" + }); + setDy(this.txtTitle, this.params.titleFontSize, this.params.titleY); + this.txtTitle.id = this.config.id+"-txttitle"; + + // value + this.txtValue = this.canvas.text(this.params.valueX, this.params.valueY, 0); + this.txtValue.attr({ + "font-size":this.params.valueFontSize, + "font-weight":"bold", + "font-family":"Arial", + "fill":this.config.valueFontColor, + "fill-opacity":"0" + }); + setDy(this.txtValue, this.params.valueFontSize, this.params.valueY); + this.txtValue.id = this.config.id+"-txtvalue"; + + // label + this.txtLabel = this.canvas.text(this.params.labelX, this.params.labelY, this.config.label); + this.txtLabel.attr({ + "font-size":this.params.labelFontSize, + "font-weight":"normal", + "font-family":"Arial", + "fill":this.config.labelFontColor, + "fill-opacity":"0" + }); + setDy(this.txtLabel, this.params.labelFontSize, this.params.labelY); + this.txtLabel.id = this.config.id+"-txtlabel"; + + // min + this.txtMinimum = this.config.min; + if( this.config.humanFriendly ) this.txtMinimum = humanFriendlyNumber( this.config.min, this.config.humanFriendlyDecimal ); + this.txtMin = this.canvas.text(this.params.minX, this.params.minY, this.txtMinimum); + this.txtMin.attr({ + "font-size":this.params.minFontSize, + "font-weight":"normal", + "font-family":"Arial", + "fill":this.config.labelFontColor, + "fill-opacity": (this.config.hideMinMax || this.config.donut)? "0" : "1" + }); + setDy(this.txtMin, this.params.minFontSize, this.params.minY); + this.txtMin.id = this.config.id+"-txtmin"; + + // max + this.txtMaximum = this.config.max; + if( this.config.humanFriendly ) this.txtMaximum = humanFriendlyNumber( this.config.max, this.config.humanFriendlyDecimal ); + this.txtMax = this.canvas.text(this.params.maxX, this.params.maxY, this.txtMaximum); + this.txtMax.attr({ + "font-size":this.params.maxFontSize, + "font-weight":"normal", + "font-family":"Arial", + "fill":this.config.labelFontColor, + "fill-opacity": (this.config.hideMinMax || this.config.donut)? "0" : "1" + }); + setDy(this.txtMax, this.params.maxFontSize, this.params.maxY); + this.txtMax.id = this.config.id+"-txtmax"; + + var defs = this.canvas.canvas.childNodes[1]; + var svg = "http://www.w3.org/2000/svg"; + + if (ie < 9) { + onCreateElementNsReady(function() { + this.generateShadow(svg, defs); + }); + } else { + this.generateShadow(svg, defs); + } + + // var clear + defs, svg = null; + + // execute on each animation frame + function onAnimate() { + if (obj.config.counter) { + var currentValue = obj.level.attr("pki"); + + if(obj.config.textRenderer) { + // this.originalValue = this.config.textRenderer(this.originalValue); + obj.txtValue.attr("text", obj.config.textRenderer(Math.floor(currentValue[0]))); + } else if(obj.config.humanFriendly) { + // this.originalValue = humanFriendlyNumber( this.originalValue, this.config.humanFriendlyDecimal ) + this.config.symbol; + obj.txtValue.attr("text", humanFriendlyNumber( Math.floor(currentValue[0]), obj.config.humanFriendlyDecimal ) + obj.config.symbol); + } else { + // this.originalValue += this.config.symbol; + obj.txtValue.attr("text", (currentValue[0] * 1).toFixed(obj.config.decimals) + obj.config.symbol); + } + + setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY); + currentValue = null; + } + } + + if(!obj.config.counter) { + if(obj.config.textRenderer) { + obj.originalValue = obj.config.textRenderer(obj.originalValue); + } else if(obj.config.humanFriendly) { + obj.originalValue = humanFriendlyNumber( obj.originalValue, obj.config.humanFriendlyDecimal ) + obj.config.symbol; + } else { + obj.originalValue = (obj.originalValue * 1).toFixed(obj.config.decimals) + obj.config.symbol; + } + + obj.txtValue.attr("text", obj.originalValue); + setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY); + } + + //event fired on each animation frame + eve.on("raphael.anim.frame.*", onAnimate); + + // animate gauge level + this.level.animate({pki: [this.config.value, this.config.min, this.config.max, this.params.widgetW, this.params.widgetH, this.params.dx, this.params.dy, this.config.gaugeWidthScale, this.config.donut]}, this.config.startAnimationTime, this.config.startAnimationType); + + // animate value + this.txtValue.animate({"fill-opacity":"1"}, this.config.startAnimationTime, this.config.startAnimationType); + + // animate label + this.txtLabel.animate({"fill-opacity":"1"}, this.config.startAnimationTime, this.config.startAnimationType); +}; + +/** Refresh gauge level */ +JustGage.prototype.refresh = function(val, max) { + + var originalVal, displayVal, color, max = max || null; + + // set new max + if(max !== null) { + this.config.max = max; + + this.txtMaximum = this.config.max; + if( this.config.humanFriendly ) this.txtMaximum = humanFriendlyNumber( this.config.max, this.config.humanFriendlyDecimal ); + this.txtMax.attr({"text" : this.config.max}); + setDy(this.txtMax, this.params.maxFontSize, this.params.maxY); + } + + // overflow values + originalVal = val; + displayVal = val; + if ((val * 1) > (this.config.max * 1)) {val = (this.config.max * 1);} + if ((val * 1) < (this.config.min * 1)) {val = (this.config.min * 1);} + + color = getColor(val, (val - this.config.min) / (this.config.max - this.config.min), this.config.levelColors, this.config.noGradient, this.config.customSectors); + + if(this.config.textRenderer) { + displayVal = this.config.textRenderer(displayVal); + } else if( this.config.humanFriendly ) { + displayVal = humanFriendlyNumber( displayVal, this.config.humanFriendlyDecimal ) + this.config.symbol; + } else { + displayVal = (displayVal * 1).toFixed(this.config.decimals) + this.config.symbol; + } + + if(!this.config.counter) { + this.canvas.getById(this.config.id+"-txtvalue").attr({"text":displayVal}); + setDy(this.canvas.getById(this.config.id+"-txtvalue"), this.params.valueFontSize, this.params.valueY); + } + + this.canvas.getById(this.config.id+"-level").animate({pki: [val, this.config.min, this.config.max, this.params.widgetW, this.params.widgetH, this.params.dx, this.params.dy, this.config.gaugeWidthScale, this.config.donut], "fill":color}, this.config.refreshAnimationTime, this.config.refreshAnimationType); + this.config.value = val * 1; + + // var clear + originalVal, displayVal, color, max = null; +}; + +/** Generate shadow */ +JustGage.prototype.generateShadow = function(svg, defs) { + + var gaussFilter, feOffset, feGaussianBlur, feComposite1, feFlood, feComposite2, feComposite3; + + // FILTER + gaussFilter=document.createElementNS(svg,"filter"); + gaussFilter.setAttribute("id", this.config.id + "-inner-shadow"); + defs.appendChild(gaussFilter); + + // offset + feOffset = document.createElementNS(svg,"feOffset"); + feOffset.setAttribute("dx", 0); + feOffset.setAttribute("dy", this.config.shadowVerticalOffset); + gaussFilter.appendChild(feOffset); + + // blur + feGaussianBlur = document.createElementNS(svg,"feGaussianBlur"); + feGaussianBlur.setAttribute("result","offset-blur"); + feGaussianBlur.setAttribute("stdDeviation", this.config.shadowSize); + gaussFilter.appendChild(feGaussianBlur); + + // composite 1 + feComposite1 = document.createElementNS(svg,"feComposite"); + feComposite1.setAttribute("operator","out"); + feComposite1.setAttribute("in", "SourceGraphic"); + feComposite1.setAttribute("in2","offset-blur"); + feComposite1.setAttribute("result","inverse"); + gaussFilter.appendChild(feComposite1); + + // flood + feFlood = document.createElementNS(svg,"feFlood"); + feFlood.setAttribute("flood-color","black"); + feFlood.setAttribute("flood-opacity", this.config.shadowOpacity); + feFlood.setAttribute("result","color"); + gaussFilter.appendChild(feFlood); + + // composite 2 + feComposite2 = document.createElementNS(svg,"feComposite"); + feComposite2.setAttribute("operator","in"); + feComposite2.setAttribute("in", "color"); + feComposite2.setAttribute("in2","inverse"); + feComposite2.setAttribute("result","shadow"); + gaussFilter.appendChild(feComposite2); + + // composite 3 + feComposite3 = document.createElementNS(svg,"feComposite"); + feComposite3.setAttribute("operator","over"); + feComposite3.setAttribute("in", "shadow"); + feComposite3.setAttribute("in2","SourceGraphic"); + gaussFilter.appendChild(feComposite3); + + // set shadow + if (!this.config.hideInnerShadow) { + this.canvas.canvas.childNodes[2].setAttribute("filter", "url(#" + this.config.id + "-inner-shadow)"); + this.canvas.canvas.childNodes[3].setAttribute("filter", "url(#" + this.config.id + "-inner-shadow)"); + } + + // var clear + gaussFilter, feOffset, feGaussianBlur, feComposite1, feFlood, feComposite2, feComposite3 = null; + +}; + +/** Get color for value */ +function getColor(val, pct, col, noGradient, custSec) { + + var no, inc, colors, percentage, rval, gval, bval, lower, upper, range, rangePct, pctLower, pctUpper, color; + var noGradient = noGradient || custSec.length > 0; + + if(custSec.length > 0) { + for(var i = 0; i < custSec.length; i++) { + if(val > custSec[i].lo && val <= custSec[i].hi) { + return custSec[i].color; + } + } + } + + no = col.length; + if (no === 1) return col[0]; + inc = (noGradient) ? (1 / no) : (1 / (no - 1)); + colors = []; + for (var i = 0; i < col.length; i++) { + percentage = (noGradient) ? (inc * (i + 1)) : (inc * i); + rval = parseInt((cutHex(col[i])).substring(0,2),16); + gval = parseInt((cutHex(col[i])).substring(2,4),16); + bval = parseInt((cutHex(col[i])).substring(4,6),16); + colors[i] = { pct: percentage, color: { r: rval, g: gval, b: bval } }; + } + + if(pct === 0) { + return 'rgb(' + [colors[0].color.r, colors[0].color.g, colors[0].color.b].join(',') + ')'; + } + + for (var j = 0; j < colors.length; j++) { + if (pct <= colors[j].pct) { + if (noGradient) { + return 'rgb(' + [colors[j].color.r, colors[j].color.g, colors[j].color.b].join(',') + ')'; + } else { + lower = colors[j - 1]; + upper = colors[j]; + range = upper.pct - lower.pct; + rangePct = (pct - lower.pct) / range; + pctLower = 1 - rangePct; + pctUpper = rangePct; + color = { + r: Math.floor(lower.color.r * pctLower + upper.color.r * pctUpper), + g: Math.floor(lower.color.g * pctLower + upper.color.g * pctUpper), + b: Math.floor(lower.color.b * pctLower + upper.color.b * pctUpper) + }; + return 'rgb(' + [color.r, color.g, color.b].join(',') + ')'; + } + } + } + +} + +/** Fix Raphael display:none tspan dy attribute bug */ +function setDy(elem, fontSize, txtYpos) { + if ((!ie || ie > 9) && (elem.node.firstChild.attributes.dy)) { + elem.node.firstChild.attributes.dy.value = 0; + } +} + +/** Random integer */ +function getRandomInt (min, max) { + return Math.floor(Math.random() * (max - min + 1)) + min; +} + +/** Cut hex */ +function cutHex(str) { + return (str.charAt(0)=="#") ? str.substring(1,7):str; +} + +/** Human friendly number suffix - From: http://stackoverflow.com/questions/2692323/code-golf-friendly-number-abbreviator */ +function humanFriendlyNumber( n, d ) { + var p, d2, i, s; + + p = Math.pow; + d2 = p(10, d); + i = 7; + while( i ) { + s = p(10,i--*3); + if( s <= n ) { + n = Math.round(n*d2/s)/d2+"KMGTPE"[i]; + } + } + return n; +} + +/** Get style */ +function getStyle(oElm, strCssRule){ + var strValue = ""; + if(document.defaultView && document.defaultView.getComputedStyle){ + strValue = document.defaultView.getComputedStyle(oElm).getPropertyValue(strCssRule); + } + else if(oElm.currentStyle){ + strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){ + return p1.toUpperCase(); + }); + strValue = oElm.currentStyle[strCssRule]; + } + return strValue; +} + +/** Create Element NS Ready */ +function onCreateElementNsReady(func) { + if (document.createElementNS !== undefined) { + func(); + } else { + setTimeout(function() { onCreateElementNsReady(func); }, 100); + } +} + +/** Get IE version */ +// ---------------------------------------------------------- +// A short snippet for detecting versions of IE in JavaScript +// without resorting to user-agent sniffing +// ---------------------------------------------------------- +// If you're not in IE (or IE version is less than 5) then: +// ie === undefined +// If you're in IE (>=5) then you can determine which version: +// ie === 7; // IE7 +// Thus, to detect IE: +// if (ie) {} +// And to detect the version: +// ie === 6 // IE6 +// ie > 7 // IE8, IE9 ... +// ie < 9 // Anything less than IE9 +// ---------------------------------------------------------- +// UPDATE: Now using Live NodeList idea from @jdalton +var ie = (function(){ + + var undef, + v = 3, + div = document.createElement('div'), + all = div.getElementsByTagName('i'); + + while ( + div.innerHTML = '', + all[0] + ); + return v > 4 ? v : undef; +}()); \ No newline at end of file diff --git a/addons/sale_crm/static/src/js/sale_crm.js b/addons/sale_crm/static/src/js/sale_crm.js new file mode 100644 index 00000000000..207ac959af3 --- /dev/null +++ b/addons/sale_crm/static/src/js/sale_crm.js @@ -0,0 +1,108 @@ +openerp.sale_crm = function(openerp) { +var _t = openerp.web._t; + +openerp.sale_crm.GaugeWidget = openerp.web_kanban.AbstractField.extend({ + className: "oe_gage", + start: function() { + var self = this; + + var parent = this.getParent(); + var max = this.options.max_field ? parent.record[this.options.max_field].raw_value : 100; + var label = this.options.label_field ? parent.record[this.options.label_field].raw_value : ""; + var title = this.$node.html(); + var val = this.field.value; + var value = _.isArray(val) && val.length ? val[val.length-1]['value'] : val; + var unique_id = _.uniqueId("JustGage"); + + this.$el.empty() + .attr('style', this.$node.attr('style') + ';position:relative; display:inline-block;') + .attr('id', unique_id); + this.gage = new JustGage({ + id: unique_id, + node: this.$el[0], + title: title, + value: value, + min: 0, + max: max, + relativeGaugeSize: true, + humanFriendly: true, + titleFontColor: '#333333', + valueFontColor: '#333333', + labelFontColor: '#000', + label: label, + levelColors: [ + "#ff0000", + "#f9c802", + "#a9d70b" + ], + }); + + var flag_open = false; + if (self.options.action_change) { + var $svg = self.$el.find('svg'); + var css = { + 'text-align': 'center', + 'position': 'absolute', + 'width': self.$el.outerWidth() + 'px', + 'top': (self.$el.outerHeight()/2-5) + 'px' + }; + + self.$el.click(function (event) { + event.stopPropagation(); + flag_open = false; + if (!parent.view.is_action_enabled('edit')) { + return; + } + if (!self.$el.find(".oe_justgage_edit").size()) { + $div = $('
'); + $div.css(css); + $input = $('').val(value); + $input.css({ + 'text-align': 'center', + 'margin': 'auto', + 'width': ($svg.outerWidth()-40) + 'px' + }); + $div.append($input); + self.$el.prepend($div) + $input.focus() + .keydown(function (event) { + event.stopPropagation(); + if (event.keyCode == 13 || event.keyCode == 9) { + if ($input.val() != value) { + parent.view.dataset.call(self.options.action_change, [parent.id, $input.val()]).then(function () { + parent.do_reload(); + }); + } else { + $div.remove(); + } + } + }) + .click(function (event) { + event.stopPropagation(); + flag_open = false; + }) + .blur(function (event) { + if(!flag_open) { + self.$el.find(".oe_justgage_edit").remove(); + } else { + flag_open = false; + setTimeout(function () {$input.focus();}, 0); + } + }); + } + }).mousedown(function () { + flag_open = true; + }); + + if (!+value) { + $svg.fadeTo(0, 0.3); + $div = $('
').text(_t("Click to change value")); + $div.css(css); + self.$el.append($div); + } + } + }, +}); +openerp.web_kanban.fields_registry.add("gage", "openerp.sale_crm.GaugeWidget"); + +}; diff --git a/addons/sale_crm/wizard/crm_make_sale.py b/addons/sale_crm/wizard/crm_make_sale.py index 6bea6286456..da770af6d82 100644 --- a/addons/sale_crm/wizard/crm_make_sale.py +++ b/addons/sale_crm/wizard/crm_make_sale.py @@ -87,7 +87,7 @@ class crm_make_sale(osv.osv_memory): ['default', 'invoice', 'delivery', 'contact']) pricelist = partner.property_product_pricelist.id if False in partner_addr.values(): - raise osv.except_osv(_('Insufficient Data!'), _('No addresse(s) defined for this customer.')) + raise osv.except_osv(_('Insufficient Data!'), _('No address(es) defined for this customer.')) vals = { 'origin': _('Opportunity: %s') % str(case.id), diff --git a/addons/sale_journal/i18n/ru.po b/addons/sale_journal/i18n/ru.po index b4830dcfcd7..9a4370f5d61 100644 --- a/addons/sale_journal/i18n/ru.po +++ b/addons/sale_journal/i18n/ru.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" -"PO-Revision-Date: 2011-01-20 08:56+0000\n" +"PO-Revision-Date: 2013-06-05 11:29+0000\n" "Last-Translator: Chertykov Denis \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: 2013-03-16 05:27+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-06-06 05:21+0000\n" +"X-Generator: Launchpad (build 16667)\n" #. module: sale_journal #: field:sale_journal.invoice.type,note:0 @@ -31,6 +31,8 @@ msgstr "Способ выставления счета" msgid "" "This invoicing type will be used, by default, to invoice the current partner." msgstr "" +"Этот тип счета будет использоваться по умолчанию для выставления текущего " +"счета партнера." #. module: sale_journal #: view:res.partner:0 @@ -45,7 +47,7 @@ msgstr "Выставление счета" #. module: sale_journal #: model:ir.model,name:sale_journal.model_stock_picking_in msgid "Incoming Shipments" -msgstr "" +msgstr "Поступающие ТМЦ" #. module: sale_journal #: help:sale_journal.invoice.type,active:0 @@ -103,7 +105,7 @@ msgstr "" #. module: sale_journal #: help:sale.order,invoice_type_id:0 msgid "Generate invoice based on the selected option." -msgstr "" +msgstr "Генерировать счет на основе выбранного варианта." #. module: sale_journal #: view:sale.order:0 @@ -137,7 +139,7 @@ msgstr "Заказ продаж" #. module: sale_journal #: model:ir.model,name:sale_journal.model_stock_picking_out msgid "Delivery Orders" -msgstr "" +msgstr "Заказы доставки" #~ msgid "Monthly sales" #~ msgstr "Продажи в месяце" diff --git a/addons/sale_margin/i18n/ru.po b/addons/sale_margin/i18n/ru.po index 7c764c89223..cac4fe13548 100644 --- a/addons/sale_margin/i18n/ru.po +++ b/addons/sale_margin/i18n/ru.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" -"PO-Revision-Date: 2011-01-20 08:51+0000\n" +"PO-Revision-Date: 2013-06-04 13:50+0000\n" "Last-Translator: Chertykov Denis \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-16 05:40+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-06-05 05:32+0000\n" +"X-Generator: Launchpad (build 16660)\n" #. module: sale_margin #: field:sale.order.line,purchase_price:0 @@ -44,6 +44,7 @@ msgid "" "It gives profitability by calculating the difference between the Unit Price " "and the cost price." msgstr "" +"Дает прибыльность как разницу между стоимостью единицы и себестоимостью." #~ msgid "Customer Invoice" #~ msgstr "Счета клиентам" diff --git a/addons/sale_margin/sale_margin_view.xml b/addons/sale_margin/sale_margin_view.xml index 88647ea3c46..be16429526a 100644 --- a/addons/sale_margin/sale_margin_view.xml +++ b/addons/sale_margin/sale_margin_view.xml @@ -9,7 +9,7 @@ - + diff --git a/addons/sale_stock/i18n/ru.po b/addons/sale_stock/i18n/ru.po index f5c54417077..28f156fb871 100644 --- a/addons/sale_stock/i18n/ru.po +++ b/addons/sale_stock/i18n/ru.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" -"PO-Revision-Date: 2013-01-04 16:04+0000\n" +"PO-Revision-Date: 2013-06-06 11:30+0000\n" "Last-Translator: Chertykov Denis \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: 2013-03-16 05:51+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-06-07 05:48+0000\n" +"X-Generator: Launchpad (build 16667)\n" #. module: sale_stock #: help:sale.config.settings,group_invoice_deli_orders:0 @@ -22,11 +22,13 @@ msgid "" "To allow your salesman to make invoices for Delivery Orders using the menu " "'Deliveries to Invoice'." msgstr "" +"Позволяет вашему продавцу создавать счета для заказов доставки используя " +"меню \"Доставки в счета\"." #. module: sale_stock #: model:process.node,name:sale_stock.process_node_deliveryorder0 msgid "Delivery Order" -msgstr "Заказ на доставку" +msgstr "Заказ доставки" #. module: sale_stock #: model:ir.actions.act_window,name:sale_stock.outgoing_picking_list_to_invoice @@ -86,12 +88,12 @@ msgstr "" #. module: sale_stock #: model:process.transition,name:sale_stock.process_transition_saleprocurement0 msgid "Create Procurement Order" -msgstr "Создать заказ на снабжение" +msgstr "Создать заказ снабжения" #. module: sale_stock #: field:stock.picking.out,sale_id:0 msgid "Sale Order" -msgstr "Заказ" +msgstr "Заказ продажи" #. module: sale_stock #: model:process.transition,note:sale_stock.process_transition_saleorderprocurement0 @@ -99,8 +101,8 @@ msgid "" "For every sales order line, a procurement order is created to supply the " "sold product." msgstr "" -"Для каждой позиции заказа на продажу создается заказ на снабжение для " -"поставки проданных ТМЦ." +"Для каждой позиции заказа продаж создается заказ снабжения для поставки " +"проданных ТМЦ." #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:615 @@ -129,8 +131,7 @@ msgstr "Магазин" #. module: sale_stock #: model:process.node,note:sale_stock.process_node_saleorderprocurement0 msgid "Drives procurement orders for every sales order line." -msgstr "" -"Управление заказами на снабжение для каждой позиции заказа на продажу." +msgstr "Управление заказами снабжения для каждой позиции заказа продаж." #. module: sale_stock #: model:ir.model,name:sale_stock.model_stock_move @@ -151,7 +152,7 @@ msgstr "Табель проекта" #. module: sale_stock #: field:sale.config.settings,group_sale_delivery_address:0 msgid "Allow a different address for delivery and invoicing " -msgstr "" +msgstr "Разрешить различные адреса для доставки и выставления счета " #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:546 @@ -163,18 +164,18 @@ msgstr "Ошибка конфигурации!" #. module: sale_stock #: model:process.node,name:sale_stock.process_node_saleprocurement0 msgid "Procurement Order" -msgstr "Заказ на закупку" +msgstr "Заказ снабжения" #. module: sale_stock #: selection:sale.config.settings,default_order_policy:0 msgid "Invoice based on deliveries" -msgstr "Счет основанный на отгрузке" +msgstr "Счет основанный на доставках" #. module: sale_stock #: model:ir.model,name:sale_stock.model_sale_order #: field:stock.picking,sale_id:0 msgid "Sales Order" -msgstr "Заказ на продажу" +msgstr "Заказ продаж" #. module: sale_stock #: model:ir.model,name:sale_stock.model_stock_picking_out @@ -185,7 +186,7 @@ msgstr "Заказы доставки" #: model:ir.model,name:sale_stock.model_sale_order_line #: field:stock.move,sale_line_id:0 msgid "Sales Order Line" -msgstr "Позиция заказа на продажу" +msgstr "Позиция заказа продаж" #. module: sale_stock #: model:process.transition,note:sale_stock.process_transition_packing0 @@ -195,11 +196,11 @@ msgid "" "parts to the sales order. There is 1 pick list by sales order line which " "evolves with the availability of parts." msgstr "" -"Форма комплектовочного листа создастся как только заказ на продажу будет " -"подтвержден, в одно время с заказом на снабжение. Он представляет собой " -"определение комплектующих для заказа на продажу. Один комплектовочный лист " -"на позицию заказа на продажу, который будет меняться в соответствии с " -"наличием комплектующих." +"Форма комплектовочного листа создастся как только заказ продаж будет " +"подтвержден, в одно время с заказом снабжения. Он представляет собой " +"определение комплектующих для заказа продаж. Один комплектовочный лист на " +"позицию заказа продаж, который будет меняться в соответствии с наличием " +"комплектующих." #. module: sale_stock #: help:res.company,security_lead:0 @@ -240,7 +241,7 @@ msgstr "Документ перемещения к заказчику." #. module: sale_stock #: view:sale.order:0 msgid "View Delivery Order" -msgstr "" +msgstr "Вид заказа доставки" #. module: sale_stock #: field:sale.order.line,move_ids:0 @@ -276,7 +277,7 @@ msgstr "Снабжение" #: field:sale.report,shipped:0 #: field:sale.report,shipped_qty_1:0 msgid "Shipped" -msgstr "Доставлено" +msgstr "Отправлено" #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:240 @@ -292,24 +293,24 @@ msgid "" "production of products regarding to the rules and to the sales order's " "parameters. " msgstr "" -"Заказ на снабжение создастся автоматически как только заказ на продажу будет " +"Заказ снабжения создастся автоматически как только заказ продаж будет " "подтвержден или счет будет оплачен. Он определяет закупку и производство ТМЦ " -"по правилам и параметрам заказа на продажу. " +"по правилам и параметрам заказа продаж. " #. module: sale_stock #: help:sale.config.settings,group_mrp_properties:0 msgid "Allows you to tag sales order lines with properties." -msgstr "" +msgstr "Позволяет отмечать тегами позиции заказа продажи со свойствами" #. module: sale_stock #: field:sale.config.settings,group_invoice_deli_orders:0 msgid "Generate invoices after and based on delivery orders" -msgstr "" +msgstr "Генерировать счета после и из заказов доставки" #. module: sale_stock #: field:sale.config.settings,module_delivery:0 msgid "Allow adding shipping costs" -msgstr "" +msgstr "Позволяет добавлять стоимость доставки" #. module: sale_stock #: view:sale.order:0 @@ -327,6 +328,8 @@ msgid "" "International Commercial Terms are a series of predefined commercial terms " "used in international transactions." msgstr "" +"Международные правила по толкованию наиболее широко используемых торговых " +"терминов в области внешней торговли." #. module: sale_stock #: help:sale.config.settings,module_delivery:0 @@ -345,7 +348,7 @@ msgstr "Доставка всего сразу, если все готово." #. module: sale_stock #: model:res.groups,name:sale_stock.group_invoice_deli_orders msgid "Enable Invoicing Delivery orders" -msgstr "" +msgstr "Разрешить выставлять счета на заказы доставки" #. module: sale_stock #: field:res.company,security_lead:0 @@ -362,6 +365,8 @@ msgstr "Закупка проданного материала" msgid "" "Pick 'Deliver each product when available' if you allow partial delivery." msgstr "" +"Выбрать \"Доставить каждый товар по готовности\" если вы разрешили частичную " +"доставки" #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:206 @@ -380,7 +385,7 @@ msgid "" "It indicates that the sales order has been delivered. This field is updated " "only after the scheduler(s) have been launched." msgstr "" -"Показывает, что заказ на продажу был доставлен. Это поле обновляется только " +"Показывает, что заказ продаж был доставлен. Это поле обновляется только " "после запуска планировщика." #. module: sale_stock @@ -398,12 +403,12 @@ msgstr "Свойства изделия в позиции заказа" msgid "" "You can generate invoices based on sales orders or based on shippings." msgstr "" -"Вы можете создать счет на основе заказов на продажу или на основе доставок." +"Вы можете создать счет на основе заказов продаж или на основе доставок." #. module: sale_stock #: model:ir.model,name:sale_stock.model_sale_report msgid "Sales Orders Statistics" -msgstr "Статистика заказов на продажу" +msgstr "Статистика заказов продаж" #. module: sale_stock #: model:ir.model,name:sale_stock.model_res_company @@ -428,6 +433,8 @@ msgid "" "Allows you to specify different delivery and invoice addresses on a sales " "order." msgstr "" +"Позволяет задавать разные адреса для доставки и выставления счета в заказе " +"продажи." #. module: sale_stock #: model:process.node,note:sale_stock.process_node_saleprocurement0 @@ -435,7 +442,7 @@ msgid "" "One Procurement order for each sales order line and for each of the " "components." msgstr "" -"Один заказ на снабжение для каждой позиции заказа на продажу и для каждого " +"Один заказ снабжения для каждой позиции заказа продаж и для каждого " "компонента." #. module: sale_stock @@ -455,6 +462,7 @@ msgid "" "Number of days between the order confirmation and the shipping of the " "products to the customer" msgstr "" +"Количество дней между подтверждением заказа и отгрузкой продукции заказчику" #. module: sale_stock #: help:sale.config.settings,default_picking_policy:0 @@ -467,7 +475,7 @@ msgstr "" #. module: sale_stock #: selection:sale.config.settings,default_order_policy:0 msgid "Invoice based on sales orders" -msgstr "" +msgstr "Счет основан на заказах продаж" #. module: sale_stock #: model:process.node,name:sale_stock.process_node_invoiceafterdelivery0 @@ -487,6 +495,9 @@ msgid "" "In order to delete a confirmed sales order, you must cancel it.\n" "To do so, you must first cancel related picking for delivery orders." msgstr "" +"Для того, чтобы удалить подтвержденный заказ, вы должны отменить его.\n" +"Чтобы сделать это, Вы должны сначала отменить комплектование для заказов " +"доставки." #. module: sale_stock #: field:sale.order.line,number_packages:0 @@ -506,7 +517,7 @@ msgstr "Создать счет" #. module: sale_stock #: field:sale.config.settings,task_work:0 msgid "Prepare invoices based on task's activities" -msgstr "" +msgstr "Подготовка счетов основанных на действиях по задачам" #. module: sale_stock #: model:ir.model,name:sale_stock.model_sale_advance_payment_inv @@ -519,7 +530,7 @@ msgstr "Счет на авансовый платеж" msgid "You must first cancel stock moves attached to this sales order line." msgstr "" "Сначала вы должны отменить перемещения ТМЦ связанные с этой позицией заказа " -"на продажу." +"продаж." #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:535 @@ -536,7 +547,7 @@ msgstr "Инкотерм" #: code:addons/sale_stock/sale_stock.py:496 #, python-format msgid "Cannot cancel sales order line!" -msgstr "" +msgstr "Нельзя отменить позицию заказа продаж!" #. module: sale_stock #: model:process.transition.action,name:sale_stock.process_transition_action_cancelassignation0 @@ -551,7 +562,7 @@ msgstr "На основании отгруженного или заказанн #. module: sale_stock #: selection:sale.order,picking_policy:0 msgid "Deliver all products at once" -msgstr "Отгрузка всех товаров за раз" +msgstr "Доставка всех товаров за раз" #. module: sale_stock #: field:sale.order,picking_ids:0 @@ -561,7 +572,7 @@ msgstr "Связанное комплектование" #. module: sale_stock #: model:ir.model,name:sale_stock.model_sale_config_settings msgid "sale.config.settings" -msgstr "" +msgstr "sale.config.settings" #. module: sale_stock #: help:sale.order,picking_ids:0 @@ -569,21 +580,22 @@ msgid "" "This is a list of delivery orders that has been generated for this sales " "order." msgstr "" +"Это список заказов доставки который был создан для этого заказа продажи." #. module: sale_stock #: model:process.node,name:sale_stock.process_node_saleorderprocurement0 msgid "Sales Order Requisition" -msgstr "Запрос заказа на продажу" +msgstr "Запрос заказа продаж" #. module: sale_stock #: model:process.transition,name:sale_stock.process_transition_deliver0 msgid "Create Delivery Order" -msgstr "Создать заказ на доставку" +msgstr "Создать заказ доставки" #. module: sale_stock #: view:sale.order:0 msgid "Ignore Exception" -msgstr "Игнорировать исключение" +msgstr "Игнорировать исключительную ситуацию" #. module: sale_stock #: code:addons/sale_stock/sale_stock.py:588 @@ -598,12 +610,12 @@ msgstr "" #. module: sale_stock #: view:sale.order:0 msgid "Recreate Delivery Order" -msgstr "" +msgstr "Воссоздать заказ доставки" #. module: sale_stock #: help:sale.config.settings,group_multiple_shops:0 msgid "This allows to configure and use multiple shops." -msgstr "" +msgstr "Это позволяет настроить и использовать несколько магазинов." #. module: sale_stock #: field:sale.order,picked_rate:0 @@ -628,5 +640,5 @@ msgid "" "automatically." msgstr "" "В зависимости от настройки исходящего места хранения, перемещение между " -"зоной отгрузки и заказчиком выполняется с помощью заказа на доставку вручную " +"зоной отгрузки и заказчиком выполняется с помощью заказа доставки вручную " "или автоматически." diff --git a/addons/sale_stock/process/sale_stock_process.xml b/addons/sale_stock/process/sale_stock_process.xml index c10b34c8866..1ebebec7809 100644 --- a/addons/sale_stock/process/sale_stock_process.xml +++ b/addons/sale_stock/process/sale_stock_process.xml @@ -72,40 +72,40 @@ - - + + - - + + - - + + - - + + - - + +