diff --git a/addons/account/account.py b/addons/account/account.py index bf072507aa0..ab3d065421f 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -155,6 +155,7 @@ class account_account_type(osv.osv): return res def _save_report_type(self, cr, uid, account_type_id, field_name, field_value, arg, context=None): + field_value = field_value or 'none' obj_data = self.pool.get('ir.model.data') obj_financial_report = self.pool.get('account.financial.report') #unlink if it exists somewhere in the financial reports related to BS or PL @@ -596,10 +597,7 @@ class account_account(osv.osv): return res def copy(self, cr, uid, id, default=None, context=None, done_list=None, local=False): - if default is None: - default = {} - else: - default = default.copy() + default = {} if default is None else default.copy() if done_list is None: done_list = [] account = self.browse(cr, uid, id, context=context) @@ -781,10 +779,7 @@ class account_journal(osv.osv): ] def copy(self, cr, uid, id, default=None, context=None, done_list=None, local=False): - if default is None: - default = {} - else: - default = default.copy() + default = {} if default is None else default.copy() if done_list is None: done_list = [] journal = self.browse(cr, uid, id, context=context) @@ -1185,6 +1180,7 @@ class account_fiscalyear(osv.osv): } def copy(self, cr, uid, id, default=None, context=None): + default = {} if default is None else default.copy() default.update({ 'period_ids': [], 'end_journal_period_id': False @@ -1444,14 +1440,8 @@ class account_move(osv.osv): return result def copy(self, cr, uid, id, default=None, context=None): - if context is None: - default = {} - else: - default = default.copy() - if context is None: - context = {} - else: - context = context.copy() + default = {} if default is None else default.copy() + context = {} if context is None else context.copy() default.update({ 'state':'draft', 'name':'/', diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py index b4fc2388a68..549363ce269 100644 --- a/addons/account/account_bank_statement.py +++ b/addons/account/account_bank_statement.py @@ -461,10 +461,10 @@ class account_bank_statement(osv.osv): return {} balance_start = self._compute_balance_end_real(cr, uid, journal_id, context=context) - journal_data = self.pool.get('account.journal').read(cr, uid, journal_id, ['default_debit_account_id', 'company_id'], context=context) - account_id = journal_data['default_debit_account_id'] + journal_data = self.pool.get('account.journal').read(cr, uid, journal_id, ['company_id', 'currency'], context=context) company_id = journal_data['company_id'] - return {'value': {'balance_start': balance_start, 'account_id': account_id, 'company_id': company_id}} + currency_id = journal_data['currency'] or self.pool.get('res.company').browse(cr, uid, company_id[0], context=context).currency_id.id + return {'value': {'balance_start': balance_start, 'company_id': company_id, 'currency': currency_id}} def unlink(self, cr, uid, ids, context=None): stat = self.read(cr, uid, ids, ['state'], context=context) diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index c543b493831..57f16473b82 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -1360,6 +1360,7 @@ class account_invoice_line(osv.osv): _columns = { 'name': fields.text('Description', required=True), 'origin': fields.char('Source', size=256, help="Reference of the document that produced this invoice."), + 'sequence': fields.integer('Sequence', help="Gives the sequence of this line when displaying the invoice."), 'invoice_id': fields.many2one('account.invoice', 'Invoice Reference', ondelete='cascade', select=True), 'uos_id': fields.many2one('product.uom', 'Unit of Measure', ondelete='set null'), 'product_id': fields.many2one('product.product', 'Product', ondelete='set null'), diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 17ebfe1f744..8516fcd96ae 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -189,7 +189,7 @@ - + @@ -211,17 +211,17 @@ - +
- - + + - +
@@ -322,7 +322,7 @@ + options='{"always_reload": True}'/> @@ -368,16 +368,16 @@ - +
- - - + + +
@@ -458,7 +458,6 @@ - diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 1fbda80a0fe..d98b53ebbbd 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -633,13 +633,10 @@
+ - @@ -1130,8 +1127,8 @@ - - + + @@ -1177,8 +1174,8 @@ - - + + @@ -1549,10 +1546,7 @@ account_reconciliation_list

- Good job! -

- There is nothing to reconcile. All invoices and payments - have been reconciled, your partner balance is clean. + No journal items found.

@@ -2570,7 +2564,7 @@ action = pool.get('res.config').next(cr, uid, [], context) - +
@@ -2632,12 +2626,12 @@ action = pool.get('res.config').next(cr, uid, [], context) - - - + + + - + diff --git a/addons/account/static/src/xml/account_move_reconciliation.xml b/addons/account/static/src/xml/account_move_reconciliation.xml index c266e819198..d7b5301238d 100644 --- a/addons/account/static/src/xml/account_move_reconciliation.xml +++ b/addons/account/static/src/xml/account_move_reconciliation.xml @@ -3,10 +3,17 @@ + +
+

+ Good job! +

+ There is nothing to reconcile. All invoices and payments + have been reconciled, your partner balance is clean. +

+
+
diff --git a/addons/auth_signup/res_users.py b/addons/auth_signup/res_users.py index 5f6463508b6..59196c4da87 100644 --- a/addons/auth_signup/res_users.py +++ b/addons/auth_signup/res_users.py @@ -1,47 +1,201 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2012-today OpenERP SA () +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see +# +############################################################################## +import random +import time +import urllib +import urlparse + import openerp -from openerp.osv import osv +from openerp.osv import osv, fields from openerp import SUPERUSER_ID +from openerp.tools.misc import DEFAULT_SERVER_DATETIME_FORMAT +from openerp.tools.safe_eval import safe_eval + +def random_token(): + # the token has an entropy of about 120 bits (6 bits/char * 20 chars) + chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' + return ''.join(random.choice(chars) for i in xrange(20)) + +def now(): + return time.strftime(DEFAULT_SERVER_DATETIME_FORMAT) + +class res_partner(osv.Model): + _inherit = 'res.partner' + + def _get_signup_valid(self, cr, uid, ids, name, arg, context=None): + dt = now() + res = {} + for partner in self.browse(cr, uid, ids, context): + res[partner.id] = bool(partner.signup_token) and \ + (not partner.signup_expiration or dt <= partner.signup_expiration) + return res + + def _get_signup_url(self, cr, uid, ids, name, arg, context=None): + """ determine a signup url for a given partner """ + base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url') + + # if required, make sure that every partner without user has a valid signup token + if context and context.get('signup_valid'): + unsigned_ids = [p.id for p in self.browse(cr, uid, ids, context) if not p.user_ids] + self.signup_prepare(cr, uid, unsigned_ids, context=context) + + res = dict.fromkeys(ids, False) + for partner in self.browse(cr, uid, ids, context): + if partner.signup_token: + params = (urllib.quote(cr.dbname), urllib.quote(partner.signup_token)) + res[partner.id] = urlparse.urljoin(base_url, "#action=login&db=%s&token=%s" % params) + elif partner.user_ids: + user = partner.user_ids[0] + params = (urllib.quote(cr.dbname), urllib.quote(user.login)) + res[partner.id] = urlparse.urljoin(base_url, "#action=login&db=%s&login=%s" % params) + return res + + _columns = { + 'signup_token': fields.char(size=24, string='Signup Token'), + 'signup_expiration': fields.datetime(string='Signup Expiration'), + 'signup_valid': fields.function(_get_signup_valid, type='boolean', string='Signup Token is Valid'), + 'signup_url': fields.function(_get_signup_url, type='char', string='Signup URL'), + } + + def action_signup_prepare(self, cr, uid, ids, context=None): + return self.signup_prepare(cr, uid, ids, context=context) + + def signup_prepare(self, cr, uid, ids, 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) + """ + for partner in self.browse(cr, uid, ids, context): + if expiration or not partner.signup_valid: + token = random_token() + while self._signup_retrieve_partner(cr, uid, token, context=context): + token = random_token() + partner.write({'signup_token': token, 'signup_expiration': expiration}) + return True + + def _signup_retrieve_partner(self, cr, uid, token, + check_validity=False, raise_exception=False, context=None): + """ find the partner corresponding to a token, and possibly check its validity + :param token: the token to resolve + :param check_validity: if True, also check validity + :param raise_exception: if True, raise exception instead of returning False + :return: partner (browse record) or False (if raise_exception is False) + """ + partner_ids = self.search(cr, uid, [('signup_token', '=', token)], context=context) + if not partner_ids: + if raise_exception: + raise Exception("Signup token '%s' is not valid" % token) + return False + partner = self.browse(cr, uid, partner_ids[0], context) + if check_validity and not partner.signup_valid: + if raise_exception: + raise Exception("Signup token '%s' is no longer valid" % token) + return False + return partner + + def signup_retrieve_info(self, cr, uid, token, context=None): + """ retrieve the user info about the token + :return: a dictionary with the user information: + - 'db': the name of the database + - 'token': the token, if token is valid + - 'name': the name of the partner, if token is valid + - 'login': the user login, if the user already exists + - 'email': the partner email, if the user does not exist + """ + partner = self._signup_retrieve_partner(cr, uid, token, raise_exception=True, context=None) + res = {'db': cr.dbname} + if partner.signup_valid: + res['token'] = token + res['name'] = partner.name + if partner.user_ids: + res['login'] = partner.user_ids[0].login + else: + res['email'] = partner.email or '' + return res class res_users(osv.Model): _inherit = 'res.users' - def auth_signup_create(self, cr, uid, new_user, context=None): - # new_user: - # login - # email - # name (optional) - # partner_id (optional) - # groups (optional) - # sign (for partner_id and groups) - # - user_template_id = self.pool.get('ir.config_parameter').get_param(cr, uid, 'auth.signup_template_user_id', 0) - if user_template_id: - self.pool.get('res.users').copy(cr, SUPERUSER_ID, user_template_id, new_user, context=context) - else: - self.pool.get('res.users').create(cr, SUPERUSER_ID, new_user, context=context) + def _get_state(self, cr, uid, ids, name, arg, context=None): + return dict((user.id, 'new' if not user.login_date else 'reset' if user.signup_token else 'active') + for user in self.browse(cr, uid, ids, context)) - def auth_signup(self, cr, uid, name, login, password, context=None): - r = (cr.dbname, login, password) - res = self.search(cr, uid, [("login", "=", login)]) - if res: - # Existing user - user_id = res[0] - try: - self.check(cr.dbname, user_id, password) - # Same password - except openerp.exceptions.AccessDenied: - # Different password - raise - else: - # New user - new_user = { - 'name': name, - 'login': login, - 'user_email': login, - 'password': password, - 'active': True, - } - self.auth_signup_create(cr, uid, new_user) - return r + _columns = { + 'state': fields.function(_get_state, string='State', type='selection', + selection=[('new', 'New'), ('active', 'Active'), ('reset', 'Resetting Password')]), + } -# + def signup(self, cr, uid, values, token=None, context=None): + """ signup a user, to either: + - create a new user (no token), or + - create a user for a partner (with token, but no user for partner), or + - change the password of a user (with token, and existing user). + :param values: a dictionary with field values + :param token: signup token (optional) + :return: (dbname, login, password) for the signed up user + """ + assert values.get('login') and values.get('password') + result = (cr.dbname, values['login'], values['password']) + + if token: + # signup with a token: find the corresponding partner id + res_partner = self.pool.get('res.partner') + partner = res_partner._signup_retrieve_partner(cr, uid, token, + check_validity=True, raise_exception=True, context=None) + # invalidate signup token + partner.write({'signup_token': False, 'signup_expiration': False}) + if partner.user_ids: + # user exists, modify its password + partner.user_ids[0].write({'password': values['password']}) + else: + # user does not exist: sign up invited user + self._signup_create_user(cr, uid, { + 'name': partner.name, + 'login': values['login'], + 'password': values['password'], + 'email': values['login'], + 'partner_id': partner.id, + }, context=context) + return result + + # sign up an external user + assert values.get('name'), 'Signup: no name given for new user' + self._signup_create_user(cr, uid, { + 'name': values['name'], + 'login': values['login'], + 'password': values['password'], + 'email': values['login'], + }, context=context) + return result + + def _signup_create_user(self, cr, uid, values, context=None): + """ create a new user from the template user """ + ir_config_parameter = self.pool.get('ir.config_parameter') + template_user_id = safe_eval(ir_config_parameter.get_param(cr, uid, 'auth_signup.template_user_id', 'False')) + assert template_user_id and self.exists(cr, uid, template_user_id, context=context), 'Signup: invalid template user' + + # check that uninvited users may sign up + if 'partner_id' not in values: + if not safe_eval(ir_config_parameter.get_param(cr, uid, 'auth_signup.allow_uninvited', 'False')): + raise Exception('Signup is not allowed for uninvited users') + + # create a copy of the template user (attached to a specific partner_id if given) + values['active'] = True + return self.copy(cr, uid, template_user_id, values, context=context) diff --git a/addons/auth_signup/res_users_view.xml b/addons/auth_signup/res_users_view.xml new file mode 100644 index 00000000000..c42e1ab5f41 --- /dev/null +++ b/addons/auth_signup/res_users_view.xml @@ -0,0 +1,19 @@ + + + + + + user.form.state + res.users + + + +
+ +
+
+
+
+ +
+
diff --git a/addons/auth_signup/static/src/css/Makefile b/addons/auth_signup/static/src/css/Makefile new file mode 100644 index 00000000000..d6b4f4b2fc8 --- /dev/null +++ b/addons/auth_signup/static/src/css/Makefile @@ -0,0 +1,3 @@ +base.css: base.sass + sass --trace -t expanded base.sass base.css + diff --git a/addons/auth_signup/static/src/css/base.css b/addons/auth_signup/static/src/css/base.css new file mode 100644 index 00000000000..3f97e7a9301 --- /dev/null +++ b/addons/auth_signup/static/src/css/base.css @@ -0,0 +1,10 @@ +@charset "utf-8"; +.openerp .oe_login .oe_signup_show { + display: none; +} +.openerp .oe_login_signup .oe_signup_show { + display: block !important; +} +.openerp .oe_login_signup .oe_signup_hide { + display: none; +} diff --git a/addons/auth_signup/static/src/css/base.sass b/addons/auth_signup/static/src/css/base.sass new file mode 100644 index 00000000000..f97665d192c --- /dev/null +++ b/addons/auth_signup/static/src/css/base.sass @@ -0,0 +1,13 @@ +@charset "utf-8" + +.openerp + // Regular login form + .oe_login + .oe_signup_show + display: none + // Signup form + .oe_login_signup + .oe_signup_show + display: block !important + .oe_signup_hide + display: none diff --git a/addons/auth_signup/static/src/js/auth_signup.js b/addons/auth_signup/static/src/js/auth_signup.js index 2ab13aa7598..0974b73292d 100644 --- a/addons/auth_signup/static/src/js/auth_signup.js +++ b/addons/auth_signup/static/src/js/auth_signup.js @@ -5,56 +5,100 @@ openerp.auth_signup = function(instance) { instance.web.Login.include({ start: function() { var self = this; - this.$('a.oe_signup').click(function() { - var dbname = self.$("form [name=db]").val(); - self.do_action({ - type: 'ir.actions.client', - tag: 'auth_signup.signup', - params: {'dbname': dbname}, - target: 'new', - name: 'Sign up' - }); - return true; + var d = this._super(); + + // to switch between the signup and regular login form + this.$('a.oe_signup_signup').click(function() { + self.$el.addClass("oe_login_signup"); + }); + this.$('a.oe_signup_back').click(function() { + self.$el.removeClass("oe_login_signup"); + delete self.params.token; }); - return this._super(); - }, - }); + // if there is an error message in params, show it then forget it + if (self.params.error_message) { + this.show_error(self.params.error_message); + delete self.params.error_message; + } - instance.auth_signup.Signup = instance.web.Widget.extend({ - template: 'auth_signup.signup', - init: function(parent, params) { - this.params = params; - return this._super(); + // in case of a signup, retrieve the user information from the token + if (self.params.db && self.params.token) { + d = self.rpc("/auth_signup/retrieve", {dbname: self.params.db, token: self.params.token}) + .done(self.on_token_loaded) + .fail(self.on_token_failed); + } + return d; }, - start: function() { - var self = this; - this.$('input[name=password_confirmation]').keyup(function() { - var v = $(this).val(); - var $b = self.$('button'); - if (_.isEmpty(v) || self.$('input[name=password]').val() === v) { - $b.removeAttr('disabled'); + on_token_loaded: function(result) { + // select the right the database + this.selected_db = result.db; + this.on_db_loaded({db_list: [result.db]}); + if (result.token) { + // switch to signup mode, set user name and login + this.$el.addClass("oe_login_signup"); + this.$("form input[name=name]").val(result.name).attr("readonly", "readonly"); + if (result.login) { + this.$("form input[name=login]").val(result.login).attr("readonly", "readonly"); } else { - $b.attr('disabled', 'disabled'); + this.$("form input[name=login]").val(result.email); } - }); - - this.$('form').submit(function(ev) { - if(ev) { - ev.preventDefault(); + } else { + // remain in login mode, set login if present + delete this.params.token; + this.$("form input[name=login]").val(result.login || ""); + } + }, + on_token_failed: function(result, ev) { + if (ev) { + ev.preventDefault(); + } + this.show_error("Invalid signup token"); + delete this.params.db; + delete this.params.token; + }, + on_submit: function(ev) { + if (ev) { + ev.preventDefault(); + } + if (this.$el.hasClass("oe_login_signup")) { + // signup user (or reset password) + var db = this.$("form [name=db]").val(); + var name = this.$("form input[name=name]").val(); + var login = this.$("form input[name=login]").val(); + var password = this.$("form input[name=password]").val(); + var confirm_password = this.$("form input[name=confirm_password]").val(); + if (!db) { + this.do_warn("Login", "No database selected !"); + return false; + } else if (!name) { + this.do_warn("Login", "Please enter a name.") + return false; + } else if (!login) { + this.do_warn("Login", "Please enter a username.") + return false; + } else if (!password || !confirm_password) { + this.do_warn("Login", "Please enter a password and confirm it.") + return false; + } else if (password !== confirm_password) { + this.do_warn("Login", "Passwords do not match; please retype them.") + return false; } var params = { - dbname : self.params.dbname, - name: self.$('input[name=name]').val(), - login: self.$('input[name=email]').val(), - password: self.$('input[name=password]').val(), + dbname : db, + token: this.params.token || "", + name: name, + login: login, + password: password, + state: $.param(this.params) }; var url = "/auth_signup/signup?" + $.param(params); window.location = url; - }); - return this._super(); - } + } else { + // regular login + this._super(ev); + } + }, }); - instance.web.client_actions.add("auth_signup.signup", "instance.auth_signup.Signup"); }; diff --git a/addons/auth_signup/static/src/xml/auth_signup.xml b/addons/auth_signup/static/src/xml/auth_signup.xml index c2eec846d15..e63bd5863b0 100644 --- a/addons/auth_signup/static/src/xml/auth_signup.xml +++ b/addons/auth_signup/static/src/xml/auth_signup.xml @@ -1,28 +1,28 @@ - + - - -
  • - -
  • + + + + + + + + + + + + + + + + + + +
  • +
  • +
    -
    - - -
    -
    - Name =
    - Email =
    - Password =
    - Confirmation =
    - -
    -
    -
    - -
    diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py index 5b8c41787d4..f5fb3dbd051 100644 --- a/addons/base_calendar/base_calendar.py +++ b/addons/base_calendar/base_calendar.py @@ -39,11 +39,11 @@ months = { def get_recurrent_dates(rrulestring, exdate, startdate=None, exrule=None): """ - Get recurrent dates based on Rule string considering exdate and start date - @param rrulestring: Rulestring - @param exdate: List of exception dates for rrule - @param startdate: Startdate for computing recurrent dates - @return: List of Recurrent dates + Get recurrent dates based on Rule string considering exdate and start date. + @param rrulestring: rulestring + @param exdate: list of exception dates for rrule + @param startdate: startdate for computing recurrent dates + @return: list of Recurrent dates """ def todate(date): val = parser.parse(''.join((re.compile('\d')).findall(date))) @@ -67,11 +67,12 @@ def get_recurrent_dates(rrulestring, exdate, startdate=None, exrule=None): def base_calendar_id2real_id(base_calendar_id=None, with_date=False): """ - This function converts virtual event id into real id of actual event - @param base_calendar_id: Id of calendar - @param with_date: If value passed to this param it will return dates based on value of withdate + base_calendar_id + Convert a "virtual/recurring event id" (type string) into a real event id (type int). + E.g. virtual/recurring event id is 4-20091201100000, so it will return 4. + @param base_calendar_id: id of calendar + @param with_date: if a value is passed to this param it will return dates based on value of withdate + base_calendar_id + @return: real event id """ - if base_calendar_id and isinstance(base_calendar_id, (str, unicode)): res = base_calendar_id.split('-') @@ -89,12 +90,13 @@ def base_calendar_id2real_id(base_calendar_id=None, with_date=False): def real_id2base_calendar_id(real_id, recurrent_date): """ - Convert real id of record into virtual id using recurrent_date - e.g. real id is 1 and recurrent_date is 01-12-2009 10:00:00 then it will return - 1-20091201100000 - @return: real id with recurrent date. + Convert a real event id (type int) into a "virtual/recurring event id" (type string). + E.g. real event id is 1 and recurrent_date is set to 01-12-2009 10:00:00, so + it will return 1-20091201100000. + @param real_id: real event id + @param recurrent_date: real event recurrent date + @return: string containing the real id and the recurrent date """ - if real_id and recurrent_date: recurrent_date = time.strftime("%Y%m%d%H%M%S", \ time.strptime(recurrent_date, "%Y-%m-%d %H:%M:%S")) @@ -104,10 +106,10 @@ def real_id2base_calendar_id(real_id, recurrent_date): def _links_get(self, cr, uid, context=None): """ Get request link. - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param context: A standard dictionary for contextual values - @return: list of dictionary which contain object and name and id. + @param cr: the current row, from the database cursor + @param uid: the current user's ID for security checks + @param context: a standard dictionary for contextual values + @return: list of dictionary which contain object and name and id """ obj = self.pool.get('res.request.link') ids = obj.search(cr, uid, []) @@ -216,9 +218,9 @@ class calendar_attendee(osv.osv): def _get_address(self, name=None, email=None): """ - Gives email information in ical CAL-ADDRESS type format - @param name: Name for CAL-ADDRESS value - @param email: Email address for CAL-ADDRESS value + Gives email information in ical CAL-ADDRESS type format. + @param name: name for CAL-ADDRESS value + @param email: email address for CAL-ADDRESS value """ if name and email: name += ':' @@ -226,13 +228,13 @@ class calendar_attendee(osv.osv): def _compute_data(self, cr, uid, ids, name, arg, context=None): """ - Compute data on function fields for attendee values . - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of calendar attendee’s IDs. - @param name: name of field. - @param context: A standard dictionary for contextual values - @return: Dictionary of form {id: {'field Name': value'}}. + Compute data on function fields for attendee values. + @param cr: the current row, from the database cursor + @param uid: the current user's ID for security checks + @param ids: list of calendar attendee's IDs + @param name: name of field + @param context: a standard dictionary for contextual values + @return: dictionary of form {id: {'field Name': value'}} """ name = name[0] result = {} @@ -297,10 +299,10 @@ class calendar_attendee(osv.osv): def _links_get(self, cr, uid, context=None): """ Get request link for ref field in calendar attendee. - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, + @param cr: the current row, from the database cursor + @param uid: the current user's id for security checks @param context: A standard dictionary for contextual values - @return: list of dictionary which contain object and name and id. + @return: list of dictionary which contain object and name and id """ obj = self.pool.get('res.request.link') ids = obj.search(cr, uid, []) @@ -310,10 +312,10 @@ class calendar_attendee(osv.osv): def _lang_get(self, cr, uid, context=None): """ Get language for language selection field. - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param context: A standard dictionary for contextual values - @return: list of dictionary which contain code and name and id. + @param cr: the current row, from the database cursor + @param uid: the current user's id for security checks + @param context: a standard dictionary for contextual values + @return: list of dictionary which contain code and name and id """ obj = self.pool.get('res.lang') ids = obj.search(cr, uid, []) @@ -375,7 +377,6 @@ property or property parameter."), 'ref': fields.reference('Event Ref', selection=_links_get, size=128), 'availability': fields.selection([('free', 'Free'), ('busy', 'Busy')], 'Free/Busy', readonly="True"), } - _defaults = { 'state': 'needs-action', 'role': 'req-participant', @@ -388,12 +389,12 @@ property or property parameter."), def get_ics_file(self, cr, uid, event_obj, context=None): """ - Returns iCalendar file for the event invitation - @param self: The object pointer - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param event_obj: Event object (browse record) - @param context: A standard dictionary for contextual values + Returns iCalendar file for the event invitation. + @param self: the object pointer + @param cr: the current row, from the database cursor + @param uid: the current user's id for security checks + @param event_obj: event object (browse record) + @param context: a standard dictionary for contextual values @return: .ics file content """ res = None @@ -471,7 +472,7 @@ property or property parameter."), def _send_mail(self, cr, uid, ids, mail_to, email_from=tools.config.get('email_from', False), context=None): """ Send mail for event invitation to event attendees. - @param email_from: Email address for user sending the mail + @param email_from: email address for user sending the mail @return: True """ company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.name @@ -517,11 +518,11 @@ property or property parameter."), def onchange_user_id(self, cr, uid, ids, user_id, *args, **argv): """ Make entry on email and availbility on change of user_id field. - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of calendar attendee’s IDs. - @param user_id: Changed value of User id - @return: dictionary of value. which put value in email and availability fields. + @param cr: the current row, from the database cursor + @param uid: the current user's ID for security checks + @param ids: list of calendar attendee's IDs + @param user_id: changed value of User id + @return: dictionary of values which put value in email and availability fields """ if not user_id: @@ -531,24 +532,25 @@ property or property parameter."), return {'value': {'email': user.email, 'availability':user.availability}} def do_tentative(self, cr, uid, ids, context=None, *args): - """ Makes event invitation as Tentative - @param self: The object pointer - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of calendar attendee’s IDs - @param *args: Get Tupple value - @param context: A standard dictionary for contextual values + """ + Makes event invitation as Tentative. + @param self: the object pointer + @param cr: the current row, from the database cursor + @param uid: the current user's ID for security checks + @param ids: list of calendar attendee's IDs + @param *args: get Tupple value + @param context: a standard dictionary for contextual values """ return self.write(cr, uid, ids, {'state': 'tentative'}, context) def do_accept(self, cr, uid, ids, context=None, *args): """ - Update state of invitation as Accepted and - if the invited user is other then event user it will make a copy of this event for invited user - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of calendar attendee’s IDs. - @param context: A standard dictionary for contextual values + Update state of invitation as Accepted and if the invited user is other + then event user it will make a copy of this event for invited user. + @param cr: the current row, from the database cursor + @param uid: the current user's ID for security checks + @param ids: list of calendar attendee's IDs + @param context: a standard dictionary for contextual values @return: True """ if context is None: @@ -564,25 +566,28 @@ property or property parameter."), return True def do_decline(self, cr, uid, ids, context=None, *args): - """ Marks event invitation as Declined - @param self: The object pointer - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of calendar attendee’s IDs - @param *args: Get Tupple value - @param context: A standard dictionary for contextual values """ + """ + Marks event invitation as Declined. + @param self: the object pointer + @param cr: the current row, from the database cursor + @param uid: the current user's ID for security checks + @param ids: list of calendar attendee's IDs + @param *args: get Tupple value + @param context: a standard dictionary for contextual values + """ if context is None: context = {} return self.write(cr, uid, ids, {'state': 'declined'}, context) def create(self, cr, uid, vals, context=None): - """ Overrides orm create method. + """ + Overrides orm create method. @param self: The object pointer - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param vals: Get Values - @param context: A standard dictionary for contextual values """ - + @param cr: the current row, from the database cursor + @param uid: the current user's ID for security checks + @param vals: get Values + @param context: a standard dictionary for contextual values + """ if context is None: context = {} if not vals.get("email") and vals.get("cn"): @@ -592,6 +597,7 @@ property or property parameter."), vals['cn'] = vals.get("cn") res = super(calendar_attendee, self).create(cr, uid, vals, context) return res + calendar_attendee() class res_alarm(osv.osv): @@ -630,8 +636,8 @@ true, it will allow you to hide the event alarm information without removing it. """ Create Alarm for event. @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of res alarm’s IDs. + @param uid: the current user's ID for security checks, + @param ids: List of res alarm's IDs. @param model: Model name. @param date: Event date @param context: A standard dictionary for contextual values @@ -704,8 +710,8 @@ true, it will allow you to hide the event alarm information without removing it. """ Delete alarm specified in ids @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of res alarm’s IDs. + @param uid: the current user's ID for security checks, + @param ids: List of res alarm's IDs. @param model: Model name for which alarm is to be cleared. @return: True """ @@ -715,12 +721,12 @@ true, it will allow you to hide the event alarm information without removing it. ir_obj = self.pool.get('ir.model') model_id = ir_obj.search(cr, uid, [('model', '=', model)])[0] model_obj = self.pool.get(model) - for datas in model_obj.browse(cr, uid, ids, context=context): - alarm_ids = alarm_obj.search(cr, uid, [('model_id', '=', model_id), ('res_id', '=', datas.id)]) + for data in model_obj.browse(cr, uid, ids, context=context): + alarm_ids = alarm_obj.search(cr, uid, [('model_id', '=', model_id), ('res_id', '=', data.id)]) if alarm_ids: alarm_obj.unlink(cr, uid, alarm_ids) cr.execute('Update %s set base_calendar_alarm_id=NULL, alarm_id=NULL\ - where id=%%s' % model_obj._table,(datas.id,)) + where id=%%s' % model_obj._table,(data.id,)) return True res_alarm() @@ -773,7 +779,7 @@ class calendar_alarm(osv.osv): Overrides orm create method. @param self: The object pointer @param cr: the current row, from the database cursor, - @param vals: dictionary of fields value.{‘name_of_the_field’: value, ...} + @param vals: dictionary of fields value.{'name_of_the_field': value, ...} @param context: A standard dictionary for contextual values @return: new record id for calendar_alarm. """ @@ -798,8 +804,8 @@ class calendar_alarm(osv.osv): """Scheduler for event reminder @param self: The object pointer @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of calendar alarm’s IDs. + @param uid: the current user's ID for security checks, + @param ids: List of calendar alarm's IDs. @param use_new_cursor: False or the dbname @param context: A standard dictionary for contextual values """ @@ -891,8 +897,8 @@ class calendar_event(osv.osv): """Returns duration and/or end date based on values passed @param self: The object pointer @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of calendar event’s IDs. + @param uid: the current user's ID for security checks, + @param ids: List of calendar event's IDs. @param start_date: Starting date @param duration: Duration between start date and end date @param end_date: Ending Datee @@ -967,14 +973,14 @@ class calendar_event(osv.osv): if not isinstance(ids, list): ids = [ids] - for datas in self.read(cr, uid, ids, ['id','byday','recurrency', 'month_list','end_date', 'rrule_type', 'select1', 'interval', 'count', 'end_type', 'mo', 'tu', 'we', 'th', 'fr', 'sa', 'su', 'exrule', 'day', 'week_list' ], context=context): - event = datas['id'] - if datas.get('interval', 0) < 0: + for data in self.read(cr, uid, ids, ['id','byday','recurrency', 'month_list','end_date', 'rrule_type', 'select1', 'interval', 'count', 'end_type', 'mo', 'tu', 'we', 'th', 'fr', 'sa', 'su', 'exrule', 'day', 'week_list' ], context=context): + event = data['id'] + if data.get('interval', 0) < 0: raise osv.except_osv(_('Warning!'), _('Interval cannot be negative.')) - if datas.get('count', 0) <= 0: + if data.get('count', 0) <= 0: raise osv.except_osv(_('Warning!'), _('Count cannot be negative or 0.')) - if datas['recurrency']: - result[event] = self.compute_rule_string(datas) + if data['recurrency']: + result[event] = self.compute_rule_string(data) else: result[event] = "" return result @@ -990,7 +996,6 @@ class calendar_event(osv.osv): super(calendar_event, obj).write(cr, uid, ids, data, context=context) return True - _columns = { 'id': fields.integer('ID', readonly=True), 'sequence': fields.integer('Sequence'), @@ -1006,21 +1011,24 @@ class calendar_event(osv.osv): 'show_as': fields.selection([('free', 'Free'), ('busy', 'Busy')], \ 'Show Time as', states={'done': [('readonly', True)]}), 'base_calendar_url': fields.char('Caldav URL', size=264), - 'state': fields.selection([('tentative', 'Tentative'), - ('cancelled', 'Cancelled'), - ('confirmed', 'Confirmed'), - ], 'Status', readonly=True), + 'state': fields.selection([ + ('tentative', 'Tentative'), + ('cancelled', 'Cancelled'), + ('confirmed', 'Confirmed'), + ], 'Status', readonly=True), 'exdate': fields.text('Exception Date/Times', help="This property \ defines the list of date/time exceptions for a recurring calendar component."), 'exrule': fields.char('Exception Rule', size=352, help="Defines a \ rule or repeating pattern of time to exclude from the recurring rule."), 'rrule': fields.function(_get_rulestring, type='char', size=124, \ fnct_inv=_rrule_write, store=True, string='Recurrent Rule'), - 'rrule_type': fields.selection([('none', ''), ('daily', 'Daily'), \ - ('weekly', 'Weekly'), ('monthly', 'Monthly'), \ - ('yearly', 'Yearly'),], - 'Recurrency', states={'done': [('readonly', True)]}, - help="Let the event automatically repeat at that interval"), + 'rrule_type': fields.selection([ + ('daily', 'Daily'), + ('weekly', 'Weekly'), + ('monthly', 'Monthly'), + ('yearly', 'Yearly') + ], 'Recurrency', states={'done': [('readonly', True)]}, + help="Let the event automatically repeat at that interval"), 'alarm_id': fields.many2one('res.alarm', 'Reminder', states={'done': [('readonly', True)]}, help="Set an alarm at this time, before the event occurs" ), 'base_calendar_alarm_id': fields.many2one('calendar.alarm', 'Alarm'), @@ -1028,7 +1036,7 @@ rule or repeating pattern of time to exclude from the recurring rule."), 'recurrent_id': fields.datetime('Recurrent ID date'), 'vtimezone': fields.selection(_tz_get, size=64, string='Timezone'), 'user_id': fields.many2one('res.users', 'Responsible', states={'done': [('readonly', True)]}), - 'organizer': fields.char("Organizer", size=256, states={'done': [('readonly', True)]}), # Map with Organizer Attribure of VEvent. + 'organizer': fields.char("Organizer", size=256, states={'done': [('readonly', True)]}), # Map with organizer attribute of VEvent. 'organizer_id': fields.many2one('res.users', 'Organizer', states={'done': [('readonly', True)]}), 'end_type' : fields.selection([('count', 'Number of repetitions'), ('end_date','End date')], 'Recurrence Termination'), 'interval': fields.integer('Repeat Every', help="Repeat every (Days/Week/Month/Year)"), @@ -1043,13 +1051,21 @@ rule or repeating pattern of time to exclude from the recurring rule."), 'select1': fields.selection([('date', 'Date of month'), ('day', 'Day of month')], 'Option'), 'day': fields.integer('Date of month'), - 'week_list': fields.selection([('MO', 'Monday'), ('TU', 'Tuesday'), \ - ('WE', 'Wednesday'), ('TH', 'Thursday'), \ - ('FR', 'Friday'), ('SA', 'Saturday'), \ - ('SU', 'Sunday')], 'Weekday'), - 'byday': fields.selection([('1', 'First'), ('2', 'Second'), \ - ('3', 'Third'), ('4', 'Fourth'), \ - ('5', 'Fifth'), ('-1', 'Last')], 'By day'), + 'week_list': fields.selection([ + ('MO', 'Monday'), + ('TU', 'Tuesday'), + ('WE', 'Wednesday'), + ('TH', 'Thursday'), + ('FR', 'Friday'), + ('SA', 'Saturday'), + ('SU', 'Sunday')], 'Weekday'), + 'byday': fields.selection([ + ('1', 'First'), + ('2', 'Second'), + ('3', 'Third'), + ('4', 'Fourth'), + ('5', 'Fifth'), + ('-1', 'Last')], 'By day'), 'month_list': fields.selection(months.items(), 'Month'), 'end_date': fields.date('Repeat Until'), 'attendee_ids': fields.many2many('calendar.attendee', 'event_attendee_rel', \ @@ -1101,9 +1117,9 @@ rule or repeating pattern of time to exclude from the recurring rule."), return res _defaults = { - 'end_type' : 'count', - 'count' : 1, - 'rrule_type' : 'none', + 'end_type': 'count', + 'count': 1, + 'rrule_type': False, 'state': 'tentative', 'class': 'public', 'show_as': 'busy', @@ -1113,7 +1129,7 @@ rule or repeating pattern of time to exclude from the recurring rule."), 'user_id': lambda self, cr, uid, ctx: uid, 'organizer': default_organizer, } - + def _check_closing_date(self, cr, uid, ids, context=None): for event in self.browse(cr, uid, ids, context=context): if event.date_deadline < event.date: @@ -1129,7 +1145,7 @@ rule or repeating pattern of time to exclude from the recurring rule."), This method gives ids of dates that comes between start date and end date of calendar views @param self: The object pointer @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, + @param uid: the current user's ID for security checks, @param limit: The Number of Results to Return """ if not context: context = {} @@ -1140,7 +1156,8 @@ rule or repeating pattern of time to exclude from the recurring rule."), result.append(data['id']) continue event_date = datetime.strptime(data['date'], "%Y-%m-%d %H:%M:%S") -# To check: If the start date is replace by event date .. the event date will be changed by that of calendar code + + # TOCHECK: the start date should be replaced by event date; the event date will be changed by that of calendar code if not data['rrule']: continue @@ -1186,45 +1203,46 @@ rule or repeating pattern of time to exclude from the recurring rule."), ids = list(set(result)) return ids - def compute_rule_string(self, datas): + def compute_rule_string(self, data): """ Compute rule string according to value type RECUR of iCalendar from the values given. @param self: the object pointer - @param datas: dictionary of freq and interval value. + @param data: dictionary of freq and interval value + @return: string containing recurring rule (empty if no rule) """ - def get_week_string(freq, datas): + def get_week_string(freq, data): weekdays = ['mo', 'tu', 'we', 'th', 'fr', 'sa', 'su'] if freq == 'weekly': - byday = map(lambda x: x.upper(), filter(lambda x: datas.get(x) and x in weekdays, datas)) + byday = map(lambda x: x.upper(), filter(lambda x: data.get(x) and x in weekdays, data)) if byday: return ';BYDAY=' + ','.join(byday) return '' - def get_month_string(freq, datas): + def get_month_string(freq, data): if freq == 'monthly': - if datas.get('select1')=='date' and (datas.get('day') < 1 or datas.get('day') > 31): + if data.get('select1')=='date' and (data.get('day') < 1 or data.get('day') > 31): raise osv.except_osv(_('Error!'), ("Please select a proper day of the month.")) - if datas.get('select1')=='day': - return ';BYDAY=' + datas.get('byday') + datas.get('week_list') - elif datas.get('select1')=='date': - return ';BYMONTHDAY=' + str(datas.get('day')) + if data.get('select1')=='day': + return ';BYDAY=' + data.get('byday') + data.get('week_list') + elif data.get('select1')=='date': + return ';BYMONTHDAY=' + str(data.get('day')) return '' - def get_end_date(datas): - if datas.get('end_date'): - datas['end_date_new'] = ''.join((re.compile('\d')).findall(datas.get('end_date'))) + 'T235959Z' + def get_end_date(data): + if data.get('end_date'): + data['end_date_new'] = ''.join((re.compile('\d')).findall(data.get('end_date'))) + 'T235959Z' - return (datas.get('end_type') == 'count' and (';COUNT=' + str(datas.get('count'))) or '') +\ - ((datas.get('end_date_new') and datas.get('end_type') == 'end_date' and (';UNTIL=' + datas.get('end_date_new'))) or '') + return (data.get('end_type') == 'count' and (';COUNT=' + str(data.get('count'))) or '') +\ + ((data.get('end_date_new') and data.get('end_type') == 'end_date' and (';UNTIL=' + data.get('end_date_new'))) or '') - freq=datas.get('rrule_type') - if freq == 'none': - return '' + freq = data.get('rrule_type', False) + res = '' + if freq: + interval_srting = data.get('interval') and (';INTERVAL=' + str(data.get('interval'))) or '' + res = 'FREQ=' + freq.upper() + get_week_string(freq, data) + interval_srting + get_end_date(data) + get_month_string(freq, data) - interval_srting = datas.get('interval') and (';INTERVAL=' + str(datas.get('interval'))) or '' - - return 'FREQ=' + freq.upper() + get_week_string(freq, datas) + interval_srting + get_end_date(datas) + get_month_string(freq, datas) + return res def _get_empty_rrule_data(self): return { @@ -1248,19 +1266,6 @@ rule or repeating pattern of time to exclude from the recurring rule."), 'week_list' : False } - #def _write_rrule(self, cr, uid, ids, field_value, rule_date=False, context=None): - # data = self._get_empty_rrule_data() - # - # if field_value: - # data['recurrency'] = True - # for event in self.browse(cr, uid, ids, context=context): - # rdate = rule_date or event.date - # update_data = self._parse_rrule(field_value, dict(data), rdate) - # data.update(update_data) - # #parse_rrule - # self.write(cr, uid, event.id, data, context=context) - - def _parse_rrule(self, rule, data, date_start): day_list = ['mo', 'tu', 'we', 'th', 'fr', 'sa', 'su'] rrule_type = ['yearly', 'monthly', 'weekly', 'daily'] @@ -1278,7 +1283,7 @@ rule or repeating pattern of time to exclude from the recurring rule."), if i in r._byweekday: data[day_list[i]] = True data['rrule_type'] = 'weekly' - #repeat monthly bynweekday ((weekday, weeknumber), ) + #repeat monthly by nweekday ((weekday, weeknumber), ) if r._bynweekday: data['week_list'] = day_list[r._bynweekday[0][0]].upper() data['byday'] = r._bynweekday[0][1] @@ -1290,7 +1295,7 @@ rule or repeating pattern of time to exclude from the recurring rule."), data['select1'] = 'date' data['rrule_type'] = 'monthly' - #yearly but for openerp it's monthly, take same information as monthly but interval is 12 times + #repeat yearly but for openerp it's monthly, take same information as monthly but interval is 12 times if r._bymonth: data['interval'] = data['interval'] * 12 @@ -1363,7 +1368,6 @@ rule or repeating pattern of time to exclude from the recurring rule."), except Exception: return True - def write(self, cr, uid, ids, vals, context=None, check=True, update_check=True): context = context or {} if isinstance(ids, (str, int, long)): @@ -1384,14 +1388,14 @@ rule or repeating pattern of time to exclude from the recurring rule."), data = self.read(cr, uid, event_id, ['date', 'date_deadline', \ 'rrule', 'duration', 'exdate']) if data.get('rrule'): - data.update(vals) - data.update({ - 'recurrent_uid': real_event_id, - 'recurrent_id': data.get('date'), - 'rrule_type': 'none', - 'rrule': '', - 'recurrency' : False, - }) + data.update( + vals, + recurrent_uid=real_event_id, + recurrent_id=data.get('date'), + rrule_type=False, + rrule='', + recurrency=False, + ) new_id = self.copy(cr, uid, real_event_id, default=data, context=context) @@ -1435,7 +1439,6 @@ rule or repeating pattern of time to exclude from the recurring rule."), return res def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'): - # FIXME This whole id mangling has to go! if context is None: context = {} fields2 = fields and fields[:] or None @@ -1445,10 +1448,12 @@ rule or repeating pattern of time to exclude from the recurring rule."), if fields and (f not in fields): fields2.append(f) + # FIXME This whole id mangling has to go! if isinstance(ids, (str, int, long)): select = [ids] else: select = ids + select = map(lambda x: (x, base_calendar_id2real_id(x)), select) result = [] @@ -1477,7 +1482,7 @@ rule or repeating pattern of time to exclude from the recurring rule."), if f not in ('id','date','date_deadline','duration','user_id','state'): if isinstance(r[f], list): r[f] = [] - else: + else: r[f] = False if f=='name': r[f] = _('Busy') @@ -1525,7 +1530,6 @@ rule or repeating pattern of time to exclude from the recurring rule."), self.unlink_events(cr, uid, ids, context=context) return res - def create(self, cr, uid, vals, context=None): if context is None: context = {} @@ -1543,7 +1547,7 @@ rule or repeating pattern of time to exclude from the recurring rule."), """ Makes event invitation as Tentative @param self: The object pointer @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, + @param uid: the current user's ID for security checks, @param ids: List of Event IDs @param *args: Get Tupple value @param context: A standard dictionary for contextual values @@ -1554,7 +1558,7 @@ rule or repeating pattern of time to exclude from the recurring rule."), """ Makes event invitation as Tentative @param self: The object pointer @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, + @param uid: the current user's ID for security checks, @param ids: List of Event IDs @param *args: Get Tupple value @param context: A standard dictionary for contextual values @@ -1565,7 +1569,7 @@ rule or repeating pattern of time to exclude from the recurring rule."), """ Makes event invitation as Tentative @param self: The object pointer @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, + @param uid: the current user's ID for security checks, @param ids: List of Event IDs @param *args: Get Tupple value @param context: A standard dictionary for contextual values @@ -1586,9 +1590,9 @@ class calendar_todo(osv.osv): Get Date @param self: The object pointer @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, + @param uid: the current user's ID for security checks, @param ids: List of calendar todo's IDs. - @param args: list of tuples of form [(‘name_of_the_field’, ‘operator’, value), ...]. + @param args: list of tuples of form [(‘name_of_the_field', ‘operator', value), ...]. @param context: A standard dictionary for contextual values """ @@ -1602,10 +1606,10 @@ class calendar_todo(osv.osv): Set Date @param self: The object pointer @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, + @param uid: the current user's ID for security checks, @param id: calendar's ID. @param value: Get Value - @param args: list of tuples of form [(‘name_of_the_field’, ‘operator’, value), ...]. + @param args: list of tuples of form [('name_of_the_field', 'operator', value), ...]. @param context: A standard dictionary for contextual values """ @@ -1633,7 +1637,7 @@ class ir_values(osv.osv): Set IR Values @param self: The object pointer @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, + @param uid: the current user's ID for security checks, @param model: Get The Model """ @@ -1652,7 +1656,7 @@ class ir_values(osv.osv): Get IR Values @param self: The object pointer @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, + @param uid: the current user's ID for security checks, @param model: Get The Model """ if context is None: @@ -1678,8 +1682,8 @@ class ir_model(osv.osv): Overrides orm read method. @param self: The object pointer @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of IR Model’s IDs. + @param uid: the current user's ID for security checks, + @param ids: List of IR Model's IDs. @param context: A standard dictionary for contextual values """ new_ids = isinstance(ids, (str, int, long)) and [ids] or ids @@ -1696,24 +1700,24 @@ ir_model() class virtual_report_spool(web_services.report_spool): - def exp_report(self, db, uid, object, ids, datas=None, context=None): + def exp_report(self, db, uid, object, ids, data=None, context=None): """ Export Report @param self: The object pointer @param db: get the current database, - @param uid: the current user’s ID for security checks, + @param uid: the current user's ID for security checks, @param context: A standard dictionary for contextual values """ if object == 'printscreen.list': return super(virtual_report_spool, self).exp_report(db, uid, \ - object, ids, datas, context) + object, ids, data, context) new_ids = [] for id in ids: new_ids.append(base_calendar_id2real_id(id)) - if datas.get('id', False): - datas['id'] = base_calendar_id2real_id(datas['id']) - return super(virtual_report_spool, self).exp_report(db, uid, object, new_ids, datas, context) + if data.get('id', False): + data['id'] = base_calendar_id2real_id(data['id']) + return super(virtual_report_spool, self).exp_report(db, uid, object, new_ids, data, context) virtual_report_spool() @@ -1725,8 +1729,8 @@ class res_users(osv.osv): Get User Availability @param self: The object pointer @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of res user’s IDs. + @param uid: the current user's ID for security checks, + @param ids: List of res user's IDs. @param context: A standard dictionary for contextual values """ @@ -1755,8 +1759,8 @@ class res_users(osv.osv): Get User Availability Function @param self: The object pointer @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of res user’s IDs. + @param uid: the current user's ID for security checks, + @param ids: List of res user's IDs. @param context: A standard dictionary for contextual values """ @@ -1770,5 +1774,4 @@ class res_users(osv.osv): res_users() - # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml index fe292a489ab..d5dc75df873 100644 --- a/addons/base_calendar/base_calendar_view.xml +++ b/addons/base_calendar/base_calendar_view.xml @@ -1,8 +1,7 @@ - - + calendar.attendee.form calendar.attendee @@ -55,8 +54,7 @@
    - - + calendar.attendee.tree calendar.attendee @@ -73,8 +71,7 @@
    - - + calendar.attendee.search calendar.attendee @@ -110,18 +107,16 @@ {'default_sent_by_uid': uid} - + - - - + res.alarm.form res.alarm @@ -140,8 +135,7 @@
    - - + res.alarm.tree res.alarm @@ -171,15 +165,13 @@ - - + - - + Event Form calendar.event @@ -334,8 +326,7 @@ - - + Event Tree calendar.event @@ -352,8 +343,7 @@ - - + Events Calendar calendar.event @@ -367,8 +357,7 @@ - - + Calendar Events Search calendar.event @@ -393,8 +382,7 @@ - - + Events ir.actions.act_window @@ -404,8 +392,7 @@ - - + diff --git a/addons/base_calendar/crm_meeting.py b/addons/base_calendar/crm_meeting.py index b87114f3a66..9ceaea671ca 100644 --- a/addons/base_calendar/crm_meeting.py +++ b/addons/base_calendar/crm_meeting.py @@ -43,14 +43,14 @@ class crm_meeting(base_state, osv.Model): _name = 'crm.meeting' _description = "Meeting" _order = "id desc" - _inherit = ["calendar.event", "mail.thread", 'ir.needaction_mixin'] + _inherit = ["calendar.event", "mail.thread", "ir.needaction_mixin"] _columns = { # base_state required fields 'create_date': fields.datetime('Creation Date', readonly=True), 'write_date': fields.datetime('Write Date', readonly=True), 'date_open': fields.datetime('Confirmed', readonly=True), 'date_closed': fields.datetime('Closed', readonly=True), - 'partner_ids': fields.many2many('res.partner', 'crm_meeting_partner_rel', 'meeting_id','partner_id', + 'partner_ids': fields.many2many('res.partner', 'crm_meeting_partner_rel', 'meeting_id', 'partner_id', string='Attendees', states={'done': [('readonly', True)]}), 'state': fields.selection( [('draft', 'Unconfirmed'), ('open', 'Confirmed')], @@ -115,5 +115,3 @@ class crm_meeting(base_state, osv.Model): def case_close_send_note(self, cr, uid, ids, context=None): return self.message_post(cr, uid, ids, body=_("Meeting completed."), context=context) - - diff --git a/addons/base_calendar/crm_meeting_view.xml b/addons/base_calendar/crm_meeting_view.xml index adcfc23a520..4df0a8a22b2 100644 --- a/addons/base_calendar/crm_meeting_view.xml +++ b/addons/base_calendar/crm_meeting_view.xml @@ -15,9 +15,9 @@ action_crm_meeting_read - + action - + crm.meeting client_action_multi @@ -33,9 +33,9 @@ action_crm_meeting_unread - + action - + crm.meeting client_action_multi @@ -73,7 +73,7 @@
    -

    @@ -116,9 +116,49 @@ - - + + + + + + @@ -128,44 +168,6 @@ - - + + +

    +

    +

    Map your data to OpenERP

    @@ -27,18 +55,6 @@
    - - File Format Options… -
    -

    - - - -

    -

    Frequently Asked Questions

    @@ -81,17 +97,37 @@ -

    Import preview failed due to:

    +

    Import preview failed due to: . The issue is + usually an incorrect file encoding.

    Here is the start of the file we could not import:

      -
    • - - +
    • + + + + + + + +
        +
      • + + + +
      • +
    + + + + + + + this.attr('t-if', 'widget.options.import_enabled'); diff --git a/addons/board/controllers.py b/addons/board/controllers.py index 53845c96095..81557f64fa3 100644 --- a/addons/board/controllers.py +++ b/addons/board/controllers.py @@ -1,19 +1,14 @@ # -*- coding: utf-8 -*- from xml.etree import ElementTree -try: - import openerp.addons.web.common.http as openerpweb - from openerp.addons.web.common import nonliterals - from openerp.addons.web.controllers.main import load_actions_from_ir_values -except ImportError: - import web.common.http as openerpweb # noqa - from web.common import nonliterals # noqa - from web.controllers.main import load_actions_from_ir_values # noqa +import openerp +from openerp.addons.web import nonliterals +from openerp.addons.web.controllers.main import load_actions_from_ir_values -class Board(openerpweb.Controller): +class Board(openerp.addons.web.http.Controller): _cp_path = '/board' - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def add_to_dashboard(self, req, menu_id, action_id, context_to_save, domain, view_mode, name=''): # FIXME move this method to board.board model to_eval = nonliterals.CompoundContext(context_to_save) diff --git a/addons/board/static/src/js/dashboard.js b/addons/board/static/src/js/dashboard.js index 43d7ca76d39..2dbd9f5c9cc 100644 --- a/addons/board/static/src/js/dashboard.js +++ b/addons/board/static/src/js/dashboard.js @@ -25,9 +25,9 @@ instance.web.form.DashBoard = instance.web.form.FormWidget.extend({ }).bind('sortstop', self.do_save_dashboard); var old_title = this.__parentedParent.get('title'); - this.__parentedParent.on_record_loaded.add_last(function(){ - self.__parentedParent.set({ 'title' : old_title}); - }); + this.__parentedParent.on('load_record', self, function(){ + self.__parentedParent.set({ 'title': old_title}); + }) // Events this.$el.find('.oe_dashboard_link_reset').click(this.on_reset); this.$el.find('.oe_dashboard_link_change_layout').click(this.on_change_layout); @@ -173,7 +173,7 @@ instance.web.form.DashBoard = instance.web.form.FormWidget.extend({ }, on_load_action: function(result, index, action_attrs) { var self = this, - action = result.result, + action = result, view_mode = action_attrs.view_mode; if (action_attrs.context && action_attrs.context['dashboard_merge_domains_contexts'] === false) { diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 7e33f397e8a..48c6491a7c3 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -26,6 +26,7 @@ from osv import fields, osv import time import tools from tools.translate import _ +from tools import html2plaintext from base.res.res_partner import format_address @@ -812,9 +813,11 @@ class crm_lead(base_stage, format_address, osv.osv): This override updates the document according to the email. """ if custom_values is None: custom_values = {} + + desc = html2plaintext(msg.get('body')) if msg.get('body') else '' custom_values.update({ 'name': msg.get('subject') or _("No Subject"), - 'description': msg.get('body'), + 'description': desc, 'email_from': msg.get('from'), 'email_cc': msg.get('cc'), 'user_id': False, diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index f91a8756598..cee80eb0836 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -160,17 +160,17 @@
    - +
    - + @@ -488,7 +488,7 @@
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    TOTAL
    + + + +
    +
    +
    +
    TOTAL
    +
    +
    + + + +
    +
    + + \ No newline at end of file diff --git a/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml b/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml index 070079a4b80..71776af61ba 100644 --- a/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml +++ b/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml @@ -16,7 +16,6 @@ I create a timesheet for employee "Quentin Paolinon". - !record {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_deddk0}: - date_current: !eval time.strftime('%Y-%m-%d') date_from: !eval time.strftime('%Y-%m-01') name: Quentin Paolinon state: new @@ -34,30 +33,6 @@ - !assert {model: hr.employee, id: hr.employee_qdp}: - state == 'present' -- - I want to check attendance and work of yesterday. I click on <- button. -- - !python {model: hr_timesheet_sheet.sheet}: | - date_prev = self.date_previous(cr, uid, [ref('hr_timesheet_sheet_sheet_deddk0')], None) - assert date_prev == True, "I See Previous Date Timesheet" -- - Then I click on "Today" button to fill today's timesheet. -- - !python {model: hr_timesheet_sheet.sheet}: | - date_to = self.date_today(cr, uid, [ref('hr_timesheet_sheet_sheet_deddk0')], None) - assert date_to == True, "I See Today Date Timesheet" -- - I can also move to next day by clicking on -> button. -- - !python {model: hr_timesheet_sheet.sheet}: | - date_next = self.date_next(cr, uid, [ref('hr_timesheet_sheet_sheet_deddk0')], None) - assert date_next == True, "I See Next Date Timesheet" -- - I want to go to a particular date and see attendance then I select the date and click on "Go to:" button. -- - !python {model: hr_timesheet_sheet.sheet}: | - button_dumy = self.button_dummy(cr, uid, [ref('hr_timesheet_sheet_sheet_deddk0')], None) - assert button_dumy == True, "I See Particular Date Attendance" - At the time of logout, I create attendance and perform "Sign Out". - diff --git a/addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py b/addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py index a6974fc2ccf..3bd495036d5 100644 --- a/addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py +++ b/addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py @@ -42,7 +42,6 @@ class hr_timesheet_current_open(osv.osv_memory): view_type = 'tree,form' domain = "[('id','in',["+','.join(map(str, ids))+"]),('user_id', '=', uid)]" elif len(ids)==1: - ts.write(cr, uid, ids, {'date_current': time.strftime('%Y-%m-%d')}, context=context) domain = "[('user_id', '=', uid)]" else: domain = "[('user_id', '=', uid)]" diff --git a/addons/l10n_in_hr_payroll/i18n/bn.po b/addons/l10n_in_hr_payroll/i18n/bn.po index ea9fcfd7bb3..0fd88c3813e 100644 --- a/addons/l10n_in_hr_payroll/i18n/bn.po +++ b/addons/l10n_in_hr_payroll/i18n/bn.po @@ -6,928 +6,14 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0alpha\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-17 06:46+0000\n" -"PO-Revision-Date: 2012-08-17 06:46+0000\n" -"Last-Translator: <>\n" +"POT-Creation-Date: 2012-09-10 09:14+0000\n" +"PO-Revision-Date: 2012-10-10 12:31+0000\n" +"Last-Translator: Fabien (Open ERP) \n" "Language-Team: Bengali \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-10-11 05:00+0000\n" +"X-Generator: Launchpad (build 16118)\n" -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "E-mail Address" -msgstr "" -#. module: l10n_in_hr_payroll -#: field:payment.advice.report,employee_bank_no:0 -msgid "Employee Bank Account" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Payment Advices which are in draft state" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Title" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Payment Advice from" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_yearly_salary_detail -msgid "Hr Salary Employee By Category Report" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employees Salary Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Allowances with Basic:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Department" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Deductions:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "A/C no." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,driver_salay:0 -msgid "Driver Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_yearly_salary_detail -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.yearly_salary -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_yearly_salary_detail -msgid "Yearly Salary by Employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.act_hr_emp_payslip_list -msgid "Payslips" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "March" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "(" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,company_id:0 -#: field:hr.payroll.advice.line,company_id:0 -#: view:payment.advice.report:0 -#: field:payment.advice.report,company_id:0 -msgid "Company" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "The Manager" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Letter Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "," -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Set to Draft" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.employee,number_of_year:0 -msgid "Total years of work experience" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "to" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Total :" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payslip.run,available_advice:0 -msgid "Made Payment Advice?" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Advices which are paid using NEFT transfer" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,tds:0 -msgid "Amount for Tax Deduction at Source" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payslip -msgid "Pay Slip" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,day:0 -msgid "Day" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Month of Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.payslip:0 -msgid "Payslip 'Date From' must be before 'Date To'." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,batch_id:0 -msgid "Batch" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Other Information" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.payroll.advice,state:0 -#: selection:payment.advice.report,state:0 -msgid "Cancelled" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "For" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Details by Salary Rule Category:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,voluntary_provident_fund:0 -msgid "VPF computed as percentage(%)" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,number:0 -#: report:paylip.details.in:0 -msgid "Reference" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Group By..." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,medical_insurance:0 -msgid "Medical Insurance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Identification No" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.payroll.advice,state:0 -#: selection:payment.advice.report,state:0 -msgid "Confirmed" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -#: report:salary.employee.bymonth:0 -msgid "From" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,bysal:0 -#: field:payment.advice.report,bysal:0 -#: report:payroll.advice:0 -msgid "By Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Confirm" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,chaque_nos:0 -#: field:payment.advice.report,cheque_nos:0 -msgid "Cheque Numbers" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:res.company:0 -msgid "Error! You can not create recursive companies." -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_salary_employee_month -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.hr_salary_employee_bymonth -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_salary_employee_month -msgid "Yearly Salary by Head" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:184 -#, python-format -msgid "You can not confirm Payment advice without advice lines." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,state:0 -#: field:payment.advice.report,state:0 -msgid "State" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Yours Sincerely" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,medical_insurance:0 -msgid "Deduction towards company provided medical insurance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payroll_advice_line -msgid "Bank Advice Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Email" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payslip.run,available_advice:0 -msgid "If this box is checked which means that Payment Advice exists for current batch" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:158 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:184 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:240 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:257 -#, python-format -msgid "Error !" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "Print" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payslip_run -msgid "Payslip Batches" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,debit_credit:0 -#: report:payroll.advice:0 -msgid "C/D" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.employee.bymonth:0 -msgid "Yearly Salary Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.payroll_advice -msgid "Print Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,line_ids:0 -msgid "Employee Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "July" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:res.company:0 -msgid "Configuration" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_view_hr_bank_advice_tree -#: model:ir.ui.menu,name:l10n_in_hr_payroll.hr_menu_payment_advice -msgid "Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_payment_advice_report_all -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_reporting_payment_advice -#: view:payment.advice.report:0 -msgid "Advices Analysis" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -msgid "This wizard will print report which displays employees break-up of Net Head for a specified dates." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,ifsc:0 -msgid "IFSC" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Date To" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,tds:0 -msgid "TDS" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.employee,join_date:0 -msgid "Join Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Confirm Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.contract:0 -msgid "Error! Contract start-date must be less than contract end-date." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:res.company,dearness_allowance:0 -msgid "Dearness Allowance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "August" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.contract:0 -msgid "Deduction" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Search Payment advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "SI. No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Payment Advices which are in confirm state" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "December" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Confirm Sheet" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,month:0 -msgid "Month" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employee Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.contract,city_type:0 -msgid "Non Metro" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "or" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_salary_employee_month -msgid "Hr Salary Employee By Month Report" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,category_id:0 -msgid "Category" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:240 -#, python-format -msgid "Payment advice already exists for %s, 'Set to Draft' to create a new advice." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "To Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.employee,number_of_year:0 -msgid "No. of Years of Service" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Note" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Salary Rule Category" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: selection:hr.payroll.advice,state:0 -#: view:payment.advice.report:0 -#: selection:payment.advice.report,state:0 -msgid "Draft" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Date From" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,voluntary_provident_fund:0 -msgid "Voluntary Provident Fund" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employee Name" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_payment_advice_report -msgid "Payment Advice Analysis" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Status" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,city_type:0 -msgid "Type of City" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:res.company,dearness_allowance:0 -msgid "Check this box if your company provide Dearness Allowance to employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,ifsc_code:0 -#: field:payment.advice.report,ifsc_code:0 -#: report:payroll.advice:0 -msgid "IFSC Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "June" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,nbr:0 -msgid "# Payment Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.payslip_details_report -msgid "PaySlip Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Payment Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,date:0 -#: field:payment.advice.report,date:0 -msgid "Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "November" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Extended Filters..." -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,help:l10n_in_hr_payroll.action_payment_advice_report_all -msgid "This report performs analysis on Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "October" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -msgid "Designation" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "January" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:yearly.salary.detail:0 -msgid "Pay Head Employee Breakup" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_res_company -msgid "Companies" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:payroll.advice:0 -msgid "Authorized Signature" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_contract -msgid "Contract" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice.line:0 -msgid "Advice Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "To," -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,driver_salay:0 -msgid "Check this box if you provide allowance for driver" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice.line,advice_id:0 -#: field:hr.payslip,advice_id:0 -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payroll_advice -msgid "Bank Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Other No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Draft Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,neft:0 -msgid "Check this box if your company use online transfer for salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "To" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:payment.advice.report,number:0 -msgid "Number" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "September" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "Cancel" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Day of Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.employee:0 -msgid "Error! You cannot create recursive hierarchy of Employee(s)." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:yearly.salary.detail:0 -msgid "This wizard will print report which display a pay head employee breakup for a specified dates." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "Payslip Batches ready to be Adviced" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Pay Slip Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Total Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,employee_id:0 -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_employee -#: view:payment.advice.report:0 -#: field:payment.advice.report,employee_id:0 -msgid "Employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Compute Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.employee,join_date:0 -msgid "Joining date of employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Dear Sir/Madam," -msgstr "Dear Sir/Madam," - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,note:0 -msgid "Description" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid ")" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:res.company:0 -msgid "Payroll" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "NEFT" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -msgid "Address" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,bank_id:0 -#: view:payment.advice.report:0 -#: field:payment.advice.report,bank_id:0 -#: report:payroll.advice:0 -#: report:salary.detail.byyear:0 -msgid "Bank" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,end_date:0 -#: field:yearly.salary.detail,date_to:0 -msgid "End Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "February" -msgstr "" - -#. module: l10n_in_hr_payroll -#: sql_constraint:res.company:0 -msgid "The company name must be unique !" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,name:0 -#: report:paylip.details.in:0 -#: field:payment.advice.report,name:0 -#: report:salary.employee.bymonth:0 -msgid "Name" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.contract,city_type:0 -msgid "Metro" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: field:hr.salary.employee.month,employee_ids:0 -#: view:yearly.salary.detail:0 -#: field:yearly.salary.detail,employee_ids:0 -msgid "Employees" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Bank Account" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "April" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Name of the Employe" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:158 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:257 -#, python-format -msgid "Please define bank account for the %s employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,start_date:0 -#: field:yearly.salary.detail,date_from:0 -msgid "Start Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.contract:0 -msgid "Allowance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,bank_id:0 -msgid "Select the Bank from which the salary is going to be paid" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -msgid "Employee Pay Head Breakup" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Phone No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Credit" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,name:0 -#: report:payroll.advice:0 -msgid "Bank Account No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,date:0 -msgid "Advice Date is used to search Payslips" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "May" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "Create Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,year:0 -msgid "Year" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,neft:0 -#: field:payment.advice.report,neft:0 -msgid "NEFT Transaction" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -#: report:salary.employee.bymonth:0 -msgid "Total" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "form period" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Year of Payment Advices" -msgstr "" \ No newline at end of file diff --git a/addons/l10n_in_hr_payroll/i18n/gu.po b/addons/l10n_in_hr_payroll/i18n/gu.po index 2c321b13191..844c492e28b 100644 --- a/addons/l10n_in_hr_payroll/i18n/gu.po +++ b/addons/l10n_in_hr_payroll/i18n/gu.po @@ -6,928 +6,14 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0alpha\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-17 06:46+0000\n" -"PO-Revision-Date: 2012-08-17 06:46+0000\n" -"Last-Translator: <>\n" +"POT-Creation-Date: 2012-09-10 09:14+0000\n" +"PO-Revision-Date: 2012-10-10 12:31+0000\n" +"Last-Translator: Fabien (Open ERP) \n" "Language-Team: Gujarati \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-10-11 05:00+0000\n" +"X-Generator: Launchpad (build 16118)\n" -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "E-mail Address" -msgstr "" -#. module: l10n_in_hr_payroll -#: field:payment.advice.report,employee_bank_no:0 -msgid "Employee Bank Account" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Payment Advices which are in draft state" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Title" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Payment Advice from" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_yearly_salary_detail -msgid "Hr Salary Employee By Category Report" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employees Salary Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Allowances with Basic:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Department" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Deductions:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "A/C no." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,driver_salay:0 -msgid "Driver Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_yearly_salary_detail -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.yearly_salary -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_yearly_salary_detail -msgid "Yearly Salary by Employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.act_hr_emp_payslip_list -msgid "Payslips" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "March" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "(" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,company_id:0 -#: field:hr.payroll.advice.line,company_id:0 -#: view:payment.advice.report:0 -#: field:payment.advice.report,company_id:0 -msgid "Company" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "The Manager" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Letter Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "," -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Set to Draft" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.employee,number_of_year:0 -msgid "Total years of work experience" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "to" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Total :" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payslip.run,available_advice:0 -msgid "Made Payment Advice?" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Advices which are paid using NEFT transfer" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,tds:0 -msgid "Amount for Tax Deduction at Source" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payslip -msgid "Pay Slip" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,day:0 -msgid "Day" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Month of Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.payslip:0 -msgid "Payslip 'Date From' must be before 'Date To'." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,batch_id:0 -msgid "Batch" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Other Information" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.payroll.advice,state:0 -#: selection:payment.advice.report,state:0 -msgid "Cancelled" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "For" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Details by Salary Rule Category:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,voluntary_provident_fund:0 -msgid "VPF computed as percentage(%)" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,number:0 -#: report:paylip.details.in:0 -msgid "Reference" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Group By..." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,medical_insurance:0 -msgid "Medical Insurance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Identification No" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.payroll.advice,state:0 -#: selection:payment.advice.report,state:0 -msgid "Confirmed" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -#: report:salary.employee.bymonth:0 -msgid "From" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,bysal:0 -#: field:payment.advice.report,bysal:0 -#: report:payroll.advice:0 -msgid "By Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Confirm" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,chaque_nos:0 -#: field:payment.advice.report,cheque_nos:0 -msgid "Cheque Numbers" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:res.company:0 -msgid "Error! You can not create recursive companies." -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_salary_employee_month -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.hr_salary_employee_bymonth -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_salary_employee_month -msgid "Yearly Salary by Head" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:184 -#, python-format -msgid "You can not confirm Payment advice without advice lines." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,state:0 -#: field:payment.advice.report,state:0 -msgid "State" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Yours Sincerely" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,medical_insurance:0 -msgid "Deduction towards company provided medical insurance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payroll_advice_line -msgid "Bank Advice Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Email" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payslip.run,available_advice:0 -msgid "If this box is checked which means that Payment Advice exists for current batch" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:158 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:184 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:240 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:257 -#, python-format -msgid "Error !" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "Print" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payslip_run -msgid "Payslip Batches" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,debit_credit:0 -#: report:payroll.advice:0 -msgid "C/D" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.employee.bymonth:0 -msgid "Yearly Salary Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.payroll_advice -msgid "Print Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,line_ids:0 -msgid "Employee Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "July" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:res.company:0 -msgid "Configuration" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_view_hr_bank_advice_tree -#: model:ir.ui.menu,name:l10n_in_hr_payroll.hr_menu_payment_advice -msgid "Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_payment_advice_report_all -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_reporting_payment_advice -#: view:payment.advice.report:0 -msgid "Advices Analysis" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -msgid "This wizard will print report which displays employees break-up of Net Head for a specified dates." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,ifsc:0 -msgid "IFSC" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Date To" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,tds:0 -msgid "TDS" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.employee,join_date:0 -msgid "Join Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Confirm Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.contract:0 -msgid "Error! Contract start-date must be less than contract end-date." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:res.company,dearness_allowance:0 -msgid "Dearness Allowance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "August" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.contract:0 -msgid "Deduction" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Search Payment advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "SI. No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Payment Advices which are in confirm state" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "December" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Confirm Sheet" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,month:0 -msgid "Month" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employee Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.contract,city_type:0 -msgid "Non Metro" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "or" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_salary_employee_month -msgid "Hr Salary Employee By Month Report" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,category_id:0 -msgid "Category" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:240 -#, python-format -msgid "Payment advice already exists for %s, 'Set to Draft' to create a new advice." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "To Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.employee,number_of_year:0 -msgid "No. of Years of Service" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Note" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Salary Rule Category" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: selection:hr.payroll.advice,state:0 -#: view:payment.advice.report:0 -#: selection:payment.advice.report,state:0 -msgid "Draft" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Date From" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,voluntary_provident_fund:0 -msgid "Voluntary Provident Fund" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employee Name" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_payment_advice_report -msgid "Payment Advice Analysis" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Status" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,city_type:0 -msgid "Type of City" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:res.company,dearness_allowance:0 -msgid "Check this box if your company provide Dearness Allowance to employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,ifsc_code:0 -#: field:payment.advice.report,ifsc_code:0 -#: report:payroll.advice:0 -msgid "IFSC Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "June" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,nbr:0 -msgid "# Payment Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.payslip_details_report -msgid "PaySlip Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Payment Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,date:0 -#: field:payment.advice.report,date:0 -msgid "Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "November" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Extended Filters..." -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,help:l10n_in_hr_payroll.action_payment_advice_report_all -msgid "This report performs analysis on Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "October" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -msgid "Designation" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "January" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:yearly.salary.detail:0 -msgid "Pay Head Employee Breakup" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_res_company -msgid "Companies" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:payroll.advice:0 -msgid "Authorized Signature" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_contract -msgid "Contract" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice.line:0 -msgid "Advice Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "To," -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,driver_salay:0 -msgid "Check this box if you provide allowance for driver" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice.line,advice_id:0 -#: field:hr.payslip,advice_id:0 -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payroll_advice -msgid "Bank Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Other No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Draft Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,neft:0 -msgid "Check this box if your company use online transfer for salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "To" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:payment.advice.report,number:0 -msgid "Number" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "September" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "Cancel" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Day of Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.employee:0 -msgid "Error! You cannot create recursive hierarchy of Employee(s)." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:yearly.salary.detail:0 -msgid "This wizard will print report which display a pay head employee breakup for a specified dates." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "Payslip Batches ready to be Adviced" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Pay Slip Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Total Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,employee_id:0 -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_employee -#: view:payment.advice.report:0 -#: field:payment.advice.report,employee_id:0 -msgid "Employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Compute Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.employee,join_date:0 -msgid "Joining date of employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Dear Sir/Madam," -msgstr "Dear Sir/Madam," - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,note:0 -msgid "Description" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid ")" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:res.company:0 -msgid "Payroll" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "NEFT" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -msgid "Address" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,bank_id:0 -#: view:payment.advice.report:0 -#: field:payment.advice.report,bank_id:0 -#: report:payroll.advice:0 -#: report:salary.detail.byyear:0 -msgid "Bank" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,end_date:0 -#: field:yearly.salary.detail,date_to:0 -msgid "End Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "February" -msgstr "" - -#. module: l10n_in_hr_payroll -#: sql_constraint:res.company:0 -msgid "The company name must be unique !" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,name:0 -#: report:paylip.details.in:0 -#: field:payment.advice.report,name:0 -#: report:salary.employee.bymonth:0 -msgid "Name" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.contract,city_type:0 -msgid "Metro" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: field:hr.salary.employee.month,employee_ids:0 -#: view:yearly.salary.detail:0 -#: field:yearly.salary.detail,employee_ids:0 -msgid "Employees" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Bank Account" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "April" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Name of the Employe" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:158 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:257 -#, python-format -msgid "Please define bank account for the %s employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,start_date:0 -#: field:yearly.salary.detail,date_from:0 -msgid "Start Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.contract:0 -msgid "Allowance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,bank_id:0 -msgid "Select the Bank from which the salary is going to be paid" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -msgid "Employee Pay Head Breakup" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Phone No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Credit" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,name:0 -#: report:payroll.advice:0 -msgid "Bank Account No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,date:0 -msgid "Advice Date is used to search Payslips" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "May" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "Create Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,year:0 -msgid "Year" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,neft:0 -#: field:payment.advice.report,neft:0 -msgid "NEFT Transaction" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -#: report:salary.employee.bymonth:0 -msgid "Total" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "form period" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Year of Payment Advices" -msgstr "" \ No newline at end of file diff --git a/addons/l10n_in_hr_payroll/i18n/hi.po b/addons/l10n_in_hr_payroll/i18n/hi.po index d7cc9dc1519..b13e24e05f9 100644 --- a/addons/l10n_in_hr_payroll/i18n/hi.po +++ b/addons/l10n_in_hr_payroll/i18n/hi.po @@ -6,928 +6,14 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0alpha\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-17 06:46+0000\n" -"PO-Revision-Date: 2012-08-17 06:46+0000\n" -"Last-Translator: <>\n" +"POT-Creation-Date: 2012-09-10 09:14+0000\n" +"PO-Revision-Date: 2012-10-10 12:31+0000\n" +"Last-Translator: Fabien (Open ERP) \n" "Language-Team: Hindi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-10-11 05:00+0000\n" +"X-Generator: Launchpad (build 16118)\n" -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "E-mail Address" -msgstr "" -#. module: l10n_in_hr_payroll -#: field:payment.advice.report,employee_bank_no:0 -msgid "Employee Bank Account" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Payment Advices which are in draft state" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Title" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Payment Advice from" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_yearly_salary_detail -msgid "Hr Salary Employee By Category Report" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employees Salary Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Allowances with Basic:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Department" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Deductions:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "A/C no." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,driver_salay:0 -msgid "Driver Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_yearly_salary_detail -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.yearly_salary -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_yearly_salary_detail -msgid "Yearly Salary by Employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.act_hr_emp_payslip_list -msgid "Payslips" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "March" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "(" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,company_id:0 -#: field:hr.payroll.advice.line,company_id:0 -#: view:payment.advice.report:0 -#: field:payment.advice.report,company_id:0 -msgid "Company" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "The Manager" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Letter Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "," -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Set to Draft" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.employee,number_of_year:0 -msgid "Total years of work experience" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "to" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Total :" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payslip.run,available_advice:0 -msgid "Made Payment Advice?" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Advices which are paid using NEFT transfer" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,tds:0 -msgid "Amount for Tax Deduction at Source" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payslip -msgid "Pay Slip" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,day:0 -msgid "Day" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Month of Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.payslip:0 -msgid "Payslip 'Date From' must be before 'Date To'." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,batch_id:0 -msgid "Batch" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Other Information" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.payroll.advice,state:0 -#: selection:payment.advice.report,state:0 -msgid "Cancelled" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "For" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Details by Salary Rule Category:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,voluntary_provident_fund:0 -msgid "VPF computed as percentage(%)" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,number:0 -#: report:paylip.details.in:0 -msgid "Reference" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Group By..." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,medical_insurance:0 -msgid "Medical Insurance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Identification No" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.payroll.advice,state:0 -#: selection:payment.advice.report,state:0 -msgid "Confirmed" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -#: report:salary.employee.bymonth:0 -msgid "From" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,bysal:0 -#: field:payment.advice.report,bysal:0 -#: report:payroll.advice:0 -msgid "By Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Confirm" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,chaque_nos:0 -#: field:payment.advice.report,cheque_nos:0 -msgid "Cheque Numbers" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:res.company:0 -msgid "Error! You can not create recursive companies." -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_salary_employee_month -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.hr_salary_employee_bymonth -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_salary_employee_month -msgid "Yearly Salary by Head" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:184 -#, python-format -msgid "You can not confirm Payment advice without advice lines." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,state:0 -#: field:payment.advice.report,state:0 -msgid "State" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Yours Sincerely" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,medical_insurance:0 -msgid "Deduction towards company provided medical insurance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payroll_advice_line -msgid "Bank Advice Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Email" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payslip.run,available_advice:0 -msgid "If this box is checked which means that Payment Advice exists for current batch" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:158 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:184 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:240 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:257 -#, python-format -msgid "Error !" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "Print" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payslip_run -msgid "Payslip Batches" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,debit_credit:0 -#: report:payroll.advice:0 -msgid "C/D" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.employee.bymonth:0 -msgid "Yearly Salary Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.payroll_advice -msgid "Print Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,line_ids:0 -msgid "Employee Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "July" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:res.company:0 -msgid "Configuration" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_view_hr_bank_advice_tree -#: model:ir.ui.menu,name:l10n_in_hr_payroll.hr_menu_payment_advice -msgid "Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_payment_advice_report_all -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_reporting_payment_advice -#: view:payment.advice.report:0 -msgid "Advices Analysis" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -msgid "This wizard will print report which displays employees break-up of Net Head for a specified dates." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,ifsc:0 -msgid "IFSC" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Date To" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,tds:0 -msgid "TDS" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.employee,join_date:0 -msgid "Join Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Confirm Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.contract:0 -msgid "Error! Contract start-date must be less than contract end-date." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:res.company,dearness_allowance:0 -msgid "Dearness Allowance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "August" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.contract:0 -msgid "Deduction" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Search Payment advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "SI. No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Payment Advices which are in confirm state" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "December" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Confirm Sheet" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,month:0 -msgid "Month" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employee Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.contract,city_type:0 -msgid "Non Metro" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "or" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_salary_employee_month -msgid "Hr Salary Employee By Month Report" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,category_id:0 -msgid "Category" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:240 -#, python-format -msgid "Payment advice already exists for %s, 'Set to Draft' to create a new advice." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "To Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.employee,number_of_year:0 -msgid "No. of Years of Service" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Note" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Salary Rule Category" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: selection:hr.payroll.advice,state:0 -#: view:payment.advice.report:0 -#: selection:payment.advice.report,state:0 -msgid "Draft" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Date From" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,voluntary_provident_fund:0 -msgid "Voluntary Provident Fund" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employee Name" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_payment_advice_report -msgid "Payment Advice Analysis" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Status" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,city_type:0 -msgid "Type of City" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:res.company,dearness_allowance:0 -msgid "Check this box if your company provide Dearness Allowance to employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,ifsc_code:0 -#: field:payment.advice.report,ifsc_code:0 -#: report:payroll.advice:0 -msgid "IFSC Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "June" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,nbr:0 -msgid "# Payment Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.payslip_details_report -msgid "PaySlip Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Payment Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,date:0 -#: field:payment.advice.report,date:0 -msgid "Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "November" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Extended Filters..." -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,help:l10n_in_hr_payroll.action_payment_advice_report_all -msgid "This report performs analysis on Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "October" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -msgid "Designation" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "January" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:yearly.salary.detail:0 -msgid "Pay Head Employee Breakup" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_res_company -msgid "Companies" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:payroll.advice:0 -msgid "Authorized Signature" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_contract -msgid "Contract" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice.line:0 -msgid "Advice Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "To," -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,driver_salay:0 -msgid "Check this box if you provide allowance for driver" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice.line,advice_id:0 -#: field:hr.payslip,advice_id:0 -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payroll_advice -msgid "Bank Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Other No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Draft Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,neft:0 -msgid "Check this box if your company use online transfer for salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "To" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:payment.advice.report,number:0 -msgid "Number" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "September" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "Cancel" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Day of Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.employee:0 -msgid "Error! You cannot create recursive hierarchy of Employee(s)." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:yearly.salary.detail:0 -msgid "This wizard will print report which display a pay head employee breakup for a specified dates." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "Payslip Batches ready to be Adviced" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Pay Slip Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Total Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,employee_id:0 -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_employee -#: view:payment.advice.report:0 -#: field:payment.advice.report,employee_id:0 -msgid "Employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Compute Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.employee,join_date:0 -msgid "Joining date of employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Dear Sir/Madam," -msgstr "Dear Sir/Madam," - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,note:0 -msgid "Description" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid ")" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:res.company:0 -msgid "Payroll" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "NEFT" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -msgid "Address" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,bank_id:0 -#: view:payment.advice.report:0 -#: field:payment.advice.report,bank_id:0 -#: report:payroll.advice:0 -#: report:salary.detail.byyear:0 -msgid "Bank" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,end_date:0 -#: field:yearly.salary.detail,date_to:0 -msgid "End Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "February" -msgstr "" - -#. module: l10n_in_hr_payroll -#: sql_constraint:res.company:0 -msgid "The company name must be unique !" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,name:0 -#: report:paylip.details.in:0 -#: field:payment.advice.report,name:0 -#: report:salary.employee.bymonth:0 -msgid "Name" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.contract,city_type:0 -msgid "Metro" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: field:hr.salary.employee.month,employee_ids:0 -#: view:yearly.salary.detail:0 -#: field:yearly.salary.detail,employee_ids:0 -msgid "Employees" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Bank Account" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "April" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Name of the Employe" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:158 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:257 -#, python-format -msgid "Please define bank account for the %s employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,start_date:0 -#: field:yearly.salary.detail,date_from:0 -msgid "Start Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.contract:0 -msgid "Allowance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,bank_id:0 -msgid "Select the Bank from which the salary is going to be paid" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -msgid "Employee Pay Head Breakup" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Phone No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Credit" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,name:0 -#: report:payroll.advice:0 -msgid "Bank Account No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,date:0 -msgid "Advice Date is used to search Payslips" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "May" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "Create Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,year:0 -msgid "Year" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,neft:0 -#: field:payment.advice.report,neft:0 -msgid "NEFT Transaction" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -#: report:salary.employee.bymonth:0 -msgid "Total" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "form period" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Year of Payment Advices" -msgstr "" \ No newline at end of file diff --git a/addons/l10n_in_hr_payroll/i18n/ta.po b/addons/l10n_in_hr_payroll/i18n/ta.po index 98d00c76a33..dbe0e244bee 100644 --- a/addons/l10n_in_hr_payroll/i18n/ta.po +++ b/addons/l10n_in_hr_payroll/i18n/ta.po @@ -6,928 +6,14 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0alpha\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-17 06:46+0000\n" -"PO-Revision-Date: 2012-08-17 06:46+0000\n" -"Last-Translator: <>\n" +"POT-Creation-Date: 2012-09-10 09:14+0000\n" +"PO-Revision-Date: 2012-10-10 12:31+0000\n" +"Last-Translator: Fabien (Open ERP) \n" "Language-Team: Tamil \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-10-11 05:00+0000\n" +"X-Generator: Launchpad (build 16118)\n" -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "E-mail Address" -msgstr "" -#. module: l10n_in_hr_payroll -#: field:payment.advice.report,employee_bank_no:0 -msgid "Employee Bank Account" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Payment Advices which are in draft state" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Title" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Payment Advice from" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_yearly_salary_detail -msgid "Hr Salary Employee By Category Report" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employees Salary Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Allowances with Basic:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Department" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Deductions:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "A/C no." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,driver_salay:0 -msgid "Driver Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_yearly_salary_detail -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.yearly_salary -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_yearly_salary_detail -msgid "Yearly Salary by Employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.act_hr_emp_payslip_list -msgid "Payslips" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "March" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "(" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,company_id:0 -#: field:hr.payroll.advice.line,company_id:0 -#: view:payment.advice.report:0 -#: field:payment.advice.report,company_id:0 -msgid "Company" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "The Manager" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Letter Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "," -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Set to Draft" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.employee,number_of_year:0 -msgid "Total years of work experience" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "to" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Total :" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payslip.run,available_advice:0 -msgid "Made Payment Advice?" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Advices which are paid using NEFT transfer" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,tds:0 -msgid "Amount for Tax Deduction at Source" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payslip -msgid "Pay Slip" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,day:0 -msgid "Day" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Month of Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.payslip:0 -msgid "Payslip 'Date From' must be before 'Date To'." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,batch_id:0 -msgid "Batch" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Other Information" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.payroll.advice,state:0 -#: selection:payment.advice.report,state:0 -msgid "Cancelled" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "For" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Details by Salary Rule Category:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,voluntary_provident_fund:0 -msgid "VPF computed as percentage(%)" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,number:0 -#: report:paylip.details.in:0 -msgid "Reference" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Group By..." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,medical_insurance:0 -msgid "Medical Insurance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Identification No" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.payroll.advice,state:0 -#: selection:payment.advice.report,state:0 -msgid "Confirmed" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -#: report:salary.employee.bymonth:0 -msgid "From" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,bysal:0 -#: field:payment.advice.report,bysal:0 -#: report:payroll.advice:0 -msgid "By Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Confirm" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,chaque_nos:0 -#: field:payment.advice.report,cheque_nos:0 -msgid "Cheque Numbers" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:res.company:0 -msgid "Error! You can not create recursive companies." -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_salary_employee_month -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.hr_salary_employee_bymonth -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_salary_employee_month -msgid "Yearly Salary by Head" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:184 -#, python-format -msgid "You can not confirm Payment advice without advice lines." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,state:0 -#: field:payment.advice.report,state:0 -msgid "State" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Yours Sincerely" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,medical_insurance:0 -msgid "Deduction towards company provided medical insurance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payroll_advice_line -msgid "Bank Advice Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Email" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payslip.run,available_advice:0 -msgid "If this box is checked which means that Payment Advice exists for current batch" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:158 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:184 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:240 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:257 -#, python-format -msgid "Error !" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "Print" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payslip_run -msgid "Payslip Batches" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,debit_credit:0 -#: report:payroll.advice:0 -msgid "C/D" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.employee.bymonth:0 -msgid "Yearly Salary Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.payroll_advice -msgid "Print Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,line_ids:0 -msgid "Employee Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "July" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:res.company:0 -msgid "Configuration" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_view_hr_bank_advice_tree -#: model:ir.ui.menu,name:l10n_in_hr_payroll.hr_menu_payment_advice -msgid "Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_payment_advice_report_all -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_reporting_payment_advice -#: view:payment.advice.report:0 -msgid "Advices Analysis" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -msgid "This wizard will print report which displays employees break-up of Net Head for a specified dates." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,ifsc:0 -msgid "IFSC" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Date To" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,tds:0 -msgid "TDS" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.employee,join_date:0 -msgid "Join Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Confirm Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.contract:0 -msgid "Error! Contract start-date must be less than contract end-date." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:res.company,dearness_allowance:0 -msgid "Dearness Allowance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "August" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.contract:0 -msgid "Deduction" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Search Payment advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "SI. No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Payment Advices which are in confirm state" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "December" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Confirm Sheet" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,month:0 -msgid "Month" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employee Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.contract,city_type:0 -msgid "Non Metro" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "or" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_salary_employee_month -msgid "Hr Salary Employee By Month Report" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,category_id:0 -msgid "Category" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:240 -#, python-format -msgid "Payment advice already exists for %s, 'Set to Draft' to create a new advice." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "To Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.employee,number_of_year:0 -msgid "No. of Years of Service" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Note" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Salary Rule Category" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: selection:hr.payroll.advice,state:0 -#: view:payment.advice.report:0 -#: selection:payment.advice.report,state:0 -msgid "Draft" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Date From" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,voluntary_provident_fund:0 -msgid "Voluntary Provident Fund" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employee Name" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_payment_advice_report -msgid "Payment Advice Analysis" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Status" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,city_type:0 -msgid "Type of City" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:res.company,dearness_allowance:0 -msgid "Check this box if your company provide Dearness Allowance to employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,ifsc_code:0 -#: field:payment.advice.report,ifsc_code:0 -#: report:payroll.advice:0 -msgid "IFSC Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "June" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,nbr:0 -msgid "# Payment Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.payslip_details_report -msgid "PaySlip Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Payment Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,date:0 -#: field:payment.advice.report,date:0 -msgid "Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "November" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Extended Filters..." -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,help:l10n_in_hr_payroll.action_payment_advice_report_all -msgid "This report performs analysis on Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "October" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -msgid "Designation" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "January" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:yearly.salary.detail:0 -msgid "Pay Head Employee Breakup" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_res_company -msgid "Companies" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:payroll.advice:0 -msgid "Authorized Signature" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_contract -msgid "Contract" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice.line:0 -msgid "Advice Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "To," -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,driver_salay:0 -msgid "Check this box if you provide allowance for driver" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice.line,advice_id:0 -#: field:hr.payslip,advice_id:0 -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payroll_advice -msgid "Bank Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Other No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Draft Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,neft:0 -msgid "Check this box if your company use online transfer for salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "To" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:payment.advice.report,number:0 -msgid "Number" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "September" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "Cancel" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Day of Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.employee:0 -msgid "Error! You cannot create recursive hierarchy of Employee(s)." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:yearly.salary.detail:0 -msgid "This wizard will print report which display a pay head employee breakup for a specified dates." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "Payslip Batches ready to be Adviced" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Pay Slip Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Total Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,employee_id:0 -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_employee -#: view:payment.advice.report:0 -#: field:payment.advice.report,employee_id:0 -msgid "Employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Compute Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.employee,join_date:0 -msgid "Joining date of employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Dear Sir/Madam," -msgstr "Dear Sir/Madam," - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,note:0 -msgid "Description" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid ")" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:res.company:0 -msgid "Payroll" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "NEFT" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -msgid "Address" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,bank_id:0 -#: view:payment.advice.report:0 -#: field:payment.advice.report,bank_id:0 -#: report:payroll.advice:0 -#: report:salary.detail.byyear:0 -msgid "Bank" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,end_date:0 -#: field:yearly.salary.detail,date_to:0 -msgid "End Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "February" -msgstr "" - -#. module: l10n_in_hr_payroll -#: sql_constraint:res.company:0 -msgid "The company name must be unique !" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,name:0 -#: report:paylip.details.in:0 -#: field:payment.advice.report,name:0 -#: report:salary.employee.bymonth:0 -msgid "Name" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.contract,city_type:0 -msgid "Metro" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: field:hr.salary.employee.month,employee_ids:0 -#: view:yearly.salary.detail:0 -#: field:yearly.salary.detail,employee_ids:0 -msgid "Employees" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Bank Account" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "April" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Name of the Employe" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:158 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:257 -#, python-format -msgid "Please define bank account for the %s employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,start_date:0 -#: field:yearly.salary.detail,date_from:0 -msgid "Start Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.contract:0 -msgid "Allowance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,bank_id:0 -msgid "Select the Bank from which the salary is going to be paid" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -msgid "Employee Pay Head Breakup" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Phone No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Credit" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,name:0 -#: report:payroll.advice:0 -msgid "Bank Account No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,date:0 -msgid "Advice Date is used to search Payslips" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "May" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "Create Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,year:0 -msgid "Year" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,neft:0 -#: field:payment.advice.report,neft:0 -msgid "NEFT Transaction" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -#: report:salary.employee.bymonth:0 -msgid "Total" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "form period" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Year of Payment Advices" -msgstr "" \ No newline at end of file diff --git a/addons/l10n_in_hr_payroll/i18n/te.po b/addons/l10n_in_hr_payroll/i18n/te.po index 0c6f6127c4d..47ea35552f8 100644 --- a/addons/l10n_in_hr_payroll/i18n/te.po +++ b/addons/l10n_in_hr_payroll/i18n/te.po @@ -6,928 +6,14 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0alpha\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-17 06:46+0000\n" -"PO-Revision-Date: 2012-08-17 06:46+0000\n" -"Last-Translator: <>\n" +"POT-Creation-Date: 2012-09-10 09:14+0000\n" +"PO-Revision-Date: 2012-10-10 12:31+0000\n" +"Last-Translator: Fabien (Open ERP) \n" "Language-Team: Telugu \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-10-11 05:00+0000\n" +"X-Generator: Launchpad (build 16118)\n" -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "E-mail Address" -msgstr "" -#. module: l10n_in_hr_payroll -#: field:payment.advice.report,employee_bank_no:0 -msgid "Employee Bank Account" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Payment Advices which are in draft state" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Title" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Payment Advice from" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_yearly_salary_detail -msgid "Hr Salary Employee By Category Report" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employees Salary Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Allowances with Basic:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Department" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Deductions:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "A/C no." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,driver_salay:0 -msgid "Driver Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_yearly_salary_detail -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.yearly_salary -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_yearly_salary_detail -msgid "Yearly Salary by Employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.act_hr_emp_payslip_list -msgid "Payslips" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "March" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "(" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,company_id:0 -#: field:hr.payroll.advice.line,company_id:0 -#: view:payment.advice.report:0 -#: field:payment.advice.report,company_id:0 -msgid "Company" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "The Manager" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Letter Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "," -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Set to Draft" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.employee,number_of_year:0 -msgid "Total years of work experience" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "to" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Total :" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payslip.run,available_advice:0 -msgid "Made Payment Advice?" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Advices which are paid using NEFT transfer" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,tds:0 -msgid "Amount for Tax Deduction at Source" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payslip -msgid "Pay Slip" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,day:0 -msgid "Day" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Month of Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.payslip:0 -msgid "Payslip 'Date From' must be before 'Date To'." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,batch_id:0 -msgid "Batch" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Other Information" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.payroll.advice,state:0 -#: selection:payment.advice.report,state:0 -msgid "Cancelled" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "For" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Details by Salary Rule Category:" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,voluntary_provident_fund:0 -msgid "VPF computed as percentage(%)" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,number:0 -#: report:paylip.details.in:0 -msgid "Reference" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Group By..." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,medical_insurance:0 -msgid "Medical Insurance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Identification No" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.payroll.advice,state:0 -#: selection:payment.advice.report,state:0 -msgid "Confirmed" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -#: report:salary.employee.bymonth:0 -msgid "From" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,bysal:0 -#: field:payment.advice.report,bysal:0 -#: report:payroll.advice:0 -msgid "By Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Confirm" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,chaque_nos:0 -#: field:payment.advice.report,cheque_nos:0 -msgid "Cheque Numbers" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:res.company:0 -msgid "Error! You can not create recursive companies." -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_salary_employee_month -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.hr_salary_employee_bymonth -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_salary_employee_month -msgid "Yearly Salary by Head" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:184 -#, python-format -msgid "You can not confirm Payment advice without advice lines." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,state:0 -#: field:payment.advice.report,state:0 -msgid "State" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Yours Sincerely" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,medical_insurance:0 -msgid "Deduction towards company provided medical insurance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payroll_advice_line -msgid "Bank Advice Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Email" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payslip.run,available_advice:0 -msgid "If this box is checked which means that Payment Advice exists for current batch" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:158 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:184 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:240 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:257 -#, python-format -msgid "Error !" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "Print" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payslip_run -msgid "Payslip Batches" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,debit_credit:0 -#: report:payroll.advice:0 -msgid "C/D" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.employee.bymonth:0 -msgid "Yearly Salary Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.payroll_advice -msgid "Print Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,line_ids:0 -msgid "Employee Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "July" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:res.company:0 -msgid "Configuration" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_view_hr_bank_advice_tree -#: model:ir.ui.menu,name:l10n_in_hr_payroll.hr_menu_payment_advice -msgid "Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_payment_advice_report_all -#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_reporting_payment_advice -#: view:payment.advice.report:0 -msgid "Advices Analysis" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -msgid "This wizard will print report which displays employees break-up of Net Head for a specified dates." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,ifsc:0 -msgid "IFSC" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Date To" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,tds:0 -msgid "TDS" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.employee,join_date:0 -msgid "Join Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Confirm Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.contract:0 -msgid "Error! Contract start-date must be less than contract end-date." -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:res.company,dearness_allowance:0 -msgid "Dearness Allowance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "August" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.contract:0 -msgid "Deduction" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Search Payment advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "SI. No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Payment Advices which are in confirm state" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "December" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Confirm Sheet" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,month:0 -msgid "Month" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employee Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.contract,city_type:0 -msgid "Non Metro" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "or" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_salary_employee_month -msgid "Hr Salary Employee By Month Report" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,category_id:0 -msgid "Category" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:240 -#, python-format -msgid "Payment advice already exists for %s, 'Set to Draft' to create a new advice." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "To Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.employee,number_of_year:0 -msgid "No. of Years of Service" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Note" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Salary Rule Category" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: selection:hr.payroll.advice,state:0 -#: view:payment.advice.report:0 -#: selection:payment.advice.report,state:0 -msgid "Draft" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Date From" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,voluntary_provident_fund:0 -msgid "Voluntary Provident Fund" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Employee Name" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_payment_advice_report -msgid "Payment Advice Analysis" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:payment.advice.report:0 -msgid "Status" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.contract,city_type:0 -msgid "Type of City" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:res.company,dearness_allowance:0 -msgid "Check this box if your company provide Dearness Allowance to employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,ifsc_code:0 -#: field:payment.advice.report,ifsc_code:0 -#: report:payroll.advice:0 -msgid "IFSC Code" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "June" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,nbr:0 -msgid "# Payment Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.payslip_details_report -msgid "PaySlip Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Payment Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,date:0 -#: field:payment.advice.report,date:0 -msgid "Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "November" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Extended Filters..." -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.actions.act_window,help:l10n_in_hr_payroll.action_payment_advice_report_all -msgid "This report performs analysis on Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "October" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -msgid "Designation" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "January" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:yearly.salary.detail:0 -msgid "Pay Head Employee Breakup" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_res_company -msgid "Companies" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:payroll.advice:0 -msgid "Authorized Signature" -msgstr "" - -#. module: l10n_in_hr_payroll -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_contract -msgid "Contract" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice.line:0 -msgid "Advice Lines" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "To," -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.contract,driver_salay:0 -msgid "Check this box if you provide allowance for driver" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice.line,advice_id:0 -#: field:hr.payslip,advice_id:0 -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payroll_advice -msgid "Bank Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Other No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Draft Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,neft:0 -msgid "Check this box if your company use online transfer for salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "To" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:payment.advice.report,number:0 -msgid "Number" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "September" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: view:hr.salary.employee.month:0 -#: view:yearly.salary.detail:0 -msgid "Cancel" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Day of Payment Advices" -msgstr "" - -#. module: l10n_in_hr_payroll -#: constraint:hr.employee:0 -msgid "Error! You cannot create recursive hierarchy of Employee(s)." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:yearly.salary.detail:0 -msgid "This wizard will print report which display a pay head employee breakup for a specified dates." -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "Payslip Batches ready to be Adviced" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Pay Slip Details" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Total Salary" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,employee_id:0 -#: model:ir.model,name:l10n_in_hr_payroll.model_hr_employee -#: view:payment.advice.report:0 -#: field:payment.advice.report,employee_id:0 -msgid "Employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -msgid "Compute Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.employee,join_date:0 -msgid "Joining date of employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Dear Sir/Madam," -msgstr "Dear Sir/Madam," - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,note:0 -msgid "Description" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid ")" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:res.company:0 -msgid "Payroll" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "NEFT" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -msgid "Address" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,bank_id:0 -#: view:payment.advice.report:0 -#: field:payment.advice.report,bank_id:0 -#: report:payroll.advice:0 -#: report:salary.detail.byyear:0 -msgid "Bank" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,end_date:0 -#: field:yearly.salary.detail,date_to:0 -msgid "End Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "February" -msgstr "" - -#. module: l10n_in_hr_payroll -#: sql_constraint:res.company:0 -msgid "The company name must be unique !" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payroll.advice:0 -#: field:hr.payroll.advice,name:0 -#: report:paylip.details.in:0 -#: field:payment.advice.report,name:0 -#: report:salary.employee.bymonth:0 -msgid "Name" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:hr.contract,city_type:0 -msgid "Metro" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -#: field:hr.salary.employee.month,employee_ids:0 -#: view:yearly.salary.detail:0 -#: field:yearly.salary.detail,employee_ids:0 -msgid "Employees" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Bank Account" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "April" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "Name of the Employe" -msgstr "" - -#. module: l10n_in_hr_payroll -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:158 -#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:257 -#, python-format -msgid "Please define bank account for the %s employee" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.salary.employee.month,start_date:0 -#: field:yearly.salary.detail,date_from:0 -msgid "Start Date" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.contract:0 -msgid "Allowance" -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,bank_id:0 -msgid "Select the Bank from which the salary is going to be paid" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.salary.employee.month:0 -msgid "Employee Pay Head Breakup" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:salary.detail.byyear:0 -msgid "Phone No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -msgid "Credit" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice.line,name:0 -#: report:payroll.advice:0 -msgid "Bank Account No." -msgstr "" - -#. module: l10n_in_hr_payroll -#: help:hr.payroll.advice,date:0 -msgid "Advice Date is used to search Payslips" -msgstr "" - -#. module: l10n_in_hr_payroll -#: selection:payment.advice.report,month:0 -msgid "May" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:hr.payslip.run:0 -msgid "Create Advice" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -#: field:payment.advice.report,year:0 -msgid "Year" -msgstr "" - -#. module: l10n_in_hr_payroll -#: field:hr.payroll.advice,neft:0 -#: field:payment.advice.report,neft:0 -msgid "NEFT Transaction" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:paylip.details.in:0 -#: report:salary.detail.byyear:0 -#: report:salary.employee.bymonth:0 -msgid "Total" -msgstr "" - -#. module: l10n_in_hr_payroll -#: report:payroll.advice:0 -msgid "form period" -msgstr "" - -#. module: l10n_in_hr_payroll -#: view:payment.advice.report:0 -msgid "Year of Payment Advices" -msgstr "" \ No newline at end of file diff --git a/addons/l10n_uk/data/account.account.type.csv b/addons/l10n_uk/data/account.account.type.csv index 0827975b22f..379656ece39 100644 --- a/addons/l10n_uk/data/account.account.type.csv +++ b/addons/l10n_uk/data/account.account.type.csv @@ -10,4 +10,4 @@ "account_type_output_tax","Output Tax","Output Tax","liability","Unreconciled" "account_type_input_tax","Input Tax","Input Tax","asset","Unreconciled" "account_type_profit_and_loss","Profit and Loss","Profit and Loss","none","None" -"account_type_view","View","view",,"None" +"account_type_view","View","view","none","None" diff --git a/addons/mail/__init__.py b/addons/mail/__init__.py index 92e882ae6d8..abf714ad534 100644 --- a/addons/mail/__init__.py +++ b/addons/mail/__init__.py @@ -33,6 +33,7 @@ import report import wizard import res_config import mail_group_menu +import update # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/mail/data/mail_data.xml b/addons/mail/data/mail_data.xml index 5fe1ee45b1d..522cbe8c7a7 100644 --- a/addons/mail/data/mail_data.xml +++ b/addons/mail/data/mail_data.xml @@ -13,6 +13,20 @@ + + Update Notification + + + 1 + weeks + -1 + + + + + 1000 + + comment diff --git a/addons/mail/data/mail_demo.xml b/addons/mail/data/mail_demo.xml index 1350fd33547..7bda32c002b 100644 --- a/addons/mail/data/mail_demo.xml +++ b/addons/mail/data/mail_demo.xml @@ -42,10 +42,5 @@ This month you also get 250 EUR of eco-vouchers if you have been in the company comment - - mail.catchall.domain - demo.openerp.com - - diff --git a/addons/mail/mail_mail.py b/addons/mail/mail_mail.py index e9a569a8192..741184ef7a3 100644 --- a/addons/mail/mail_mail.py +++ b/addons/mail/mail_mail.py @@ -63,10 +63,12 @@ class mail_mail(osv.Model): } def _get_default_from(self, cr, uid, context=None): - cur = self.pool.get('res.users').browse(cr, uid, uid, context=context) - if not cur.alias_domain: - raise osv.except_osv(_('Invalid Action!'), _('Unable to send email, set an alias domain in your server settings.')) - return cur.alias_name + '@' + cur.alias_domain + this = self.pool.get('res.users').browse(cr, uid, uid, context=context) + if this.alias_domain: + return '%s@%s' % (this.alias_name, this.alias_domain) + elif this.email: + return this.email + raise osv.except_osv(_('Invalid Action!'), _("Unable to send email, please configure the sender's email address or alias.")) _defaults = { 'state': 'outgoing', diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index bbf68509277..7e77b2f2e8c 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -180,7 +180,6 @@ class mail_message(osv.Model): fields allow to have the foreign record name without having to check external access rights). """ - child_nbr = len(msg.child_ids) has_voted = False vote_ids = self.pool.get('res.users').name_get(cr, SUPERUSER_ID, [user.id for user in msg.vote_user_ids], context=context) for vote in vote_ids: @@ -194,7 +193,7 @@ class mail_message(osv.Model): try: author_id = self.pool.get('res.partner').name_get(cr, uid, [msg.author_id.id], context=context)[0] is_author = uid == msg.author_id.user_ids[0].id - except (orm.except_orm, osv.except_osv): + except Exception: author_id = False is_author = False try: @@ -502,9 +501,9 @@ class mail_message(osv.Model): def create(self, cr, uid, values, context=None): if not values.get('message_id') and values.get('res_id') and values.get('model'): - values['message_id'] = tools.generate_tracking_message_id('%(model)s-%(res_id)s' % values) + values['message_id'] = tools.generate_tracking_message_id('%(res_id)s-%(model)s' % values) newid = super(mail_message, self).create(cr, uid, values, context) - self._notify(cr, 1, newid, context=context) + self._notify(cr, SUPERUSER_ID, newid, context=context) return newid def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'): diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 9f53b4c08b1..e6150640eb3 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -39,63 +39,6 @@ _logger = logging.getLogger(__name__) def decode_header(message, header, separator=' '): return separator.join(map(decode, message.get_all(header, []))) -class many2many_reference(fields.many2many): - """ many2many_reference manages many2many fields where one id is found - by a reference-like key (a char column in addition to the foreign id). - The reference_column attribute on the many2many fields is used; - if not defined, ``res_model`` is used. """ - - def _get_query_and_where_params(self, cr, model, ids, values, where_params): - """ Add in where condition like mail_followers.res_model = 'crm.lead' """ - reference_column = self.reference_column if self.reference_column else 'res_model' - values.update(reference_column=reference_column, reference_value=model._name) - query = 'SELECT %(rel)s.%(id2)s, %(rel)s.%(id1)s \ - FROM %(rel)s, %(from_c)s \ - WHERE %(rel)s.%(id1)s IN %%s \ - AND %(rel)s.%(id2)s = %(tbl)s.id \ - AND %(rel)s.%(reference_column)s = \'%(reference_value)s\' \ - %(where_c)s \ - %(order_by)s \ - %(limit)s \ - OFFSET %(offset)d' \ - % values - return query, where_params - - def set(self, cr, model, id, name, values, user=None, context=None): - """ Override to add the reference field in queries. """ - if not values: return - rel, id1, id2 = self._sql_names(model) - obj = model.pool.get(self._obj) - # reference column name: given by attribute or res_model - reference_column = self.reference_column if self.reference_column else 'res_model' - for act in values: - if not (isinstance(act, list) or isinstance(act, tuple)) or not act: - continue - if act[0] == 0: - idnew = obj.create(cr, user, act[2], context=context) - cr.execute('INSERT INTO '+rel+' ('+id1+','+id2+','+reference_column+') VALUES (%s,%s,%s)', (id, idnew, model._name)) - elif act[0] == 3: - cr.execute('DELETE FROM '+rel+' WHERE '+id1+'=%s AND '+id2+'=%s AND '+reference_column+'=%s', (id, act[1], model._name)) - elif act[0] == 4: - # following queries are in the same transaction - so should be relatively safe - cr.execute('SELECT 1 FROM '+rel+' WHERE '+id1+'=%s AND '+id2+'=%s AND '+reference_column+'=%s', (id, act[1], model._name)) - if not cr.fetchone(): - cr.execute('INSERT INTO '+rel+' ('+id1+','+id2+','+reference_column+') VALUES (%s,%s,%s)', (id, act[1], model._name)) - elif act[0] == 5: - cr.execute('delete from '+rel+' where '+id1+' = %s AND '+reference_column+'=%s', (id, model._name)) - elif act[0] == 6: - d1, d2,tables = obj.pool.get('ir.rule').domain_get(cr, user, obj._name, context=context) - if d1: - d1 = ' and ' + ' and '.join(d1) - else: - d1 = '' - cr.execute('DELETE FROM '+rel+' WHERE '+id1+'=%s AND '+reference_column+'=%s AND '+id2+' IN (SELECT '+rel+'.'+id2+' FROM '+rel+', '+','.join(tables)+' WHERE '+rel+'.'+id1+'=%s AND '+rel+'.'+id2+' = '+obj._table+'.id '+ d1 +')', [id, model._name, id]+d2) - for act_nbr in act[2]: - cr.execute('INSERT INTO '+rel+' ('+id1+','+id2+','+reference_column+') VALUES (%s,%s,%s)', (id, act_nbr, model._name)) - # cases 1, 2: performs write and unlink -> default implementation is ok - else: - return super(many2many_reference, self).set(cr, model, id, name, values, user, context) - class mail_thread(osv.AbstractModel): ''' mail_thread model is meant to be inherited by any model that needs to @@ -186,6 +129,64 @@ class mail_thread(osv.AbstractModel): res[notif.message_id.res_id] = True return [('id', 'in', res.keys())] + def _get_followers(self, cr, uid, ids, name, arg, context=None): + fol_obj = self.pool.get('mail.followers') + fol_ids = fol_obj.search(cr, SUPERUSER_ID, [('res_model', '=', self._name), ('res_id', 'in', ids)]) + res = dict((res_id, []) for res_id in ids) + for fol in fol_obj.browse(cr, SUPERUSER_ID, fol_ids): + res[fol.res_id].append(fol.partner_id.id) + return res + + def _set_followers(self, cr, uid, id, name, value, arg, context=None): + if not value: + return + partner_obj = self.pool.get('res.partner') + fol_obj = self.pool.get('mail.followers') + + # read the old set of followers, and determine the new set of followers + fol_ids = fol_obj.search(cr, SUPERUSER_ID, [('res_model', '=', self._name), ('res_id', '=', id)]) + old = set(fol.partner_id.id for fol in fol_obj.browse(cr, SUPERUSER_ID, fol_ids)) + new = set(old) + + for command in value: + if isinstance(command, (int, long)): + new.add(command) + elif command[0] == 0: + new.add(partner_obj.create(cr, uid, command[2], context=context)) + elif command[0] == 1: + partner_obj.write(cr, uid, [command[1]], command[2], context=context) + new.add(command[1]) + elif command[0] == 2: + partner_obj.unlink(cr, uid, [command[1]], context=context) + new.discard(command[1]) + elif command[0] == 3: + new.discard(command[1]) + elif command[0] == 4: + new.add(command[1]) + elif command[0] == 5: + new.clear() + elif command[0] == 6: + new = set(command[2]) + + # remove partners that are no longer followers + fol_ids = fol_obj.search(cr, SUPERUSER_ID, + [('res_model', '=', self._name), ('res_id', '=', id), ('partner_id', 'not in', list(new))]) + fol_obj.unlink(cr, SUPERUSER_ID, fol_ids) + + # add new followers + for partner_id in new - old: + fol_obj.create(cr, SUPERUSER_ID, {'res_model': self._name, 'res_id': id, 'partner_id': partner_id}) + + def _search_followers(self, cr, uid, obj, name, args, context): + fol_obj = self.pool.get('mail.followers') + res = [] + for field, operator, value in args: + assert field == name + fol_ids = fol_obj.search(cr, SUPERUSER_ID, [('res_model', '=', self._name), ('partner_id', operator, value)]) + res_ids = [fol.res_id for fol in fol_obj.browse(cr, SUPERUSER_ID, fol_ids)] + res.append(('id', 'in', res_ids)) + return res + _columns = { 'message_is_follower': fields.function(_get_subscription_data, type='boolean', string='Is a Follower', multi='_get_subscription_data,'), @@ -194,9 +195,8 @@ class mail_thread(osv.AbstractModel): help="Holds data about the subtypes. The content of this field "\ "is a structure holding the current model subtypes, and the "\ "current document followed subtypes."), - 'message_follower_ids': many2many_reference('res.partner', - 'mail_followers', 'res_id', 'partner_id', - reference_column='res_model', string='Followers'), + 'message_follower_ids': fields.function(_get_followers, fnct_inv=_set_followers, + fnct_search=_search_followers, type='many2many', obj='res.partner', string='Followers'), 'message_comment_ids': fields.one2many('mail.message', 'res_id', domain=lambda self: [('model', '=', self._name), ('type', 'in', ('comment', 'email'))], string='Comments and emails', @@ -422,12 +422,12 @@ class mail_thread(osv.AbstractModel): model_pool = self.pool.get(model) assert thread_id and hasattr(model_pool, 'message_update') or hasattr(model_pool, 'message_new'), \ "Undeliverable mail with Message-Id %s, model %s does not accept incoming emails" % \ - (msg['message-id'], model) + (msg['message_id'], model) if thread_id and hasattr(model_pool, 'message_update'): model_pool.message_update(cr, user_id, [thread_id], msg, context=context) else: thread_id = model_pool.message_new(cr, user_id, msg, custom_values, context=context) - self.message_post(cr, uid, [thread_id], context=context, **msg) + model_pool.message_post(cr, uid, [thread_id], context=context, **msg) return thread_id def message_new(self, cr, uid, msg_dict, custom_values=None, context=None): @@ -538,7 +538,7 @@ class mail_thread(osv.AbstractModel): field may not be present if missing in original message:: - { 'message-id': msg_id, + { 'message_id': msg_id, 'subject': subject, 'from': from, 'to': to, diff --git a/addons/mail/res_config.py b/addons/mail/res_config.py index ce2f75687ba..91606e1c720 100644 --- a/addons/mail/res_config.py +++ b/addons/mail/res_config.py @@ -19,6 +19,8 @@ # ############################################################################## +import urlparse + from openerp.osv import osv, fields class project_configuration(osv.TransientModel): @@ -31,9 +33,16 @@ class project_configuration(osv.TransientModel): } def get_default_alias_domain(self, cr, uid, ids, context=None): - return {'alias_domain': self.pool.get("ir.config_parameter").get_param(cr, uid, "mail.catchall.domain", context=context)} + alias_domain = self.pool.get("ir.config_parameter").get_param(cr, uid, "mail.catchall.domain", context=context) + if not alias_domain: + domain = self.pool.get("ir.config_parameter").get_param(cr, uid, "web.base.url", context=context) + try: + alias_domain = urlparse.urlsplit(domain).netloc.split(':')[0] + except Exception: + pass + return {'alias_domain': alias_domain} def set_alias_domain(self, cr, uid, ids, context=None): config_parameters = self.pool.get("ir.config_parameter") for record in self.browse(cr, uid, ids, context=context): - config_parameters.set_param(cr, uid, "mail.catchall.domain", record.alias_domain or '', context=context) \ No newline at end of file + config_parameters.set_param(cr, uid, "mail.catchall.domain", record.alias_domain or '', context=context) diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py index 545198f4c7f..f870604b03a 100644 --- a/addons/mail/res_users.py +++ b/addons/mail/res_users.py @@ -110,9 +110,19 @@ class res_users(osv.Model): alias_pool.unlink(cr, uid, alias_ids, context=context) return res - def message_post(self, cr, uid, thread_id, **kwargs): - partner_id = self.pool.get('res.users').browse(cr, uid, thread_id)[0].partner_id.id - return self.pool.get('res.partner').message_post(cr, uid, partner_id, **kwargs) + def message_post(self, cr, uid, thread_id, context=None, **kwargs): + assert thread_id, "res.users does not support posting global messages" + if context and 'thread_model' in context: + context['thread_model'] = 'res.partner' + if isinstance(thread_id, (list, tuple)): + thread_id = thread_id[0] + partner_id = self.pool.get('res.users').browse(cr, uid, thread_id).partner_id.id + return self.pool.get('res.partner').message_post(cr, uid, partner_id, context=context, **kwargs) + + def message_update(self, cr, uid, ids, msg_dict, update_vals=None, context=None): + partner_id = self.pool.get('res.users').browse(cr, uid, ids)[0].partner_id.id + return self.pool.get('res.partner').message_update(cr, uid, [partner_id], msg_dict, + update_vals=update_vals, context=context) class res_users_mail_group(osv.Model): """ Update of res.users class diff --git a/addons/mail/security/mail_security.xml b/addons/mail/security/mail_security.xml index b503565bd11..be3bb667628 100644 --- a/addons/mail/security/mail_security.xml +++ b/addons/mail/security/mail_security.xml @@ -7,7 +7,7 @@ Mail.group: access only public and joined groups - ['|', '|', ('public', '=', 'public'), ('message_follower_ids', 'in', [user.id]), '&', ('public','=','groups'), ('group_public_id','in', [x.id for x in user.groups_id])] + ['|', '|', ('public', '=', 'public'), ('message_follower_ids', 'in', [user.partner_id.id]), '&', ('public','=','groups'), ('group_public_id','in', [g.id for g in user.groups_id])] +
    diff --git a/addons/point_of_sale/controllers/main.py b/addons/point_of_sale/controllers/main.py index 3d80fd53e24..b189c8f204a 100644 --- a/addons/point_of_sale/controllers/main.py +++ b/addons/point_of_sale/controllers/main.py @@ -4,16 +4,12 @@ import simplejson import os import openerp -try: - import openerp.addons.web.common.http as openerpweb - from openerp.addons.web.controllers.main import manifest_list, module_boot, html_template -except ImportError: - import web.common.http as openerpweb +from openerp.addons.web.controllers.main import manifest_list, module_boot, html_template -class PointOfSaleController(openerpweb.Controller): +class PointOfSaleController(openerp.addons.web.http.Controller): _cp_path = '/pos' - @openerpweb.httprequest + @openerp.addons.web.http.httprequest def app(self, req, s_action=None, **kw): js = "\n ".join('' % i for i in manifest_list(req, None, 'js')) css = "\n ".join('' % i for i in manifest_list(req, None, 'css')) @@ -29,7 +25,7 @@ class PointOfSaleController(openerpweb.Controller): } return r - @openerpweb.httprequest + @openerp.addons.web.http.httprequest def manifest(self, req, **kwargs): """ This generates a HTML5 cache manifest files that preloads the categories and products thumbnails and other ressources necessary for the point of sale to work offline """ @@ -66,12 +62,12 @@ class PointOfSaleController(openerpweb.Controller): return m - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def dispatch(self, request, iface, **kwargs): method = 'iface_%s' % iface return getattr(self, method)(request, **kwargs) - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def scan_item_success(self, request, ean): """ A product has been scanned with success @@ -79,7 +75,7 @@ class PointOfSaleController(openerpweb.Controller): print 'scan_item_success: ' + str(ean) return - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def scan_item_error_unrecognized(self, request, ean): """ A product has been scanned without success @@ -87,7 +83,7 @@ class PointOfSaleController(openerpweb.Controller): print 'scan_item_error_unrecognized: ' + str(ean) return - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def help_needed(self, request): """ The user wants an help (ex: light is on) @@ -95,7 +91,7 @@ class PointOfSaleController(openerpweb.Controller): print "help_needed" return - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def help_canceled(self, request): """ The user stops the help request @@ -103,22 +99,22 @@ class PointOfSaleController(openerpweb.Controller): print "help_canceled" return - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def weighting_start(self, request): print "weighting_start" return - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def weighting_read_kg(self, request): print "weighting_read_kg" return 0.0 - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def weighting_end(self, request): print "weighting_end" return - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def payment_request(self, request, price): """ The PoS will activate the method payment @@ -126,47 +122,47 @@ class PointOfSaleController(openerpweb.Controller): print "payment_request: price:"+str(price) return 'ok' - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def payment_status(self, request): print "payment_status" return { 'status':'waiting' } - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def payment_cancel(self, request): print "payment_cancel" return - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def transaction_start(self, request): print 'transaction_start' return - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def transaction_end(self, request): print 'transaction_end' return - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def cashier_mode_activated(self, request): print 'cashier_mode_activated' return - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def cashier_mode_deactivated(self, request): print 'cashier_mode_deactivated' return - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def open_cashbox(self, request): print 'open_cashbox' return - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def print_receipt(self, request, receipt): print 'print_receipt' + str(receipt) return - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def print_pdf_invoice(self, request, pdfinvoice): print 'print_pdf_invoice' + str(pdfinvoice) return diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index 590718b48f0..dfd0d73ad55 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -348,6 +348,29 @@ class pos_session(osv.osv): statement.unlink(context=context) return True + + def open_cb(self, cr, uid, ids, context=None): + """ + call the Point Of Sale interface and set the pos.session to 'opened' (in progress) + """ + if context is None: + context = dict() + + if isinstance(ids, (int, long)): + ids = [ids] + + this_record = self.browse(cr, uid, ids[0], context=context) + this_record._workflow_signal('open') + + context.update(active_id=this_record.id) + + return { + 'type' : 'ir.actions.client', + 'name' : _('Start Point Of Sale'), + 'tag' : 'pos.ui', + 'context' : context, + } + def wkf_action_open(self, cr, uid, ids, context=None): # second browse because we need to refetch the data from the DB for cash_register_id for record in self.browse(cr, uid, ids, context=context): @@ -439,10 +462,10 @@ class pos_session(osv.osv): context = {} if not ids: return {} - context.update({'session_id' : ids[0]}) + context.update({'active_id': ids[0]}) return { 'type' : 'ir.actions.client', - 'name' : 'Start Point Of Sale', + 'name' : _('Start Point Of Sale'), 'tag' : 'pos.ui', 'context' : context, } diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml index d9836527013..66b7e3b6eb5 100644 --- a/addons/point_of_sale/point_of_sale_view.xml +++ b/addons/point_of_sale/point_of_sale_view.xml @@ -862,7 +862,7 @@
    - - +
    @@ -490,7 +490,7 @@ at - + / @@ -558,7 +558,7 @@ - + diff --git a/addons/portal/__openerp__.py b/addons/portal/__openerp__.py index d7356fc9ce5..66a736c6048 100644 --- a/addons/portal/__openerp__.py +++ b/addons/portal/__openerp__.py @@ -25,7 +25,6 @@ 'depends': [ 'base', 'share', - 'auth_anonymous', 'auth_signup', ], 'author': 'OpenERP SA', diff --git a/addons/portal/mail_mail.py b/addons/portal/mail_mail.py index a41c28f15e2..f57170ed67b 100644 --- a/addons/portal/mail_mail.py +++ b/addons/portal/mail_mail.py @@ -19,34 +19,22 @@ # ############################################################################## -import tools from osv import osv +import tools - -class mail_mail_portal(osv.Model): - """ Update of mail_mail class, to add the signin URL to notifications. - """ - _name = 'mail.mail' - _inherit = ['mail.mail'] - - def _generate_signin_url(self, cr, uid, partner_id, portal_group_id, key, context=None): - """ Generate the signin url """ - base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='', context=context) - return base_url + '/login?action=signin&partner_id=%s&group=%s&key=%s' % (partner_id, portal_group_id, key) +class mail_mail(osv.Model): + """ Update of mail_mail class, to add the signin URL to notifications. """ + _inherit = 'mail.mail' def send_get_mail_body(self, cr, uid, mail, partner=None, context=None): - """ Return a specific ir_email body. The main purpose of this method - is to be inherited by Portal, to add a link for signing in, in - each notification email a partner receives. - + """ add a signin link inside the body of a mail.mail :param mail: mail.mail browse_record :param partner: browse_record of the specific recipient partner + :return: the resulting body_html """ + body = super(mail_mail, self).send_get_mail_body(cr, uid, mail, partner, context=context) if partner: - portal_ref = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'portal', 'group_portal') - portal_id = portal_ref and portal_ref[1] or False - url = self._generate_signin_url(cr, uid, partner.id, portal_id, 1234, context=context) - body = tools.append_content_to_html(mail.body_html, url) - return body - else: - return super(mail_mail_portal, self).send_get_mail_body(cr, uid, mail, partner=partner, context=context) + context = dict(context or {}, signup_valid=True) + partner = self.pool.get('res.partner').browse(cr, uid, partner.id, context) + body = tools.append_content_to_html(body, "Log in our portal at: %s" % partner.signup_url) + return body diff --git a/addons/portal/portal_view.xml b/addons/portal/portal_view.xml index 16e8a86b27e..5b39ea89525 100644 --- a/addons/portal/portal_view.xml +++ b/addons/portal/portal_view.xml @@ -5,7 +5,7 @@ diff --git a/addons/portal/tests/test_portal.py b/addons/portal/tests/test_portal.py index 653a05d40aa..83b10b39c28 100644 --- a/addons/portal/tests/test_portal.py +++ b/addons/portal/tests/test_portal.py @@ -33,6 +33,7 @@ class test_portal(test_mail.TestMailMockups): self.mail_group = self.registry('mail.group') self.mail_mail = self.registry('mail.mail') self.mail_message = self.registry('mail.message') + self.mail_invite = self.registry('mail.wizard.invite') self.res_users = self.registry('res.users') self.res_partner = self.registry('res.partner') @@ -41,19 +42,20 @@ class test_portal(test_mail.TestMailMockups): {'name': 'Pigs', 'description': 'Fans of Pigs, unite !'}) # Find Portal group - group_portal_ref = self.registry('ir.model.data').get_object_reference(cr, uid, 'portal', 'group_portal') - self.group_portal_id = group_portal_ref and group_portal_ref[1] or False + group_portal = self.registry('ir.model.data').get_object(cr, uid, 'portal', 'group_portal') + self.group_portal_id = group_portal.id # Create Chell (portal user) self.user_chell_id = self.res_users.create(cr, uid, {'name': 'Chell Gladys', 'login': 'chell', 'groups_id': [(6, 0, [self.group_portal_id])]}) - self.user_chell = self.res_users.browse(cr, uid, self.user_chell_id) - self.partner_chell_id = self.user_chell.partner_id.id + user_chell = self.res_users.browse(cr, uid, self.user_chell_id) + self.partner_chell_id = user_chell.partner_id.id + + # Set an email address for the user running the tests, used as Sender for outgoing mails + self.res_users.write(cr, uid, uid, {'email': 'test@localhost'}) def test_00_access_rights(self): """ Test basic mail_message and mail_group access rights for portal users. """ cr, uid = self.cr, self.uid - partner_chell_id = self.partner_chell_id - user_chell_id = self.user_chell_id # Prepare group: Pigs (portal) self.mail_group.message_post(cr, uid, self.group_pigs_id, body='Message') @@ -64,56 +66,56 @@ class test_portal(test_mail.TestMailMockups): # ---------------------------------------- # Do: Chell reads Pigs messages, ok because restricted to portal group - message_ids = self.mail_group.read(cr, user_chell_id, self.group_pigs_id, ['message_ids'])['message_ids'] - self.mail_message.read(cr, user_chell_id, message_ids) + message_ids = self.mail_group.read(cr, self.user_chell_id, self.group_pigs_id, ['message_ids'])['message_ids'] + self.mail_message.read(cr, self.user_chell_id, message_ids) + # Do: Chell posts a message on Pigs, crash because can not write on group or is not in the followers - self.assertRaises(except_orm, - self.mail_group.message_post, - cr, user_chell_id, self.group_pigs_id, body='Message') + with self.assertRaises(except_orm): + self.mail_group.message_post(cr, self.user_chell_id, self.group_pigs_id, body='Message') + # Do: Chell is added to Pigs followers - self.mail_group.message_subscribe(cr, uid, [self.group_pigs_id], [partner_chell_id]) + self.mail_group.message_subscribe(cr, uid, [self.group_pigs_id], [self.partner_chell_id]) + # Test: Chell posts a message on Pigs, ok because in the followers - self.mail_group.message_post(cr, user_chell_id, self.group_pigs_id, body='Message') + self.mail_group.message_post(cr, self.user_chell_id, self.group_pigs_id, body='Message') def test_50_mail_invite(self): cr, uid = self.cr, self.uid user_admin = self.res_users.browse(cr, uid, uid) - self.mail_invite = self.registry('mail.wizard.invite') base_url = self.registry('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='') - portal_ref = self.registry('ir.model.data').get_object_reference(cr, uid, 'portal', 'group_portal') - portal_id = portal_ref and portal_ref[1] or False - # 0 - Admin - p_a_id = user_admin.partner_id.id + partner_admin_id = user_admin.partner_id.id # 1 - Bert Tartopoils, with email, should receive emails for comments and emails - p_b_id = self.res_partner.create(cr, uid, {'name': 'Bert Tartopoils', 'email': 'b@b'}) + partner_bert_id = self.res_partner.create(cr, uid, {'name': 'Bert Tartopoils', 'email': 'b@b'}) # ---------------------------------------- - # CASE1: generated URL + # CASE: invite Bert to follow Pigs # ---------------------------------------- - url = self.mail_mail._generate_signin_url(cr, uid, p_b_id, portal_id, 1234) - self.assertEqual(url, base_url + '/login?action=signin&partner_id=%s&group=%s&key=%s' % (p_b_id, portal_id, 1234), - 'generated signin URL incorrect') - - # ---------------------------------------- - # CASE2: invite Bert - # ---------------------------------------- - - _sent_email_subject = 'Invitation to follow Pigs' - _sent_email_body = append_content_to_html('
    You have been invited to follow Pigs.
    ', url) - # Do: create a mail_wizard_invite, validate it self._init_mock_build_email() - mail_invite_id = self.mail_invite.create(cr, uid, {'partner_ids': [(4, p_b_id)]}, {'default_res_model': 'mail.group', 'default_res_id': self.group_pigs_id}) + context = {'default_res_model': 'mail.group', 'default_res_id': self.group_pigs_id} + mail_invite_id = self.mail_invite.create(cr, uid, {'partner_ids': [(4, partner_bert_id)]}, context) self.mail_invite.add_followers(cr, uid, [mail_invite_id]) - group_pigs = self.mail_group.browse(cr, uid, self.group_pigs_id) # Test: Pigs followers should contain Admin and Bert + group_pigs = self.mail_group.browse(cr, uid, self.group_pigs_id) follower_ids = [follower.id for follower in group_pigs.message_follower_ids] - self.assertEqual(set(follower_ids), set([p_a_id, p_b_id]), 'Pigs followers after invite is incorrect') - # Test: sent email subject, body + self.assertEqual(set(follower_ids), set([partner_admin_id, partner_bert_id]), 'Pigs followers after invite is incorrect') + + # Test: partner must have been prepared for signup + partner_bert = self.res_partner.browse(cr, uid, partner_bert_id) + self.assertTrue(partner_bert.signup_valid, 'partner has not been prepared for signup') + self.assertTrue(base_url in partner_bert.signup_url, 'signup url is incorrect') + self.assertTrue(cr.dbname in partner_bert.signup_url, 'signup url is incorrect') + self.assertTrue(partner_bert.signup_token in partner_bert.signup_url, 'signup url is incorrect') + + # Test: (pretend to) send email and check subject, body self.assertEqual(len(self._build_email_kwargs_list), 1, 'sent email number incorrect, should be only for Bert') for sent_email in self._build_email_kwargs_list: - self.assertEqual(sent_email.get('subject'), _sent_email_subject, 'sent email subject incorrect') - self.assertEqual(sent_email.get('body'), _sent_email_body, 'sent email body incorrect') + self.assertEqual(sent_email.get('subject'), 'Invitation to follow Pigs', + 'subject of invitation email is incorrect') + self.assertTrue('You have been invited to follow Pigs' in sent_email.get('body'), + 'body of invitation email is incorrect') + self.assertTrue(partner_bert.signup_url in sent_email.get('body'), + 'body of invitation email does not contain signup url') diff --git a/addons/portal/wizard/portal_wizard.py b/addons/portal/wizard/portal_wizard.py index 3cc706c2129..c94d6509f63 100644 --- a/addons/portal/wizard/portal_wizard.py +++ b/addons/portal/wizard/portal_wizard.py @@ -30,17 +30,19 @@ from openerp import SUPERUSER_ID from base.res.res_partner import _lang_get _logger = logging.getLogger(__name__) -# welcome/goodbye email sent to portal users +# welcome email sent to portal users # (note that calling '_' has no effect except exporting those strings for translation) WELCOME_EMAIL_SUBJECT = _("Your OpenERP account at %(company)s") WELCOME_EMAIL_BODY = _("""Dear %(name)s, -You have been given access to %(portal)s at %(url)s. +You have been given access to %(portal)s. Your login account data is: Database: %(db)s -User: %(login)s -Password: %(password)s +Username: %(login)s + +In order to complete the signin process, click on the following url: +%(url)s %(welcome_message)s @@ -49,28 +51,10 @@ OpenERP - Open Source Business Applications http://www.openerp.com """) -GOODBYE_EMAIL_SUBJECT = _("Your OpenERP account at %(company)s") -GOODBYE_EMAIL_BODY = _("""Dear %(name)s, - -Your access to %(portal)s has been withdrawn. - -%(goodbye_message)s - --- -OpenERP - Open Source Business Applications -http://www.openerp.com -""") - -# character sets for passwords, excluding 0, O, o, 1, I, l -_PASSU = 'ABCDEFGHIJKLMNPQRSTUVWXYZ' -_PASSL = 'abcdefghijkmnpqrstuvwxyz' -_PASSD = '23456789' - def random_password(): - # get 3 uppercase letters, 3 lowercase letters, 2 digits, and shuffle them - chars = map(random.choice, [_PASSU] * 3 + [_PASSL] * 3 + [_PASSD] * 2) - random.shuffle(chars) - return ''.join(chars) + # temporary random stuff; user password is reset by signup process + chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' + return ''.join(random.choice(chars) for i in xrange(12)) def extract_email(email): """ extract the email address from a user-friendly email address """ @@ -92,8 +76,6 @@ class wizard(osv.osv_memory): 'user_ids': fields.one2many('portal.wizard.user', 'wizard_id', string='Users'), 'welcome_message': fields.text(string='Invitation Message', help="This text is included in the email sent to new users of the portal."), - 'goodbye_message': fields.text(string='Withdrawal Message', - help="This text is included in the email sent to users withdrawn from the portal."), } def _default_portal(self, cr, uid, context): @@ -164,6 +146,8 @@ class wizard_user(osv.osv_memory): user = self._create_user(cr, SUPERUSER_ID, wizard_user, context) if (not user.active) or (portal not in user.groups_id): user.write({'active': True, 'groups_id': [(4, portal.id)]}) + # prepare for the signup process + user.partner_id.signup_prepare() wizard_user = self.browse(cr, SUPERUSER_ID, wizard_user.id, context) self._send_email(cr, uid, wizard_user, context) else: @@ -174,8 +158,6 @@ class wizard_user(osv.osv_memory): user.write({'groups_id': [(3, portal.id)], 'active': False}) else: user.write({'groups_id': [(3, portal.id)]}) - wizard_user = self.browse(cr, SUPERUSER_ID, wizard_user.id, context) - self._send_email(cr, uid, wizard_user, context) def _retrieve_user(self, cr, uid, wizard_user, context=None): """ retrieve the (possibly inactive) user corresponding to wizard_user.partner_id @@ -208,7 +190,7 @@ class wizard_user(osv.osv_memory): return res_users.browse(cr, uid, user_id, context) def _send_email(self, cr, uid, wizard_user, context=None): - """ send notification email to a new/former portal user + """ send notification email to a new portal user @param wizard_user: browse record of model portal.wizard.user @return: the id of the created mail.mail record """ @@ -219,33 +201,23 @@ class wizard_user(osv.osv_memory): _('You must have an email address in your User Preferences to send emails.')) # determine subject and body in the portal user's language - url = self.pool.get('ir.config_parameter').get_param(cr, SUPERUSER_ID, 'web.base.url', context=this_context) user = self._retrieve_user(cr, SUPERUSER_ID, wizard_user, context) context = dict(this_context or {}, lang=user.lang) data = { 'company': this_user.company_id.name, 'portal': wizard_user.wizard_id.portal_id.name, 'welcome_message': wizard_user.wizard_id.welcome_message or "", - 'goodbye_message': wizard_user.wizard_id.goodbye_message or "", - 'url': url or _("(missing url)"), 'db': cr.dbname, + 'name': user.name, 'login': user.login, - 'password': user.password, - 'name': user.name + 'url': user.signup_url, } - if wizard_user.in_portal: - subject = _(WELCOME_EMAIL_SUBJECT) % data - body = _(WELCOME_EMAIL_BODY) % data - else: - subject = _(GOODBYE_EMAIL_SUBJECT) % data - body = _(GOODBYE_EMAIL_BODY) % data - mail_mail = self.pool.get('mail.mail') mail_values = { 'email_from': this_user.email, 'email_to': user.email, - 'subject': subject, - 'body_html': '
    %s
    ' % body, + 'subject': _(WELCOME_EMAIL_SUBJECT) % data, + 'body_html': '
    %s
    ' % (_(WELCOME_EMAIL_BODY) % data), 'state': 'outgoing', } return mail_mail.create(cr, uid, mail_values, context=this_context) diff --git a/addons/portal/wizard/portal_wizard_view.xml b/addons/portal/wizard/portal_wizard_view.xml index c8e3f30b128..373b4ad8e7a 100644 --- a/addons/portal/wizard/portal_wizard_view.xml +++ b/addons/portal/wizard/portal_wizard_view.xml @@ -27,8 +27,6 @@ -
    - +