From 3d98f01646fc82233698d895170eadeaee459938 Mon Sep 17 00:00:00 2001 From: Numerigraphe - Lionel Sausin Date: Wed, 17 Jun 2009 09:27:15 +0200 Subject: [PATCH 002/892] [ADD] Added a module to easily enter RIBs (standard French bank details slips). bzr revid: ls@numerigraphe.fr-20090617072715-hdkf86qq0nskc5q7 --- addons/base_rib/__init__.py | 26 +++++++ addons/base_rib/__terp__.py | 40 +++++++++++ addons/base_rib/base_rib.py | 112 ++++++++++++++++++++++++++++++ addons/base_rib/base_rib_data.xml | 38 ++++++++++ addons/base_rib/base_rib_view.xml | 90 ++++++++++++++++++++++++ addons/base_rib/i18n/fr_FR.po | 81 +++++++++++++++++++++ 6 files changed, 387 insertions(+) create mode 100644 addons/base_rib/__init__.py create mode 100644 addons/base_rib/__terp__.py create mode 100644 addons/base_rib/base_rib.py create mode 100644 addons/base_rib/base_rib_data.xml create mode 100644 addons/base_rib/base_rib_view.xml create mode 100644 addons/base_rib/i18n/fr_FR.po diff --git a/addons/base_rib/__init__.py b/addons/base_rib/__init__.py new file mode 100644 index 00000000000..f715da6a386 --- /dev/null +++ b/addons/base_rib/__init__.py @@ -0,0 +1,26 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved +# $Id$ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## + +import base_rib + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + diff --git a/addons/base_rib/__terp__.py b/addons/base_rib/__terp__.py new file mode 100644 index 00000000000..4712b449b9d --- /dev/null +++ b/addons/base_rib/__terp__.py @@ -0,0 +1,40 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved +# $Id$ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## + + +{ + 'name': 'RIB', + 'version': '0.1', + 'category': 'Generic Modules/Base', + 'description': """ +This module install the base for RIB bank accounts (French standard for bank accounts). +To make it easier to enter RIB data, it will also allow to search for banks by code. + + """, + "author" : "Numérigraphe SARL", + 'depends': ['base', 'account'], + 'init_xml': ['base_rib_data.xml', ], + 'update_xml': ['base_rib_view.xml', ], + 'installable': True, + 'active': False, +} +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_rib/base_rib.py b/addons/base_rib/base_rib.py new file mode 100644 index 00000000000..34c86902a67 --- /dev/null +++ b/addons/base_rib/base_rib.py @@ -0,0 +1,112 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved +# $Id$ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## + +import string +import unicodedata + +import netsvc +from osv import fields, osv + +# Add fields and behavior for French RIB +class res_partner_bank(osv.osv): + _inherit = "res.partner.bank" + + def _check_key(self, cr, uid, ids): + ''' + Check the RIB key + ''' + for bank_acc in self.browse(cr, uid, ids): + # ignore the accounts of type other than rib + if bank_acc.state !='rib': + continue + + # Fail if the needed values are empty of too short + if (not bank_acc.bank or not bank_acc.bank.code or len(bank_acc.bank.code) != 5 + or not bank_acc.office or len(bank_acc.office) != 5 + or not bank_acc.acc_number or len(bank_acc.acc_number) != 11 + or not bank_acc.key or len(bank_acc.key) != 2): + return False + + # get the rib data (without the key) + rib = "%s%s%s" % (bank_acc.bank.code, bank_acc.office, bank_acc.acc_number) + # translate letters into numbers according to a specific table (notice how s -> 2) + # Note: maketrans and translate work best with latin1 - that should not be a problem for RIB data + rib = rib.lower().encode('latin-1').translate(string.maketrans(u'abcdefghijklmnopqrstuvwxyz', u'12345678912345678923456789')) + + # compute the key + key = 97 - (100 * int(rib)) % 97 + + if int(bank_acc.key) != key: + return False + return True + + def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False): + #overwrite the search method in order to search not only on bank type == basic account number but also on type == rib + res = super(res_partner_bank, self).search(cr, uid, args, offset, limit, order, context=context, count=count) + if filter(lambda x:x[0] == 'acc_number' , args): + #get the value of the search + rib_value = filter(lambda x:x[0] == 'acc_number' , args)[0][2] + #get the other arguments of the search + args1 = filter(lambda x:x[0] != 'acc_number' , args) + #add the new criterion + args1 += [('rib', 'ilike', rib_value)] + #append the results to the older search + res += super(res_partner_bank, self).search(cr, uid, args1, offset, limit, + order, context=context, count=count) + return res + + _columns = { + 'office': fields.char('Office Code', size=5, readonly=True, help="Office Code"), + 'key': fields.char('Key', size=2, readonly=True, help="The key is a number allowing to check the correctness of the other codes."), + } + + _constraints = [(_check_key, "The RIB key does not correspond to the other codes.", ["key"])] + +res_partner_bank() + +# overload the name_search method on banks to make it easier to enter RIB data +class res_bank(osv.osv): + _inherit = 'res.bank' + + # allow a search by code + def name_search(self, cr, user, name, args=None, operator='ilike', context=None, limit=80): + if not args: + args = [] + if context is None: + context = {} + ids = [] + if name: + ids = self.search(cr, user, [('name', operator, name)] + args, limit=limit, context=context) + if not ids: + ids = self.search(cr, user, [('code', operator, name)] + args, limit=limit, context=context) + return self.name_get(cr, user, ids, context) + + # show the code before the name + def name_get(self, cr, uid, ids, context=None): + result = [] + for bank in self.browse(cr, uid, ids, context): + result.append((bank.id, (bank.code and (bank.code + ' - ') or '') + bank.name)) + return result + +res_bank() +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + diff --git a/addons/base_rib/base_rib_data.xml b/addons/base_rib/base_rib_data.xml new file mode 100644 index 00000000000..40d57851912 --- /dev/null +++ b/addons/base_rib/base_rib_data.xml @@ -0,0 +1,38 @@ + + + + + + + RIB Bank Details + rib + + + bank + + + + + + office + + + + + + acc_number + + + + 11 + + + key + + + + + + diff --git a/addons/base_rib/base_rib_view.xml b/addons/base_rib/base_rib_view.xml new file mode 100644 index 00000000000..eacfaf1cb5b --- /dev/null +++ b/addons/base_rib/base_rib_view.xml @@ -0,0 +1,90 @@ + + + + + + res.partner.form.rib0.inherit + res.partner + + form + + + + + + res.partner.form.rib1.inherit + res.partner + + form + + + + + + + + + + + res.partner.form.rib2.inherit + res.partner + + form + + + + + + + + + diff --git a/addons/base_rib/i18n/fr_FR.po b/addons/base_rib/i18n/fr_FR.po new file mode 100644 index 00000000000..af12a611964 --- /dev/null +++ b/addons/base_rib/i18n/fr_FR.po @@ -0,0 +1,81 @@ +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# * base_rib +# +msgid "" +msgstr "" +"Project-Id-Version: OpenERP Server 5.0.1\n" +"Report-Msgid-Bugs-To: support@openerp.com\n" +"POT-Creation-Date: 2009-06-16 14:15:16+0000\n" +"PO-Revision-Date: 2009-06-16 14:15:16+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: base_rib +#: model:res.partner.bank.type.field,name:base_rib.rib_key_field +msgid "key" +msgstr "key" + +#. module: base_rib +#: constraint:ir.ui.view:0 +msgid "Invalid XML for View Architecture!" +msgstr "XML non valide pour l'architecture de la vue" + +#. module: base_rib +#: model:ir.module.module,description:base_rib.module_meta_information +msgid "\n" +"This module install the base for RIB bank accounts (French standard for bank accounts). \n" +"To make it easier to enter RIB data, it will also allow to search for banks by code.\n" +"\n" +" " +msgstr "\n" +"Ce module configure la base pour la saisie des RIB (Relevés d'Identité Bancaires) standards français. \n" +"Pour faciliter la saisie des RIB, il permet également une recherche des banques par code.\n" +"\n" +" " + +#. module: base_rib +#: model:res.partner.bank.type.field,name:base_rib.rib_office_field +msgid "office" +msgstr "Agence" + +#. module: base_rib +#: field:res.partner.bank,office:0 +#: help:res.partner.bank,office:0 +msgid "Office Code" +msgstr "Code agence" + +#. module: base_rib +#: model:res.partner.bank.type,name:base_rib.bank_rib +msgid "RIB Bank Details" +msgstr "Relevé d'identité bancaire (RIB)" + +#. module: base_rib +#: help:res.partner.bank,key:0 +msgid "The key is a number allowing to check the correctness of the other codes." +msgstr "La clé est un nombre permettant de vérifier que les autres codes sont corrects." + +#. module: base_rib +#: field:res.partner.bank,key:0 +msgid "Key" +msgstr "Clé" + +#. module: base_rib +#: model:ir.module.module,shortdesc:base_rib.module_meta_information +msgid "RIB" +msgstr "RIB" + +#. module: base_rib +#: model:res.partner.bank.type.field,name:base_rib.rib_bank_field +msgid "bank" +msgstr "bank" + +#. module: base_rib +#: model:res.partner.bank.type.field,name:base_rib.bank_acc_number_field +msgid "acc_number" +msgstr "acc_number" + From cf00c7a7be240762baf092d30966a54a930d8df4 Mon Sep 17 00:00:00 2001 From: Numerigraphe - Lionel Sausin Date: Fri, 19 Jun 2009 10:28:35 +0200 Subject: [PATCH 003/892] Fixed licence for base_rib bzr revid: ls@numerigraphe.fr-20090619082835-b4vr0z9tojhpnk5a --- addons/base_rib/__init__.py | 4 +--- addons/base_rib/__terp__.py | 5 +---- addons/base_rib/base_rib.py | 4 +--- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/addons/base_rib/__init__.py b/addons/base_rib/__init__.py index f715da6a386..b49b0bdb212 100644 --- a/addons/base_rib/__init__.py +++ b/addons/base_rib/__init__.py @@ -1,9 +1,7 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved -# $Id$ +# Copyright (C) 2009 Numérigraphe SARL. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/addons/base_rib/__terp__.py b/addons/base_rib/__terp__.py index 4712b449b9d..30741be0543 100644 --- a/addons/base_rib/__terp__.py +++ b/addons/base_rib/__terp__.py @@ -1,9 +1,7 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved -# $Id$ +# Copyright (C) 2009 Numérigraphe SARL. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,7 +18,6 @@ # ############################################################################## - { 'name': 'RIB', 'version': '0.1', diff --git a/addons/base_rib/base_rib.py b/addons/base_rib/base_rib.py index 34c86902a67..69a9d2284f2 100644 --- a/addons/base_rib/base_rib.py +++ b/addons/base_rib/base_rib.py @@ -1,9 +1,7 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved -# $Id$ +# Copyright (C) 2009 Numérigraphe SARL. All Rights Reserved # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by From 297637f890a77b7b119698f56ca6264fac71b1aa Mon Sep 17 00:00:00 2001 From: Numerigraphe - Lionel Sausin Date: Fri, 19 Jun 2009 13:54:17 +0200 Subject: [PATCH 004/892] [IMP] POT file for base_rib. bzr revid: ls@numerigraphe.fr-20090619115417-e14n1md5j9aakzmc --- addons/base_rib/i18n/base_rib.pot | 77 +++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 addons/base_rib/i18n/base_rib.pot diff --git a/addons/base_rib/i18n/base_rib.pot b/addons/base_rib/i18n/base_rib.pot new file mode 100644 index 00000000000..393825233e5 --- /dev/null +++ b/addons/base_rib/i18n/base_rib.pot @@ -0,0 +1,77 @@ +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# * base_rib +# +msgid "" +msgstr "" +"Project-Id-Version: OpenERP Server 5.0.1\n" +"Report-Msgid-Bugs-To: support@openerp.com\n" +"POT-Creation-Date: 2009-06-19 11:39:18+0000\n" +"PO-Revision-Date: 2009-06-19 11:39:18+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: base_rib +#: model:res.partner.bank.type.field,name:base_rib.rib_key_field +msgid "key" +msgstr "" + +#. module: base_rib +#: constraint:ir.ui.view:0 +msgid "Invalid XML for View Architecture!" +msgstr "" + +#. module: base_rib +#: model:ir.module.module,description:base_rib.module_meta_information +msgid "\n" +"This module install the base for RIB bank accounts (French standard for bank accounts). \n" +"To make it easier to enter RIB data, it will also allow to search for banks by code.\n" +"\n" +" " +msgstr "" + +#. module: base_rib +#: model:res.partner.bank.type.field,name:base_rib.rib_office_field +msgid "office" +msgstr "" + +#. module: base_rib +#: field:res.partner.bank,office:0 +#: help:res.partner.bank,office:0 +msgid "Office Code" +msgstr "" + +#. module: base_rib +#: model:res.partner.bank.type,name:base_rib.bank_rib +msgid "RIB Bank Details" +msgstr "" + +#. module: base_rib +#: help:res.partner.bank,key:0 +msgid "The key is a number allowing to check the correctness of the other codes." +msgstr "" + +#. module: base_rib +#: field:res.partner.bank,key:0 +msgid "Key" +msgstr "" + +#. module: base_rib +#: model:ir.module.module,shortdesc:base_rib.module_meta_information +msgid "RIB" +msgstr "" + +#. module: base_rib +#: model:res.partner.bank.type.field,name:base_rib.rib_bank_field +msgid "bank" +msgstr "" + +#. module: base_rib +#: model:res.partner.bank.type.field,name:base_rib.bank_acc_number_field +msgid "acc_number" +msgstr "" + From 5ec8cd1146a15d170c5f460f570f38b6037889b9 Mon Sep 17 00:00:00 2001 From: "ARA (OpenERP)" Date: Mon, 23 May 2011 18:04:04 +0530 Subject: [PATCH 005/892] [FIX] analytic:Wrong adaptation of the partner address in the Project view lp bug: https://launchpad.net/bugs/781189 fixed bzr revid: ara@tinyerp.com-20110523123404-zjqi69go1ecv36f1 --- addons/account/project/project_view.xml | 3 ++- addons/analytic/analytic.py | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml index 8fd35a21a89..983d8311229 100644 --- a/addons/account/project/project_view.xml +++ b/addons/account/project/project_view.xml @@ -88,7 +88,8 @@ - + + diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py index 6dfaac21e70..e487a742e47 100644 --- a/addons/analytic/analytic.py +++ b/addons/analytic/analytic.py @@ -236,6 +236,13 @@ class account_analytic_account(osv.osv): res['value']['partner_id'] = partner return res + def onchange_partner_id(self, cr, uid, ids, partner, context=None): + partner_obj = self.pool.get('res.partner') + if not partner: + return {'value':{'contact_id': False}} + address = partner_obj.address_get(cr, uid, [partner], ['contact']) + return {'value':{'contact_id': address['contact']}} + def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100): if not args: args=[] From ecd639c4ef8d7ab73cef51767ef3397e30bc9d94 Mon Sep 17 00:00:00 2001 From: "aag (OpenERP)" Date: Wed, 25 May 2011 15:44:03 +0530 Subject: [PATCH 006/892] [FIX] STOCK:Physical Inventory - wrong calculation, now calculate current location stock not child location stock lp bug: https://launchpad.net/bugs/787717 fixed bzr revid: aag@tinyerp.co.in-20110525101403-l02frg06h70lq6y4 --- addons/stock/stock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 636ae0cb067..7811d22377f 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -2646,7 +2646,7 @@ class stock_inventory_line(osv.osv): return {'value': {'product_qty': 0.0, 'product_uom': False}} obj_product = self.pool.get('product.product').browse(cr, uid, product) uom = uom or obj_product.uom_id.id - amount = self.pool.get('stock.location')._product_get(cr, uid, location_id, [product], {'uom': uom, 'to_date': to_date})[product] + amount = self.pool.get('stock.location')._product_get(cr, uid, location_id, [product], {'uom': uom, 'to_date': to_date, 'compute_child': False})[product] result = {'product_qty': amount, 'product_uom': uom} return {'value': result} From f407e76f9167b8fbad0cbe50a8a23d93567a674d Mon Sep 17 00:00:00 2001 From: "ARA (OpenERP)" Date: Wed, 25 May 2011 16:39:06 +0530 Subject: [PATCH 007/892] [FIX] Accounting - Generic Chart of Accounts - Wrong demo data lp bug: https://launchpad.net/bugs/785110 fixed bzr revid: ara@tinyerp.com-20110525110906-nel3idjx81zsuq5s --- addons/account/configurable_account_chart.xml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/account/configurable_account_chart.xml b/addons/account/configurable_account_chart.xml index 1a0a21d3971..14dceb185a6 100644 --- a/addons/account/configurable_account_chart.xml +++ b/addons/account/configurable_account_chart.xml @@ -593,12 +593,18 @@ - + - + + + + + + + From 753dba6bf7510c012da1d366b04c3c9b749d01a3 Mon Sep 17 00:00:00 2001 From: "aag (OpenERP)" Date: Fri, 17 Jun 2011 19:13:05 +0530 Subject: [PATCH 008/892] [FIX] stock:payment term is set for supplier invoices in PO from Picking lp bug: https://launchpad.net/bugs/798256 fixed bzr revid: aag@tinyerp.co.in-20110617134305-2f5gvs58blj1e5rf --- addons/stock/stock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/stock/stock.py b/addons/stock/stock.py index d478ab39c9c..ef71c273273 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -1012,7 +1012,7 @@ class stock_picking(osv.osv): 'address_invoice_id': address_invoice_id, 'address_contact_id': address_contact_id, 'comment': comment, - 'payment_term': payment_term_id, + 'payment_term': address.partner_id.property_payment_term and address.partner_id.property_payment_term.id or False, 'fiscal_position': partner.property_account_position.id, 'date_invoice': context.get('date_inv',False), 'company_id': picking.company_id.id, From b55387a8bb0b8fd4b4e3164652cef72e839ad825 Mon Sep 17 00:00:00 2001 From: "Ujjvala Collins (OpenERP)" Date: Tue, 21 Jun 2011 14:27:43 +0530 Subject: [PATCH 009/892] [REF] account: Replaced tax mappings for Normal tax in generic chart of accounts demo data. bzr revid: uco@tinyerp.com-20110621085743-36fua2qguh2q1cj9 --- addons/account/configurable_account_chart.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/account/configurable_account_chart.xml b/addons/account/configurable_account_chart.xml index 14dceb185a6..2373d01618c 100644 --- a/addons/account/configurable_account_chart.xml +++ b/addons/account/configurable_account_chart.xml @@ -592,8 +592,8 @@ - - + + From 8e6ca32aebb6a20ccc3586814f9c263856154497 Mon Sep 17 00:00:00 2001 From: "Ujjvala Collins (OpenERP)" Date: Tue, 21 Jun 2011 17:55:25 +0530 Subject: [PATCH 010/892] [FIX] sale: Fixed wrong quantities on Sales Analysis report. lp bug: https://launchpad.net/bugs/798148 fixed bzr revid: uco@tinyerp.com-20110621122525-td4gwknknl92bx54 --- addons/sale/report/sale_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sale/report/sale_report.py b/addons/sale/report/sale_report.py index aaaec228d7b..57f47176b75 100644 --- a/addons/sale/report/sale_report.py +++ b/addons/sale/report/sale_report.py @@ -95,7 +95,7 @@ class sale_report(osv.osv): else u.name end) as uom_name, - sum(l.product_uom_qty * u.factor) as product_uom_qty, + sum(l.product_uom_qty / u.factor) as product_uom_qty, sum(l.product_uom_qty * l.price_unit) as price_total, pt.categ_id, l.order_id from From 965b3320826d05e807ed490817baa6012678065b Mon Sep 17 00:00:00 2001 From: "mayur maheshwari (Open ERP)" Date: Tue, 21 Jun 2011 18:15:42 +0530 Subject: [PATCH 011/892] [FIX]product: set a default value public price in pricelist rule lp bug: https://launchpad.net/bugs/799615 fixed bzr revid: mma@tinyerp.com-20110621124542-lldjf5fnjb6ff9e5 --- addons/product/pricelist.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/product/pricelist.py b/addons/product/pricelist.py index 81cec0e7d95..abbc6dc86f2 100644 --- a/addons/product/pricelist.py +++ b/addons/product/pricelist.py @@ -522,7 +522,7 @@ class product_pricelist_item(osv.osv): _description = "Pricelist item" _order = "sequence, min_quantity desc" _defaults = { - 'base': lambda *a: -1, + 'base': lambda *a: 1, 'min_quantity': lambda *a: 0, 'sequence': lambda *a: 5, 'price_discount': lambda *a: 0, From c5fe5a76c36097eef182bb19288e8a395d83c2e3 Mon Sep 17 00:00:00 2001 From: "aag (OpenERP)" Date: Tue, 21 Jun 2011 18:59:56 +0530 Subject: [PATCH 012/892] [FIX] stock:payment term is set for supplier invoices in PO from Picking and code optimize lp bug: https://launchpad.net/bugs/798256 fixed bzr revid: aag@tinyerp.co.in-20110621132956-d3tru3edcsx430fe --- addons/stock/stock.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/addons/stock/stock.py b/addons/stock/stock.py index ef71c273273..8b83cad915d 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -971,7 +971,6 @@ class stock_picking(osv.osv): for picking in self.browse(cr, uid, ids, context=context): if picking.invoice_state != '2binvoiced': continue - payment_term_id = False partner = picking.address_id and picking.address_id.partner_id if not partner: raise osv.except_osv(_('Error, no partner !'), @@ -979,13 +978,7 @@ class stock_picking(osv.osv): if not inv_type: inv_type = self._get_invoice_type(picking) - - if inv_type in ('out_invoice', 'out_refund'): - account_id = partner.property_account_receivable.id - payment_term_id = self._get_payment_term(cr, uid, picking) - else: - account_id = partner.property_account_payable.id - + account_id = partner.property_account_payable.id address_contact_id, address_invoice_id = \ self._get_address_invoice(cr, uid, picking).values() address = address_obj.browse(cr, uid, address_contact_id, context=context) @@ -1012,7 +1005,7 @@ class stock_picking(osv.osv): 'address_invoice_id': address_invoice_id, 'address_contact_id': address_contact_id, 'comment': comment, - 'payment_term': address.partner_id.property_payment_term and address.partner_id.property_payment_term.id or False, + 'payment_term': self._get_payment_term(cr, uid, picking), 'fiscal_position': partner.property_account_position.id, 'date_invoice': context.get('date_inv',False), 'company_id': picking.company_id.id, From 91efe04bcbf794849dd583388a7b5c1ebbfe2cdc Mon Sep 17 00:00:00 2001 From: "aag (OpenERP)" Date: Wed, 22 Jun 2011 14:56:54 +0530 Subject: [PATCH 013/892] [FIX] stock:payment term is set for supplier invoices in PO from Picking and code optimize bzr revid: aag@tinyerp.co.in-20110622092654-2f96sin4szcnvcuy --- addons/stock/stock.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 8b83cad915d..35f54c2c8c2 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -978,7 +978,11 @@ class stock_picking(osv.osv): if not inv_type: inv_type = self._get_invoice_type(picking) - account_id = partner.property_account_payable.id + + if inv_type in ('out_invoice', 'out_refund'): + account_id = partner.property_account_receivable.id + else: + account_id = partner.property_account_payable.id address_contact_id, address_invoice_id = \ self._get_address_invoice(cr, uid, picking).values() address = address_obj.browse(cr, uid, address_contact_id, context=context) From f469345cfdcadf9c2985d95bad6318535209a971 Mon Sep 17 00:00:00 2001 From: "mayur maheshwari (Open ERP)" Date: Mon, 27 Jun 2011 10:43:35 +0530 Subject: [PATCH 014/892] [FIX]purchase,sale,stock: putting a product UOM decimal prescription In quantity field lp bug: https://launchpad.net/bugs/800970 fixed bzr revid: mma@tinyerp.com-20110627051335-nj8cnvdd993aagfb --- addons/purchase/purchase.py | 2 +- addons/sale/sale.py | 2 +- addons/stock/wizard/stock_partial_move.py | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 6f6ab0c1b44..124de6d2136 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -614,7 +614,7 @@ class purchase_order_line(osv.osv): _columns = { 'name': fields.char('Description', size=256, required=True), - 'product_qty': fields.float('Quantity', required=True, digits=(16,2)), + 'product_qty': fields.float('Quantity', required=True, digits_compute= dp.get_precision('Product UoM')), 'date_planned': fields.date('Scheduled Date', required=True, select=True), 'taxes_id': fields.many2many('account.tax', 'purchase_order_taxe', 'ord_id', 'tax_id', 'Taxes'), 'product_uom': fields.many2one('product.uom', 'Product UOM', required=True), diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 0b436f0dc91..53e60b3d1a2 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -856,7 +856,7 @@ class sale_order_line(osv.osv): 'type': fields.selection([('make_to_stock', 'from stock'), ('make_to_order', 'on order')], 'Procurement Method', required=True, readonly=True, states={'draft': [('readonly', False)]}), 'property_ids': fields.many2many('mrp.property', 'sale_order_line_property_rel', 'order_id', 'property_id', 'Properties', readonly=True, states={'draft': [('readonly', False)]}), 'address_allotment_id': fields.many2one('res.partner.address', 'Allotment Partner'), - 'product_uom_qty': fields.float('Quantity (UoM)', digits=(16, 2), required=True, readonly=True, states={'draft': [('readonly', False)]}), + 'product_uom_qty': fields.float('Quantity (UoM)', digits_compute= dp.get_precision('Product UoM'), required=True, readonly=True, states={'draft': [('readonly', False)]}), 'product_uom': fields.many2one('product.uom', 'Unit of Measure ', required=True, readonly=True, states={'draft': [('readonly', False)]}), 'product_uos_qty': fields.float('Quantity (UoS)', readonly=True, states={'draft': [('readonly', False)]}), 'product_uos': fields.many2one('product.uom', 'Product UoS'), diff --git a/addons/stock/wizard/stock_partial_move.py b/addons/stock/wizard/stock_partial_move.py index 874b22844d1..20bb351a42c 100644 --- a/addons/stock/wizard/stock_partial_move.py +++ b/addons/stock/wizard/stock_partial_move.py @@ -22,6 +22,7 @@ from osv import fields, osv from tools.translate import _ import time +import decimal_precision as dp class stock_partial_move_memory_out(osv.osv_memory): @@ -29,7 +30,7 @@ class stock_partial_move_memory_out(osv.osv_memory): _rec_name = 'product_id' _columns = { 'product_id' : fields.many2one('product.product', string="Product", required=True), - 'quantity' : fields.float("Quantity", required=True), + 'quantity' : fields.float("Quantity", required=True, digits_compute= dp.get_precision('Product UoM')), 'product_uom': fields.many2one('product.uom', 'Unit of Measure', required=True), 'prodlot_id' : fields.many2one('stock.production.lot', 'Production Lot'), 'move_id' : fields.many2one('stock.move', "Move"), From 3161713bea39e3dc1458ab1a869b9a956494f2af Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Fri, 15 Jul 2011 18:12:38 +0530 Subject: [PATCH 015/892] [ADD]l10n_multilang:One of the existing problem of localization modules is that it doesnot allow you to translate the objects name So Add the tags translate=True on journal name, account name, account type ,account Tax, Templates.. bzr revid: ron@tinyerp.com-20110715124238-0pm6xakc7io3p3mg --- addons/l10n_multilang/__init__.py | 24 ++++++ addons/l10n_multilang/__openerp__.py | 49 +++++++++++ addons/l10n_multilang/account.py | 117 +++++++++++++++++++++++++++ 3 files changed, 190 insertions(+) create mode 100644 addons/l10n_multilang/__init__.py create mode 100644 addons/l10n_multilang/__openerp__.py create mode 100644 addons/l10n_multilang/account.py diff --git a/addons/l10n_multilang/__init__.py b/addons/l10n_multilang/__init__.py new file mode 100644 index 00000000000..0aea333e9a9 --- /dev/null +++ b/addons/l10n_multilang/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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 account + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/l10n_multilang/__openerp__.py b/addons/l10n_multilang/__openerp__.py new file mode 100644 index 00000000000..e854aab8221 --- /dev/null +++ b/addons/l10n_multilang/__openerp__.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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 . +# +############################################################################## + +{ + "name" : "Belgium - Multi language Chart of Accounts (en/nl/fr)", + "version" : "1.1", + "author" : "OpenERP SA", + "category": 'Localization/Account Charts', + "description": """ + Belgian localisation (on top of l10n_be): + * Multilanguage support (en/nl/fr) for Chart of Accounts, Taxes, Tax Codes and Journals + * Multilingual accounting templates + * Multilanguage support Analytic Chart of Accounts and Analytic Journals + * Update partner titles for commonly used legal entities + * Add constraint to ensure unique Tax Code per Company + * Setup wizard changes + - Copy translations for CoA, Tax, Tax Code and Fiscal Position from templates to target objects + - Add options to install the nl and fr languages during the setup + - Generate Financial Journals from the templates + """, + 'website': 'http://www.openerp.com', + 'init_xml': [], + "depends" : ['account_accountant','l10n_be'], + 'update_xml': [ + ], + 'demo_xml': [ + ], + 'installable': True, + 'active': False, +} +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_multilang/account.py b/addons/l10n_multilang/account.py new file mode 100644 index 00000000000..46e5a2d63e7 --- /dev/null +++ b/addons/l10n_multilang/account.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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 . +# +############################################################################## + + +from osv import fields, osv +from tools.translate import _ + + +class account_account_template(osv.osv): + _inherit = 'account.account.template' + _columns = { + 'name': fields.char('Name', size=128, required=True, select=True, translate=True), + } +account_account_template() + + +class account_account(osv.osv): + _inherit = 'account.account' + _columns = { + 'name': fields.char('Name', size=128, required=True, select=True, translate=True), + } +account_account() + + +class account_tax_code(osv.osv): + _inherit = 'account.tax.code' + _sql_constraints = [ + ('code_company_uniq', 'unique (code,company_id)', 'The code of the Tax Case must be unique per company !') + ] +account_tax_code() + + +class account_tax_template(osv.osv): + _inherit = 'account.tax.template' + _columns = { + 'name': fields.char('Tax Name', size=128, required=True, select=True, translate=True), + } +account_tax_template() + + +class account_tax_code_template(osv.osv): + _inherit = 'account.tax.code.template' + _columns = { + 'name': fields.char('Tax Case Name', size=64, required=True, translate=True), + } +account_tax_code_template() + + +class account_chart_template(osv.osv): + _inherit = 'account.chart.template' + _columns={ + 'name': fields.char('Name', size=64, required=True, translate=True), + 'bank_from_template':fields.boolean('Banks/Cash from Template', help="Generate Bank/Cash accounts and journals from the Templates."), + } + _defaults = { + 'bank_from_template': False, + } + _order = 'name' +account_chart_template() + + +class account_fiscal_position(osv.osv): + _inherit = 'account.fiscal.position' + _columns = { + 'name': fields.char('Fiscal Position', size=64, required=True, translate=True), + } +account_fiscal_position() + + +class account_fiscal_position_template(osv.osv): + _inherit = 'account.fiscal.position.template' + _columns = { + 'name': fields.char('Fiscal Position Template', size=64, required=True, translate=True), + } +account_fiscal_position_template() + + +class account_journal(osv.osv): + _inherit = 'account.journal' + _columns = { + 'name': fields.char('Journal Name', size=64, required=True, translate=True), + } +account_journal() + + +class account_analytic_account(osv.osv): + _inherit = 'account.analytic.account' + _columns = { + 'name': fields.char('Account Name', size=128, required=True, translate=True), + } +account_analytic_account() + + +class account_analytic_journal(osv.osv): + _inherit = 'account.analytic.journal' + _columns = { + 'name': fields.char('Journal Name', size=64, required=True, translate=True), + } +account_analytic_journal() From 57507520a1ad208e7fe17fdba6cc09143bbc9176 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Mon, 18 Jul 2011 10:02:59 +0530 Subject: [PATCH 016/892] [IMP]Account:remove Account code unique constraint bzr revid: ron@tinyerp.com-20110718043259-0o9qvuv9sj3hiceu --- addons/l10n_multilang/account.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/addons/l10n_multilang/account.py b/addons/l10n_multilang/account.py index 46e5a2d63e7..f0583c13b53 100644 --- a/addons/l10n_multilang/account.py +++ b/addons/l10n_multilang/account.py @@ -40,14 +40,6 @@ class account_account(osv.osv): account_account() -class account_tax_code(osv.osv): - _inherit = 'account.tax.code' - _sql_constraints = [ - ('code_company_uniq', 'unique (code,company_id)', 'The code of the Tax Case must be unique per company !') - ] -account_tax_code() - - class account_tax_template(osv.osv): _inherit = 'account.tax.template' _columns = { From 6c4c1c78fd5aaf7eea441d0054b1021e96ac02e9 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Mon, 18 Jul 2011 18:17:15 +0530 Subject: [PATCH 017/892] [IMP]Account:Fixed=>Module name and description,remove dependency of l10n_be,remove unnessasary variable,missing object bzr revid: ron@tinyerp.com-20110718124715-b4rwn30rh3mphef0 --- addons/l10n_multilang/__openerp__.py | 8 ++++---- addons/l10n_multilang/account.py | 12 ++++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/addons/l10n_multilang/__openerp__.py b/addons/l10n_multilang/__openerp__.py index e854aab8221..b2b4c563dde 100644 --- a/addons/l10n_multilang/__openerp__.py +++ b/addons/l10n_multilang/__openerp__.py @@ -20,25 +20,25 @@ ############################################################################## { - "name" : "Belgium - Multi language Chart of Accounts (en/nl/fr)", + "name" : "Belgium - Multi language Chart of Accounts", "version" : "1.1", "author" : "OpenERP SA", "category": 'Localization/Account Charts', "description": """ Belgian localisation (on top of l10n_be): - * Multilanguage support (en/nl/fr) for Chart of Accounts, Taxes, Tax Codes and Journals + * Multilanguage support for Chart of Accounts, Taxes, Tax Codes and Journals * Multilingual accounting templates * Multilanguage support Analytic Chart of Accounts and Analytic Journals * Update partner titles for commonly used legal entities * Add constraint to ensure unique Tax Code per Company * Setup wizard changes - Copy translations for CoA, Tax, Tax Code and Fiscal Position from templates to target objects - - Add options to install the nl and fr languages during the setup + - Add options to install languages during the setup - Generate Financial Journals from the templates """, 'website': 'http://www.openerp.com', 'init_xml': [], - "depends" : ['account_accountant','l10n_be'], + "depends" : ['account_accountant'], 'update_xml': [ ], 'demo_xml': [ diff --git a/addons/l10n_multilang/account.py b/addons/l10n_multilang/account.py index f0583c13b53..f4d2c1bb78d 100644 --- a/addons/l10n_multilang/account.py +++ b/addons/l10n_multilang/account.py @@ -40,6 +40,14 @@ class account_account(osv.osv): account_account() +class account_tax(osv.osv): + _inherit = 'account.tax' + _columns = { + 'name': fields.char('Tax Name', size=128, required=True, select=True, translate=True), + } +account_tax() + + class account_tax_template(osv.osv): _inherit = 'account.tax.template' _columns = { @@ -60,10 +68,6 @@ class account_chart_template(osv.osv): _inherit = 'account.chart.template' _columns={ 'name': fields.char('Name', size=64, required=True, translate=True), - 'bank_from_template':fields.boolean('Banks/Cash from Template', help="Generate Bank/Cash accounts and journals from the Templates."), - } - _defaults = { - 'bank_from_template': False, } _order = 'name' account_chart_template() From 2ca78132ea89f7b0502a75056988981ecd93d344 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Mon, 18 Jul 2011 18:55:29 +0530 Subject: [PATCH 018/892] [IMP]Account:Improvement in Desription bzr revid: ron@tinyerp.com-20110718132529-9o3vusrrjzqtmn9q --- addons/l10n_multilang/__openerp__.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/addons/l10n_multilang/__openerp__.py b/addons/l10n_multilang/__openerp__.py index b2b4c563dde..b4391e2c8f0 100644 --- a/addons/l10n_multilang/__openerp__.py +++ b/addons/l10n_multilang/__openerp__.py @@ -25,16 +25,12 @@ "author" : "OpenERP SA", "category": 'Localization/Account Charts', "description": """ - Belgian localisation (on top of l10n_be): * Multilanguage support for Chart of Accounts, Taxes, Tax Codes and Journals - * Multilingual accounting templates + * Multilanguage accounting templates * Multilanguage support Analytic Chart of Accounts and Analytic Journals - * Update partner titles for commonly used legal entities - * Add constraint to ensure unique Tax Code per Company * Setup wizard changes - Copy translations for CoA, Tax, Tax Code and Fiscal Position from templates to target objects - Add options to install languages during the setup - - Generate Financial Journals from the templates """, 'website': 'http://www.openerp.com', 'init_xml': [], From d6b0a13e14070d92cc2ce36958c1e8e4e16d0b28 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Mon, 18 Jul 2011 19:08:22 +0530 Subject: [PATCH 019/892] [IMP]Account:Improvments in Description bzr revid: ron@tinyerp.com-20110718133822-fgz05pasp03im1jz --- addons/l10n_multilang/__openerp__.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/addons/l10n_multilang/__openerp__.py b/addons/l10n_multilang/__openerp__.py index b4391e2c8f0..a63e853ae10 100644 --- a/addons/l10n_multilang/__openerp__.py +++ b/addons/l10n_multilang/__openerp__.py @@ -20,16 +20,15 @@ ############################################################################## { - "name" : "Belgium - Multi language Chart of Accounts", + "name" : "Multi language Chart of Accounts", "version" : "1.1", "author" : "OpenERP SA", "category": 'Localization/Account Charts', "description": """ - * Multilanguage support for Chart of Accounts, Taxes, Tax Codes and Journals - * Multilanguage accounting templates - * Multilanguage support Analytic Chart of Accounts and Analytic Journals + * Multilanguage support for Chart of Accounts, Taxes, Tax Codes , Journals, Accounting Templates, + Analytic Chart of Accounts and Analytic Journals * Setup wizard changes - - Copy translations for CoA, Tax, Tax Code and Fiscal Position from templates to target objects + - Copy translations for COA, Tax, Tax Code and Fiscal Position from templates to target objects - Add options to install languages during the setup """, 'website': 'http://www.openerp.com', From 028375c83f11186961a75ca0d88dbb55f0cc9942 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Wed, 20 Jul 2011 11:09:06 +0530 Subject: [PATCH 020/892] [IMP]Account:Improvement in wizard.multi.charts.accounts all fields have default used that is converted to default_get method bzr revid: ron@tinyerp.com-20110720053906-px9u1o3sfz4phq4q --- addons/account/account.py | 62 +++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/addons/account/account.py b/addons/account/account.py index aced4041f13..a44ca2a8b5b 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -2650,44 +2650,36 @@ class wizard_multi_charts_accounts(osv.osv_memory): res['value']["purchase_tax"] = purchase_tax_ids and purchase_tax_ids[0] or False return res - def _get_purchase_tax(self, cr, uid, context=None): + + def default_get(self, cr, uid, fields, context=None): + res = super(wizard_multi_charts_accounts, self).default_get(cr, uid, fields, context=context) + tax_templ_obj = self.pool.get('account.tax.template') + + if 'bank_accounts_id' in fields: + res.update({'bank_accounts_id': [{'acc_name': _('Current'), 'account_type': 'bank'}, + {'acc_name': _('Deposit'), 'account_type': 'bank'}, + {'acc_name': _('Cash'), 'account_type': 'cash'}]}) + if 'company_id' in fields: + res.update({'company_id': self.pool.get('res.users').browse(cr, uid, [uid], context=context)[0].company_id.id}) + if 'code_digits' in fields: + res.update({'code_digits': 6}) + if 'seq_journal' in fields: + res.update({'seq_journal': True}) + ids = self.pool.get('account.chart.template').search(cr, uid, [], context=context) if ids: - chart_template_id = ids[0] - purchase_tax_ids = self.pool.get('account.tax.template').search(cr, uid, [("chart_template_id" - , "=", chart_template_id), ('type_tax_use', 'in', ('purchase','all'))], order="sequence") - return purchase_tax_ids and purchase_tax_ids[0] or False - return False + sale_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id" + , "=", ids[0]), ('type_tax_use', 'in', ('sale','all'))], order="sequence") + purchase_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id" + , "=", ids[0]), ('type_tax_use', 'in', ('purchase','all'))], order="sequence") + if 'chart_template_id' in fields: + res.update({'chart_template_id':ids[0]}) + if 'sale_tax' in fields: + res.update({'sale_tax': sale_tax_ids and sale_tax_ids[0] or False}) + if 'purchase_tax' in fields: + res.update({'purchase_tax': purchase_tax_ids and purchase_tax_ids[0] or False}) - def _get_sale_tax(self, cr, uid, context=None): - ids = self.pool.get('account.chart.template').search(cr, uid, [], context=context) - if ids: - chart_template_id = ids[0] - sale_tax_ids = self.pool.get('account.tax.template').search(cr, uid, [("chart_template_id" - , "=", chart_template_id), ('type_tax_use', 'in', ('sale','all'))], order="sequence") - return sale_tax_ids and sale_tax_ids[0] or False - return False - - def _get_chart(self, cr, uid, context=None): - ids = self.pool.get('account.chart.template').search(cr, uid, [], context=context) - if ids: - return ids[0] - return False - - def _get_default_accounts(self, cr, uid, context=None): - return [{'acc_name': _('Current'),'account_type':'bank'}, - {'acc_name': _('Deposit'),'account_type':'bank'}, - {'acc_name': _('Cash'),'account_type':'cash'}] - - _defaults = { - 'company_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, [uid], c)[0].company_id.id, - 'chart_template_id': _get_chart, - 'bank_accounts_id': _get_default_accounts, - 'sale_tax': _get_sale_tax, - 'purchase_tax': _get_purchase_tax, - 'code_digits': 6, - 'seq_journal': True - } + return res def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): res = super(wizard_multi_charts_accounts, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False) From d07923239f01f8d745ec092b3050485968beea17 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Wed, 20 Jul 2011 11:54:43 +0530 Subject: [PATCH 021/892] [IMP]Account:optimize code of default_get method bzr revid: ron@tinyerp.com-20110720062443-cn65ey46czpd8v54 --- addons/account/account.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/account/account.py b/addons/account/account.py index a44ca2a8b5b..7e413f7a333 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -2668,15 +2668,15 @@ class wizard_multi_charts_accounts(osv.osv_memory): ids = self.pool.get('account.chart.template').search(cr, uid, [], context=context) if ids: - sale_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id" - , "=", ids[0]), ('type_tax_use', 'in', ('sale','all'))], order="sequence") - purchase_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id" - , "=", ids[0]), ('type_tax_use', 'in', ('purchase','all'))], order="sequence") if 'chart_template_id' in fields: - res.update({'chart_template_id':ids[0]}) + res.update({'chart_template_id': ids[0]}) if 'sale_tax' in fields: + sale_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id" + , "=", ids[0]), ('type_tax_use', 'in', ('sale','all'))], order="sequence") res.update({'sale_tax': sale_tax_ids and sale_tax_ids[0] or False}) if 'purchase_tax' in fields: + purchase_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id" + , "=", ids[0]), ('type_tax_use', 'in', ('purchase','all'))], order="sequence") res.update({'purchase_tax': purchase_tax_ids and purchase_tax_ids[0] or False}) return res From 7daeb8c47ef60c94dbc7c557dda8d92efa360f4b Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Thu, 21 Jul 2011 18:19:11 +0530 Subject: [PATCH 022/892] [IMP]l10n_multilang:Change the Multi wizard configuaration view and Add Language Field on wizard bzr revid: ron@tinyerp.com-20110721124911-h5tyniz8nufsqu1c --- addons/l10n_multilang/__init__.py | 4 +- addons/l10n_multilang/__openerp__.py | 8 +- addons/l10n_multilang/l10n_multilang.py | 44 +++++ addons/l10n_multilang/l10n_multilang.xml | 32 ++++ addons/l10n_multilang/l10n_multilang_test.xml | 161 ++++++++++++++++++ 5 files changed, 244 insertions(+), 5 deletions(-) create mode 100644 addons/l10n_multilang/l10n_multilang.py create mode 100644 addons/l10n_multilang/l10n_multilang.xml create mode 100644 addons/l10n_multilang/l10n_multilang_test.xml diff --git a/addons/l10n_multilang/__init__.py b/addons/l10n_multilang/__init__.py index 0aea333e9a9..446f3beb668 100644 --- a/addons/l10n_multilang/__init__.py +++ b/addons/l10n_multilang/__init__.py @@ -20,5 +20,5 @@ ############################################################################## import account - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +import l10n_multilang +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_multilang/__openerp__.py b/addons/l10n_multilang/__openerp__.py index e2c754adb4b..481abb1bf65 100644 --- a/addons/l10n_multilang/__openerp__.py +++ b/addons/l10n_multilang/__openerp__.py @@ -25,16 +25,18 @@ "author" : "OpenERP SA", "category": 'Localization/Account Charts', "description": """ - * Multilanguage support for Chart of Accounts, Taxes, Tax Codes , Journals, Accounting Templates, - Analytic Chart of Accounts and Analytic Journals + * Multi language support for Chart of Accounts, Taxes, Tax Codes , Journals, Accounting Templates, + Analytic Chart of Accounts and Analytic Journals. * Setup wizard changes - - Copy translations for COA, Tax, Tax Code and Fiscal Position from templates to target objects + - Copy translations for COA, Tax, Tax Code and Fiscal Position from templates to target objects. - Add option to install languages during the setup. """, 'website': 'http://www.openerp.com', 'init_xml': [], "depends" : ['account_accountant'], 'update_xml': [ + 'l10n_multilang.xml', + 'l10n_multilang_test.xml' ], 'demo_xml': [ ], diff --git a/addons/l10n_multilang/l10n_multilang.py b/addons/l10n_multilang/l10n_multilang.py new file mode 100644 index 00000000000..f9fab08c216 --- /dev/null +++ b/addons/l10n_multilang/l10n_multilang.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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 . +# +############################################################################## + + +from osv import fields, osv + + +class wizard_multi_charts_accounts(osv.osv_memory): + """ + Change wizard that a new account chart for a company. + * load Default languages + * Replace creation of financial accounts by copy from template. + This change results in adherence to Belgian MAR numbering scheme for cash accounts. + * Create financial journals for each account of type liquidity + """ + _inherit = 'wizard.multi.charts.accounts' + + _columns = { + 'lang_ids': fields.many2many('res.lang', 'res_lang_type_rel', 'wizard_id', 'lang_id', 'Language'), + 'bank_from_template': fields.boolean('Banks/Cash from Template', + help="If True then Generate Bank/Cash accounts and journals from the Templates.", readonly=True), + } + +wizard_multi_charts_accounts() + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_multilang/l10n_multilang.xml b/addons/l10n_multilang/l10n_multilang.xml new file mode 100644 index 00000000000..990407f9462 --- /dev/null +++ b/addons/l10n_multilang/l10n_multilang.xml @@ -0,0 +1,32 @@ + + + + + + 25 + onskip + + + + view.wizard.multi.chart + wizard.multi.charts.accounts + + + + + + + + + + + + {'invisible': [('bank_from_template', '=', False)]} + + + + + + + + diff --git a/addons/l10n_multilang/l10n_multilang_test.xml b/addons/l10n_multilang/l10n_multilang_test.xml new file mode 100644 index 00000000000..b91405cf27f --- /dev/null +++ b/addons/l10n_multilang/l10n_multilang_test.xml @@ -0,0 +1,161 @@ + + + + + + + + + special + + + + + + + Receivable + receivable + income + unreconciled + + + + Payable + payable + expense + unreconciled + + + + Asset View + asset + asset + + + + View + view + none + + + + Liability View + liability + liability + + + + Asset View + asset + asset + + + + + + Chart of Account A + 0 + view + + + + + + Balance Sheet + A00 + view + + + + + + + Profit and Loss + A01 + view + + + + + + + A0011 + Bank Account + + view + + + + + + Tax Template Root A + + + + Tax 001 A + + + + + Tax 002 A + + + + + + + Assets B + B00012 + view + + + + + + + Liabilities B + B00014 + view + + + + + + + Income B + B00021 + view + + + + + + + Expense B + B00024 + view + + + + + + + + + Demo Chart A + + + + + + + Demo Chart B + + + + + + + + + From a21478fde26e953e1ef84fa50a7925c698e63132 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Fri, 22 Jul 2011 12:37:41 +0530 Subject: [PATCH 023/892] [IMP]Account:Add parent_id field in Account.chart.template and Bank Account,Root Account ,Root Tax required when there is no parent bzr revid: ron@tinyerp.com-20110722070741-dxfzs55wlhgoq4wz --- addons/account/account.py | 1 + addons/account/account_view.xml | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/account/account.py b/addons/account/account.py index 7e413f7a333..216c48ddb1b 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -2475,6 +2475,7 @@ class account_chart_template(osv.osv): _columns={ 'name': fields.char('Name', size=64, required=True), + 'parent_id': fields.many2one('account.chart.template', 'Parent Chart Template'), 'account_root_id': fields.many2one('account.account.template','Root Account',required=True,domain=[('parent_id','=',False)]), 'tax_code_root_id': fields.many2one('account.tax.code.template','Root Tax Code',required=True,domain=[('parent_id','=',False)]), 'tax_template_ids': fields.one2many('account.tax.template', 'chart_template_id', 'Tax Template List', help='List of all the taxes that have to be installed by the wizard'), diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index d3d54a51918..aa0c7ae0c87 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -2141,9 +2141,10 @@
- - - + + + + From b5f41c1cc7e8b645d86e0accc4ac6f4d86d262f9 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Fri, 22 Jul 2011 14:04:14 +0530 Subject: [PATCH 024/892] [IMP] account: l10n_multilang: 1)Get Default language on Language field 2)onchange on Template at that time languages change accordingly bzr revid: ron@tinyerp.com-20110722083414-8qzizw2fe1a8rxol --- addons/l10n_multilang/l10n_multilang.py | 32 ++++++++++++++++++++++++ addons/l10n_multilang/l10n_multilang.xml | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/addons/l10n_multilang/l10n_multilang.py b/addons/l10n_multilang/l10n_multilang.py index f9fab08c216..0c66ca387d6 100644 --- a/addons/l10n_multilang/l10n_multilang.py +++ b/addons/l10n_multilang/l10n_multilang.py @@ -33,6 +33,38 @@ class wizard_multi_charts_accounts(osv.osv_memory): """ _inherit = 'wizard.multi.charts.accounts' + def onchange_chart_template_id(self, cr, uid, ids, chart_template_id=False, context=None): + res = super(wizard_multi_charts_accounts, self).onchange_chart_template_id(cr, uid, ids, chart_template_id, context=context) + installed_lang = self.get_lang(cr, uid, chart_template_id, context=context) + res['value'].update({'lang_ids': installed_lang}) + return res + + def get_lang(self, cr, uid, template_id=False, context=None): + installed_lang = [] + if template_id: + cr.execute("SELECT module from ir_model_data where model='account.chart.template' and res_id=%s" % (template_id)) + modulename = cr.fetchone() + modulename = modulename and modulename[0] or False + if modulename: + import os + module_obj = self.pool.get('ir.module.module') + module_id = module_obj.search(cr, uid, [('name', '=', modulename)], context=context) + module = module_obj.browse(cr, uid, module_id, context=context)[0] + dirpath = module_obj._translations_subdir(module) + if dirpath: + po_files = os.listdir(dirpath) + for po in po_files: + lang_id = self.pool.get('res.lang').search(cr, uid, [('code', 'ilike', '%s' % (po.split('.')[0])), ('translatable', '=', True)], context=context) + if lang_id: + installed_lang.append(lang_id[0]) + return installed_lang + + def default_get(self, cr, uid, fields, context=None): + res = super(wizard_multi_charts_accounts, self).default_get(cr, uid, fields, context=context) + installed_lang = self.get_lang(cr, uid, res.get('chart_template_id'), context=context) + res.update({'lang_ids': installed_lang, 'bank_accounts_id': []}) + return res + _columns = { 'lang_ids': fields.many2many('res.lang', 'res_lang_type_rel', 'wizard_id', 'lang_id', 'Language'), 'bank_from_template': fields.boolean('Banks/Cash from Template', diff --git a/addons/l10n_multilang/l10n_multilang.xml b/addons/l10n_multilang/l10n_multilang.xml index 990407f9462..7affdb46323 100644 --- a/addons/l10n_multilang/l10n_multilang.xml +++ b/addons/l10n_multilang/l10n_multilang.xml @@ -14,7 +14,7 @@ - + From 4d882e63e19df8558f65f1bc42399d0d1671b8e1 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Fri, 22 Jul 2011 14:29:17 +0530 Subject: [PATCH 025/892] [IMP]: account: l10n fullness and inheritancy:Remove required=True from account_root_id,bank_account_view_id,tax_code_root_id and also optimize the code bzr revid: ron@tinyerp.com-20110722085917-rfnb8w8ycz0otuer --- addons/account/account.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/addons/account/account.py b/addons/account/account.py index 216c48ddb1b..09e61a8325a 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -2476,19 +2476,19 @@ class account_chart_template(osv.osv): _columns={ 'name': fields.char('Name', size=64, required=True), 'parent_id': fields.many2one('account.chart.template', 'Parent Chart Template'), - 'account_root_id': fields.many2one('account.account.template','Root Account',required=True,domain=[('parent_id','=',False)]), - 'tax_code_root_id': fields.many2one('account.tax.code.template','Root Tax Code',required=True,domain=[('parent_id','=',False)]), + 'account_root_id': fields.many2one('account.account.template', 'Root Account', domain=[('parent_id','=',False)]), + 'tax_code_root_id': fields.many2one('account.tax.code.template', 'Root Tax Code', domain=[('parent_id','=',False)]), 'tax_template_ids': fields.one2many('account.tax.template', 'chart_template_id', 'Tax Template List', help='List of all the taxes that have to be installed by the wizard'), - 'bank_account_view_id': fields.many2one('account.account.template','Bank Account',required=True), - 'property_account_receivable': fields.many2one('account.account.template','Receivable Account'), - 'property_account_payable': fields.many2one('account.account.template','Payable Account'), - 'property_account_expense_categ': fields.many2one('account.account.template','Expense Category Account'), - 'property_account_income_categ': fields.many2one('account.account.template','Income Category Account'), - 'property_account_expense': fields.many2one('account.account.template','Expense Account on Product Template'), - 'property_account_income': fields.many2one('account.account.template','Income Account on Product Template'), + 'bank_account_view_id': fields.many2one('account.account.template', 'Bank Account'), + 'property_account_receivable': fields.many2one('account.account.template', 'Receivable Account'), + 'property_account_payable': fields.many2one('account.account.template', 'Payable Account'), + 'property_account_expense_categ': fields.many2one('account.account.template', 'Expense Category Account'), + 'property_account_income_categ': fields.many2one('account.account.template', 'Income Category Account'), + 'property_account_expense': fields.many2one('account.account.template', 'Expense Account on Product Template'), + 'property_account_income': fields.many2one('account.account.template', 'Income Account on Product Template'), 'property_reserve_and_surplus_account': fields.many2one('account.account.template', 'Reserve and Profit/Loss Account', domain=[('type', '=', 'payable')], help='This Account is used for transferring Profit/Loss(If It is Profit: Amount will be added, Loss: Amount will be deducted.), Which is calculated from Profilt & Loss Report'), - 'property_account_income_opening': fields.many2one('account.account.template','Opening Entries Income Account'), - 'property_account_expense_opening': fields.many2one('account.account.template','Opening Entries Expense Account'), + 'property_account_income_opening': fields.many2one('account.account.template', 'Opening Entries Income Account'), + 'property_account_expense_opening': fields.many2one('account.account.template', 'Opening Entries Expense Account'), } account_chart_template() From aa245d62fa3fc461ecc7dcc0fa5241a7f69b5920 Mon Sep 17 00:00:00 2001 From: "Rucha (Open ERP)" Date: Fri, 22 Jul 2011 16:24:04 +0530 Subject: [PATCH 026/892] [REM]: l10n_multilang: Removed undefined onchange on COA template wizard bzr revid: rpa@tinyerp.com-20110722105404-4cxq8vn97atmu0jm --- addons/l10n_multilang/l10n_multilang.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/l10n_multilang/l10n_multilang.xml b/addons/l10n_multilang/l10n_multilang.xml index e4809aaa27f..7ad10f487db 100644 --- a/addons/l10n_multilang/l10n_multilang.xml +++ b/addons/l10n_multilang/l10n_multilang.xml @@ -9,7 +9,7 @@ - + From f9826a7f3c6c6afdaf9bc8a1c0d9d9ffd27af387 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Mon, 25 Jul 2011 11:09:34 +0530 Subject: [PATCH 027/892] [IMP] account: l10n_multilang: Copy Translation from Account Template to Destination object bzr revid: ron@tinyerp.com-20110725053934-zcbki8m3wyt4ilux --- addons/l10n_multilang/l10n_multilang.py | 77 ++++++++++++++++++++++++ addons/l10n_multilang/l10n_multilang.xml | 5 ++ 2 files changed, 82 insertions(+) diff --git a/addons/l10n_multilang/l10n_multilang.py b/addons/l10n_multilang/l10n_multilang.py index 85a19c9fd08..e8e700bd1f6 100644 --- a/addons/l10n_multilang/l10n_multilang.py +++ b/addons/l10n_multilang/l10n_multilang.py @@ -21,6 +21,9 @@ from osv import fields, osv import os +import netsvc + +logger=netsvc.Logger() class wizard_multi_charts_accounts(osv.osv_memory): """ @@ -32,6 +35,80 @@ class wizard_multi_charts_accounts(osv.osv_memory): """ _inherit = 'wizard.multi.charts.accounts' + def copy_translation(self, cr, uid, langs, in_obj, in_field, in_ids, out_obj, out_ids): + done = False + error = False + xlat_obj = self.pool.get('ir.translation') + while not done: + #compare template with Accounts + if len(in_ids) != len(out_ids): + logger.notifyChannel('addons.'+self._name, netsvc.LOG_ERROR, + 'generate translations from template for %s failed (error 1)!' % out_obj._name) + error = True + break + #copy Translation from Source to Destination object + for lang in langs: + cr.execute("SELECT src, value FROM ir_translation " \ + "WHERE name=%s AND type='model' AND lang=%s AND res_id IN %s " \ + "ORDER by res_id", + (in_obj._name + ',' + in_field, lang, tuple(in_ids))) + xlats = cr.fetchall() + #IF there is no Translation Available or missing some Translation + if len(xlats) != len(out_ids): + logger.notifyChannel('addons.'+self._name, netsvc.LOG_ERROR, + 'There is no Translation available for template %s !' % out_obj._name) + error = True + break + for i in range(len(out_ids)): + src = xlats[i][0] + value = xlats[i][1] + out_record = out_obj.browse(cr, uid, out_ids[i]) + #compare with source to destination object name + if getattr(out_record, in_field) != src: + logger.notifyChannel('addons.'+self._name, netsvc.LOG_ERROR, + 'generate translations from template for %s failed (error 3)!' % out_obj._name) + error = True + break + #Copy Translation + xlat_obj.create(cr, uid, { + 'name': out_obj._name + ',' + in_field, + 'type': 'model', + 'res_id': out_record.id, + 'lang': lang, + 'src': src, + 'value': value, + }) + done = True + if error: + raise osv.except_osv(_('Warning!'), + _('The generation of translations from the template for %s failed!' % out_obj._name)) + + def execute(self, cr, uid, ids, context=None): + super(wizard_multi_charts_accounts, self).execute(cr, uid, ids, context=context) + obj_multi = self.browse(cr, uid, ids[0], context=context) + obj_mod = self.pool.get('ir.module.module') + obj_acc_template = self.pool.get('account.account.template') + obj_acc = self.pool.get('account.account') + obj_data = self.pool.get('ir.model.data') + + company_id = obj_multi.company_id.id + acc_template_root_id = obj_multi.chart_template_id.account_root_id.id + acc_root_id = obj_acc.search(cr, uid, [('company_id', '=', company_id), ('parent_id', '=', None)])[0] + + # load languages + langs = [] + for lang in obj_multi.lang_ids: + langs.append(lang.code) + installed_mids = obj_mod.search(cr, uid, [('state', '=', 'installed')]) + for lang in langs: + obj_mod.update_translations(cr, uid, installed_mids, lang) + + # copy account.account translations + in_field = 'name' + in_ids = obj_acc_template.search(cr, uid, [('id', 'child_of', [acc_template_root_id])], order='id')[1:] + out_ids = obj_acc.search(cr, uid, [('id', 'child_of', [acc_root_id])], order='id')[1:] + self.copy_translation(cr, uid, langs, obj_acc_template, in_field, in_ids, obj_acc, out_ids) + def onchange_chart_template_id(self, cr, uid, ids, chart_template_id=False, context=None): res = super(wizard_multi_charts_accounts, self).onchange_chart_template_id(cr, uid, ids, chart_template_id, context=context) installed_lang = self.get_lang(cr, uid, chart_template_id, context=context) diff --git a/addons/l10n_multilang/l10n_multilang.xml b/addons/l10n_multilang/l10n_multilang.xml index 7ad10f487db..71563ce526c 100644 --- a/addons/l10n_multilang/l10n_multilang.xml +++ b/addons/l10n_multilang/l10n_multilang.xml @@ -1,6 +1,11 @@ + + + 25 + onskip + view.wizard.multi.chart From 06726846c4c819cfeafacf6acd9764c153afce2d Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Tue, 26 Jul 2011 15:25:18 +0530 Subject: [PATCH 028/892] [ADD] account: l10n_multilang: 1)Add wizard=>to saw warning message 2)Optimize code of copy_translation method 3)checked indentation problems 4)remove Unused variable 5)Improved docstring bzr revid: ron@tinyerp.com-20110726095518-1irmhd3xr8mwfaui --- addons/l10n_multilang/l10n_multilang.py | 141 +++++++++++++---------- addons/l10n_multilang/l10n_multilang.xml | 19 ++- 2 files changed, 101 insertions(+), 59 deletions(-) diff --git a/addons/l10n_multilang/l10n_multilang.py b/addons/l10n_multilang/l10n_multilang.py index e8e700bd1f6..1e7ed1fef87 100644 --- a/addons/l10n_multilang/l10n_multilang.py +++ b/addons/l10n_multilang/l10n_multilang.py @@ -21,70 +21,94 @@ from osv import fields, osv import os -import netsvc +from tools.translate import _ + + +class translate_message(osv.osv_memory): + _name = "translate.message" + _description = "Give Message After Translation completed" + + def default_get(self, cr, uid, fields, context=None): + """ Get default values + @param self: The object pointer. + @param cr: A database cursor + @param uid: ID of the user currently logged in + @param fields: List of fields for default value + @param context: A standard dictionary + @return: Default values of fields + """ + if context is None: + context = {} + res ={} + if context.get('warning'): + if 'message' in fields: + res.update({'message': _(context.get('warning'))}) + return res + + _columns = { + 'message' : fields.text('Message', size=64, readonly=True), + } + +translate_message() -logger=netsvc.Logger() class wizard_multi_charts_accounts(osv.osv_memory): """ Change wizard that a new account chart for a company. - * load Default languages - * Replace creation of financial accounts by copy from template. - This change results in adherence to Belgian MAR numbering scheme for cash accounts. - * Create financial journals for each account of type liquidity + * Add option to install languages during the setup + * Copy translations for COA, Tax, Tax Code and Fiscal Position from templates to target objects. """ _inherit = 'wizard.multi.charts.accounts' - def copy_translation(self, cr, uid, langs, in_obj, in_field, in_ids, out_obj, out_ids): - done = False - error = False + def copy_translations(self, cr, uid, langs, in_obj, in_field, in_ids, out_obj, out_ids, context): + result = {} + if context is None: + context = {} xlat_obj = self.pool.get('ir.translation') - while not done: - #compare template with Accounts - if len(in_ids) != len(out_ids): - logger.notifyChannel('addons.'+self._name, netsvc.LOG_ERROR, - 'generate translations from template for %s failed (error 1)!' % out_obj._name) - error = True - break - #copy Translation from Source to Destination object - for lang in langs: - cr.execute("SELECT src, value FROM ir_translation " \ - "WHERE name=%s AND type='model' AND lang=%s AND res_id IN %s " \ - "ORDER by res_id", - (in_obj._name + ',' + in_field, lang, tuple(in_ids))) - xlats = cr.fetchall() - #IF there is no Translation Available or missing some Translation - if len(xlats) != len(out_ids): - logger.notifyChannel('addons.'+self._name, netsvc.LOG_ERROR, - 'There is no Translation available for template %s !' % out_obj._name) - error = True - break - for i in range(len(out_ids)): - src = xlats[i][0] - value = xlats[i][1] - out_record = out_obj.browse(cr, uid, out_ids[i]) - #compare with source to destination object name - if getattr(out_record, in_field) != src: - logger.notifyChannel('addons.'+self._name, netsvc.LOG_ERROR, - 'generate translations from template for %s failed (error 3)!' % out_obj._name) - error = True - break - #Copy Translation + #find the source from Account Template + result = [(x.id, x.name) for x in in_obj.browse(cr, uid, in_ids)] + src = dict(result) + message = '' + for lang in langs: + notdone = [] + #find the value from Translation + value = xlat_obj._get_ids(cr, uid, in_obj._name + ',' + in_field, 'model', lang, in_ids) + for j in range(len(in_ids)): + in_id = in_ids[j] + if not value[in_id]: + # if source have no translation available + notdone.append(src[in_id]) + else: + #copy Translation from Source to Destination object xlat_obj.create(cr, uid, { - 'name': out_obj._name + ',' + in_field, - 'type': 'model', - 'res_id': out_record.id, - 'lang': lang, - 'src': src, - 'value': value, - }) - done = True - if error: - raise osv.except_osv(_('Warning!'), - _('The generation of translations from the template for %s failed!' % out_obj._name)) - + 'name': out_obj._name + ',' + in_field, + 'type': 'model', + 'res_id': out_ids[j], + 'lang': lang, + 'src': src[in_id], + 'value': value, + }) + if notdone: + message += '\nLanguage:-%s \n\tThere is no translation available for following accounts: \n\t%s '\ + % (lang, '\n\t'.join(notdone)) + else: + message += '\nLanguage:-%s \n\tTranslation successfully done.' % (lang) + resource_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'l10n_multilang', 'view_translate_message_wizard') + #open new wizard its for saw warning message + if message: + context.update({'warning': message}) + return { + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'translate.message', + 'views': [(resource_id and resource_id[1] or False,'form')], + 'type': 'ir.actions.act_window', + 'target': 'new', + 'context': context + } + def execute(self, cr, uid, ids, context=None): - super(wizard_multi_charts_accounts, self).execute(cr, uid, ids, context=context) + res = super(wizard_multi_charts_accounts, self).execute(cr, uid, ids, context=context) obj_multi = self.browse(cr, uid, ids[0], context=context) obj_mod = self.pool.get('ir.module.module') obj_acc_template = self.pool.get('account.account.template') @@ -97,17 +121,18 @@ class wizard_multi_charts_accounts(osv.osv_memory): # load languages langs = [] + installed_mids = obj_mod.search(cr, uid, [('state', '=', 'installed')]) for lang in obj_multi.lang_ids: langs.append(lang.code) - installed_mids = obj_mod.search(cr, uid, [('state', '=', 'installed')]) - for lang in langs: - obj_mod.update_translations(cr, uid, installed_mids, lang) + obj_mod.update_translations(cr, uid, installed_mids, lang.code) # copy account.account translations - in_field = 'name' in_ids = obj_acc_template.search(cr, uid, [('id', 'child_of', [acc_template_root_id])], order='id')[1:] out_ids = obj_acc.search(cr, uid, [('id', 'child_of', [acc_root_id])], order='id')[1:] - self.copy_translation(cr, uid, langs, obj_acc_template, in_field, in_ids, obj_acc, out_ids) + result = self.copy_translations(cr, uid, langs, obj_acc_template, 'name', in_ids, obj_acc, out_ids, context) + if result: + return result + return {} def onchange_chart_template_id(self, cr, uid, ids, chart_template_id=False, context=None): res = super(wizard_multi_charts_accounts, self).onchange_chart_template_id(cr, uid, ids, chart_template_id, context=context) diff --git a/addons/l10n_multilang/l10n_multilang.xml b/addons/l10n_multilang/l10n_multilang.xml index 71563ce526c..02b06a9147d 100644 --- a/addons/l10n_multilang/l10n_multilang.xml +++ b/addons/l10n_multilang/l10n_multilang.xml @@ -1,7 +1,7 @@ - + 25 onskip @@ -27,6 +27,23 @@ + + + Translation Process + translate.message + form + + + + + + + + + From c565752d0000b6c9f9c8ae74719207a6d52c163a Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Tue, 22 Nov 2011 18:57:15 +0530 Subject: [PATCH 306/892] [FIX] crm: Clicked on forword button for lead forward to its partner, Its gave traceback bzr revid: ron@tinyerp.com-20111122132715-hiqd32vdckfxdqg1 --- addons/crm_partner_assign/wizard/crm_forward_to_partner.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/crm_partner_assign/wizard/crm_forward_to_partner.py b/addons/crm_partner_assign/wizard/crm_forward_to_partner.py index 29a60ba71ba..c49115078cd 100644 --- a/addons/crm_partner_assign/wizard/crm_forward_to_partner.py +++ b/addons/crm_partner_assign/wizard/crm_forward_to_partner.py @@ -64,9 +64,10 @@ class crm_lead_forward_to_partner(osv.osv_memory): res = {} res_id = context.get('active_id') model = context.get('active_model') - body_text = self._get_body_text(cr, uid, model, res_id, history_type, context=context) + lead = self.pool.get(model).browse(cr, uid, res_id, context) + body_text = self._get_info_body_text(cr, uid, lead, context=context) context['mail.compose.message.body'] = history_type - if msg_val: + if body_text: res = {'value': {'body_text' : body_text}} return res From f97682aac2c1640d3855e1db33232082713291b0 Mon Sep 17 00:00:00 2001 From: Antoine Huvelle Date: Tue, 22 Nov 2011 15:08:59 +0100 Subject: [PATCH 307/892] [IMP] fonts bzr revid: ahu@openerp.com-20111122140859-z0vff9cyfod0ykoa --- addons/web/static/src/css/base.css | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index dfd92da0916..72788351576 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -5,6 +5,7 @@ body.openerp { min-width: 1000px; overflow-y: scroll; font-size: 80%; + font-family: Ubuntu, Helvetica, sans-serif; } body.openerp, .openerp textarea, .openerp input, .openerp select, .openerp option, .openerp button, .openerp .ui-widget { @@ -272,7 +273,7 @@ label.error { filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#BD5E54', endColorstr='#90322A',GradientType=0 ); /* IE6-9 */ background: linear-gradient(top, #bd5e54 0%,#90322a 60%); /* W3C */ - border: 1px solid #6E2A24; + border: 1px solid #5E1A14; border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; @@ -283,7 +284,7 @@ label.error { text-transform: uppercase; line-height: 20px; font-weight: bold; - font-size: 85%; + font-size: 75%; white-space: nowrap; } @@ -442,6 +443,8 @@ label.error { margin: 0; padding: 4px 10px; text-shadow: 0 1px 0 #111111; + font-weight:600; + line-height:14px; } .openerp .header_title small { color: #ccc; @@ -509,6 +512,10 @@ label.error { font-weight: bold; } +.openerp .logout { + font-size:80%; +} + /* Footer */ .openerp div.oe_footer { background: none repeat scroll 0 0 #CCCCCC; @@ -552,6 +559,9 @@ label.error { .openerp .oe_vm_switch { float: right; } +.openerp .oe-view-manager-header .oe_view_title { + font-size:150%; +} /* SearchView */ .openerp .filter_label, .openerp .filter_icon { @@ -831,6 +841,7 @@ label.error { .openerp .oe-list-pager .oe-pager-state { cursor: pointer; font-size:90%; + color:#555; } .openerp .oe-listview .oe-group-name { @@ -925,6 +936,10 @@ label.error { } /* Form */ +.openerp .oe_form_frame_cell input[type="checkbox"] { + margin-top:5px; + vertical-align:center; +} .openerp table.oe_frame td { color: #4c4c4c; } @@ -1000,7 +1015,7 @@ label.error { } .openerp .oe_forms label.oe_label, .openerp .oe_forms label.oe_label_help { - margin: 3px 0 0 10px; + margin: 3px 0 0 3px; } .openerp label.oe_label_help span { font-size: 80%; @@ -1199,6 +1214,7 @@ label.error { .openerp .view-manager-main-content { width: 100%; + padding:0px 7px; } .openerp .oe-view-manager-header { overflow: auto; @@ -1515,6 +1531,7 @@ label.error { .oe-shortcut-toggle { height: 20px; padding: 0; + margin-top:4px; width: 24px; cursor: pointer; display: block; From b3366f526e042936cb24a756987b089e3a558ea9 Mon Sep 17 00:00:00 2001 From: Antoine Huvelle Date: Tue, 22 Nov 2011 15:50:11 +0100 Subject: [PATCH 308/892] [IMP] kanban view font size bzr revid: ahu@openerp.com-20111122145011-1x3siw26qrwc8j51 --- addons/web_kanban/static/src/css/kanban.css | 23 +++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 86818f6541c..57fedecfbad 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -1,3 +1,4 @@ + .openerp .oe_kanban_view .ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; @@ -18,9 +19,10 @@ } .openerp .oe_kanban_group_title { - color: #000000; - font-size: 130%; + font-size: 100%; font-weight: bold; + padding-left:2px; + color: #666666; } .openerp .oe_kanban_group_title_undefined { color: #666666; @@ -45,10 +47,10 @@ .openerp .oe_kanban_fold_icon { cursor: pointer; float: left; - padding: 2px 2px 0 0; + padding: 4px 2px 0 2px; width: 16px; height: 16px; - background: url(/web_kanban/static/src/img/minus-icon.png) no-repeat; + background: url(/web_kanban/static/src/img/minus-icon.png) no-repeat center center; } .openerp .oe_kanban_group_folded .oe_kanban_fold_icon { background: url(/web_kanban/static/src/img/plus-icon.png) no-repeat; @@ -64,6 +66,7 @@ } .openerp ul.oe_kanban_aggregates span { text-decoration: underline; + font-size:90%; } .openerp .oe_kanban_action_button { @@ -90,12 +93,13 @@ padding: 0 4px 0 4px; } .openerp .oe_kanban_title2 { - font-size: 110%; + font-size: 100%; font-weight: bold; + color:#3A3A3A; padding: 0 4px 0 4px; } .openerp .oe_kanban_title3 { - font-size: 100%; + font-size: 95%; font-weight: normal; padding: 0 4px 0 4px; } @@ -105,6 +109,7 @@ } .openerp .oe_kanban_table { width: 100%; + font-size:95%; border: none; border-collapse: collapse; margin: 0; @@ -116,7 +121,13 @@ } .openerp .oe_kanban_box_content { padding: 4px; + font-size:90%; } +.openerp .oe_kanban_box_content div:last-child { + padding-top:4px; + color:#555; +} + .openerp .oe_kanban_buttons_set { border-top: 1px dotted; white-space: nowrap; From ea92099e3df707677b7bf8721e872b834bbea2af Mon Sep 17 00:00:00 2001 From: Antoine Huvelle Date: Tue, 22 Nov 2011 17:14:37 +0100 Subject: [PATCH 309/892] [IMP] non-editable view changes bzr revid: ahu@openerp.com-20111122161437-3d8q3v27uofvpii4 --- addons/web/static/src/css/base.css | 13 +++++++++++++ addons/web_kanban/static/src/css/kanban.css | 3 +++ 2 files changed, 16 insertions(+) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 72788351576..3b9071bec23 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -934,6 +934,19 @@ label.error { .openerp .oe_form_notebook .ui-tabs-selected { background: #f9f9f9; } +/* Unedit Form */ +.openerp .field_char, .openerp .field_date, .openerp .field_float, .openerp .field_selection, .openerp .oe_form_field_many2one a { + vertical-align:middle; + padding-top:3px; + font-size:90%; + color:#222; +} +.openerp .oe_form_field_many2one a { + color:#9A0404; + line-height:12px; +} + + /* Form */ .openerp .oe_form_frame_cell input[type="checkbox"] { diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 57fedecfbad..bc68c8068a0 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -102,6 +102,9 @@ font-size: 95%; font-weight: normal; padding: 0 4px 0 4px; + line-height:16px; +} +.openerp .oe_kanban_title3 img{ } .openerp .oe_kanban_small { font-size: 80%; From 25b36b599a25463fb9ca89ea2bca8fea4405e51f Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Tue, 22 Nov 2011 17:55:37 +0100 Subject: [PATCH 310/892] [IMP] account_voucher: multi currency handling bzr revid: qdp-launchpad@openerp.com-20111122165537-2c8a9ov2qjklq2wj --- addons/account_voucher/account_voucher.py | 140 ++++++++++++++---- .../account_voucher/test/account_voucher.yml | 1 - addons/account_voucher/test/sales_receipt.yml | 1 - .../voucher_payment_receipt_view.xml | 53 +++---- 4 files changed, 136 insertions(+), 59 deletions(-) diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py index fd6dac9f90d..4b099eedc66 100644 --- a/addons/account_voucher/account_voucher.py +++ b/addons/account_voucher/account_voucher.py @@ -90,6 +90,17 @@ class account_voucher(osv.osv): return tax_id return False + def _get_payment_rate_currency(self, cr, uid, context=None): + if context is None: context = {} + journal_pool = self.pool.get('account.journal') + journal_id = context.get('journal_id', False) + if journal_id: + journal = journal_pool.browse(cr, uid, journal_id, context=context) + if journal.currency: + return journal.currency.id + #no journal given in the context, use company currency as default + return self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id + def _get_currency(self, cr, uid, context=None): if context is None: context = {} journal_pool = self.pool.get('account.journal') @@ -143,11 +154,21 @@ class account_voucher(osv.osv): res = super(account_voucher, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu) doc = etree.XML(res['arch']) - nodes = doc.xpath("//field[@name='partner_id']") + + # replace the label of the field payment_rate + currency_obj = self.pool.get('res.currency') + base_currency_id = currency_obj.search(cr, uid, [('rate','=',1.0),('rate_ids','=',1.0)], context=context) + symbol = base_currency_id and currency_obj.name_get(cr, uid, base_currency_id, context=context)[0][1] + string = _("Rate for this operation: 1 %s is") % symbol + payment_rate_field = doc.xpath("//field[@name='payment_rate']") + for field in payment_rate_field: + field.set('string', string) + if context.get('type', 'sale') in ('purchase', 'payment'): + nodes = doc.xpath("//field[@name='partner_id']") for node in nodes: node.set('domain', "[('supplier', '=', True)]") - res['arch'] = etree.tostring(doc) + res['arch'] = etree.tostring(doc) return res def _compute_writeoff_amount(self, cr, uid, line_dr_ids, line_cr_ids, amount): @@ -184,7 +205,10 @@ class account_voucher(osv.osv): res = {} debit = credit = 0.0 for voucher in self.browse(cr, uid, ids, context=context): - res[voucher.id] = voucher.amount / voucher.payment_rate + rate = voucher.currency_id.rate or voucher.company_id.currency_id.rate + if voucher.currency_id == voucher.payment_rate_currency_id: + rate = voucher.payment_rate + res[voucher.id] = voucher.amount / rate * voucher.company_id.currency_id.rate return res _name = 'account.voucher' @@ -247,8 +271,9 @@ class account_voucher(osv.osv): 'comment': fields.char('Counterpart Comment', size=64, required=True, readonly=True, states={'draft': [('readonly', False)]}), 'analytic_id': fields.many2one('account.analytic.account','Write-Off Analytic Account', readonly=True, states={'draft': [('readonly', False)]}), 'writeoff_amount': fields.function(_get_writeoff_amount, string='Reconcile Amount', type='float', readonly=True), + 'payment_rate_currency_id': fields.many2one('res.currency', 'Payment Rate Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}), 'payment_rate': fields.float('Payment Rate', digits=(12,6), required=True, readonly=True, states={'draft': [('readonly', False)]}, - help='The rate between the journal currency and the company currency for this particular payment.'), + help='The specific rate that will be used for this voucher for the selected currency.'), 'paid_amount_in_company_currency': fields.function(_paid_amount_in_company_currency, string='Paid Amount in Company Currency', type='float', readonly=True), } _defaults = { @@ -269,6 +294,7 @@ class account_voucher(osv.osv): 'payment_option': 'without_writeoff', 'comment': _('Write-Off'), 'payment_rate': 1.0, + 'payment_rate_currency_id': _get_payment_rate_currency, } def compute_tax(self, cr, uid, ids, context=None): @@ -374,7 +400,7 @@ class account_voucher(osv.osv): }) return {'value':default} - def onchange_journal_voucher(self, cr, uid, ids, line_ids=False, tax_id=False, price=0.0, partner_id=False, journal_id=False, ttype=False, context=None): + def onchange_journal_voucher(self, cr, uid, ids, line_ids=False, tax_id=False, price=0.0, partner_id=False, journal_id=False, ttype=False, company_id=False, context=None): """price Returns a dict that contains new values and context @@ -413,20 +439,25 @@ class account_voucher(osv.osv): default['value']['account_id'] = account_id default['value']['type'] = ttype or tr_type - vals = self.onchange_journal(cr, uid, ids, journal_id, line_ids, tax_id, partner_id, context) + vals = self.onchange_journal(cr, uid, ids, journal_id, line_ids, tax_id, partner_id, company_id, context) default['value'].update(vals.get('value')) return default - def onchange_rate(self, cr, uid, ids, rate, amount, context=None): - res = {'value': {'paid_amount_in_company_currency': 0.0}} - if rate and amount: - res['value']['paid_amount_in_company_currency'] = amount / rate + def onchange_rate(self, cr, uid, ids, rate, amount, currency_id, payment_rate_currency_id, company_id, context=None): + res = {'value': {}} + if rate and amount and currency_id and currency_id == payment_rate_currency_id: + company_rate = self.pool.get('res.company').browse(cr, uid, company_id, context=context).currency_id.rate + res['value']['paid_amount_in_company_currency'] = amount / rate * company_rate return res - def onchange_amount(self, cr, uid, ids, amount, rate, partner_id, journal_id, currency_id, ttype, date, context=None): + def onchange_amount(self, cr, uid, ids, amount, rate, partner_id, journal_id, currency_id, ttype, date, payment_rate_currency_id, company_id, context=None): + if context is None: + context = {} res = self.onchange_partner_id(cr, uid, ids, partner_id, journal_id, amount, currency_id, ttype, date, context=context) - vals = self.onchange_rate(cr, uid, ids, rate, amount, context=context) + ctx = context.copy() + ctx.update({'date': date}) + vals = self.onchange_rate(cr, uid, ids, rate, amount, currency_id, payment_rate_currency_id, company_id, context=ctx) for key in vals.keys(): res[key].update(vals[key]) return res @@ -582,7 +613,22 @@ class account_voucher(osv.osv): default['value']['writeoff_amount'] = self._compute_writeoff_amount(cr, uid, default['value']['line_dr_ids'], default['value']['line_cr_ids'], price) return default - def onchange_date(self, cr, uid, ids, date, currency_id, amount, context=None): + def onchange_payment_rate_currency(self, cr, uid, ids, currency_id, payment_rate_currency_id, date, amount, company_id, context=None): + if context is None: + context = {} + res = {'value': {}} + #set the default payment rate of the voucher and compute the paid amount in company currency + if currency_id and currency_id == payment_rate_currency_id: + ctx = context.copy() + ctx.update({'date': date}) + payment_rate = self.pool.get('res.currency').browse(cr, uid, currency_id, context=ctx).rate + res['value'].update({'payment_rate': payment_rate}) + vals = self.onchange_rate(cr, uid, ids, payment_rate, amount, currency_id, payment_rate_currency_id, company_id, context=ctx) + for key in vals.keys(): + res[key].update(vals[key]) + return res + + def onchange_date(self, cr, uid, ids, date, currency_id, payment_rate_currency_id, amount, company_id, context=None): """ @param date: latest value from user input for field date @param args: other arguments @@ -590,22 +636,19 @@ class account_voucher(osv.osv): @return: Returns a dict which contains new values, and context """ res = {'value': {}} + #FIXME: use find() hereunder + #set the period of the voucher period_pool = self.pool.get('account.period') pids = period_pool.search(cr, uid, [('date_start', '<=', date), ('date_stop', '>=', date)]) if pids: res['value'].update({'period_id':pids[0]}) - #set the default payment rate of the voucher and compute the paid amount in company currency - payment_rate = 1.0 - if currency_id: - payment_rate = self.pool.get('res.currency').browse(cr, uid, currency_id, context={'date': date}).rate - res['value'].update({'payment_rate': payment_rate}) - vals = self.onchange_rate(cr, uid, ids, payment_rate, amount, context=context) + vals = self.onchange_payment_rate_currency(cr, uid, ids, currency_id, payment_rate_currency_id, date, amount, company_id, context=context) for key in vals.keys(): res[key].update(vals[key]) return res - def onchange_journal(self, cr, uid, ids, journal_id, line_ids, tax_id, partner_id, date, amount, ttype, context=None): + def onchange_journal(self, cr, uid, ids, journal_id, line_ids, tax_id, partner_id, date, amount, ttype, company_id, context=None): if not journal_id: return False journal_pool = self.pool.get('account.journal') @@ -620,12 +663,16 @@ class account_voucher(osv.osv): currency_id = False if journal.currency: currency_id = journal.currency.id - payment_rate = self.pool.get('res.currency').browse(cr, uid, currency_id, context={'date': date}).rate + ctx = context.copy() + ctx.update({'date': date}) + payment_rate = self.pool.get('res.currency').browse(cr, uid, currency_id, context=ctx).rate vals['value'].update({'payment_rate': payment_rate}) - res = self.onchange_rate(cr, uid, ids, payment_rate, amount, context=context) + res = self.onchange_rate(cr, uid, ids, payment_rate, amount, currency_id, currency_id, company_id, context=ctx) for key in res.keys(): vals[key].update(res[key]) - vals['value'].update({'currency_id': currency_id}) + if currency_id: + vals['value'].update({'currency_id': currency_id}) + vals['value'].update({'payment_rate_currency_id': currency_id}) res = self.onchange_partner_id(cr, uid, ids, partner_id, journal_id, amount, currency_id, ttype, date, context) for key in res.keys(): vals[key].update(res[key]) @@ -730,9 +777,9 @@ class account_voucher(osv.osv): # TODO: Make this logic available. # -for sale, purchase we have but for the payment and receipt we do not have as based on the bank/cash journal we can not know its payment or receipt if voucher_brw.type in ('purchase', 'payment'): - credit = voucher_brw.amount / voucher_brw.payment_rate + credit = voucher_brw.paid_amount_in_company_currency#voucher_brw.amount / voucher_brw.payment_rate * voucher_brw.company_id.currency_id.rate elif voucher_brw.type in ('sale', 'receipt'): - debit = voucher_brw.amount / voucher_brw.payment_rate + debit = voucher_brw.paid_amount_in_company_currency#amount / voucher_brw.payment_rate * voucher_brw.company_id.currency_id.rate if debit < 0: credit = -debit; debit = 0.0 if credit < 0: debit = -credit; credit = 0.0 sign = debit - credit < 0 and -1 or 1 @@ -831,6 +878,24 @@ class account_voucher(osv.osv): } return (move_line, move_line_counterpart) + def _convert_amount(self, cr, uid, amount, voucher_id, context=None): + #TODO: doccument me + currency_obj = self.pool.get('res.currency') + voucher = self.browse(cr, uid, voucher_id, context=context) + res = amount + if voucher.payment_rate_currency_id.id == voucher.company_id.currency_id.id: + rate_between_voucher_and_base = voucher.currency_id.rate or 1.0 + rate_between_base_and_company = voucher.payment_rate or 1.0 + res = amount / rate_between_voucher_and_base * rate_between_base_and_company + elif voucher.payment_rate_currency_id.id == voucher.currency_id.id: + rate_between_base_and_company = voucher.company_id.currency_id.rate or 1.0 + rate_between_voucher_and_base = voucher.payment_rate or 1.0 + res = amount / rate_between_voucher_and_base * rate_between_base_and_company + else: + res = currency_obj.compute(cr, uid, voucher.currency_id.id, voucher.company_id.currency_id.id, amount, context=ctx) + print 'res', res + return res + def voucher_move_line_create(self, cr, uid, voucher_id, line_total, move_id, company_currency, current_currency, context=None): ''' Create one account move line, on the given account move, per voucher line where amount is not 0.0. @@ -843,24 +908,32 @@ class account_voucher(osv.osv): :param company_currency: id of currency of the company to which the voucher belong :param current_currency: id of currency of the voucher :return: Tuple build as (remaining amount not allocated on voucher lines, list of account_move_line created in this method) - :rtype: tuple(int, list of int) + :rtype: tuple(float, list of int) ''' + if context is None: + context = {} move_line_obj = self.pool.get('account.move.line') currency_obj = self.pool.get('res.currency') tot_line = line_total rec_lst_ids = [] - voucher_brw = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context) + voucher_brw = self.pool.get('account.voucher').browse(cr, uid, voucher_id, context) + ctx = context.copy() + ctx.update({'date': voucher_brw.date}) for line in voucher_brw.line_ids: #create one move line per voucher line where amount is not 0.0 if not line.amount: continue - #we check if the voucher line is fully paid or not and create a move line to balance the payment and initial invoice if needed + #TODO: comment me + amount = self._convert_amount(cr, uid, line.untax_amount or line.amount, voucher_brw.id, context=ctx) + #residual amount in company currency + #amount_residual = line.move_line_id.amount_residual - amount + #TODO: remove me if line.amount == line.amount_unreconciled: - amount = (line.untax_amount or line.amount) / voucher_brw.payment_rate + # amount = (line.untax_amount or line.amount) / voucher_brw.payment_rate amount_residual = line.move_line_id.amount_residual - amount #residual amount in company currency else: - amount = (line.untax_amount or line.amount) / voucher_brw.payment_rate + # amount = (line.untax_amount or line.amount) / voucher_brw.payment_rate amount_residual = 0.0 move_line = { 'journal_id': voucher_brw.journal_id.id, @@ -997,6 +1070,9 @@ class account_voucher(osv.osv): for voucher in self.browse(cr, uid, ids, context=context): if voucher.move_id: continue + #TODO: -need to check- Can't we just use the context returned by _sel_context? + ctx = context.copy() + ctx.update({'date': voucher.date}) company_currency = self._get_company_currency(cr, uid, voucher.id, context) current_currency = self._get_current_currency(cr, uid, voucher.id, context) context = self._sel_context(cr, uid, voucher.id, context) @@ -1010,9 +1086,9 @@ class account_voucher(osv.osv): line_total = move_line_brw.debit - move_line_brw.credit rec_list_ids = [] if voucher.type == 'sale': - line_total = line_total - (voucher.tax_amount / voucher.payment_rate) + line_total = line_total - self._convert_amount(cr, uid, voucher.tax_amount, voucher.id, context=ctx) elif voucher.type == 'purchase': - line_total = line_total + (voucher.tax_amount / voucher.payment_rate) + line_total = line_total + self._convert_amount(cr, uid, voucher.tax_amount, voucher.id, context=ctx) #create one move line per voucher line where amount is not 0.0 line_total, rec_list_ids = self.voucher_move_line_create(cr, uid, voucher.id, line_total, move_id, company_currency, current_currency, context) diff --git a/addons/account_voucher/test/account_voucher.yml b/addons/account_voucher/test/account_voucher.yml index 33ae609e3f3..7e5482aa931 100644 --- a/addons/account_voucher/test/account_voucher.yml +++ b/addons/account_voucher/test/account_voucher.yml @@ -5,7 +5,6 @@ account_id: account.cash amount: 1000.0 company_id: base.main_company - currency_id: base.EUR journal_id: account.bank_journal name: Voucher for Axelor narration: Basic Pc diff --git a/addons/account_voucher/test/sales_receipt.yml b/addons/account_voucher/test/sales_receipt.yml index d3fd720ec6d..7ea4f7d1c55 100644 --- a/addons/account_voucher/test/sales_receipt.yml +++ b/addons/account_voucher/test/sales_receipt.yml @@ -5,7 +5,6 @@ account_id: account.a_recv amount: 30000.0 company_id: base.main_company - currency_id: base.EUR journal_id: account.sales_journal line_cr_ids: - account_id: account.a_sale diff --git a/addons/account_voucher/voucher_payment_receipt_view.xml b/addons/account_voucher/voucher_payment_receipt_view.xml index 46720b2732c..4adebed8a1a 100644 --- a/addons/account_voucher/voucher_payment_receipt_view.xml +++ b/addons/account_voucher/voucher_payment_receipt_view.xml @@ -75,13 +75,13 @@
- + - + - - - - - - + + + + + + + @@ -140,14 +141,14 @@ - + - + @@ -188,12 +189,13 @@ - - + + - - + domain="[('type','=','other')]" colspan="4"/> + + + @@ -289,14 +291,14 @@ + on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/> - + @@ -337,12 +339,13 @@ - - + + - - + domain="[('type','=','other')]" colspan="4"/> + + + From 2e758fb463ba35c4820d93337ec577d3cdc451da Mon Sep 17 00:00:00 2001 From: "Amit (OpenERP)" Date: Wed, 23 Nov 2011 11:01:54 +0530 Subject: [PATCH 311/892] [IMP]:improved code bzr revid: apa@tinyerp.com-20111123053154-gsay5gufpz83vkns --- addons/hr_payroll/hr_payroll.py | 12 +++++------- addons/hr_payroll_account/hr_payroll_account.py | 17 ++++++++--------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index 5b74e0b60b6..9363df8257e 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -299,14 +299,12 @@ class hr_payslip(osv.osv): } def _check_dates(self, cr, uid, ids, context=None): - for i in self.read(cr, uid, ids, ['date_from', 'date_to'], context=context): - if i['date_from'] > i['date_to']: - return False - return True + for i in self.read(cr, uid, ids, ['date_from', 'date_to'], context=context): + if i['date_from'] > i['date_to']: + return False + return True - _constraints = [ - (_check_dates, 'Error! Payslip from-date must be lower then contract to-date.', ['date_from', 'date_to']) - ] + _constraints = [(_check_dates, 'Error! Payslip from-date must be lower then contract to-date.', ['date_from', 'date_to'])] def copy(self, cr, uid, id, default=None, context=None): if not default: diff --git a/addons/hr_payroll_account/hr_payroll_account.py b/addons/hr_payroll_account/hr_payroll_account.py index 2ce8bc57e76..23d37ff0e56 100644 --- a/addons/hr_payroll_account/hr_payroll_account.py +++ b/addons/hr_payroll_account/hr_payroll_account.py @@ -34,21 +34,20 @@ class hr_payslip(osv.osv): _inherit = 'hr.payslip' _description = 'Pay Slip' - def _get_journal(self, cr, uid, context=None): - if context is None: - context = {} - journal_obj = self.pool.get('account.journal') - res = journal_obj.search(cr, uid, [('type', '=','sale')]) - return res and res[0] or False - + def _get_journal_id(self, cr, uid, *args): + model_data = self.pool.get('ir.model.data') + res = model_data.search(cr,uid, [('name', '=', 'expenses_journal')]) + if res:return model_data.browse(cr,uid,res[0]).res_id + return False + _columns = { 'period_id': fields.many2one('account.period', 'Force Period',states={'draft': [('readonly', False)]}, readonly=True, domain=[('state','<>','done')], help="Keep empty to use the period of the validation(Payslip) date."), 'journal_id': fields.many2one('account.journal', 'Expense Journal',states={'draft': [('readonly', False)]}, readonly=True, required=True), 'move_id': fields.many2one('account.move', 'Accounting Entry', readonly=True), } - + _defaults = { - 'journal_id': _get_journal, + 'journal_id':_get_journal_id } def copy(self, cr, uid, id, default=None, context=None): From 993778ad2ddee84023bf5e442c3a97f3c42fa012 Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Wed, 23 Nov 2011 11:03:02 +0530 Subject: [PATCH 312/892] [FIX] hr_holidays : cannot approve a leave request lp bug: https://launchpad.net/bugs/893491 fixed bzr revid: mdi@tinyerp.com-20111123053302-snauyvdzawjti414 --- addons/hr_holidays/hr_holidays_view.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/hr_holidays/hr_holidays_view.xml b/addons/hr_holidays/hr_holidays_view.xml index a43378b1c95..45a9fec1758 100644 --- a/addons/hr_holidays/hr_holidays_view.xml +++ b/addons/hr_holidays/hr_holidays_view.xml @@ -286,7 +286,7 @@ hr.holidays form {'search_default_approve':1,"search_default_department_id": department_id} - [('type','=','add')] + [('type','=','remove')] @@ -304,7 +304,6 @@ - From 5636b7f0afc08ff8ae60b408a17cf6726c8cbc05 Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Wed, 23 Nov 2011 11:09:37 +0530 Subject: [PATCH 313/892] [IMP] Cleanup the test case on hr_expense bzr revid: jap@tinyerp.com-20111123053937-z5umq72sncompwf3 --- addons/hr_expense/__openerp__.py | 4 +- .../hr_expense/test/confirm2heldinvoiced.yml | 71 ++++++++++ addons/hr_expense/test/hr_expense_report.yml | 8 -- addons/hr_expense/test/test_hr_expense.yml | 121 ------------------ 4 files changed, 73 insertions(+), 131 deletions(-) create mode 100644 addons/hr_expense/test/confirm2heldinvoiced.yml delete mode 100644 addons/hr_expense/test/hr_expense_report.yml delete mode 100644 addons/hr_expense/test/test_hr_expense.yml diff --git a/addons/hr_expense/__openerp__.py b/addons/hr_expense/__openerp__.py index 4a22f00e076..7d11b0912bc 100644 --- a/addons/hr_expense/__openerp__.py +++ b/addons/hr_expense/__openerp__.py @@ -62,8 +62,8 @@ re-invoice your customer's expenses if your work by project. 'demo_xml': [ 'hr_expense_demo.xml', ], - 'test': ['test/test_hr_expense.yml', - 'test/hr_expense_report.yml', + 'test': [ + 'test/confirm2heldinvoiced.yml', ], 'installable': True, 'active': False, diff --git a/addons/hr_expense/test/confirm2heldinvoiced.yml b/addons/hr_expense/test/confirm2heldinvoiced.yml new file mode 100644 index 00000000000..5574317de0d --- /dev/null +++ b/addons/hr_expense/test/confirm2heldinvoiced.yml @@ -0,0 +1,71 @@ +- + In Order to test process of Employee Expenses. +- + I create this expense. +- + !workflow {model: hr.expense.expense, action: confirm, ref: hr_expense_expense_septemberexpenses0} +- + I change the state of expense. +- + !python {model: hr.expense.expense}: | + self.expense_confirm(cr, uid, [ref('hr_expense_expense_septemberexpenses0')]) +- + I check the the expense is created or not +- + !assert {model: hr.expense.expense, id: hr_expense_expense_septemberexpenses0}: + - state == 'confirm' +- + I accept this expense. +- + !workflow {model: hr.expense.expense, action: validate, ref: hr_expense_expense_septemberexpenses0} +- + I assign home address to employee. +- + !record {model: hr.employee, id: hr.employee1}: + address_home_id: base.res_partner_address_1 + address_id: base.main_address +- + I create the Invoiced for the expense. +- + !python {model: hr.expense.expense}: | + self.invoice(cr, uid, [ref('hr_expense_expense_septemberexpenses0')]) + +- + I check that expense is "Invoiced". +- + !assert {model: hr.expense.expense, id: hr_expense_expense_septemberexpenses0}: + - state == 'invoiced' +- + I check that Invoice is created for the expense. +- + !python {model: hr.expense.expense}: | + exp = self.browse(cr, uid, [ref('hr_expense_expense_septemberexpenses0')])[0] + assert exp.invoice_id, "Invoice should be created" +- + I paid the expense +- + !python {model: hr.expense.expense}: | + self.expense_paid(cr, uid, [ref('hr_expense_expense_septemberexpenses0')]) +- + I check the expense is paid. +- + !assert {model: hr.expense.expense, id: hr_expense_expense_septemberexpenses0}: + - state == 'paid' +- + I cancel the expense +- + !python {model: hr.expense.expense}: | + self.expense_canceled(cr, uid, [ref('hr_expense_expense_septemberexpenses0')]) +- + I check the expense is cancel. +- + !assert {model: hr.expense.expense, id: hr_expense_expense_septemberexpenses0}: + - state == 'cancelled' +- + we will print a PDF report defined on a HR Expense. +- + !python {model: hr.expense.expense}: | + import netsvc, tools, os + (data, format) = netsvc.LocalService('report.hr.expense').create(cr, uid, [ref('hr_expense.hr_expense_expense_septemberexpenses0'),ref('hr_expense.hr_expense_expense_septemberexpenses1')], {}, {}) + if tools.config['test_report_directory']: + file(os.path.join(tools.config['test_report_directory'], 'hr_expense-report.'+format), 'wb+').write(data) \ No newline at end of file diff --git a/addons/hr_expense/test/hr_expense_report.yml b/addons/hr_expense/test/hr_expense_report.yml deleted file mode 100644 index 4c81ceb5976..00000000000 --- a/addons/hr_expense/test/hr_expense_report.yml +++ /dev/null @@ -1,8 +0,0 @@ -- - In order to test the PDF reports defined on a HR Expense, we will print a HR Expense -- - !python {model: hr.expense.expense}: | - import netsvc, tools, os - (data, format) = netsvc.LocalService('report.hr.expense').create(cr, uid, [ref('hr_expense.hr_expense_expense_septemberexpenses0'),ref('hr_expense.hr_expense_expense_septemberexpenses1')], {}, {}) - if tools.config['test_report_directory']: - file(os.path.join(tools.config['test_report_directory'], 'hr_expense-report.'+format), 'wb+').write(data) \ No newline at end of file diff --git a/addons/hr_expense/test/test_hr_expense.yml b/addons/hr_expense/test/test_hr_expense.yml deleted file mode 100644 index bd13529d645..00000000000 --- a/addons/hr_expense/test/test_hr_expense.yml +++ /dev/null @@ -1,121 +0,0 @@ -- - In order to test hr_expenses for OpenERP, I create expenses for employee and manage employee's expenses. -- - I create an unit of measure category "Working Time". -- - !record {model: product.uom.categ, id: product_uom_categ_workingtime0}: - name: Working Time. - -- - I create a new employee. -- - !record {model: hr.employee, id: hr.employee}: - address_home_id: base.res_partner_address_1 - address_id: base.main_address -- - I assign home address to employee. -- - !record {model: hr.employee, id: hr.employee1}: - address_home_id: base.res_partner_address_1 - address_id: base.main_address -- - I create product unit of measure "Hour". -- - !record {model: product.uom, id: product_uom_hour0}: - category_id: 'product_uom_categ_workingtime0' - factor: 8.0 - name: Hour - rounding: 0.01 -- - I Create a product "travel". -- - !record {model: product.product, id: product_product_travel0}: - categ_id: product.product_category_services - cost_method: standard - list_price: 800.0 - mes_type: fixed - name: Travel - procure_method: make_to_stock - standard_price: 700.0 - supply_method: buy - type: product - uom_id: 'product_uom_hour0' - uom_po_id: 'product_uom_hour0' - volume: 0.0 - warranty: 0.0 - weight: 0.0 - weight_net: 0.0 -- - I mark this product for expenses. -- - !python {model: product.product}: | - self.on_change_hr_expense_ok(cr, uid, [ref('product_product_travel0')], True) -- - I create an expense. -- - !record {model: hr.expense.expense, id: hr_expense_expense_september0}: - company_id: base.main_company - date: !eval "'%s-05-05' %(datetime.now().year)" - name: September Expenses - line_ids: - - date_value: !eval "'%s-05-27' %(datetime.now().year)" - name: Travel - product_id: 'product_product_travel0' - sequence: 0.0 - uom_id: product.product_uom_unit - unit_amount: 700.0 - user_id: base.user_root -- - I check that expense is in "Draft" state. -- - !assert {model: hr.expense.expense, id: hr_expense_expense_september0}: - - state == 'draft' -- - I change the employee on expense form. -- - !python {model: hr.expense.expense}: | - res = self.onchange_employee_id(cr, uid, [ref('hr_expense_expense_september0')], ref('hr.employee1'), None) - values = dict([('employee_id', ref('hr.employee1'))] + res['value'].items()) - self.write(cr, uid, [ref('hr_expense_expense_september0')], values, None) -- - Now I change the related product on expense line. -- - !python {model: hr.expense.expense}: | - exp_line_obj = self.pool.get('hr.expense.line') - exp_obj = self.browse(cr, uid, ref('hr_expense_expense_september0'), None) - line_ids = [line.id for line in exp_obj.line_ids] - res = exp_line_obj.onchange_product_id(cr, uid, line_ids, ref('product_product_expense_air'), False, ref('hr.employee1'), None) - values = dict([('product_id', ref('product_product_expense_air'))] + res['value'].items()) - exp_line_obj.write(cr, uid, line_ids, values, None) -- - I confirm this expenses by click on "Confirm" button. -- - !workflow {model: hr.expense.expense, action: confirm, ref: hr_expense_expense_september0} - -- - I check that state is "Waiting Confirmation". -- - !assert {model: hr.expense.expense, id: hr_expense_expense_september0}: - - state == 'confirm' -- - I accept this expense by click on "Accept" button. -- - !workflow {model: hr.expense.expense, action: validate, ref: hr_expense_expense_september0} - -- - I invoiced this expense by click on "Invoice" button. -- - !python {model: hr.expense.expense}: | - self.invoice(cr, uid, [ref('hr_expense_expense_september0')], None) -- - I check that state is "Invoiced". -- - !assert {model: hr.expense.expense, id: hr_expense_expense_september0}: - - state == 'invoiced' -- - I check that Invoice is created for the expense. -- - !python {model: hr.expense.expense}: | - exp = self.browse(cr, uid, [ref('hr_expense_expense_september0')])[0] - assert exp.invoice_id, "Invoice should be created" - From e2c80d7ca8bf0611fb5ea8c27e17f8d6a37dc6b0 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Wed, 23 Nov 2011 11:13:47 +0530 Subject: [PATCH 314/892] [FIX] crm: Click on Ge Assing button Traceback generate , put comments created demo data of crm_lead for onchange event bzr revid: ron@tinyerp.com-20111123054347-0mo8pkly1857beff --- addons/crm/__openerp__.py | 2 +- addons/crm_partner_assign/crm_lead_view.xml | 2 +- addons/crm_partner_assign/partner_geo_assign.py | 8 +++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/addons/crm/__openerp__.py b/addons/crm/__openerp__.py index ba073060456..f7d56ce373b 100644 --- a/addons/crm/__openerp__.py +++ b/addons/crm/__openerp__.py @@ -123,7 +123,7 @@ Creates a dashboard for CRM that includes: 'test/process/merge_opportunity.yml', 'test/process/cancel_lead.yml', 'test/process/segmentation.yml', - 'test/ui/demo_data.yml', + #'test/ui/demo_data.yml', TODO : After installing crm_partner_assign view error 'test/ui/duplicate_lead.yml', 'test/ui/delete_lead.yml' ], diff --git a/addons/crm_partner_assign/crm_lead_view.xml b/addons/crm_partner_assign/crm_lead_view.xml index 2ec3c85353b..7cf47b95939 100644 --- a/addons/crm_partner_assign/crm_lead_view.xml +++ b/addons/crm_partner_assign/crm_lead_view.xml @@ -27,7 +27,7 @@ - + From b1ed5cc77d43a7a338ae054a712eebf2b5ceb478 Mon Sep 17 00:00:00 2001 From: "renatonlima@gmail.com" <> Date: Fri, 25 Nov 2011 17:47:51 -0200 Subject: [PATCH 402/892] brazilian localization cleanup bzr revid: renatonlima@gmail.com-20111125194751-o7rmmgyhl3ua7yaq --- addons/l10n_br/account.py | 9 --------- addons/l10n_br/account_view.xml | 12 ------------ 2 files changed, 21 deletions(-) diff --git a/addons/l10n_br/account.py b/addons/l10n_br/account.py index 92f724a7762..6e38aaa690f 100644 --- a/addons/l10n_br/account.py +++ b/addons/l10n_br/account.py @@ -124,15 +124,6 @@ class account_tax(osv.osv): account_tax() -class account_journal(osv.osv): - _inherit = "account.journal" - - _columns = { - 'internal_sequence': fields.many2one('ir.sequence', 'Internal Sequence'), - } - -account_journal() - class wizard_multi_charts_accounts(osv.osv_memory): _inherit = 'wizard.multi.charts.accounts' diff --git a/addons/l10n_br/account_view.xml b/addons/l10n_br/account_view.xml index da2ab84d4ab..0b038fddd82 100644 --- a/addons/l10n_br/account_view.xml +++ b/addons/l10n_br/account_view.xml @@ -96,18 +96,6 @@ - - l10n_br.journal.form.inherit - account.journal - form - - - - - - - -
From ceeb9e2ced64734fad6a2fa3a0e38c7fff766b05 Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Sat, 26 Nov 2011 05:49:33 +0000 Subject: [PATCH 403/892] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20111126054933-9pgheobruk7944hk --- openerp/addons/base/i18n/cs.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openerp/addons/base/i18n/cs.po b/openerp/addons/base/i18n/cs.po index 7f84778d037..6c7e2d3b8bc 100644 --- a/openerp/addons/base/i18n/cs.po +++ b/openerp/addons/base/i18n/cs.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: openobject-server\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-09-30 21:07+0000\n" +"PO-Revision-Date: 2011-11-25 11:49+0000\n" "Last-Translator: Jiří Hajda \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-04 04:48+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-26 05:49+0000\n" +"X-Generator: Launchpad (build 14381)\n" "X-Poedit-Language: Czech\n" #. module: base @@ -7623,7 +7623,7 @@ msgstr "" #. module: base #: model:res.partner.title,name:base.res_partner_title_madam msgid "Madam" -msgstr "Dáma" +msgstr "Paní" #. module: base #: model:res.country,name:base.ee From 847bddb3e5b0dda0d7496fccba50c5386eb6072b Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Sat, 26 Nov 2011 05:50:25 +0000 Subject: [PATCH 404/892] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20111126055025-zf1bvsdxa5sw7cn4 --- addons/account/i18n/fr.po | 115 +- addons/account_followup/i18n/fr.po | 19 +- addons/association/i18n/cs.po | 50 +- addons/base_contact/i18n/cs.po | 189 ++-- addons/delivery/i18n/cs.po | 195 ++-- addons/event/i18n/cs.po | 8 +- addons/hr_payroll/i18n/cs.po | 1618 ++++++++++++++++++++++++++++ addons/membership/i18n/cs.po | 309 +++--- addons/portal/i18n/cs.po | 165 +-- addons/project_scrum/i18n/fr.po | 12 +- addons/sale_crm/i18n/fr.po | 11 +- 11 files changed, 2190 insertions(+), 501 deletions(-) create mode 100644 addons/hr_payroll/i18n/cs.po diff --git a/addons/account/i18n/fr.po b/addons/account/i18n/fr.po index 18f558872bb..62cbf363e3a 100644 --- a/addons/account/i18n/fr.po +++ b/addons/account/i18n/fr.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-11-07 12:53+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2011-11-25 15:24+0000\n" +"Last-Translator: Numérigraphe \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-08 05:42+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-26 05:50+0000\n" +"X-Generator: Launchpad (build 14381)\n" #. module: account #: code:addons/account/account.py:1291 @@ -584,8 +584,6 @@ msgstr "" #: field:account.move.bank.reconcile,journal_id:0 #: view:account.move.line:0 #: field:account.move.line,journal_id:0 -#: report:account.third_party_ledger:0 -#: report:account.third_party_ledger_other:0 #: code:addons/account/account_move_line.py:983 #: view:analytic.entries.report:0 #: field:analytic.entries.report,journal_id:0 @@ -968,7 +966,6 @@ msgstr "Créer des périodes trimestrielles" #. module: account #: report:account.overdue:0 -#: report:account.aged_trial_balance:0 msgid "Due" msgstr "Due" @@ -1063,10 +1060,6 @@ msgstr "Modèle d'écritures" #: field:account.journal,code:0 #: report:account.partner.balance:0 #: field:account.period,code:0 -#: report:account.balancesheet.horizontal:0 -#: report:account.balancesheet:0 -#: report:pl.account.horizontal:0 -#: report:pl.account:0 msgid "Code" msgstr "Code" @@ -1396,7 +1389,6 @@ msgstr "Analyse des écritures comptables" #. module: account #: model:ir.actions.act_window,name:account.action_partner_all #: model:ir.ui.menu,name:account.next_id_22 -#: report:account.aged_trial_balance:0 msgid "Partners" msgstr "Partenaires" @@ -2196,7 +2188,7 @@ msgstr "" #. module: account #: view:account.chart.template:0 -msgid "Search Chart of Accounts Templates" +msgid "Search Chart of Account Templates" msgstr "Chercher un modèle de plan comptable" #. module: account @@ -2305,11 +2297,6 @@ msgstr "Modèle de produit" #: report:account.third_party_ledger_other:0 #: report:account.vat.declaration:0 #: model:ir.model,name:account.model_account_fiscalyear -#: report:account.balancesheet.horizontal:0 -#: report:account.balancesheet:0 -#: report:pl.account.horizontal:0 -#: report:pl.account:0 -#: report:account.aged_trial_balance:0 msgid "Fiscal Year" msgstr "Exercice comptable" @@ -3187,9 +3174,7 @@ msgstr "Laisser vide pour utiliser le compte de dépense" #: field:account.common.report,journal_ids:0 #: report:account.general.journal:0 #: field:account.general.journal,journal_ids:0 -#: report:account.general.ledger_landscape:0 #: view:account.journal.period:0 -#: report:account.partner.balance:0 #: field:account.partner.balance,journal_ids:0 #: field:account.partner.ledger,journal_ids:0 #: field:account.pl.report,journal_ids:0 @@ -3550,7 +3535,6 @@ msgstr "" #: field:account.entries.report,date:0 #: selection:account.general.journal,filter:0 #: report:account.general.ledger:0 -#: report:account.general.ledger_landscape:0 #: field:account.invoice.report,date:0 #: report:account.journal.period.print:0 #: view:account.move:0 @@ -4852,7 +4836,6 @@ msgstr "Balance Analytique -" #: report:account.general.ledger_landscape:0 #: report:pl.account:0 #: report:pl.account.horizontal:0 -#: report:account.aged_trial_balance:0 msgid "Target Moves" msgstr "Mouvements Cibles" @@ -5521,7 +5504,7 @@ msgstr "Ajustement" #. module: account #: field:res.partner,debit:0 msgid "Total Payable" -msgstr "Montant à payer" +msgstr "Total à payer" #. module: account #: model:ir.actions.act_window,name:account.action_account_analytic_account_line_extended_form @@ -5687,16 +5670,6 @@ msgstr "La nouvelle devise n'est pas correctement paramétrée !" #: field:account.print.journal,filter:0 #: field:account.report.general.ledger,filter:0 #: field:account.vat.declaration,filter:0 -#: field:account.account.balance,filter:0 -#: field:account.central.journal,filter:0 -#: field:account.general.journal,filter:0 -#: field:account.partner.balance,filter:0 -#: field:account.balancesheet,filter:0 -#: field:account.balancesheet.horizontal,filter:0 -#: field:account.general.ledger,filter:0 -#: field:account.general.ledger_landscape,filter:0 -#: field:pl.account,filter:0 -#: field:pl.account.horizontal,filter:0 msgid "Filter by" msgstr "Filtrer par" @@ -6569,7 +6542,6 @@ msgstr " valorisation : pourcentage" #: code:addons/account/invoice.py:1008 #: code:addons/account/wizard/account_invoice_refund.py:100 #: code:addons/account/wizard/account_invoice_refund.py:102 -#: code:addons/account/wizard/account_open_closed_fiscalyear.py:40 #: code:addons/account/wizard/account_use_model.py:44 #, python-format msgid "Error !" @@ -6712,7 +6684,6 @@ msgstr "Position fiscale des taxes" #: view:account.report.general.ledger:0 #: model:ir.actions.act_window,name:account.action_account_general_ledger_menu #: model:ir.actions.report.xml,name:account.account_general_ledger -#: model:ir.actions.report.xml,name:account.account_general_ledger_landscape #: model:ir.ui.menu,name:account.menu_general_ledger msgid "General Ledger" msgstr "Grand livre" @@ -6748,8 +6719,8 @@ msgid "" "Account Voucher module includes all the basic requirements of Voucher " "Entries for Bank, Cash, Sales, Purchase, Expenses, Contra, etc... " msgstr "" -"Le module Chèques comprend toutes les fonctionnalités de base pour la " -"Banque, la trésorerie, les ventes, les achats, les frais, etc. " +"Le module \"Justificatifs\" comprend toutes les fonctionnalités de base pour " +"la Banque, la trésorerie, les ventes, les achats, les frais, etc. " #. module: account #: view:account.chart.template:0 @@ -6768,8 +6739,6 @@ msgstr "Plan de taxes comptables" #: report:account.general.journal:0 #: report:account.invoice:0 #: report:account.partner.balance:0 -#: report:pl.account.horizontal:0 -#: report:pl.account:0 msgid "Total:" msgstr "Total :" @@ -6979,7 +6948,7 @@ msgstr "Lignes analytiques" #: model:ir.actions.act_window,help:account.action_account_analytic_account_tree2 msgid "" "The normal chart of accounts has a structure defined by the legal " -"requirement of the country. The analytic chart of accounts structure should " +"requirement of the country. The analytic chart of account structure should " "reflect your own business needs in term of costs/revenues reporting. They " "are usually structured by contracts, projects, products or departements. " "Most of the OpenERP operations (invoices, timesheets, expenses, etc) " @@ -7384,7 +7353,6 @@ msgstr "Information optionnelle" #. module: account #: view:account.analytic.line:0 -#: field:account.bank.statement,user_id:0 #: view:account.journal:0 #: field:account.journal,user_id:0 #: view:analytic.entries.report:0 @@ -7981,7 +7949,6 @@ msgstr "Gestion de la comptabilité et des finances" #: view:account.entries.report:0 #: field:account.entries.report,period_id:0 #: view:account.fiscalyear:0 -#: report:account.general.ledger_landscape:0 #: view:account.invoice:0 #: view:account.invoice.report:0 #: field:account.journal.period,period_id:0 @@ -8102,21 +8069,6 @@ msgstr "Tél. :" msgid "Company Currency" msgstr "Devise société" -#. module: account -#: report:account.account.balance:0 -#: report:account.partner.balance:0 -#: report:account.third_party_ledger:0 -#: report:account.third_party_ledger_other:0 -#: report:account.balancesheet:0 -#: report:account.balancesheet.horizontal:0 -#: report:account.general.ledger:0 -#: report:account.general.ledger_landscape:0 -#: report:pl.account:0 -#: report:pl.account.horizontal:0 -#: report:account.aged_trial_balance:0 -msgid "Chart of Accounts" -msgstr "Plan comptable" - #. module: account #: model:process.node,name:account.process_node_paymententries0 #: model:process.transition,name:account.process_transition_reconcilepaid0 @@ -8233,7 +8185,6 @@ msgstr "Journal d'avoirs" #: report:account.account.balance:0 #: report:account.central.journal:0 #: report:account.general.journal:0 -#: report:account.general.ledger_landscape:0 #: report:account.partner.balance:0 #: report:account.balancesheet:0 #: report:account.balancesheet.horizontal:0 @@ -8298,7 +8249,7 @@ msgstr "" #. module: account #: field:account.invoice.line,price_subtotal:0 msgid "Subtotal" -msgstr "Sous total" +msgstr "Sous-total" #. module: account #: view:account.vat.declaration:0 @@ -8319,12 +8270,6 @@ msgstr "Modèle de pièce comptable" msgid "Due Date" msgstr "Date d'échéance" -#. module: account -#: view:account.print.invoice:0 -#: field:account.print.invoice,date_due:0 -msgid "Due Date" -msgstr "Echéance" - #. module: account #: model:ir.ui.menu,name:account.menu_account_supplier #: model:ir.ui.menu,name:account.menu_finance_payables @@ -8461,8 +8406,6 @@ msgid "" "The amount of the voucher must be the same amount as the one on the " "statement line" msgstr "" -"Le montant du justificatif doit être identique à celui de la ligne le " -"concernant" #. module: account #: code:addons/account/account_move_line.py:1131 @@ -8838,7 +8781,6 @@ msgstr "Impossible de trouver le code parent pour le compte modèle !" #. module: account #: field:account.aged.trial.balance,direction_selection:0 -#: report:account.aged_trial_balance:0 msgid "Analysis Direction" msgstr "Direction d'Analyse" @@ -8969,10 +8911,6 @@ msgstr "Laisser vide pour utiliser le compte de revenu" #: report:account.third_party_ledger_other:0 #: field:report.account.receivable,balance:0 #: field:report.aged.receivable,balance:0 -#: report:account.balancesheet.horizontal:0 -#: report:account.balancesheet:0 -#: report:pl.account.horizontal:0 -#: report:pl.account:0 msgid "Balance" msgstr "Balance" @@ -9024,7 +8962,7 @@ msgstr "" #: selection:account.account.template,type:0 #: selection:account.entries.report,type:0 msgid "Payable" -msgstr "Débiteurs" +msgstr "Payable" #. module: account #: view:report.account.sales:0 @@ -9123,7 +9061,6 @@ msgstr "Saisie manuelle" #. module: account #: report:account.general.ledger:0 -#: report:account.general.ledger_landscape:0 #: report:account.journal.period.print:0 #: field:account.move.line,move_id:0 #: field:analytic.entries.report,move_id:0 @@ -9203,7 +9140,7 @@ msgstr "Juillet" #. module: account #: view:account.account:0 -msgid "Chart of Accounts" +msgid "Chart of accounts" msgstr "Plan comptable" #. module: account @@ -9250,7 +9187,7 @@ msgstr "Période de fin" #: field:account.print.journal,chart_account_id:0 #: field:account.report.general.ledger,chart_account_id:0 #: field:account.vat.declaration,chart_account_id:0 -msgid "Chart of Accounts" +msgid "Chart of account" msgstr "Plan comptable" #. module: account @@ -9298,7 +9235,6 @@ msgstr "Écriture d'abonnement" #: report:account.general.journal:0 #: field:account.general.journal,date_from:0 #: report:account.general.ledger:0 -#: report:account.general.ledger_landscape:0 #: field:account.installer,date_start:0 #: report:account.journal.period.print:0 #: report:account.partner.balance:0 @@ -9311,7 +9247,6 @@ msgstr "Écriture d'abonnement" #: report:account.third_party_ledger:0 #: report:account.third_party_ledger_other:0 #: field:account.vat.declaration,date_from:0 -#: report:account.aged_trial_balance:0 msgid "Start Date" msgstr "Date de début" @@ -9508,7 +9443,7 @@ msgstr "" #: field:account.invoice,number:0 #: field:account.move,name:0 msgid "Number" -msgstr "Nombre" +msgstr "Numéro" #. module: account #: report:account.analytic.account.journal:0 @@ -9736,7 +9671,6 @@ msgstr "Validé" #: report:account.general.journal:0 #: field:account.general.journal,date_to:0 #: report:account.general.ledger:0 -#: report:account.general.ledger_landscape:0 #: field:account.installer,date_stop:0 #: report:account.journal.period.print:0 #: report:account.partner.balance:0 @@ -9824,7 +9758,6 @@ msgstr "États" #: field:report.account.sales,amount_total:0 #: field:report.account_type.sales,amount_total:0 #: field:report.invoice.created,amount_total:0 -#: report:account.aged_trial_balance:0 msgid "Total" msgstr "Total" @@ -10259,7 +10192,7 @@ msgstr "La date de la pièce comptable n'est pas dans la période définie." #. module: account #: field:account.subscription,period_total:0 msgid "Number of Periods" -msgstr "Nombre de Périodes" +msgstr "Nombre de périodes" #. module: account #: report:account.general.journal:0 @@ -10355,7 +10288,6 @@ msgstr "account.addtmpl.wizard" #: field:account.partner.ledger,result_selection:0 #: report:account.third_party_ledger:0 #: report:account.third_party_ledger_other:0 -#: report:account.aged_trial_balance:0 msgid "Partner's" msgstr "Du partenaire" @@ -10507,18 +10439,6 @@ msgstr "Actif" msgid "Liabilities" msgstr "Passif" -#. module: account -#: report:pl.account:0 -#: report:pl.account.horizontal:0 -msgid "Expenses" -msgstr "Charges" - -#. module: account -#: report:pl.account:0 -#: report:pl.account.horizontal:0 -msgid "Income" -msgstr "Produits" - #~ msgid "Aged Trial Balance" #~ msgstr "Balance Agée" @@ -10757,6 +10677,9 @@ msgstr "Produits" #~ msgid "Close states" #~ msgstr "Clôturer l'état" +#~ msgid "Income" +#~ msgstr "Produits" + #~ msgid "Print General Journal" #~ msgstr "Imprimer le journal général" @@ -11822,7 +11745,7 @@ msgstr "Produits" #~ msgid "Balance Sheet (Assets Accounts)" #~ msgstr "Bilan (comptes d'actif)" -#~ msgid "Chart of Accounts" +#~ msgid "Chart of Account" #~ msgstr "Plan comptable" #~ msgid "Balance:" diff --git a/addons/account_followup/i18n/fr.po b/addons/account_followup/i18n/fr.po index 8fd9e42dc5c..06fb9e56e6b 100644 --- a/addons/account_followup/i18n/fr.po +++ b/addons/account_followup/i18n/fr.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-11-11 15:22+0000\n" -"Last-Translator: Fabien (Open ERP) \n" +"PO-Revision-Date: 2011-11-25 14:47+0000\n" +"Last-Translator: Numérigraphe \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-12 04:52+0000\n" -"X-Generator: Launchpad (build 14277)\n" +"X-Launchpad-Export-Date: 2011-11-26 05:49+0000\n" +"X-Generator: Launchpad (build 14381)\n" #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:295 @@ -89,6 +89,11 @@ msgid "" "\n" "%s" msgstr "" +"\n" +"\n" +"Courriel envoyé vers les Partenaires suivants :\n" +"\n" +"%s" #. module: account_followup #: view:account_followup.followup:0 @@ -538,6 +543,9 @@ msgid "" "\n" "%s" msgstr "" +"Tous les courriels ont été envoyés correctement vers les Partenaires :\n" +"\n" +"%s" #. module: account_followup #: constraint:res.company:0 @@ -728,6 +736,9 @@ msgid "" "\n" "%s" msgstr "" +"Courriel non envoyé vers les Partenaires suivants (courriel indisponible) !\n" +"\n" +"%s" #. module: account_followup #: view:account.followup.print:0 diff --git a/addons/association/i18n/cs.po b/addons/association/i18n/cs.po index 5690d14c17e..08431ed8d93 100644 --- a/addons/association/i18n/cs.po +++ b/addons/association/i18n/cs.po @@ -4,17 +4,18 @@ # msgid "" msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" +"Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2010-11-12 11:51+0000\n" -"Last-Translator: Kuvaly [LCT] \n" -"Language-Team: \n" +"PO-Revision-Date: 2011-11-25 12:34+0000\n" +"Last-Translator: Jiří Hajda \n" +"Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:52+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-26 05:50+0000\n" +"X-Generator: Launchpad (build 14381)\n" +"X-Poedit-Language: Czech\n" #. module: association #: field:profile.association.config.install_modules_wizard,wiki:0 @@ -24,22 +25,22 @@ msgstr "Wiki" #. module: association #: view:profile.association.config.install_modules_wizard:0 msgid "Event Management" -msgstr "" +msgstr "Správa událostí" #. module: association #: field:profile.association.config.install_modules_wizard,project_gtd:0 msgid "Getting Things Done" -msgstr "" +msgstr "Mít vše hotovo (GTD)" #. module: association #: model:ir.module.module,description:association.module_meta_information msgid "This module is to create Profile for Associates" -msgstr "" +msgstr "Tento modul je k vytváření profilů asociací." #. module: association #: field:profile.association.config.install_modules_wizard,progress:0 msgid "Configuration Progress" -msgstr "" +msgstr "Proces nastavení" #. module: association #: view:profile.association.config.install_modules_wizard:0 @@ -47,21 +48,22 @@ msgid "" "Here are specific applications related to the Association Profile you " "selected." msgstr "" +"Zde jsou specifické aplikace vztažené k vámi vybraným profilům asociací." #. module: association #: view:profile.association.config.install_modules_wizard:0 msgid "title" -msgstr "" +msgstr "titulek" #. module: association #: help:profile.association.config.install_modules_wizard,event_project:0 msgid "Helps you to manage and organize your events." -msgstr "" +msgstr "Pomůže vám spravovat a organizovat vaše události." #. module: association #: field:profile.association.config.install_modules_wizard,config_logo:0 msgid "Image" -msgstr "" +msgstr "Obrázek" #. module: association #: help:profile.association.config.install_modules_wizard,hr_expense:0 @@ -69,6 +71,8 @@ msgid "" "Tracks and manages employee expenses, and can automatically re-invoice " "clients if the expenses are project-related." msgstr "" +"Sleduje a spravuje útraty zaměstnanců a může automaticky znovu fakturovat " +"klientům, pokud útraty jsou vztažené k projektu." #. module: association #: help:profile.association.config.install_modules_wizard,project_gtd:0 @@ -76,27 +80,29 @@ msgid "" "GTD is a methodology to efficiently organise yourself and your tasks. This " "module fully integrates GTD principle with OpenERP's project management." msgstr "" +"GTD je metodologie k efektivní organizaci váš a vašich úkolů. Tento modul " +"plně integruje principy GTD se správou projektů OpenERP." #. module: association #: view:profile.association.config.install_modules_wizard:0 msgid "Resources Management" -msgstr "" +msgstr "Správa zdrojů" #. module: association #: model:ir.module.module,shortdesc:association.module_meta_information msgid "Association profile" -msgstr "" +msgstr "Profil asociací" #. module: association #: field:profile.association.config.install_modules_wizard,hr_expense:0 msgid "Expenses Tracking" -msgstr "" +msgstr "Sledování útrat" #. module: association #: model:ir.actions.act_window,name:association.action_config_install_module #: view:profile.association.config.install_modules_wizard:0 msgid "Association Application Configuration" -msgstr "" +msgstr "Nastavení aplikace asociací" #. module: association #: help:profile.association.config.install_modules_wizard,wiki:0 @@ -104,6 +110,8 @@ msgid "" "Lets you create wiki pages and page groups in order to keep track of " "business knowledge and share it with and between your employees." msgstr "" +"Umožní vám vytvářet wiki stránky a skupiny stránek pro udržení přehledu o " +"obchodních znalostích a sdílet je s a mezi vašimi zaměstnanci." #. module: association #: help:profile.association.config.install_modules_wizard,project:0 @@ -111,16 +119,18 @@ msgid "" "Helps you manage your projects and tasks by tracking them, generating " "plannings, etc..." msgstr "" +"Pomůže vám spravovat vaše projekty a úkoly pomocí jejich sledování, " +"generování plánování, atd..." #. module: association #: model:ir.model,name:association.model_profile_association_config_install_modules_wizard msgid "profile.association.config.install_modules_wizard" -msgstr "" +msgstr "profile.association.config.install_modules_wizard" #. module: association #: field:profile.association.config.install_modules_wizard,event_project:0 msgid "Events" -msgstr "" +msgstr "Události" #. module: association #: view:profile.association.config.install_modules_wizard:0 @@ -131,4 +141,4 @@ msgstr "Správa projektů" #. module: association #: view:profile.association.config.install_modules_wizard:0 msgid "Configure" -msgstr "" +msgstr "Nastavit" diff --git a/addons/base_contact/i18n/cs.po b/addons/base_contact/i18n/cs.po index c93c7f7f7ba..2e4b8e18e42 100644 --- a/addons/base_contact/i18n/cs.po +++ b/addons/base_contact/i18n/cs.po @@ -4,17 +4,18 @@ # msgid "" msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" +"Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2010-08-03 00:58+0000\n" -"Last-Translator: Mantavya Gajjar (Open ERP) \n" -"Language-Team: \n" +"PO-Revision-Date: 2011-11-25 12:34+0000\n" +"Last-Translator: Jiří Hajda \n" +"Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:04+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-26 05:49+0000\n" +"X-Generator: Launchpad (build 14381)\n" +"X-Poedit-Language: Czech\n" #. module: base_contact #: field:res.partner.contact,title:0 @@ -24,7 +25,7 @@ msgstr "Název" #. module: base_contact #: view:res.partner.address:0 msgid "# of Contacts" -msgstr "" +msgstr "# z kontaktů" #. module: base_contact #: field:res.partner.job,fax:0 @@ -34,27 +35,27 @@ msgstr "Fax" #. module: base_contact #: view:base.contact.installer:0 msgid "title" -msgstr "" +msgstr "nadpis" #. module: base_contact #: help:res.partner.job,date_start:0 msgid "Start date of job(Joining Date)" -msgstr "" +msgstr "Datum zahájení práce (datum připojení)" #. module: base_contact #: view:base.contact.installer:0 msgid "Select the Option for Addresses Migration" -msgstr "" +msgstr "Vyberte volbu pro přesun adres" #. module: base_contact #: help:res.partner.job,function:0 msgid "Function of this contact with this partner" -msgstr "" +msgstr "Funkce tohoto kontaktu s tímto partnerem" #. module: base_contact #: help:res.partner.job,state:0 msgid "Status of Address" -msgstr "" +msgstr "Stav adresy" #. module: base_contact #: help:res.partner.job,name:0 @@ -62,64 +63,66 @@ msgid "" "You may enter Address first,Partner will be linked " "automatically if any." msgstr "" +"Můžete zadat nejdříve adresu. Pokud je nějaký partner, " +"bude napojen automaticky." #. module: base_contact #: help:res.partner.job,fax:0 msgid "Job FAX no." -msgstr "" +msgstr "Číslo FAXu do práce" #. module: base_contact #: field:res.partner.contact,mobile:0 msgid "Mobile" -msgstr "" +msgstr "Mobil" #. module: base_contact #: view:res.partner.contact:0 #: field:res.partner.contact,comment:0 msgid "Notes" -msgstr "" +msgstr "Poznámky" #. module: base_contact #: model:process.node,note:base_contact.process_node_contacts0 msgid "People you work with." -msgstr "" +msgstr "Lidé, s kterými pracujete." #. module: base_contact #: model:process.transition,note:base_contact.process_transition_functiontoaddress0 msgid "Define functions and address." -msgstr "" +msgstr "Určit funkce a adresu." #. module: base_contact #: help:res.partner.job,date_stop:0 msgid "Last date of job" -msgstr "" +msgstr "Poslední datum práce" #. module: base_contact #: view:base.contact.installer:0 #: field:base.contact.installer,migrate:0 msgid "Migrate" -msgstr "" +msgstr "Přesunout" #. module: base_contact #: view:res.partner.contact:0 #: field:res.partner.job,name:0 msgid "Partner" -msgstr "" +msgstr "Partner" #. module: base_contact #: model:process.node,note:base_contact.process_node_function0 msgid "Jobs at a same partner address." -msgstr "" +msgstr "Pracovní pozice u stejné adresy partnera." #. module: base_contact #: model:process.node,name:base_contact.process_node_partners0 msgid "Partners" -msgstr "" +msgstr "Partneři" #. module: base_contact #: field:res.partner.job,state:0 msgid "State" -msgstr "" +msgstr "Stav" #. module: base_contact #: help:res.partner.contact,active:0 @@ -127,6 +130,8 @@ msgid "" "If the active field is set to False, it will allow you to " "hide the partner contact without removing it." msgstr "" +"Pokud je aktivní pole nastaveno na Nepravda, umožní vám to " +"skrýt kontakt partnera bez jeho odstranění." #. module: base_contact #: model:ir.module.module,description:base_contact.module_meta_information @@ -151,22 +156,40 @@ msgid "" "an other object.\n" " " msgstr "" +"\n" +" Tento modul umožňuje úplně spravovat vaše kontakty.\n" +"\n" +" Nechá vás určit\n" +" *kontakty nevztažené k partnerovi,\n" +" *kontakty pracující na několika adresách (případně i pro různé " +"partnery),\n" +" *kontakty s možnými různými funkcemi pro každou jeho pracovní " +"adresu\n" +"\n" +" Také přidává nové položky nabídky umístěné v\n" +" Partneři \\ Kontakty\n" +" Partneři \\ Funkce\n" +"\n" +" Berte na vědomí, že tento modul převádí existující adresy na \"adresy + " +"kontakty\". To znamená, že některé pole adres budou chybět (jako jméno " +"kontaktu), protože ty jsou definovány v jiném objektu.\n" +" " #. module: base_contact #: model:ir.module.module,shortdesc:base_contact.module_meta_information #: model:process.process,name:base_contact.process_process_basecontactprocess0 msgid "Base Contact" -msgstr "" +msgstr "Základní kontakt" #. module: base_contact #: field:res.partner.job,date_stop:0 msgid "Date Stop" -msgstr "" +msgstr "Datum zastavení" #. module: base_contact #: model:ir.actions.act_window,name:base_contact.action_res_partner_job msgid "Contact's Jobs" -msgstr "" +msgstr "Pozice kontaktu" #. module: base_contact #: view:res.partner:0 @@ -179,95 +202,97 @@ msgid "" "Order of importance of this job title in the list of job " "title of the linked partner" msgstr "" +"Pořadí důležitosti této pracovní pozice v seznamu titulů " +"pozic napojeného partnera" #. module: base_contact #: field:res.partner.job,extension:0 msgid "Extension" -msgstr "" +msgstr "Rozšíření" #. module: base_contact #: help:res.partner.job,extension:0 msgid "Internal/External extension phone number" -msgstr "" +msgstr "Vnitřní/vnější telefoní číslo klapky" #. module: base_contact #: help:res.partner.job,phone:0 msgid "Job Phone no." -msgstr "" +msgstr "Telefoní číslo do práce." #. module: base_contact #: view:res.partner.contact:0 #: field:res.partner.contact,job_ids:0 msgid "Functions and Addresses" -msgstr "" +msgstr "Funkce a adresy" #. module: base_contact #: model:ir.model,name:base_contact.model_res_partner_contact #: field:res.partner.job,contact_id:0 msgid "Contact" -msgstr "" +msgstr "Kontakt" #. module: base_contact #: help:res.partner.job,email:0 msgid "Job E-Mail" -msgstr "" +msgstr "Pracovní E-Mail" #. module: base_contact #: field:res.partner.job,sequence_partner:0 msgid "Partner Seq." -msgstr "" +msgstr "Poř. parnera" #. module: base_contact #: model:process.transition,name:base_contact.process_transition_functiontoaddress0 msgid "Function to address" -msgstr "" +msgstr "Funkce na adresu" #. module: base_contact #: field:base.contact.installer,progress:0 msgid "Configuration Progress" -msgstr "" +msgstr "Průběh nastavení" #. module: base_contact #: field:res.partner.contact,name:0 msgid "Last Name" -msgstr "" +msgstr "Příjmení" #. module: base_contact #: view:res.partner:0 #: view:res.partner.contact:0 msgid "Communication" -msgstr "" +msgstr "Komunikace" #. module: base_contact #: field:base.contact.installer,config_logo:0 #: field:res.partner.contact,photo:0 msgid "Image" -msgstr "" +msgstr "Obrázek" #. module: base_contact #: selection:res.partner.job,state:0 msgid "Past" -msgstr "" +msgstr "Minulý" #. module: base_contact #: model:ir.model,name:base_contact.model_res_partner_address msgid "Partner Addresses" -msgstr "" +msgstr "Adresy partnerů" #. module: base_contact #: view:base.contact.installer:0 msgid "Address's Migration to Contacts" -msgstr "" +msgstr "Stěhování adresy na kontakty" #. module: base_contact #: field:res.partner.job,sequence_contact:0 msgid "Contact Seq." -msgstr "" +msgstr "Poř. kontaktu" #. module: base_contact #: view:res.partner.address:0 msgid "Search Contact" -msgstr "" +msgstr "Hledat kontakt" #. module: base_contact #: model:ir.actions.act_window,name:base_contact.action_partner_contact_form @@ -277,7 +302,7 @@ msgstr "" #: view:res.partner:0 #: field:res.partner.address,job_ids:0 msgid "Contacts" -msgstr "Kotakty" +msgstr "Kontakty" #. module: base_contact #: view:base.contact.installer:0 @@ -285,52 +310,54 @@ msgid "" "Due to changes in Address and Partner's relation, some of the details from " "address are needed to be migrated into contact information." msgstr "" +"Kvůli změnám v adrese a vztahu partnera, některé podrobnosti adresy jsou " +"potřebné, aby byly přesunuty do informací účtu." #. module: base_contact #: model:process.node,note:base_contact.process_node_addresses0 msgid "Working and private addresses." -msgstr "" +msgstr "Pracovní a soukromé adresy." #. module: base_contact #: help:res.partner.job,address_id:0 msgid "Address which is linked to the Partner" -msgstr "" +msgstr "Adresa, která je napojena na partnera" #. module: base_contact #: field:res.partner.job,function:0 msgid "Partner Function" -msgstr "" +msgstr "Funkce partnera" #. module: base_contact #: help:res.partner.job,other:0 msgid "Additional phone field" -msgstr "" +msgstr "Doplňující pole telefonu" #. module: base_contact #: field:res.partner.contact,website:0 msgid "Website" -msgstr "" +msgstr "Webová stránka" #. module: base_contact #: view:base.contact.installer:0 msgid "Otherwise these details will not be visible from address/contact." -msgstr "" +msgstr "Jinak tyto podrobnosti nebudou viditelné z adresy/kontaktu." #. module: base_contact #: view:base.contact.installer:0 msgid "Configure" -msgstr "" +msgstr "Nastavit" #. module: base_contact #: field:res.partner.contact,email:0 #: field:res.partner.job,email:0 msgid "E-Mail" -msgstr "" +msgstr "E-mail" #. module: base_contact #: model:ir.model,name:base_contact.model_base_contact_installer msgid "base.contact.installer" -msgstr "" +msgstr "base.contact.installer" #. module: base_contact #: view:res.partner.job:0 @@ -345,27 +372,27 @@ msgstr "Telefon" #. module: base_contact #: view:base.contact.installer:0 msgid "Do you want to migrate your Address data in Contact Data?" -msgstr "" +msgstr "Chcete stěhovat vaše data adresy v datech kontaktu?" #. module: base_contact #: field:res.partner.contact,active:0 msgid "Active" -msgstr "" +msgstr "Aktivní" #. module: base_contact #: field:res.partner.contact,function:0 msgid "Main Function" -msgstr "" +msgstr "Hlavní funkce" #. module: base_contact #: model:process.transition,note:base_contact.process_transition_partnertoaddress0 msgid "Define partners and their addresses." -msgstr "" +msgstr "Určuje partnery a jejich adresy." #. module: base_contact #: view:res.partner.contact:0 msgid "Seq." -msgstr "" +msgstr "Poř." #. module: base_contact #: field:res.partner.contact,lang_id:0 @@ -375,37 +402,37 @@ msgstr "Jazyk" #. module: base_contact #: view:res.partner.contact:0 msgid "Extra Information" -msgstr "" +msgstr "Speciální informace" #. module: base_contact #: model:process.node,note:base_contact.process_node_partners0 msgid "Companies you work with." -msgstr "" +msgstr "Společnosti, se kterými pracujete." #. module: base_contact #: view:res.partner.contact:0 msgid "Partner Contact" -msgstr "" +msgstr "Kontakt partnera" #. module: base_contact #: view:res.partner.contact:0 msgid "General" -msgstr "" +msgstr "Obecný" #. module: base_contact #: view:res.partner.contact:0 msgid "Photo" -msgstr "" +msgstr "Fotka" #. module: base_contact #: field:res.partner.contact,birthdate:0 msgid "Birth Date" -msgstr "" +msgstr "Datum narození" #. module: base_contact #: help:base.contact.installer,migrate:0 msgid "If you select this, all addresses will be migrated." -msgstr "" +msgstr "Pokud toto vyberete, všechny adresy budou přesunuty." #. module: base_contact #: selection:res.partner.job,state:0 @@ -420,12 +447,12 @@ msgstr "Křestní jméno" #. module: base_contact #: model:ir.model,name:base_contact.model_res_partner_job msgid "Contact Partner Function" -msgstr "" +msgstr "Kontakt funkce partnera" #. module: base_contact #: field:res.partner.job,other:0 msgid "Other" -msgstr "" +msgstr "Jiné" #. module: base_contact #: model:process.node,name:base_contact.process_node_function0 @@ -436,17 +463,17 @@ msgstr "Funkce" #: field:res.partner.address,job_id:0 #: field:res.partner.contact,job_id:0 msgid "Main Job" -msgstr "" +msgstr "Hlavní práce" #. module: base_contact #: model:process.transition,note:base_contact.process_transition_contacttofunction0 msgid "Defines contacts and functions." -msgstr "" +msgstr "Určuje kontakty a funkce." #. module: base_contact #: model:process.transition,name:base_contact.process_transition_contacttofunction0 msgid "Contact to function" -msgstr "" +msgstr "Kontakt na funkci" #. module: base_contact #: view:res.partner:0 @@ -457,53 +484,53 @@ msgstr "Adresa" #. module: base_contact #: field:res.partner.contact,country_id:0 msgid "Nationality" -msgstr "" +msgstr "Národnost" #. module: base_contact #: model:ir.actions.act_window,name:base_contact.act_res_partner_jobs msgid "Open Jobs" -msgstr "" +msgstr "Otevřené pozice" #. module: base_contact #: field:base.contact.installer,name:0 msgid "Name" -msgstr "" +msgstr "Jméno" #. module: base_contact #: view:base.contact.installer:0 msgid "You can migrate Partner's current addresses to the contact." -msgstr "" +msgstr "Můžete stěhovat partnerovu aktuální adresu do kontaktu." #. module: base_contact #: field:res.partner.contact,partner_id:0 msgid "Main Employer" -msgstr "" +msgstr "Hlavní zaměstnavatel" #. module: base_contact #: model:ir.actions.act_window,name:base_contact.action_base_contact_installer msgid "Address Migration" -msgstr "" +msgstr "Stěhování adresy" #. module: base_contact #: view:res.partner:0 msgid "Postal Address" -msgstr "" +msgstr "Poštovní adresa" #. module: base_contact #: model:process.node,name:base_contact.process_node_addresses0 #: view:res.partner:0 msgid "Addresses" -msgstr "" +msgstr "Adresy" #. module: base_contact #: model:process.transition,name:base_contact.process_transition_partnertoaddress0 msgid "Partner to address" -msgstr "" +msgstr "Partner na adresu" #. module: base_contact #: field:res.partner.job,date_start:0 msgid "Date Start" -msgstr "" +msgstr "Počáteční datum" #. module: base_contact #: help:res.partner.job,sequence_contact:0 @@ -511,6 +538,8 @@ msgid "" "Order of importance of this address in the list of " "addresses of the linked contact" msgstr "" +"Pořadí podle důležitosti této adresy v seznamu adres napojeného " +"kontaktu" #~ msgid "Invalid XML for View Architecture!" #~ msgstr "Invalidní XML pro zobrazení architektury!" diff --git a/addons/delivery/i18n/cs.po b/addons/delivery/i18n/cs.po index b703e4b42c8..7cb6f787ed1 100644 --- a/addons/delivery/i18n/cs.po +++ b/addons/delivery/i18n/cs.po @@ -4,111 +4,112 @@ # msgid "" msgstr "" -"Project-Id-Version: OpenERP Server 5.0.4\n" +"Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2009-02-03 19:47+0000\n" -"Last-Translator: Fabien (Open ERP) \n" -"Language-Team: \n" +"PO-Revision-Date: 2011-11-25 14:16+0000\n" +"Last-Translator: Jiří Hajda \n" +"Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 04:55+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-26 05:49+0000\n" +"X-Generator: Launchpad (build 14381)\n" +"X-Poedit-Language: Czech\n" #. module: delivery #: report:sale.shipping:0 msgid "Order Ref." -msgstr "" +msgstr "Odkaz objednávky" #. module: delivery #: model:product.template,name:delivery.delivery_product_product_template msgid "Delivery by Poste" -msgstr "" +msgstr "Dodání podle zaslání" #. module: delivery #: view:delivery.grid:0 msgid "Destination" -msgstr "" +msgstr "Cíl" #. module: delivery #: field:stock.move,weight_net:0 msgid "Net weight" -msgstr "" +msgstr "Čistá hmotnost" #. module: delivery #: view:stock.picking:0 msgid "Delivery Order" -msgstr "" +msgstr "Objednávka doručení" #. module: delivery #: code:addons/delivery/delivery.py:141 #, python-format msgid "No price available !" -msgstr "" +msgstr "Žádná dostupná cena !" #. module: delivery #: model:ir.model,name:delivery.model_delivery_grid_line msgid "Delivery Grid Line" -msgstr "" +msgstr "Řádek dodací sítě" #. module: delivery #: view:delivery.grid:0 msgid "Delivery grids" -msgstr "" +msgstr "Dodací sítě" #. module: delivery #: selection:delivery.grid.line,type:0 #: selection:delivery.grid.line,variable_factor:0 #: field:stock.picking,volume:0 msgid "Volume" -msgstr "" +msgstr "Objem" #. module: delivery #: sql_constraint:sale.order:0 msgid "Order Reference must be unique !" -msgstr "" +msgstr "Odkaz objednávky musí být jedinečný !" #. module: delivery #: field:delivery.grid,line_ids:0 msgid "Grid Line" -msgstr "" +msgstr "Řádek sítě" #. module: delivery #: model:ir.actions.report.xml,name:delivery.report_shipping msgid "Delivery order" -msgstr "" +msgstr "Objednávka doručení" #. module: delivery #: view:res.partner:0 msgid "Deliveries Properties" -msgstr "" +msgstr "Vlastnosti doručení" #. module: delivery #: model:ir.actions.act_window,name:delivery.action_picking_tree4 msgid "Picking to be invoiced" -msgstr "" +msgstr "Navádění k fakturaci" #. module: delivery #: help:delivery.grid,sequence:0 msgid "Gives the sequence order when displaying a list of delivery grid." -msgstr "" +msgstr "Dává pořadí posloupnosti, když zobrazuje seznam dodací sítě." #. module: delivery #: view:delivery.grid:0 #: field:delivery.grid,country_ids:0 msgid "Countries" -msgstr "" +msgstr "Země" #. module: delivery #: report:sale.shipping:0 msgid "Delivery Order :" -msgstr "" +msgstr "Objednávka doručení :" #. module: delivery #: field:delivery.grid.line,variable_factor:0 msgid "Variable Factor" -msgstr "" +msgstr "Proměnný koeficient" #. module: delivery #: model:ir.actions.act_window,help:delivery.action_delivery_grid_form @@ -118,11 +119,15 @@ msgid "" "can define several price lists for one delivery method, per country or a " "zone in a specific country defined by a postal code range." msgstr "" +"Ceník dodání vám umožní spočítat cenu a prodejní cenu přepravy podle " +"hmotnosti výrobků a dalších kritérií. Můžete určit několik ceníků pro jednu " +"dodací metodu podle země nebo zóny ve specifické zemi určené podle rozsahu " +"počtovního kódu." #. module: delivery #: selection:delivery.grid.line,price_type:0 msgid "Fixed" -msgstr "" +msgstr "Pevné" #. module: delivery #: view:delivery.sale.order:0 @@ -137,23 +142,24 @@ msgstr "Způsob doručení" #. module: delivery #: model:ir.model,name:delivery.model_stock_move msgid "Stock Move" -msgstr "" +msgstr "Přesun zásob" #. module: delivery #: code:addons/delivery/delivery.py:141 #, python-format msgid "No line matched this order in the choosed delivery grids !" msgstr "" +"Neodpovídají žádné řádky této objednávce, pokud je vybrána dodací síť !" #. module: delivery #: field:stock.picking,carrier_tracking_ref:0 msgid "Carrier Tracking Ref" -msgstr "" +msgstr "Odkaz sledování přepravce" #. module: delivery #: field:stock.picking,weight_net:0 msgid "Net Weight" -msgstr "" +msgstr "Čistá hmotnost" #. module: delivery #: model:ir.actions.act_window,help:delivery.action_delivery_carrier_form @@ -162,57 +168,60 @@ msgid "" "Each delivery method can be assigned to a price list which computes the " "price of the delivery according to the products sold or delivered." msgstr "" +"Vytvořit a spravovat dodací metody, které chcete pro vaše prodejní aktivity. " +"Každá dodací metoda může být přiřazena k ceníku, který spočítá cenu přepravy " +"podle výrobků prodaných nebo dodaných." #. module: delivery #: code:addons/delivery/stock.py:98 #, python-format msgid "Warning" -msgstr "" +msgstr "Varování" #. module: delivery #: view:delivery.grid:0 msgid "Grid definition" -msgstr "" +msgstr "Určení sítě" #. module: delivery #: view:delivery.sale.order:0 msgid "_Cancel" -msgstr "" +msgstr "_Zrušit" #. module: delivery #: field:delivery.grid.line,operator:0 msgid "Operator" -msgstr "" +msgstr "Operátor" #. module: delivery #: model:ir.model,name:delivery.model_res_partner msgid "Partner" -msgstr "" +msgstr "Partner" #. module: delivery #: model:ir.model,name:delivery.model_sale_order msgid "Sales Order" -msgstr "" +msgstr "Prodejní objednávka" #. module: delivery #: model:ir.model,name:delivery.model_delivery_grid msgid "Delivery Grid" -msgstr "" +msgstr "Dodací síť" #. module: delivery #: report:sale.shipping:0 msgid "Invoiced to" -msgstr "" +msgstr "Fakturováno" #. module: delivery #: model:ir.model,name:delivery.model_stock_picking msgid "Picking List" -msgstr "" +msgstr "Naváděcí seznam" #. module: delivery #: model:ir.model,name:delivery.model_delivery_sale_order msgid "Make Delievery" -msgstr "" +msgstr "Provést dodání" #. module: delivery #: model:ir.module.module,description:delivery.module_meta_information @@ -224,16 +233,22 @@ msgid "" "\n" " " msgstr "" +"Umožní vám přidat dodací metody v prodejním příkazu a navádění.\n" +" Můžete určit vaše ceny přepravce and dodací sítě.\n" +" Když vytváříte faktury z navádění, OpenERP je schopný přidat a spočítat " +"dodací řádky.\n" +"\n" +" " #. module: delivery #: view:delivery.grid.line:0 msgid "Grid Lines" -msgstr "" +msgstr "Řádky sítě" #. module: delivery #: field:delivery.grid.line,grid_id:0 msgid "Grid" -msgstr "" +msgstr "Síť" #. module: delivery #: help:delivery.grid,active:0 @@ -241,31 +256,33 @@ msgid "" "If the active field is set to False, it will allow you to hide the delivery " "grid without removing it." msgstr "" +"Pokud je aktivní pole nastaveno na Nepravda, umožní vám to skrýt dodací síť " +"bez jejího odebrání." #. module: delivery #: field:delivery.grid,zip_to:0 msgid "To Zip" -msgstr "" +msgstr "Na PSČ" #. module: delivery #: report:sale.shipping:0 msgid "Order Date" -msgstr "" +msgstr "Datum objednání" #. module: delivery #: field:delivery.grid,name:0 msgid "Grid Name" -msgstr "" +msgstr "Jméno sítě" #. module: delivery #: view:stock.move:0 msgid "Weights" -msgstr "" +msgstr "Váhy" #. module: delivery #: field:stock.picking,number_of_packages:0 msgid "Number of Packages" -msgstr "" +msgstr "Počet balíků" #. module: delivery #: selection:delivery.grid.line,type:0 @@ -274,7 +291,7 @@ msgstr "" #: field:stock.move,weight:0 #: field:stock.picking,weight:0 msgid "Weight" -msgstr "" +msgstr "Váha" #. module: delivery #: help:delivery.carrier,active:0 @@ -282,179 +299,181 @@ msgid "" "If the active field is set to False, it will allow you to hide the delivery " "carrier without removing it." msgstr "" +"Pokud je aktivní pole nastaveno na Nepravda, umožní vám to skrýt dodacího " +"přepravce bez jeho odebrání." #. module: delivery #: code:addons/delivery/wizard/delivery_sale_order.py:95 #, python-format msgid "No grid available !" -msgstr "" +msgstr "Žádná dostupná síť !" #. module: delivery #: selection:delivery.grid.line,operator:0 msgid ">=" -msgstr "" +msgstr ">=" #. module: delivery #: code:addons/delivery/wizard/delivery_sale_order.py:66 #: code:addons/delivery/wizard/delivery_sale_order.py:98 #, python-format msgid "Order not in draft state !" -msgstr "" +msgstr "Objednávka není ve stavu koncept !" #. module: delivery #: constraint:res.partner:0 msgid "Error ! You can not create recursive associated members." -msgstr "" +msgstr "Chyba ! Nemůžete vytvořit rekurzivní asociované členy." #. module: delivery #: report:sale.shipping:0 msgid "Lot" -msgstr "" +msgstr "Dávka" #. module: delivery #: constraint:stock.move:0 msgid "You try to assign a lot which is not from the same product" -msgstr "" +msgstr "Snažíte se přiřadit dávku, která není ze stejného výrobku" #. module: delivery #: field:delivery.carrier,active:0 #: field:delivery.grid,active:0 msgid "Active" -msgstr "" +msgstr "Aktivní" #. module: delivery #: report:sale.shipping:0 msgid "Shipping Date" -msgstr "" +msgstr "Datum expedice" #. module: delivery #: field:delivery.carrier,product_id:0 msgid "Delivery Product" -msgstr "" +msgstr "Dodání výrobku" #. module: delivery #: view:delivery.grid.line:0 msgid "Condition" -msgstr "" +msgstr "Podmínka" #. module: delivery #: field:delivery.grid.line,standard_price:0 msgid "Cost Price" -msgstr "" +msgstr "Výrobní cena" #. module: delivery #: selection:delivery.grid.line,price_type:0 #: field:delivery.grid.line,type:0 msgid "Variable" -msgstr "" +msgstr "Proměnné" #. module: delivery #: help:res.partner,property_delivery_carrier:0 msgid "This delivery method will be used when invoicing from picking." -msgstr "" +msgstr "Dodací metoda bude použita při fakturaci z nasvádění." #. module: delivery #: field:delivery.grid.line,max_value:0 msgid "Maximum Value" -msgstr "" +msgstr "Maximální hodnota" #. module: delivery #: report:sale.shipping:0 msgid "Quantity" -msgstr "" +msgstr "Množství" #. module: delivery #: field:delivery.grid,zip_from:0 msgid "Start Zip" -msgstr "" +msgstr "Počáteční PSČ" #. module: delivery #: help:sale.order,carrier_id:0 msgid "" "Complete this field if you plan to invoice the shipping based on picking." -msgstr "" +msgstr "Vyplňte toto pole, pokud plánujete fakturovat přepravu při navádění." #. module: delivery #: field:delivery.carrier,partner_id:0 msgid "Carrier Partner" -msgstr "" +msgstr "Přepravní partner" #. module: delivery #: view:res.partner:0 msgid "Sales & Purchases" -msgstr "" +msgstr "Prodeje & Nákupy" #. module: delivery #: selection:delivery.grid.line,operator:0 msgid "<=" -msgstr "" +msgstr "<=" #. module: delivery #: constraint:stock.move:0 msgid "You must assign a production lot for this product" -msgstr "" +msgstr "Pro tento výrobek musíte přiřadit výrobní dávku." #. module: delivery #: view:delivery.sale.order:0 msgid "Create Deliveries" -msgstr "" +msgstr "Vytvořit dodání" #. module: delivery #: model:ir.actions.act_window,name:delivery.action_delivery_cost #: view:sale.order:0 msgid "Delivery Costs" -msgstr "" +msgstr "Ceny dodání" #. module: delivery #: report:sale.shipping:0 msgid "Description" -msgstr "" +msgstr "Popis" #. module: delivery #: model:ir.actions.act_window,name:delivery.action_delivery_grid_form #: model:ir.ui.menu,name:delivery.menu_action_delivery_grid_form msgid "Delivery Pricelist" -msgstr "" +msgstr "Ceník dodání" #. module: delivery #: field:delivery.carrier,price:0 #: selection:delivery.grid.line,type:0 #: selection:delivery.grid.line,variable_factor:0 msgid "Price" -msgstr "" +msgstr "Cena" #. module: delivery #: code:addons/delivery/wizard/delivery_sale_order.py:95 #, python-format msgid "No grid matching for this carrier !" -msgstr "" +msgstr "Žádná síť odpovídající tomuto přepravci !" #. module: delivery #: model:ir.ui.menu,name:delivery.menu_delivery msgid "Delivery" -msgstr "" +msgstr "Dodací" #. module: delivery #: selection:delivery.grid.line,type:0 #: selection:delivery.grid.line,variable_factor:0 msgid "Weight * Volume" -msgstr "" +msgstr "Hmotnost * Objem" #. module: delivery #: selection:delivery.grid.line,operator:0 msgid "=" -msgstr "" +msgstr "=" #. module: delivery #: code:addons/delivery/stock.py:99 #, python-format msgid "The carrier %s (id: %d) has no delivery grid!" -msgstr "" +msgstr "Přepravce %s (id: %d) nemá dodací síť!" #. module: delivery #: field:delivery.grid.line,name:0 msgid "Name" -msgstr "" +msgstr "Jméno" #. module: delivery #: view:delivery.carrier:0 @@ -464,55 +483,55 @@ msgstr "" #: report:sale.shipping:0 #: field:stock.picking,carrier_id:0 msgid "Carrier" -msgstr "" +msgstr "Přepravce" #. module: delivery #: view:delivery.sale.order:0 msgid "_Apply" -msgstr "" +msgstr "_Použít" #. module: delivery #: field:sale.order,id:0 msgid "ID" -msgstr "" +msgstr "ID" #. module: delivery #: code:addons/delivery/wizard/delivery_sale_order.py:66 #: code:addons/delivery/wizard/delivery_sale_order.py:98 #, python-format msgid "The order state have to be draft to add delivery lines." -msgstr "" +msgstr "Stav objednávky musí být koncept pro přidání dodacích řádků." #. module: delivery #: model:ir.module.module,shortdesc:delivery.module_meta_information msgid "Carriers and deliveries" -msgstr "" +msgstr "Přepravci a doručení" #. module: delivery #: field:delivery.carrier,grids_id:0 msgid "Delivery Grids" -msgstr "" +msgstr "Dodací síť" #. module: delivery #: field:delivery.grid,sequence:0 msgid "Sequence" -msgstr "" +msgstr "Posloupnost" #. module: delivery #: field:delivery.grid.line,list_price:0 msgid "Sale Price" -msgstr "" +msgstr "Prodejní cena" #. module: delivery #: view:delivery.grid:0 #: field:delivery.grid,state_ids:0 msgid "States" -msgstr "" +msgstr "Stavy" #. module: delivery #: field:delivery.grid.line,price_type:0 msgid "Price Type" -msgstr "" +msgstr "Typ ceny" #~ msgid "Cancel" #~ msgstr "Storno" diff --git a/addons/event/i18n/cs.po b/addons/event/i18n/cs.po index 95ba2ab5cc9..616838be295 100644 --- a/addons/event/i18n/cs.po +++ b/addons/event/i18n/cs.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2011-09-06 06:14+0000\n" +"PO-Revision-Date: 2011-11-25 10:45+0000\n" "Last-Translator: Jiří Hajda \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 04:58+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-26 05:49+0000\n" +"X-Generator: Launchpad (build 14381)\n" "X-Poedit-Language: Czech\n" #. module: event @@ -220,7 +220,7 @@ msgstr "Odpovědět" #. module: event #: model:ir.actions.act_window,name:event.open_board_associations_manager msgid "Event Dashboard" -msgstr "Nástěnka uválosti" +msgstr "Nástěnka události" #. module: event #: model:event.event,name:event.event_1 diff --git a/addons/hr_payroll/i18n/cs.po b/addons/hr_payroll/i18n/cs.po new file mode 100644 index 00000000000..39f45018ed4 --- /dev/null +++ b/addons/hr_payroll/i18n/cs.po @@ -0,0 +1,1618 @@ +# Czech translation for openobject-addons +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-01-11 11:15+0000\n" +"PO-Revision-Date: 2011-11-25 12:32+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-11-26 05:50+0000\n" +"X-Generator: Launchpad (build 14381)\n" + +#. module: hr_payroll +#: report:employees.salary:0 +msgid "E-mail Address" +msgstr "" + +#. module: hr_payroll +#: view:hr.allounce.deduction.categoty:0 +msgid "Based" +msgstr "" + +#. module: hr_payroll +#: field:hr.contract,net:0 +#: field:hr.employee,net:0 +#: field:hr.payroll.register,net:0 +#: field:hr.payslip,net:0 +#: report:salary.structure:0 +msgid "Net Salary" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Recompute Sheet" +msgstr "" + +#. module: hr_payroll +#: report:employees.salary:0 +msgid "Employees Salary Details" +msgstr "" + +#. module: hr_payroll +#: report:employees.salary:0 +msgid "Allowances with Basic:" +msgstr "" + +#. module: hr_payroll +#: report:employees.salary:0 +#: report:salary.structure:0 +msgid "Department" +msgstr "" + +#. module: hr_payroll +#: report:employees.salary:0 +msgid "Deductions:" +msgstr "" + +#. module: hr_payroll +#: field:company.contribution,gratuity:0 +msgid "Use for Gratuity ?" +msgstr "" + +#. module: hr_payroll +#: field:hr.contract,working_days_per_week:0 +#: field:hr.payslip,working_days:0 +#: report:payslip.pdf:0 +msgid "Working Days" +msgstr "" + +#. module: hr_payroll +#: selection:hr.allounce.deduction.categoty,type:0 +#: selection:hr.payslip.line,type:0 +msgid "Loan" +msgstr "" + +#. module: hr_payroll +#: report:hr.payroll.register.sheet:0 +msgid "Salary Payment Register" +msgstr "" + +#. module: hr_payroll +#: field:hr.employee,slip_ids:0 +#: view:hr.payroll.register:0 +#: field:hr.payroll.register,line_ids:0 +#: model:ir.actions.act_window,name:hr_payroll.act_hr_employee_payslip_list +msgid "Payslips" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.report.xml,name:hr_payroll.year_salary_report +msgid "Year Salary Report" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payroll.register,state:0 +#: selection:hr.payslip,state:0 +msgid "Paid Salary" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "(" +msgstr "" + +#. module: hr_payroll +#: field:company.contribution,company_id:0 +#: field:hr.allounce.deduction.categoty,company_id:0 +#: field:hr.contibution.register,company_id:0 +#: field:hr.holidays.status,company_id:0 +#: field:hr.payroll.advice,company_id:0 +#: field:hr.payroll.register,company_id:0 +#: field:hr.payroll.structure,company_id:0 +#: field:hr.payslip,company_id:0 +msgid "Company" +msgstr "" + +#. module: hr_payroll +#: report:payroll.advice:0 +msgid "The Manager" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.advice:0 +msgid "Letter Details" +msgstr "" + +#. module: hr_payroll +#: report:hr.payroll.register.sheet:0 +#: report:payslip.pdf:0 +msgid "," +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.advice:0 +#: view:hr.payroll.register:0 +#: view:hr.payslip:0 +msgid "Set to Draft" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:180 +#: code:addons/hr_payroll/hr_payroll.py:195 +#: code:addons/hr_payroll/hr_payroll.py:285 +#: code:addons/hr_payroll/hr_payroll.py:835 +#: code:addons/hr_payroll/hr_payroll.py:1111 +#: code:addons/hr_payroll/hr_payroll.py:1126 +#: code:addons/hr_payroll/hr_payroll.py:1410 +#, python-format +msgid "Variable Error: %s " +msgstr "" + +#. module: hr_payroll +#: view:hr.passport:0 +msgid "Expire" +msgstr "" + +#. module: hr_payroll +#: selection:hr.holidays.status,type:0 +msgid "Half-Pay Holiday" +msgstr "" + +#. module: hr_payroll +#: report:hr.payroll.register.sheet:0 +#: field:hr.payslip,other_pay:0 +msgid "Others" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,slip_id:0 +#: model:ir.model,name:hr_payroll.model_hr_payslip +#: report:payslip.pdf:0 +msgid "Pay Slip" +msgstr "" + +#. module: hr_payroll +#: report:salary.structure:0 +msgid "Contract Detail:" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,igross:0 +#: field:hr.payslip,inet:0 +msgid "Calculaton Field" +msgstr "" + +#. module: hr_payroll +#: help:hr.payroll.advice,bank_id:0 +#: help:hr.payroll.register,bank_id:0 +msgid "Select the Bank Address from whcih the salary is going to be paid" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.advice:0 +#: field:hr.payroll.advice.line,advice_id:0 +msgid "Bank Advice" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payroll.advice,state:0 +#: selection:hr.payroll.register,state:0 +#: selection:hr.payslip,state:0 +msgid "Reject" +msgstr "" + +#. module: hr_payroll +#: selection:hr.allounce.deduction.categoty,type:0 +#: selection:hr.payslip.line,type:0 +msgid "Leaves" +msgstr "" + +#. module: hr_payroll +#: field:hr.contibution.register.line,register_id:0 +#: view:hr.payslip:0 +#: field:hr.payslip,register_id:0 +#: report:payslip.pdf:0 +msgid "Register" +msgstr "" + +#. module: hr_payroll +#: constraint:hr.employee:0 +msgid "" +"Error ! You cannot select a department for which the employee is the manager." +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Total Deductions" +msgstr "" + +#. module: hr_payroll +#: field:company.contribution.line,value:0 +#: field:hr.payslip.line.line,value:0 +msgid "Value" +msgstr "" + +#. module: hr_payroll +#: report:payroll.advice:0 +msgid "Name of the Employee" +msgstr "" + +#. module: hr_payroll +#: view:hr.contibution.register:0 +msgid "Register Lines" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Salary Computation" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.advice.line,amount:0 +#: report:payroll.advice:0 +#: report:salary.structure:0 +msgid "Amount" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:1225 +#, python-format +msgid "Please check configuration of %s, payroll head is missing" +msgstr "" + +#. module: hr_payroll +#: selection:company.contribution,amount_type:0 +msgid "Percentage" +msgstr "" + +#. module: hr_payroll +#: view:company.contribution:0 +#: view:hr.allounce.deduction.categoty:0 +msgid "Other Information" +msgstr "" + +#. module: hr_payroll +#: field:hr.passport,country_id:0 +msgid "Country of Issue" +msgstr "" + +#. module: hr_payroll +#: field:hr.contibution.register.line,emp_deduction:0 +msgid "Employee Deduction" +msgstr "" + +#. module: hr_payroll +#: selection:hr.allounce.deduction.categoty,type:0 +#: selection:hr.payslip.line,type:0 +msgid "Other Deduction" +msgstr "" + +#. module: hr_payroll +#: selection:hr.holidays.status,type:0 +msgid "Paid Holiday" +msgstr "" + +#. module: hr_payroll +#: view:company.contribution:0 +#: view:hr.allounce.deduction.categoty:0 +#: view:hr.passport:0 +#: view:hr.payslip:0 +msgid "Group By..." +msgstr "" + +#. module: hr_payroll +#: field:hr.passport,date_expire:0 +msgid "Passport Expire Date" +msgstr "" + +#. module: hr_payroll +#: selection:hr.holidays.status,type:0 +msgid "Un-Paid Holiday" +msgstr "" + +#. module: hr_payroll +#: view:hr.passport:0 +msgid "Valid From" +msgstr "" + +#. module: hr_payroll +#: help:hr.payslip,igross:0 +#: help:hr.payslip,inet:0 +msgid "" +"Calculation field used for internal calculation, do not place this on form" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Amount (in words) :" +msgstr "" + +#. module: hr_payroll +#: field:hr.holidays.status,type:0 +msgid "Payment" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.structure:0 +#: view:hr.payslip:0 +#: field:hr.payslip,line_ids:0 +#: view:hr.payslip.line:0 +#: model:ir.model,name:hr_payroll.model_hr_payslip_line +msgid "Payslip Line" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Identification No" +msgstr "" + +#. module: hr_payroll +#: view:hr.allounce.deduction.categoty:0 +#: field:hr.allounce.deduction.categoty,base:0 +msgid "Based on" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payroll.register,state:0 +#: selection:hr.payslip,state:0 +msgid "Wating for Verification" +msgstr "" + +#. module: hr_payroll +#: model:ir.module.module,shortdesc:hr_payroll.module_meta_information +msgid "Human Resource Payroll" +msgstr "" + +#. module: hr_payroll +#: report:payroll.advice:0 +msgid "Total:" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Posted" +msgstr "" + +#. module: hr_payroll +#: model:ir.module.module,description:hr_payroll.module_meta_information +msgid "" +"Generic Payroll system\n" +" * Employee Details\n" +" * Employee Contracts\n" +" * Passport based Contract\n" +" * Allowances / Deductions\n" +" * Allow to configure Basic / Grows / Net Salary\n" +" * Employee Payslip\n" +" * Monthly Payroll Register\n" +" * Integrated with Holiday Management\n" +" " +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_holidays_status +msgid "Leave Type" +msgstr "" + +#. module: hr_payroll +#: report:hr.payroll.register.sheet:0 +msgid "Date :" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,total:0 +msgid "Sub Total" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Payments -" +msgstr "" + +#. module: hr_payroll +#: field:hr.contract,visa_no:0 +msgid "Visa No" +msgstr "" + +#. module: hr_payroll +#: field:company.contribution.line,from_val:0 +#: report:employees.salary:0 +#: field:hr.payslip.line.line,from_val:0 +#: report:year.salary:0 +msgid "From" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.advice.line,bysal:0 +#: report:payroll.advice:0 +msgid "By Salary" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.employees.detail,date_to:0 +#: field:hr.payroll.year.salary,date_to:0 +#: report:salary.structure:0 +msgid "End Date" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.report.xml,name:hr_payroll.salary_payslip +msgid "Employee PaySlip" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,leaves:0 +msgid "Leave Deductions" +msgstr "" + +#. module: hr_payroll +#: report:hr.payroll.register.sheet:0 +#: report:payroll.advice:0 +msgid "Authorised Signature" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payslip.line,amount_type:0 +msgid "Function Value" +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_contibution_register_line +msgid "Contribution Register Line" +msgstr "" + +#. module: hr_payroll +#: report:salary.structure:0 +msgid "Notes:" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.advice,state:0 +#: field:hr.payroll.register,state:0 +#: field:hr.payslip,state:0 +msgid "State" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.advice:0 +msgid "Paymeny Lines" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Other Lines" +msgstr "" + +#. module: hr_payroll +#: view:company.contribution:0 +#: view:hr.allounce.deduction.categoty:0 +#: view:hr.payroll.structure:0 +#: view:hr.payslip:0 +#: view:hr.payslip.line:0 +msgid "Function Arguments" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.act_window,name:hr_payroll.action_hr_company_contribution_tree +#: model:ir.ui.menu,name:hr_payroll.menu_hr_company_contribution_tree +msgid "Company Contributions" +msgstr "" + +#. module: hr_payroll +#: field:hr.contibution.register.line,employee_id:0 +#: field:hr.passport,employee_id:0 +#: field:hr.payroll.advice.line,employee_id:0 +#: field:hr.payslip,employee_id:0 +#: field:hr.payslip.line,employee_id:0 +#: model:ir.model,name:hr_payroll.model_hr_employee +msgid "Employee" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,base:0 +msgid "Formula" +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_payroll_advice_line +msgid "Bank Advice Lines" +msgstr "" + +#. module: hr_payroll +#: view:company.contribution:0 +#: view:hr.allounce.deduction.categoty:0 +#: field:hr.allounce.deduction.categoty,type:0 +#: field:hr.payslip.line,type:0 +#: report:salary.structure:0 +msgid "Type" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Email" +msgstr "" + +#. module: hr_payroll +#: report:hr.payroll.register.sheet:0 +msgid "#" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:469 +#: code:addons/hr_payroll/hr_payroll.py:1225 +#, python-format +msgid "Error !" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.register:0 +#: view:hr.payslip:0 +msgid "Verify Sheet" +msgstr "" + +#. module: hr_payroll +#: help:hr.contract,working_days_per_week:0 +msgid "No of Working days / week for an employee" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payroll.register,state:0 +#: selection:hr.payslip,state:0 +msgid "New Slip" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,basic:0 +msgid "Net Basic" +msgstr "" + +#. module: hr_payroll +#: field:hr.contract,gross:0 +#: field:hr.employee,gross:0 +#: field:hr.payroll.register,grows:0 +#: field:hr.payslip,grows:0 +#: report:salary.structure:0 +msgid "Gross Salary" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Total Earnings" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.act_window,name:hr_payroll.action_hr_payroll_employees_detail +#: model:ir.ui.menu,name:hr_payroll.menu_hr_payroll_employees_detail +msgid "Employee Salary Statement" +msgstr "" + +#. module: hr_payroll +#: selection:hr.allounce.deduction.categoty,type:0 +#: selection:hr.payslip.line,type:0 +msgid "Other Payment" +msgstr "" + +#. module: hr_payroll +#: field:hr.employee,advantages_net:0 +#: report:payslip.pdf:0 +#: report:salary.structure:0 +msgid "Deductions" +msgstr "" + +#. module: hr_payroll +#: report:payroll.advice:0 +msgid "C/D" +msgstr "" + +#. module: hr_payroll +#: field:hr.contract,permit_no:0 +msgid "Work Permit No" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.advice,line_ids:0 +msgid "Employee Salary" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.advice,chaque_nos:0 +msgid "Chaque Nos" +msgstr "" + +#. module: hr_payroll +#: field:hr.contibution.register,monthly_total_by_emp:0 +msgid "Total By Employee" +msgstr "" + +#. module: hr_payroll +#: view:company.contribution:0 +#: selection:company.contribution,amount_type:0 +#: selection:company.contribution.line,amount_type:0 +#: selection:hr.payslip.line,amount_type:0 +#: selection:hr.payslip.line.line,amount_type:0 +msgid "Fixed Amount" +msgstr "" + +#. module: hr_payroll +#: field:company.contribution.line,to_val:0 +#: report:employees.salary:0 +#: field:hr.payslip.line.line,to_val:0 +#: report:year.salary:0 +msgid "To" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:180 +#: code:addons/hr_payroll/hr_payroll.py:195 +#: code:addons/hr_payroll/hr_payroll.py:285 +#: code:addons/hr_payroll/hr_payroll.py:835 +#: code:addons/hr_payroll/hr_payroll.py:1111 +#: code:addons/hr_payroll/hr_payroll.py:1126 +#: code:addons/hr_payroll/hr_payroll.py:1410 +#, python-format +msgid "Variable Error !" +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_payroll_employees_detail +msgid "hr.payroll.employees.detail" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.register:0 +#: view:hr.payslip:0 +msgid "Pay Salary" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.advice.line,name:0 +msgid "Bank Account A/C" +msgstr "" + +#. module: hr_payroll +#: view:hr.contibution.register:0 +msgid "Contribution Lines" +msgstr "" + +#. module: hr_payroll +#: report:hr.payroll.register.sheet:0 +msgid "For the month of" +msgstr "" + +#. module: hr_payroll +#: view:hr.allounce.deduction.categoty:0 +#: selection:hr.allounce.deduction.categoty,type:0 +#: field:hr.payroll.register,deduction:0 +#: report:hr.payroll.register.sheet:0 +#: field:hr.payslip,deduction:0 +#: selection:hr.payslip.line,type:0 +msgid "Deduction" +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_payroll_advice +msgid "Bank Advice Note" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.register:0 +#: view:hr.payslip:0 +msgid "Payslip" +msgstr "" + +#. module: hr_payroll +#: constraint:hr.contract:0 +msgid "Error! contract start-date must be lower then contract end-date." +msgstr "" + +#. module: hr_payroll +#: selection:hr.allounce.deduction.categoty,type:0 +#: selection:hr.payslip.line,type:0 +msgid "Loan Installment" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.register:0 +msgid "Complete HR Checking" +msgstr "" + +#. module: hr_payroll +#: report:payroll.advice:0 +msgid "Yours Sincerely" +msgstr "" + +#. module: hr_payroll +#: report:payroll.advice:0 +msgid "SI. No." +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Net Amount" +msgstr "" + +#. module: hr_payroll +#: report:salary.structure:0 +msgid "Salary Structure:" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.report.xml,name:hr_payroll.year_employees_detail +msgid "Employees Salary Detail" +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_payslip_line_line +msgid "Function Line" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.advice:0 +#: selection:hr.payroll.advice,state:0 +#: selection:hr.payroll.register,state:0 +#: selection:hr.payslip,state:0 +msgid "Confirm Sheet" +msgstr "" + +#. module: hr_payroll +#: report:employees.salary:0 +msgid "Others:" +msgstr "" + +#. module: hr_payroll +#: view:company.contribution:0 +#: selection:company.contribution,amount_type:0 +msgid "Function Calculation" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,worked_days:0 +#: report:payslip.pdf:0 +msgid "Worked Day" +msgstr "" + +#. module: hr_payroll +#: field:hr.contibution.register,monthly_total_by_comp:0 +msgid "Total By Company" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.advice.line,flag:0 +msgid "D/C" +msgstr "" + +#. module: hr_payroll +#: view:hr.passport:0 +msgid "Country & Address" +msgstr "" + +#. module: hr_payroll +#: report:employees.salary:0 +msgid "Employee Code" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Basic Salary – Leaves" +msgstr "" + +#. module: hr_payroll +#: field:company.contribution,amount_type:0 +#: field:company.contribution.line,amount_type:0 +#: field:hr.payslip.line,amount_type:0 +#: field:hr.payslip.line.line,amount_type:0 +#: report:salary.structure:0 +msgid "Amount Type" +msgstr "" + +#. module: hr_payroll +#: view:company.contribution:0 +#: field:hr.payslip.line,category_id:0 +msgid "Category" +msgstr "" + +#. module: hr_payroll +#: view:company.contribution:0 +#: view:hr.allounce.deduction.categoty:0 +#: field:hr.payslip.line,company_contrib:0 +#: model:ir.model,name:hr_payroll.model_company_contribution +msgid "Company Contribution" +msgstr "" + +#. module: hr_payroll +#: field:company.contribution,category_id:0 +msgid "Heads" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.report.xml,name:hr_payroll.year_payroll_register +msgid "Print Statement" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Draft" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Earnings" +msgstr "" + +#. module: hr_payroll +#: report:hr.payroll.register.sheet:0 +#: report:salary.structure:0 +msgid "Basic" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.act_window,name:hr_payroll.action_hr_passport_tree +msgid "All Passports" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.act_window,name:hr_payroll.action_hr_payroll_year_salary +#: model:ir.ui.menu,name:hr_payroll.menu_wizard_print_year_salary +msgid "Salary Register" +msgstr "" + +#. module: hr_payroll +#: report:employees.salary:0 +#: report:hr.payroll.register.sheet:0 +msgid "Employee Name" +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_passport +msgid "Passport Detail" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payslip.line,amount_type:0 +msgid "Percentage (%)" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.advice,register_id:0 +#: view:hr.payroll.register:0 +#: model:ir.actions.act_window,name:hr_payroll.action_view_hr_payroll_register_form +#: model:ir.model,name:hr_payroll.model_hr_payroll_register +#: model:ir.ui.menu,name:hr_payroll.hr_menu_payroll_register +msgid "Payroll Register" +msgstr "" + +#. module: hr_payroll +#: report:hr.payroll.register.sheet:0 +#: report:payroll.advice:0 +msgid "For" +msgstr "" + +#. module: hr_payroll +#: field:hr.passport,contracts_ids:0 +msgid "Contracts" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.structure:0 +msgid "Employee Function" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Paid" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Approve Sheet" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,paid:0 +msgid "Paid ? " +msgstr "" + +#. module: hr_payroll +#: view:hr.holidays.status:0 +msgid "Validation" +msgstr "" + +#. module: hr_payroll +#: report:employees.salary:0 +msgid "Title" +msgstr "" + +#. module: hr_payroll +#: view:company.contribution:0 +msgid "Search Company Contribution" +msgstr "" + +#. module: hr_payroll +#: field:hr.allounce.deduction.categoty,user_id:0 +msgid "User" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.advice:0 +msgid "Payment Lines" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Compute Sheet" +msgstr "" + +#. module: hr_payroll +#: field:company.contribution,active:0 +#: field:hr.payroll.register,active:0 +msgid "Active" +msgstr "" + +#. module: hr_payroll +#: help:hr.allounce.deduction.categoty,condition:0 +msgid "Applied this head for calculation if condition is true" +msgstr "" + +#. module: hr_payroll +#: report:year.salary:0 +msgid "Yearly Salary Details" +msgstr "" + +#. module: hr_payroll +#: constraint:hr.employee:0 +msgid "Error ! You cannot create recursive Hierarchy of Employees." +msgstr "" + +#. module: hr_payroll +#: field:hr.allounce.deduction.categoty,condition:0 +msgid "Condition" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payroll.register,state:0 +#: selection:hr.payslip,state:0 +msgid "Wating for HR Verification" +msgstr "" + +#. module: hr_payroll +#: report:payroll.advice:0 +msgid "Payment Advice:" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.register:0 +msgid "Compute" +msgstr "" + +#. module: hr_payroll +#: report:employees.salary:0 +#: field:hr.payslip,deg_id:0 +#: report:payslip.pdf:0 +#: report:salary.structure:0 +msgid "Designation" +msgstr "" + +#. module: hr_payroll +#: report:hr.payroll.register.sheet:0 +msgid "HR Manager" +msgstr "" + +#. module: hr_payroll +#: field:hr.contract,basic:0 +#: field:hr.employee,basic:0 +#: field:hr.payslip,basic_before_leaves:0 +#: report:payslip.pdf:0 +msgid "Basic Salary" +msgstr "" + +#. module: hr_payroll +#: field:hr.allounce.deduction.categoty,code:0 +msgid "Category Code" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.register:0 +msgid "Salary Information" +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_allounce_deduction_categoty +#: model:ir.model,name:hr_payroll.model_hr_allounce_deduction_categoty_line +msgid "Allowance Deduction Categoty" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Companies" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Authorized Signature" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,contract_id:0 +#: model:ir.model,name:hr_payroll.model_hr_contract +msgid "Contract" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payroll.advice,state:0 +msgid "Draft Sheet" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payroll.year.salary,salary_on:0 +msgid "Next Month Date" +msgstr "" + +#. module: hr_payroll +#: field:hr.contibution.register.line,date:0 +#: field:hr.payroll.advice,date:0 +#: field:hr.payroll.register,date:0 +#: field:hr.payslip,date:0 +msgid "Date" +msgstr "" + +#. module: hr_payroll +#: field:hr.contract,visa_expire:0 +msgid "Visa Expire Date" +msgstr "" + +#. module: hr_payroll +#: view:hr.passport:0 +msgid "Search Passport" +msgstr "" + +#. module: hr_payroll +#: report:employees.salary:0 +#: report:salary.structure:0 +msgid "Phone No." +msgstr "" + +#. module: hr_payroll +#: field:company.contribution,contribute_per:0 +#: field:company.contribution.line,contribution_id:0 +#: view:hr.allounce.deduction.categoty:0 +#: view:hr.contibution.register:0 +#: view:hr.contibution.register.line:0 +msgid "Contribution" +msgstr "" + +#. module: hr_payroll +#: field:hr.allounce.deduction.categoty,state:0 +msgid "Label" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.structure:0 +#: view:hr.payslip:0 +#: view:hr.payslip.line:0 +msgid "Company contribution" +msgstr "" + +#. module: hr_payroll +#: report:employees.salary:0 +#: report:salary.structure:0 +msgid "Other No." +msgstr "" + +#. module: hr_payroll +#: field:company.contribution,code:0 +#: field:hr.contibution.register.line,code:0 +#: field:hr.holidays.status,code:0 +#: field:hr.payroll.structure,code:0 +#: field:hr.payslip.line,code:0 +#: report:payslip.pdf:0 +#: report:salary.structure:0 +msgid "Code" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.act_window,name:hr_payroll.action_view_hr_bank_advice_tree +#: model:ir.ui.menu,name:hr_payroll.hr_menu_payment_advice +msgid "Payment Advice" +msgstr "" + +#. module: hr_payroll +#: report:hr.payroll.register.sheet:0 +msgid "Number :" +msgstr "" + +#. module: hr_payroll +#: help:hr.allounce.deduction.categoty,base:0 +msgid "" +"This will use to computer the % fields values, in general its on basic, but " +"You can use all heads code field in small letter as a variable name i.e. " +"hra, ma, lta, etc...., also you can use, static varible basic" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Computation Overview" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.year.salary,salary_on:0 +msgid "Salary On" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.advice,number:0 +#: field:hr.payroll.register,number:0 +#: field:hr.payslip,number:0 +msgid "Number" +msgstr "" + +#. module: hr_payroll +#: field:hr.contract,struct_id:0 +#: field:hr.employee,line_ids:0 +#: view:hr.payroll.structure:0 +#: field:hr.payroll.structure,line_ids:0 +#: view:hr.payslip:0 +#: view:hr.payslip.line:0 +#: model:ir.actions.act_window,name:hr_payroll.action_view_hr_employee_grade_form +#: model:ir.actions.report.xml,name:hr_payroll.salary_structure_register +#: model:ir.model,name:hr_payroll.model_hr_payroll_structure +#: model:ir.ui.menu,name:hr_payroll.menu_hr_employee_function +msgid "Salary Structure" +msgstr "" + +#. module: hr_payroll +#: field:hr.contibution.register,register_line_ids:0 +msgid "Register Line" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.register:0 +#: view:hr.payslip:0 +msgid "Cancel" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.employees.detail:0 +#: view:hr.payroll.year.salary:0 +msgid "Close" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line,amount:0 +msgid "Amount / Percentage" +msgstr "" + +#. module: hr_payroll +#: field:hr.employee,advantages_gross:0 +#: report:hr.payroll.register.sheet:0 +#: report:salary.structure:0 +msgid "Allowances" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payroll.year.salary,salary_on:0 +msgid "Current Month Date" +msgstr "" + +#. module: hr_payroll +#: report:salary.structure:0 +msgid "Salary" +msgstr "" + +#. module: hr_payroll +#: field:hr.contract,passport_id:0 +#: field:hr.passport,name:0 +msgid "Passport No" +msgstr "" + +#. module: hr_payroll +#: view:hr.passport:0 +msgid "Passport" +msgstr "" + +#. module: hr_payroll +#: report:hr.payroll.register.sheet:0 +msgid "Total Salary" +msgstr "" + +#. module: hr_payroll +#: report:payroll.advice:0 +msgid "for period" +msgstr "" + +#. module: hr_payroll +#: field:hr.holidays.status,head_id:0 +msgid "Payroll Head" +msgstr "" + +#. module: hr_payroll +#: field:company.contribution,register_id:0 +#: model:ir.actions.act_window,name:hr_payroll.action_contibution_register_form +#: model:ir.model,name:hr_payroll.model_hr_contibution_register +#: model:ir.ui.menu,name:hr_payroll.menu_action_hr_contibution_register_form +msgid "Contribution Register" +msgstr "" + +#. module: hr_payroll +#: report:salary.structure:0 +msgid "E-mail" +msgstr "" + +#. module: hr_payroll +#: view:hr.allounce.deduction.categoty:0 +#: model:ir.actions.act_window,name:hr_payroll.hr_allounce_deduction_tree +#: model:ir.ui.menu,name:hr_payroll.menu_hr_allounce_deduction_tree +msgid "Salary Heads" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.employees.detail:0 +#: view:hr.payroll.year.salary:0 +msgid "Print Report" +msgstr "" + +#. module: hr_payroll +#: field:company.contribution,line_ids:0 +#: view:hr.payroll.structure:0 +#: view:hr.payslip:0 +#: view:hr.payslip.line:0 +#: field:hr.payslip.line,line_ids:0 +msgid "Calculations" +msgstr "" + +#. module: hr_payroll +#: help:company.contribution,contribute_per:0 +msgid "" +"Define Company contribution ratio 1.00=100% contribution, If Employee " +"Contribute 5% then company will and here 0.50 defined then company will " +"contribute 50% on employee 5% contribution" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Other Informations" +msgstr "" + +#. module: hr_payroll +#: view:hr.contibution.register:0 +msgid "Month" +msgstr "" + +#. module: hr_payroll +#: view:hr.passport:0 +msgid "Issue" +msgstr "" + +#. module: hr_payroll +#: view:hr.allounce.deduction.categoty:0 +msgid "Dynamic Computation" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Basic Salary without Leave:" +msgstr "" + +#. module: hr_payroll +#: view:company.contribution:0 +#: view:hr.allounce.deduction.categoty:0 +#: view:hr.payroll.structure:0 +#: view:hr.payslip:0 +#: view:hr.payslip.line:0 +#: field:hr.payslip.line,function_id:0 +msgid "Function" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "States" +msgstr "" + +#. module: hr_payroll +#: report:payroll.advice:0 +msgid "Dear Sir/Madam," +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_allounce_deduction_categoty +msgid "Allowance Deduction Heads" +msgstr "" + +#. module: hr_payroll +#: report:hr.payroll.register.sheet:0 +msgid "Gross Sal." +msgstr "" + +#. module: hr_payroll +#: view:company.contribution:0 +#: field:company.contribution,note:0 +#: view:hr.allounce.deduction.categoty:0 +#: field:hr.allounce.deduction.categoty,note:0 +#: view:hr.contibution.register:0 +#: field:hr.contibution.register,note:0 +#: view:hr.passport:0 +#: field:hr.passport,note:0 +#: field:hr.payroll.advice,note:0 +#: field:hr.payroll.register,note:0 +#: view:hr.payroll.structure:0 +#: field:hr.payroll.structure,note:0 +#: view:hr.payslip:0 +#: field:hr.payslip,note:0 +#: view:hr.payslip.line:0 +#: field:hr.payslip.line,note:0 +msgid "Description" +msgstr "" + +#. module: hr_payroll +#: field:hr.payroll.employees.detail,date_from:0 +#: field:hr.payroll.year.salary,date_from:0 +#: report:salary.structure:0 +msgid "Start Date" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Deduction -" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid ")" +msgstr "" + +#. module: hr_payroll +#: view:hr.contibution.register:0 +msgid "Contribution Registers" +msgstr "" + +#. module: hr_payroll +#: model:ir.ui.menu,name:hr_payroll.menu_hr_payroll_reporting +#: model:ir.ui.menu,name:hr_payroll.menu_hr_root_payroll +#: model:ir.ui.menu,name:hr_payroll.payroll_configure +msgid "Payroll" +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_contract_wage_type +msgid "Wage Type" +msgstr "" + +#. module: hr_payroll +#: report:hr.payroll.register.sheet:0 +msgid "Net Sal." +msgstr "" + +#. module: hr_payroll +#: sql_constraint:hr.passport:0 +msgid "The Passport No must be unique !" +msgstr "" + +#. module: hr_payroll +#: field:hr.allounce.deduction.categoty,name:0 +msgid "Category Name" +msgstr "" + +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_payroll_year_salary +msgid "hr.payroll.year.salary" +msgstr "" + +#. module: hr_payroll +#: report:employees.salary:0 +#: field:hr.passport,address_id:0 +#: report:payslip.pdf:0 +#: report:salary.structure:0 +msgid "Address" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip.line.line,slipline_id:0 +msgid "Slip Line" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Number of Leaves" +msgstr "" + +#. module: hr_payroll +#: report:employees.salary:0 +#: field:hr.payroll.advice,bank_id:0 +#: field:hr.payroll.register,bank_id:0 +#: report:salary.structure:0 +msgid "Bank" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.advice:0 +msgid "Cancel Sheet" +msgstr "" + +#. module: hr_payroll +#: selection:hr.allounce.deduction.categoty,type:0 +#: selection:hr.payslip.line,type:0 +msgid "Advance" +msgstr "" + +#. module: hr_payroll +#: report:salary.structure:0 +msgid "Special Allowances and Deductions For Employee:" +msgstr "" + +#. module: hr_payroll +#: field:company.contribution,name:0 +#: field:company.contribution.line,name:0 +#: field:hr.contibution.register,name:0 +#: field:hr.contibution.register.line,name:0 +#: field:hr.payroll.advice,name:0 +#: field:hr.payroll.register,name:0 +#: field:hr.payroll.structure,name:0 +#: field:hr.payslip,name:0 +#: field:hr.payslip.line,name:0 +#: field:hr.payslip.line.line,name:0 +#: report:payslip.pdf:0 +#: report:salary.structure:0 +#: report:year.salary:0 +msgid "Name" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Leaved Deduction" +msgstr "" + +#. module: hr_payroll +#: view:hr.passport:0 +msgid "Country" +msgstr "" + +#. module: hr_payroll +#: view:hr.passport:0 +#: view:hr.payroll.employees.detail:0 +#: field:hr.payroll.employees.detail,employee_ids:0 +#: view:hr.payroll.year.salary:0 +#: field:hr.payroll.year.salary,employee_ids:0 +#: view:hr.payslip:0 +msgid "Employees" +msgstr "" + +#. module: hr_payroll +#: report:payroll.advice:0 +msgid "Bank Account" +msgstr "" + +#. module: hr_payroll +#: help:company.contribution,register_id:0 +msgid "Contribution register based on company" +msgstr "" + +#. module: hr_payroll +#: help:hr.allounce.deduction.categoty,sequence:0 +msgid "Use to arrange calculation sequence" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,total_pay:0 +msgid "Total Payment" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Leave Deductions Line:" +msgstr "" + +#. module: hr_payroll +#: selection:hr.payroll.register,state:0 +#: selection:hr.payslip,state:0 +msgid "Wating for Account Verification" +msgstr "" + +#. module: hr_payroll +#: field:hr.contibution.register.line,comp_deduction:0 +msgid "Company Deduction" +msgstr "" + +#. module: hr_payroll +#: view:hr.holidays.status:0 +msgid "Payroll Configurtion" +msgstr "" + +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:469 +#, python-format +msgid "Please define bank account for the %s employee" +msgstr "" + +#. module: hr_payroll +#: field:hr.passport,date_issue:0 +msgid "Passport Issue Date" +msgstr "" + +#. module: hr_payroll +#: view:hr.allounce.deduction.categoty:0 +#: selection:hr.allounce.deduction.categoty,type:0 +#: field:hr.payroll.register,allounce:0 +#: field:hr.payslip,allounce:0 +#: selection:hr.payslip.line,type:0 +msgid "Allowance" +msgstr "" + +#. module: hr_payroll +#: field:hr.payslip,holiday_days:0 +msgid "No of Leaves" +msgstr "" + +#. module: hr_payroll +#: field:hr.employee,otherid:0 +msgid "Other Id" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Bank Details" +msgstr "" + +#. module: hr_payroll +#: report:payslip.pdf:0 +msgid "Slip ID" +msgstr "" + +#. module: hr_payroll +#: field:company.contribution.line,sequence:0 +#: field:hr.allounce.deduction.categoty,sequence:0 +#: field:hr.payslip.line,sequence:0 +#: field:hr.payslip.line.line,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.act_window,name:hr_payroll.action_view_hr_payslip_form +#: model:ir.ui.menu,name:hr_payroll.menu_department_tree +msgid "Employee Payslip" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.advice:0 +msgid "Letter Content" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.employees.detail:0 +#: view:hr.payroll.year.salary:0 +msgid "Year Salary" +msgstr "" + +#. module: hr_payroll +#: view:hr.payroll.register:0 +msgid "Allowance / Deduction" +msgstr "" + +#. module: hr_payroll +#: model:ir.actions.report.xml,name:hr_payroll.payroll_advice +msgid "Bank Payment Advice" +msgstr "" + +#. module: hr_payroll +#: view:hr.payslip:0 +msgid "Search Payslips" +msgstr "" + +#. module: hr_payroll +#: report:employees.salary:0 +#: field:hr.contibution.register.line,total:0 +#: report:year.salary:0 +msgid "Total" +msgstr "" + +#. module: hr_payroll +#: view:company.contribution:0 +#: view:hr.allounce.deduction.categoty:0 +#: field:hr.allounce.deduction.categoty,contribute_ids:0 +msgid "Contributions" +msgstr "" diff --git a/addons/membership/i18n/cs.po b/addons/membership/i18n/cs.po index c8e38a4a997..14aad66209a 100644 --- a/addons/membership/i18n/cs.po +++ b/addons/membership/i18n/cs.po @@ -4,77 +4,78 @@ # msgid "" msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" +"Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2009-09-30 08:29+0000\n" -"Last-Translator: Kuvaly [LCT] \n" -"Language-Team: \n" +"PO-Revision-Date: 2011-11-25 12:33+0000\n" +"Last-Translator: Jiří Hajda \n" +"Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 04:59+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-26 05:49+0000\n" +"X-Generator: Launchpad (build 14381)\n" +"X-Poedit-Language: Czech\n" #. module: membership #: model:process.transition,name:membership.process_transition_invoicetoassociate0 msgid "invoice to associate" -msgstr "" +msgstr "faktura k přidružení" #. module: membership #: model:process.process,name:membership.process_process_membershipprocess0 msgid "Membership Process" -msgstr "" +msgstr "Proces členství" #. module: membership #: selection:membership.membership_line,state:0 #: selection:report.membership,membership_state:0 #: selection:res.partner,membership_state:0 msgid "Paid Member" -msgstr "" +msgstr "Zaplacený člen" #. module: membership #: view:report.membership:0 #: view:res.partner:0 msgid "Group By..." -msgstr "" +msgstr "Seskupit podle..." #. module: membership #: field:report.membership,num_paid:0 msgid "# Paid" -msgstr "" +msgstr "# Zaplaceno" #. module: membership #: field:report.membership,tot_earned:0 msgid "Earned Amount" -msgstr "" +msgstr "Vydělaná částka" #. module: membership #: model:ir.model,name:membership.model_report_membership msgid "Membership Analysis" -msgstr "" +msgstr "Analýza členství" #. module: membership #: selection:report.membership,month:0 msgid "March" -msgstr "" +msgstr "Březen" #. module: membership #: model:process.node,note:membership.process_node_setassociation0 msgid "Set an associate member of partner." -msgstr "" +msgstr "Nastavit přidruženého člena k partnerovi" #. module: membership #: model:process.transition,note:membership.process_transition_invoicetopaid0 msgid "Invoice is be paid." -msgstr "" +msgstr "Faktura je zaplacena" #. module: membership #: field:membership.membership_line,company_id:0 #: view:report.membership:0 #: field:report.membership,company_id:0 msgid "Company" -msgstr "" +msgstr "Společnost" #. module: membership #: field:product.product,membership_date_to:0 @@ -84,84 +85,84 @@ msgstr "Datum do" #. module: membership #: model:process.transition,name:membership.process_transition_waitingtoinvoice0 msgid "Waiting to invoice" -msgstr "" +msgstr "Čekající na fakturu" #. module: membership #: help:report.membership,date_to:0 msgid "End membership date" -msgstr "" +msgstr "Datum ukončení členství" #. module: membership #: view:res.partner:0 msgid "Suppliers" -msgstr "" +msgstr "Dodavatelé" #. module: membership #: view:res.partner:0 msgid "All Members" -msgstr "" +msgstr "Všichni členové" #. module: membership #: field:res.partner,membership_stop:0 msgid "Stop membership date" -msgstr "" +msgstr "Datum pozastavení členství" #. module: membership #: model:process.transition,name:membership.process_transition_producttomember0 msgid "Product to member" -msgstr "" +msgstr "Výrobek pro člena" #. module: membership #: model:ir.actions.act_window,name:membership.action_membership_invoice_view #: view:res.partner:0 msgid "Join Membership" -msgstr "" +msgstr "Připojit členství" #. module: membership #: field:res.partner,associate_member:0 msgid "Associate member" -msgstr "" +msgstr "Přidružený člen" #. module: membership #: model:process.node,note:membership.process_node_associatedmember0 msgid "Member is associated." -msgstr "" +msgstr "Člen je přidružený." #. module: membership #: field:report.membership,tot_pending:0 msgid "Pending Amount" -msgstr "" +msgstr "Čekající částka" #. module: membership #: model:process.transition,note:membership.process_transition_associationpartner0 msgid "Associated partner." -msgstr "" +msgstr "Přidruženého partnera" #. module: membership #: field:report.membership,num_invoiced:0 msgid "# Invoiced" -msgstr "" +msgstr "# Fakturováno" #. module: membership #: model:ir.ui.menu,name:membership.menu_report_membership msgid "Members Analysis" -msgstr "" +msgstr "Analýza členů" #. module: membership #: view:res.partner:0 msgid "End Membership Date" -msgstr "" +msgstr "Datum ukončení členství" #. module: membership #: field:product.product,membership_date_from:0 msgid "Date from" -msgstr "" +msgstr "Počáteční datum" #. module: membership #: code:addons/membership/membership.py:414 #, python-format msgid "Partner doesn't have an address to make the invoice." -msgstr "" +msgstr "Partner nemá adresu pro vytvoření faktury." #. module: membership #: model:ir.model,name:membership.model_res_partner @@ -172,7 +173,7 @@ msgstr "Partner" #. module: membership #: model:process.transition,name:membership.process_transition_invoicetopaid0 msgid "Invoice to paid" -msgstr "" +msgstr "Faktura k zaplacení" #. module: membership #: view:res.partner:0 @@ -182,12 +183,12 @@ msgstr "Partneři" #. module: membership #: field:membership.membership_line,date_from:0 msgid "From" -msgstr "" +msgstr "Od" #. module: membership #: constraint:membership.membership_line:0 msgid "Error, this membership product is out of date" -msgstr "" +msgstr "Chyba, tento výrobek členství je zastaralý" #. module: membership #: help:res.partner,membership_state:0 @@ -206,6 +207,15 @@ msgid "" " -Paid Member: A member who has paid the membership " "amount." msgstr "" +"Označuje stav členství.\n" +" -Nečlen: Člen, který nepožádál o žádné členství.\n" +" -Zrušené členství: Člen, který má zrušené své členství.\n" +" -Starý člen: Člen, kterému vypršelo členství.\n" +" -Čekající člen: Člen, který požádal o členství, a " +"kterému bude vytvořena faktura.\n" +" -Fakturovaný člen: Člen, kterému byla vytvořena " +"faktura.\n" +" -Placený člen: Člen, který zaplatil částku za členství." #. module: membership #: model:process.transition.action,name:membership.process_transition_action_create0 @@ -215,30 +225,30 @@ msgstr "Vytvořit" #. module: membership #: model:ir.model,name:membership.model_membership_membership_line msgid "Member line" -msgstr "" +msgstr "Řádek člena" #. module: membership #: help:report.membership,date_from:0 #: field:res.partner,membership_start:0 msgid "Start membership date" -msgstr "" +msgstr "Počáteční datum členství" #. module: membership #: code:addons/membership/membership.py:410 #: code:addons/membership/membership.py:413 #, python-format msgid "Error !" -msgstr "" +msgstr "Chyba !" #. module: membership #: model:process.node,name:membership.process_node_paidmember0 msgid "Paid member" -msgstr "" +msgstr "Zaplacený člen" #. module: membership #: field:report.membership,num_waiting:0 msgid "# Waiting" -msgstr "" +msgstr "# Čekající" #. module: membership #: model:ir.actions.act_window,name:membership.action_membership_members @@ -252,22 +262,22 @@ msgstr "Členové" #: selection:report.membership,membership_state:0 #: selection:res.partner,membership_state:0 msgid "Non Member" -msgstr "" +msgstr "Nečlen" #. module: membership #: model:process.node,note:membership.process_node_invoicedmember0 msgid "Open invoice." -msgstr "" +msgstr "Otevřít fakturu" #. module: membership #: selection:report.membership,month:0 msgid "July" -msgstr "" +msgstr "Červenec" #. module: membership #: model:product.template,name:membership.membership_0_product_template msgid "Golden Membership" -msgstr "" +msgstr "Zlaté členství" #. module: membership #: help:res.partner,associate_member:0 @@ -275,79 +285,81 @@ msgid "" "A member with whom you want to associate your membership.It will consider " "the membership state of the associated member." msgstr "" +"Člen, s kterým chcete asociovat vaše členství. Vezme v úvahu stav členství " +"asociovaného člena." #. module: membership #: field:membership.membership_line,membership_id:0 #: view:report.membership:0 #: field:report.membership,membership_id:0 msgid "Membership Product" -msgstr "" +msgstr "Výrobek členství" #. module: membership #: model:process.transition,note:membership.process_transition_producttomember0 msgid "Define product for membership." -msgstr "" +msgstr "Určit výrobek pro členství." #. module: membership #: model:process.transition,note:membership.process_transition_invoicetoassociate0 msgid "Invoiced member may be Associated member." -msgstr "" +msgstr "Fakturovaný člen může být přidružený člen." #. module: membership #: view:membership.invoice:0 msgid "Join" -msgstr "" +msgstr "Připojit" #. module: membership #: help:product.product,membership_date_to:0 #: help:res.partner,membership_stop:0 msgid "Date until which membership remains active." -msgstr "" +msgstr "Datum, do kterého členství zůstává aktivní." #. module: membership #: view:product.product:0 msgid "Membership products" -msgstr "" +msgstr "Výrobky členství" #. module: membership #: field:membership.membership_line,date:0 msgid "Join Date" -msgstr "" +msgstr "Datum připojení" #. module: membership #: help:res.partner,free_member:0 msgid "Select if you want to give membership free of cost." -msgstr "" +msgstr "Vyberte, pokud chcete dát členovi cenu zdarma." #. module: membership #: model:process.node,name:membership.process_node_setassociation0 msgid "Set association" -msgstr "" +msgstr "Nastavit přiřazení" #. module: membership #: view:res.partner:0 msgid " Membership State" -msgstr "" +msgstr " Stav členství" #. module: membership #: view:res.partner:0 msgid "Memberships" -msgstr "" +msgstr "Členství" #. module: membership #: model:process.node,note:membership.process_node_paidmember0 msgid "Membership invoice paid." -msgstr "" +msgstr "Faktura členství zaplacena." #. module: membership #: model:ir.model,name:membership.model_product_template msgid "Product Template" -msgstr "" +msgstr "Šablona výrobku" #. module: membership #: selection:report.membership,month:0 msgid "September" -msgstr "" +msgstr "Září" #. module: membership #: model:ir.module.module,description:membership.module_meta_information @@ -365,11 +377,23 @@ msgid "" "invoice and send propositions for membership renewal.\n" " " msgstr "" +"\n" +"Tento modul vám umožňuje spravovat všechny operace pro správu členství.\n" +"Podporuje různé druhy členství:\n" +"* volné členství\n" +"* Přidružený člen (ex: skupinové zapsání pro členství pro všechnyl\n" +" pobočjy)\n" +"* Zaplacený člen,\n" +"* Speciální ceny členů, ...\n" +"\n" +"Je integrován s prodejem a účetnictvím, aby vám umožnil automaticky\n" +"fakturovat a odesílat návrhy pro obnovení členství.\n" +" " #. module: membership #: model:ir.model,name:membership.model_account_invoice_line msgid "Invoice Line" -msgstr "" +msgstr "Řádek faktury" #. module: membership #: help:membership.membership_line,state:0 @@ -388,74 +412,85 @@ msgid "" " -Paid Member: A member who has paid the membership " "amount." msgstr "" +"Označuje stav členství.\n" +" -Nečlen: Člen, který nepožádál o žádné členství.\n" +" -Zrušené členství: Člen, který má zrušené své " +"členství.\n" +" -Starý člen: Člen, kterému vypršelo členství.\n" +" -Čekající člen: Člen, který požádal o členství, a " +"kterému bude vytvořena faktura.\n" +" -Fakturovaný člen: Člen, kterému byla vytvořena " +"faktura.\n" +" -Placený člen: Člen, který zaplatil částku za " +"členství." #. module: membership #: view:report.membership:0 #: field:report.membership,month:0 msgid "Month" -msgstr "" +msgstr "Měsíc" #. module: membership #: view:product.product:0 msgid "Group by..." -msgstr "" +msgstr "Seskupit podle..." #. module: membership #: code:addons/membership/membership.py:411 #, python-format msgid "Partner is a free Member." -msgstr "" +msgstr "Partner je volný člen." #. module: membership #: model:product.pricelist,name:membership.list1m msgid "Member Sale Pricelist" -msgstr "" +msgstr "Prodejní ceník člena" #. module: membership #: field:report.membership,associate_member_id:0 #: view:res.partner:0 msgid "Associate Member" -msgstr "" +msgstr "Přiřadit člena" #. module: membership #: help:product.product,membership_date_from:0 #: help:res.partner,membership_start:0 msgid "Date from which membership becomes active." -msgstr "" +msgstr "Datum, od kterého se stává členství aktivním." #. module: membership #: view:report.membership:0 msgid "Associated Partner" -msgstr "" +msgstr "Přidruženého partnera" #. module: membership #: model:ir.model,name:membership.model_membership_invoice #: view:membership.invoice:0 msgid "Membership Invoice" -msgstr "" +msgstr "Členská faktura" #. module: membership #: view:report.membership:0 #: field:report.membership,user_id:0 #: view:res.partner:0 msgid "Salesman" -msgstr "" +msgstr "Obchodník" #. module: membership #: model:process.node,note:membership.process_node_membershipproduct0 msgid "Define membership product." -msgstr "" +msgstr "Určit výrobek členství." #. module: membership #: view:product.product:0 msgid "Category" -msgstr "" +msgstr "Kategorie" #. module: membership #: model:ir.model,name:membership.model_account_invoice #: field:membership.membership_line,account_invoice_id:0 msgid "Invoice" -msgstr "" +msgstr "Faktura" #. module: membership #: selection:membership.membership_line,state:0 @@ -467,70 +502,70 @@ msgstr "Volný člen" #. module: membership #: model:product.pricelist.version,name:membership.ver1m msgid "Member Sale Pricelist Version" -msgstr "" +msgstr "Verze prodejního ceníku člena" #. module: membership #: constraint:product.template:0 msgid "" "Error: The default UOM and the purchase UOM must be in the same category." -msgstr "" +msgstr "Chyba: Výchozí MJ a nákupní MJ musí být ve stejné kategorii." #. module: membership #: view:report.membership:0 msgid "Forecast" -msgstr "" +msgstr "Předpověď" #. module: membership #: field:report.membership,partner_id:0 msgid "Member" -msgstr "" +msgstr "Člen" #. module: membership #: constraint:res.partner:0 msgid "Error ! You can not create recursive associated members." -msgstr "" +msgstr "Chyba ! Nemůžete vytvořit rekurzivní asociované členy." #. module: membership #: view:product.product:0 msgid "Date From" -msgstr "" +msgstr "Datum od" #. module: membership #: model:process.node,name:membership.process_node_associatedmember0 msgid "Associated member" -msgstr "" +msgstr "Přiřazený člen" #. module: membership #: view:product.product:0 msgid "Accounting Info" -msgstr "" +msgstr "Účetní informace" #. module: membership #: field:res.partner,membership_cancel:0 msgid "Cancel membership date" -msgstr "" +msgstr "Datum zrušení členství" #. module: membership #: view:res.partner:0 msgid "Customers" -msgstr "" +msgstr "Zákazníci" #. module: membership #: selection:report.membership,month:0 msgid "August" -msgstr "" +msgstr "Srpen" #. module: membership #: model:ir.actions.act_window,name:membership.action_membership_products #: model:ir.ui.menu,name:membership.menu_membership_products #: view:product.product:0 msgid "Membership Products" -msgstr "" +msgstr "Výrobky členství" #. module: membership #: selection:report.membership,month:0 msgid "June" -msgstr "" +msgstr "Červen" #. module: membership #: model:ir.module.module,shortdesc:membership.module_meta_information @@ -542,145 +577,145 @@ msgstr "" #: view:res.partner:0 #: field:res.partner,member_lines:0 msgid "Membership" -msgstr "" +msgstr "Členství" #. module: membership #: selection:membership.membership_line,state:0 #: selection:report.membership,membership_state:0 #: selection:res.partner,membership_state:0 msgid "Invoiced Member" -msgstr "" +msgstr "Fakturovaný člen" #. module: membership #: help:membership.membership_line,date:0 msgid "Date on which member has joined the membership" -msgstr "" +msgstr "Datum, kdy se člen připojil k členství" #. module: membership #: selection:membership.membership_line,state:0 #: selection:report.membership,membership_state:0 #: selection:res.partner,membership_state:0 msgid "Waiting Member" -msgstr "" +msgstr "Čekající člen" #. module: membership #: model:process.transition,name:membership.process_transition_associationpartner0 msgid "Association Partner" -msgstr "" +msgstr "Přiřazený partner" #. module: membership #: selection:report.membership,month:0 msgid "November" -msgstr "" +msgstr "Listopad" #. module: membership #: view:product.product:0 msgid "Extended Filters..." -msgstr "" +msgstr "Rozšířené filtry..." #. module: membership #: field:membership.membership_line,state:0 msgid "Membership State" -msgstr "" +msgstr "Stav členství" #. module: membership #: selection:report.membership,month:0 msgid "October" -msgstr "" +msgstr "Říjen" #. module: membership #: view:product.product:0 msgid "Sale Description" -msgstr "" +msgstr "Popis prodeje" #. module: membership #: selection:report.membership,month:0 msgid "January" -msgstr "" +msgstr "Leden" #. module: membership #: view:product.product:0 msgid "Membership Fee" -msgstr "" +msgstr "Členský poplatek" #. module: membership #: field:res.partner,membership_amount:0 msgid "Membership amount" -msgstr "" +msgstr "Částka členství" #. module: membership #: help:res.partner,membership_amount:0 msgid "The price negotiated by the partner" -msgstr "" +msgstr "Cena vyjednaná partnerem" #. module: membership #: model:product.template,name:membership.membership_2_product_template msgid "Basic Membership" -msgstr "" +msgstr "Základní členství" #. module: membership #: help:product.product,membership:0 msgid "Select if a product is a membership product." -msgstr "" +msgstr "Vyberte, pokud výrobek je výrobek členství." #. module: membership #: selection:membership.membership_line,state:0 #: selection:report.membership,membership_state:0 #: selection:res.partner,membership_state:0 msgid "Old Member" -msgstr "" +msgstr "Starý člen" #. module: membership #: field:membership.membership_line,date_to:0 msgid "To" -msgstr "" +msgstr "Do" #. module: membership #: view:report.membership:0 #: field:report.membership,membership_state:0 #: field:res.partner,membership_state:0 msgid "Current Membership State" -msgstr "" +msgstr "Aktuální stav členství" #. module: membership #: view:report.membership:0 msgid "Last 365 Days" -msgstr "" +msgstr "Posledních 365 dní" #. module: membership #: view:product.product:0 msgid "General" -msgstr "" +msgstr "Obecný" #. module: membership #: model:process.transition,note:membership.process_transition_waitingtoinvoice0 msgid "Draft invoice is now open." -msgstr "" +msgstr "Koncept faktury je nyní otevřen." #. module: membership #: view:product.product:0 msgid "Inactive" -msgstr "" +msgstr "Neaktivní" #. module: membership #: view:report.membership:0 msgid "Last 30 Days" -msgstr "" +msgstr "Posledních 30 dní" #. module: membership #: selection:report.membership,month:0 msgid "December" -msgstr "" +msgstr "Prosinec" #. module: membership #: view:membership.invoice:0 msgid "Close" -msgstr "" +msgstr "Uzavřít" #. module: membership #: view:res.partner:0 msgid "All non Members" -msgstr "" +msgstr "Všichni nečlenové" #. module: membership #: view:product.product:0 @@ -690,17 +725,17 @@ msgstr "Informace" #. module: membership #: field:membership.membership_line,account_invoice_line:0 msgid "Account Invoice line" -msgstr "" +msgstr "Účetní řádek faktury" #. module: membership #: view:product.product:0 msgid "Categorization" -msgstr "" +msgstr "Členění" #. module: membership #: model:process.node,note:membership.process_node_waitingmember0 msgid "Draft invoice for membership." -msgstr "" +msgstr "Koncept faktury pro členství." #. module: membership #: field:membership.invoice,member_price:0 @@ -708,117 +743,117 @@ msgstr "" #: model:product.price.type,name:membership.product_price_type_memberprice #: field:product.template,member_price:0 msgid "Member Price" -msgstr "" +msgstr "Cena člena" #. module: membership #: view:product.product:0 msgid "Purchase Description" -msgstr "" +msgstr "Popis nákupu" #. module: membership #: model:ir.model,name:membership.model_product_product msgid "Product" -msgstr "" +msgstr "Výrobek" #. module: membership #: view:product.product:0 msgid "Description" -msgstr "" +msgstr "Popis" #. module: membership #: field:res.partner,free_member:0 msgid "Free member" -msgstr "" +msgstr "Volný člen" #. module: membership #: selection:report.membership,month:0 msgid "May" -msgstr "" +msgstr "Květen" #. module: membership #: model:product.template,name:membership.membership_1_product_template msgid "Silver Membership" -msgstr "" +msgstr "Stříbrné členství" #. module: membership #: view:product.product:0 msgid "Sale Taxes" -msgstr "" +msgstr "Prodejní daně" #. module: membership #: field:report.membership,date_to:0 #: view:res.partner:0 msgid "End Date" -msgstr "" +msgstr "Datum ukončení" #. module: membership #: selection:report.membership,month:0 msgid "February" -msgstr "" +msgstr "Únor" #. module: membership #: model:process.node,name:membership.process_node_invoicedmember0 msgid "Invoiced member" -msgstr "" +msgstr "Fakturovaný člen" #. module: membership #: selection:report.membership,month:0 msgid "April" -msgstr "" +msgstr "Duben" #. module: membership #: help:res.partner,membership_cancel:0 msgid "Date on which membership has been cancelled" -msgstr "" +msgstr "Datum, kdy bylo zrušeno členství" #. module: membership #: field:membership.membership_line,date_cancel:0 msgid "Cancel date" -msgstr "" +msgstr "Datum zrušení" #. module: membership #: model:process.node,name:membership.process_node_waitingmember0 msgid "Waiting member" -msgstr "" +msgstr "Čekající člen" #. module: membership #: field:report.membership,date_from:0 #: view:res.partner:0 msgid "Start Date" -msgstr "" +msgstr "Počáteční datum" #. module: membership #: model:process.node,name:membership.process_node_membershipproduct0 msgid "Membership product" -msgstr "" +msgstr "Výrobek členství" #. module: membership #: help:membership.membership_line,member_price:0 msgid "Amount for the membership" -msgstr "" +msgstr "Částka pro členství" #. module: membership #: selection:membership.membership_line,state:0 #: selection:report.membership,membership_state:0 #: selection:res.partner,membership_state:0 msgid "Cancelled Member" -msgstr "" +msgstr "Zrušený člen" #. module: membership #: constraint:product.product:0 msgid "Error: Invalid ean code" -msgstr "" +msgstr "Chyba: Neplatný kód ean" #. module: membership #: view:report.membership:0 #: field:report.membership,year:0 msgid "Year" -msgstr "" +msgstr "Rok" #. module: membership #: view:report.membership:0 msgid "Revenue Done" -msgstr "" +msgstr "Příjem proveden" #~ msgid "Configuration" #~ msgstr "Konfigurace" diff --git a/addons/portal/i18n/cs.po b/addons/portal/i18n/cs.po index ce070425f07..3be439be9b6 100644 --- a/addons/portal/i18n/cs.po +++ b/addons/portal/i18n/cs.po @@ -8,78 +8,80 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-07-04 14:16+0000\n" -"PO-Revision-Date: 2011-07-11 09:51+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Czech \n" +"PO-Revision-Date: 2011-11-25 13:27+0000\n" +"Last-Translator: Jiří Hajda \n" +"Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:57+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-26 05:50+0000\n" +"X-Generator: Launchpad (build 14381)\n" +"X-Poedit-Language: Czech\n" #. module: portal #: code:addons/portal/wizard/share_wizard.py:55 #, python-format msgid "Please select at least one user to share with" -msgstr "" +msgstr "Prosíme vyberte nejméně jednoho uživatele, s kterým chcete sdílet" #. module: portal #: code:addons/portal/wizard/share_wizard.py:59 #, python-format msgid "Please select at least one group to share with" -msgstr "" +msgstr "Prosíme vyberte nejméně jednu skupinu, s kterou chcete sdílet" #. module: portal #: field:res.portal,group_id:0 msgid "Group" -msgstr "" +msgstr "Skupina" #. module: portal #: help:res.portal,other_group_ids:0 msgid "Those groups are assigned to the portal's users" -msgstr "" +msgstr "Tyto skupiny jsou přiřazeny k uživatelům portálu" #. module: portal #: view:share.wizard:0 #: field:share.wizard,group_ids:0 msgid "Existing groups" -msgstr "" +msgstr "Existující skupiny" #. module: portal #: model:ir.model,name:portal.model_res_portal_wizard_user msgid "Portal User Config" -msgstr "" +msgstr "Nastavení uživatele portálu" #. module: portal #: view:res.portal.wizard.user:0 msgid "Portal User" -msgstr "" +msgstr "Uživatel portálu" #. module: portal #: help:res.portal,override_menu:0 msgid "Enable this option to override the Menu Action of portal users" -msgstr "" +msgstr "Povolte tuto volbu k přepsání Akcí nabídky uživatelů portálu" #. module: portal #: field:res.portal.wizard.user,user_email:0 msgid "E-mail" -msgstr "" +msgstr "E-mail" #. module: portal #: view:res.portal:0 msgid "Other Groups assigned to Users" -msgstr "" +msgstr "Jiné skupiny přiřazené uživatelům" #. module: portal #: constraint:res.users:0 msgid "The chosen company is not in the allowed companies for this user" msgstr "" +"Vybraná společnost není v povolených společnostech pro tohoto uživatele" #. module: portal #: view:res.portal:0 #: field:res.portal,widget_ids:0 msgid "Widgets" -msgstr "" +msgstr "Udělátka" #. module: portal #: model:ir.module.module,description:portal.module_meta_information @@ -99,71 +101,85 @@ msgid "" "module 'share'.\n" " " msgstr "" +"\n" +"Tento modul určuje 'portály' k přizpůsobení přístupu k vaší databázi " +"OpenERP\n" +"pro vnější uživatele.\n" +"\n" +"Portál určuje přizpůsobení nabídky uživatele a jeho přístupových práv pro " +"skupinu uživatelů\n" +"(těch přiřazených k portálu). Také přidružuje uživatelské skupiny k\n" +"uživatelům portálu (přidáním skupiny v portálu automaticky je přidáte k " +"uživatelům\n" +"portálu, atd.). Tato funkce je velmi užitečný v kombinaci s\n" +"modulem 'sdílení'.\n" +" " #. module: portal #: view:share.wizard:0 msgid "Who do you want to share with?" -msgstr "" +msgstr "S kým chcete sdílet?" #. module: portal #: view:res.portal.wizard:0 msgid "Send Invitations" -msgstr "" +msgstr "Poslat pozvání" #. module: portal #: help:res.portal,url:0 msgid "The url where portal users can connect to the server" -msgstr "" +msgstr "URL, kde uživatelé portálu se mohou připojit k serveru" #. module: portal #: field:res.portal.widget,widget_id:0 msgid "Widget" -msgstr "" +msgstr "Udělátko" #. module: portal #: help:res.portal.wizard,message:0 msgid "This text is included in the welcome email sent to the users" -msgstr "" +msgstr "Tento text je zahrnut v uvítacím emailu zaslatném uživatelům" #. module: portal #: help:res.portal,menu_action_id:0 msgid "If set, replaces the standard menu for the portal's users" msgstr "" +"Pokud je nastaveno, nahrazuje standardní nabídku pro uživatele portálu" #. module: portal #: field:res.portal,parent_menu_id:0 msgid "Parent Menu" -msgstr "" +msgstr "Nadřazené menu" #. module: portal #: view:res.portal:0 msgid "Portal Name" -msgstr "" +msgstr "Jméno portálu" #. module: portal #: view:res.portal.wizard.user:0 msgid "Portal Users" -msgstr "" +msgstr "Uživatelé portálu" #. module: portal #: field:res.portal,override_menu:0 msgid "Override Menu Action of Users" -msgstr "" +msgstr "Přepsat Akce nabídky pro uživatele" #. module: portal #: field:res.portal,menu_action_id:0 msgid "Menu Action" -msgstr "" +msgstr "Akce nabídky" #. module: portal #: field:res.portal.wizard.user,name:0 msgid "User Name" -msgstr "" +msgstr "Uživatelské jméno" #. module: portal #: model:ir.model,name:portal.model_res_portal_widget msgid "Portal Widgets" -msgstr "" +msgstr "Pomůcky portálu" #. module: portal #: model:ir.model,name:portal.model_res_portal @@ -172,47 +188,47 @@ msgstr "" #: field:res.portal.widget,portal_id:0 #: field:res.portal.wizard,portal_id:0 msgid "Portal" -msgstr "" +msgstr "Portál" #. module: portal #: code:addons/portal/wizard/portal_wizard.py:35 #, python-format msgid "Your OpenERP account at %(company)s" -msgstr "" +msgstr "Váš účet OpenERP v %(company)s" #. module: portal #: code:addons/portal/portal.py:110 #: code:addons/portal/portal.py:184 #, python-format msgid "%s Menu" -msgstr "" +msgstr "%s Nabídka" #. module: portal #: help:res.portal.wizard,portal_id:0 msgid "The portal in which new users must be added" -msgstr "" +msgstr "Portál, ve kterém musí být přidání noví uživatelé" #. module: portal #: help:res.portal,widget_ids:0 msgid "Widgets assigned to portal users" -msgstr "" +msgstr "Pomůcky přiřazené k těmto uživatelům portálu" #. module: portal #: code:addons/portal/wizard/portal_wizard.py:163 #, python-format msgid "(missing url)" -msgstr "" +msgstr "(chybějící url)" #. module: portal #: view:share.wizard:0 #: field:share.wizard,user_ids:0 msgid "Existing users" -msgstr "" +msgstr "Existující uživatelé" #. module: portal #: field:res.portal.wizard.user,wizard_id:0 msgid "Wizard" -msgstr "" +msgstr "Průvodce" #. module: portal #: help:res.portal.wizard.user,user_email:0 @@ -220,63 +236,66 @@ msgid "" "Will be used as user login. Also necessary to send the account information " "to new users" msgstr "" +"Bude použito jako přihlašovací jméno uživatele. Také je zapotřebí zaslat " +"informace účtu novým uživatelům" #. module: portal #: field:res.portal.wizard.user,lang:0 msgid "Language" -msgstr "" +msgstr "Jazyk" #. module: portal #: field:res.portal,url:0 msgid "URL" -msgstr "" +msgstr "URL" #. module: portal #: view:res.portal:0 msgid "Widgets assigned to Users" -msgstr "" +msgstr "Pomůcky přiřazené uživatelům" #. module: portal #: help:res.portal.wizard.user,lang:0 msgid "The language for the user's user interface" -msgstr "" +msgstr "Jazyk pro uživatelské rozhraní uživatelů" #. module: portal #: view:res.portal.wizard:0 msgid "Cancel" -msgstr "" +msgstr "Zrušit" #. module: portal #: view:res.portal:0 msgid "Website" -msgstr "" +msgstr "Webová stránka" #. module: portal #: view:res.portal:0 msgid "Create Parent Menu" -msgstr "" +msgstr "Vytvořit nadřazenou nabídku" #. module: portal #: view:res.portal.wizard:0 msgid "" "The following text will be included in the welcome email sent to users." msgstr "" +"Následující text bude zahrnut v uvítacím emailu zalsatném uživatelům." #. module: portal #: code:addons/portal/wizard/portal_wizard.py:135 #, python-format msgid "Email required" -msgstr "" +msgstr "Požadován email" #. module: portal #: model:ir.model,name:portal.model_res_users msgid "res.users" -msgstr "" +msgstr "res.users" #. module: portal #: constraint:res.portal.wizard.user:0 msgid "Invalid email address" -msgstr "" +msgstr "Neplatná emailová adresa" #. module: portal #: code:addons/portal/wizard/portal_wizard.py:136 @@ -284,28 +303,30 @@ msgstr "" msgid "" "You must have an email address in your User Preferences to send emails." msgstr "" +"Musíte mít emailovou adresu ve vašich uživatelských předvolbách pro zasílání " +"emailů." #. module: portal #: model:ir.model,name:portal.model_ir_ui_menu msgid "ir.ui.menu" -msgstr "" +msgstr "ir.ui.menu" #. module: portal #: help:res.portal,group_id:0 msgid "The group extended by this portal" -msgstr "" +msgstr "Skupina rozšířená tímto portálem" #. module: portal #: view:res.portal:0 #: view:res.portal.wizard:0 #: field:res.portal.wizard,user_ids:0 msgid "Users" -msgstr "" +msgstr "Uživatelé" #. module: portal #: field:res.portal,other_group_ids:0 msgid "Other User Groups" -msgstr "" +msgstr "Jiné skupiny uživatelů" #. module: portal #: model:ir.actions.act_window,name:portal.portal_list_action @@ -313,38 +334,38 @@ msgstr "" #: model:ir.ui.menu,name:portal.portal_menu #: view:res.portal:0 msgid "Portals" -msgstr "" +msgstr "Portály" #. module: portal #: help:res.portal,parent_menu_id:0 msgid "The menu action opens the submenus of this menu item" -msgstr "" +msgstr "Akce nabídky otevírající podnabídku této položky nabídky" #. module: portal #: field:res.portal.widget,sequence:0 msgid "Sequence" -msgstr "" +msgstr "Posloupnost" #. module: portal #: field:res.users,partner_id:0 msgid "Related Partner" -msgstr "" +msgstr "Vztažený partner" #. module: portal #: view:res.portal:0 msgid "Portal Menu" -msgstr "" +msgstr "Nabídka portálu" #. module: portal #: sql_constraint:res.users:0 msgid "You can not have two users with the same login !" -msgstr "" +msgstr "Nemůžete mít dva uživatele se stejným přihlašovacím jménem !" #. module: portal #: view:res.portal.wizard:0 #: field:res.portal.wizard,message:0 msgid "Invitation message" -msgstr "" +msgstr "Zpráva pozvánky" #. module: portal #: code:addons/portal/wizard/portal_wizard.py:36 @@ -365,28 +386,42 @@ msgid "" "OpenERP - Open Source Business Applications\n" "http://www.openerp.com\n" msgstr "" +"Vážený %(name)s,\n" +"\n" +"Byl vám vytvořen OpenERP účet na %(url)s.\n" +"\n" +"Váše přihlašovací údaje účtu jsou:\n" +"Databáze: %(db)s\n" +"Uživatel: %(login)s\n" +"Heslo: %(password)s\n" +"\n" +"%(message)s\n" +"\n" +"--\n" +"OpenERP - Open Source Business Applications\n" +"http://www.openerp.com\n" #. module: portal #: model:ir.model,name:portal.model_res_portal_wizard msgid "Portal Wizard" -msgstr "" +msgstr "Průvodce portálu" #. module: portal #: help:res.portal.wizard.user,name:0 msgid "The user's real name" -msgstr "" +msgstr "Skutečné jméno uživatele" #. module: portal #: model:ir.actions.act_window,name:portal.address_wizard_action #: model:ir.actions.act_window,name:portal.partner_wizard_action #: view:res.portal.wizard:0 msgid "Add Portal Access" -msgstr "" +msgstr "Přidat přístup portálu" #. module: portal #: field:res.portal.wizard.user,partner_id:0 msgid "Partner" -msgstr "" +msgstr "Partner" #. module: portal #: model:ir.actions.act_window,help:portal.portal_list_action @@ -398,8 +433,14 @@ msgid "" "the portal's users.\n" " " msgstr "" +"\n" +"Portál pomáhá stanovit určité pohledy a pravidla pro skupiny uživatelů\n" +"(skupinu protálu). Nabídka portálu, pomůcky a určité skupiny mohou být " +"přiřazeny k\n" +"uživatelům portálu.\n" +" " #. module: portal #: model:ir.model,name:portal.model_share_wizard msgid "Share Wizard" -msgstr "" +msgstr "Průvodce sdílením" diff --git a/addons/project_scrum/i18n/fr.po b/addons/project_scrum/i18n/fr.po index efac2950020..a4109b8e61e 100644 --- a/addons/project_scrum/i18n/fr.po +++ b/addons/project_scrum/i18n/fr.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2011-09-26 12:11+0000\n" -"Last-Translator: Numérigraphe \n" +"PO-Revision-Date: 2011-11-25 14:47+0000\n" +"Last-Translator: lholivier \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 04:57+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-26 05:49+0000\n" +"X-Generator: Launchpad (build 14381)\n" #. module: project_scrum #: help:project.scrum.email,scrum_master_email:0 @@ -976,6 +976,10 @@ msgid "" " \n" "I am sending you Daily Meeting Details of date %s for the Sprint %s\n" msgstr "" +"Bonjour %s,\n" +" \n" +"Je vous envoie les informations du rendez-vous quotidien du %s en vue du " +"\"sprint\" %s\n" #. module: project_scrum #: code:addons/project_scrum/project_scrum.py:325 diff --git a/addons/sale_crm/i18n/fr.po b/addons/sale_crm/i18n/fr.po index f61ff152f64..ce39c2219d5 100644 --- a/addons/sale_crm/i18n/fr.po +++ b/addons/sale_crm/i18n/fr.po @@ -7,15 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:16+0000\n" -"PO-Revision-Date: 2011-01-13 11:11+0000\n" -"Last-Translator: Maxime Chambreuil (http://www.savoirfairelinux.com) " -"\n" +"PO-Revision-Date: 2011-11-25 14:51+0000\n" +"Last-Translator: Numérigraphe \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:04+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-26 05:49+0000\n" +"X-Generator: Launchpad (build 14381)\n" #. module: sale_crm #: field:crm.make.sale,partner_id:0 @@ -31,7 +30,7 @@ msgstr "Convertir en devis" #: code:addons/sale_crm/wizard/crm_make_sale.py:108 #, python-format msgid "Opportunity '%s' is converted to Quotation." -msgstr "" +msgstr "L'opportunité '%s' a été convertie en devis." #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:89 From 80dc65aeea74a1e5a0cf6b40bcfeaa73681a40d2 Mon Sep 17 00:00:00 2001 From: Guewen Baconnier <> Date: Mon, 28 Nov 2011 10:39:38 +0530 Subject: [PATCH 405/892] [FIX] account : Create Monthly Periods : unique key violation on Opening Periods lp bug: https://launchpad.net/bugs/894707 fixed bzr revid: mdi@tinyerp.com-20111128050938-5e2vizusnvq8zbth --- addons/account/account.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/account/account.py b/addons/account/account.py index 8aa1569520e..f766b5871a8 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -880,7 +880,7 @@ class account_fiscalyear(osv.osv): for fy in self.browse(cr, uid, ids, context=context): ds = datetime.strptime(fy.date_start, '%Y-%m-%d') period_obj.create(cr, uid, { - 'name': _('Opening Period'), + 'name': "%s %s" % (_('Opening Period'), ds.strftime('%Y')), 'code': ds.strftime('00/%Y'), 'date_start': ds, 'date_stop': ds, From 2275d445f95fcd7c11fbe59e94bc2f5c1feaf2f8 Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Mon, 28 Nov 2011 10:43:22 +0530 Subject: [PATCH 406/892] [IMP] improve test case process of Job position bzr revid: jap@tinyerp.com-20111128051322-7bweo3pdz1u0g1fi --- addons/hr/test/open2recruit2close_job.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/hr/test/open2recruit2close_job.yml b/addons/hr/test/open2recruit2close_job.yml index f199160d9fc..7647f525146 100644 --- a/addons/hr/test/open2recruit2close_job.yml +++ b/addons/hr/test/open2recruit2close_job.yml @@ -1,14 +1,14 @@ - - In Order to test process of Job Position, + I test the process of Job position in hr module of OpenERP, - - I open Job Postion for "Jr. Application Engineer" + I open Job Postion for "Jr. Application Engineer". - !python {model: hr.job}: | self.job_open(cr, uid, [ref('job_jr_appli')]) - I check state of Job Position after opening it. - - !assert {model: hr.job, id: job_jr_appli}: + !assert {model: hr.job, id: job_jr_appli, string: Job position is in 'open' state and no_of_recruitment = 0}: - state == 'open' - no_of_recruitment == 0 - @@ -19,7 +19,7 @@ - I check 'state' and number of 'Expected in Recruitment' after initiating the recruitment - - !assert {model: hr.job, id: job_jr_appli}: + !assert {model: hr.job, id: job_jr_appli, string: Job position is in 'recruit' state and no_of_recruitment = 1.0}: - state == 'recruit' - no_of_recruitment == 1.0 - @@ -33,8 +33,8 @@ !python {model: hr.job}: | self.job_old(cr, uid, [ref('job_jr_appli')]) - - I check state of Job position and number of Expected in Recruitment after closed Job position. + I check 'state' and number of 'Expected in Recruitment' after closing the Job position. - - !assert {model: hr.job, id: job_jr_appli}: + !assert {model: hr.job, id: job_jr_appli, string: Job position is in 'old' state and no_of_recruitment = 0}: - state == 'old' - no_of_recruitment == 0 \ No newline at end of file From 4b072366b2d0b1be4bb6fb429a19105e057295ed Mon Sep 17 00:00:00 2001 From: "Hemendra Paregi (Open ERP)" Date: Mon, 28 Nov 2011 10:50:04 +0530 Subject: [PATCH 407/892] [IMP]project_gtd: improvement in yml bzr revid: hpa@tinyerp.com-20111128052004-cv0w7uty6d99cehh --- addons/project_gtd/__openerp__.py | 3 +- addons/project_gtd/test/gtd_test.yml | 78 ------------------- .../test/{timebox.yml => task_timebox.yml} | 0 3 files changed, 1 insertion(+), 80 deletions(-) delete mode 100644 addons/project_gtd/test/gtd_test.yml rename addons/project_gtd/test/{timebox.yml => task_timebox.yml} (100%) diff --git a/addons/project_gtd/__openerp__.py b/addons/project_gtd/__openerp__.py index 42ac8513f37..82e3f4fcb39 100644 --- a/addons/project_gtd/__openerp__.py +++ b/addons/project_gtd/__openerp__.py @@ -57,8 +57,7 @@ performing those tasks. ], 'demo_xml': ['project_gtd_demo.xml'], 'test':[ - #'test/gtd_test.yml', - 'test/timebox.yml' + 'test/task_timebox.yml' ], 'installable': True, 'active': False, diff --git a/addons/project_gtd/test/gtd_test.yml b/addons/project_gtd/test/gtd_test.yml deleted file mode 100644 index 0583bc7e8e0..00000000000 --- a/addons/project_gtd/test/gtd_test.yml +++ /dev/null @@ -1,78 +0,0 @@ -- - Create a task 'Develop time management module' with weekly timebox -- - !record {model: project.task, id: project_task_developtimemanagementmodule0}: - name: Develop time management module - planned_hours: 15.0 - project_id: project.project_project_22 - remaining_hours: 15.0 - state: draft - timebox_id: project_gtd.timebox_weekly - - -- - Open the task -- - !python {model: project.task}: | - self.do_open(cr, uid, [ref("project_task_developtimemanagementmodule0")], {"lang": - "en_US", "project_id": False, "tz": False, "active_model": "ir.ui.menu", - "department_id": False, "section_id": False, "search_default_project_id": - False, "search_default_user_id": 1, "search_default_current": 1, "active_ids": - [ref("project.menu_action_view_task")], "active_id": ref("project.menu_action_view_task"), - }) - -- - Create time box for next week -- - !record {model: project.gtd.timebox, id: project_gtd_timebox_nextweek0}: - name: Next Week - sequence: 0.0 - -- - Create time box for tomorrow -- - !record {model: project.gtd.timebox, id: project_gtd_timebox_tomorrow1}: - name: Tomorrow - sequence: 0.0 - -- - Planify the task from weekly timebox to tomorrow timebox -- - !record {model: project.timebox.fill.plan, id: project_timebox_fill_plan_0}: - task_ids: - - project_task_developtimemanagementmodule0 - timebox_id: project_gtd.timebox_weekly - timebox_to_id: project_gtd_timebox_tomorrow1 - - -- - Set the task to tomorrow timebox -- - !python {model: project.timebox.fill.plan}: | - self.process(cr, uid, [ref("project_timebox_fill_plan_0")], {"lang": "en_US", - "project_id": False, "tz": False, "active_model": "project.gtd.timebox", - "department_id": False, "section_id": False, "record_id": 1, "active_ids": - [ref("project_gtd.timebox_daily")], "active_id": ref("project_gtd.timebox_daily"), - }) - -- - Check if task set to tomorrow timebox -- - !assert {model: project.task, id: project_task_developtimemanagementmodule0, string: Task set to tomorrow timebox}: - - timebox_id.id == ref("project_gtd_timebox_tomorrow1") - -- - Empty Timebox for tomorrow -- - !python {model: project.timebox.empty}: | - self._empty(cr, uid, {"lang": "en_US", - "project_id": False, "tz": False, "active_model": "project.gtd.timebox", - "department_id": False, "section_id": False, "record_id": 1, "active_ids": - [ref("project_gtd_timebox_tomorrow1")], "active_id": ref("project_gtd_timebox_tomorrow1"), - }) - -- - Check task 'Develop time management module' is no more in tomorrow timebox -- - !assert {model: project.task, id: project_task_developtimemanagementmodule0, string: Task is not in tomorrow timebox}: - - timebox_id.id != ref("project_gtd_timebox_tomorrow1") diff --git a/addons/project_gtd/test/timebox.yml b/addons/project_gtd/test/task_timebox.yml similarity index 100% rename from addons/project_gtd/test/timebox.yml rename to addons/project_gtd/test/task_timebox.yml From a0f45aedd5c1cd529325bb525f04434d94d12e78 Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Mon, 28 Nov 2011 11:16:05 +0530 Subject: [PATCH 408/892] [REVIEW] HR: testing cases of Human Resource Management bzr revid: hmo@tinyerp.com-20111128054605-8wb7xpf3fn9ntiea --- addons/hr/__openerp__.py | 2 +- addons/hr/test/hr_demo.yml | 10 ++++++++++ addons/hr/test/hr_employee_demo.yml | 21 --------------------- addons/hr/test/open2recruit2close_job.yml | 6 ++---- 4 files changed, 13 insertions(+), 26 deletions(-) create mode 100644 addons/hr/test/hr_demo.yml delete mode 100644 addons/hr/test/hr_employee_demo.yml diff --git a/addons/hr/__openerp__.py b/addons/hr/__openerp__.py index c1a75cbb7f5..4c99d0d5231 100644 --- a/addons/hr/__openerp__.py +++ b/addons/hr/__openerp__.py @@ -55,8 +55,8 @@ You can manage: 'hr_department_demo.xml', ], 'test': [ - 'test/hr_employee_demo.yml', 'test/open2recruit2close_job.yml', + 'test/hr_demo.yml', ], 'installable': True, 'active': False, diff --git a/addons/hr/test/hr_demo.yml b/addons/hr/test/hr_demo.yml new file mode 100644 index 00000000000..6dee06d5eb3 --- /dev/null +++ b/addons/hr/test/hr_demo.yml @@ -0,0 +1,10 @@ +- + !record {model: hr.job, id: job_jr_appli, view: False}: + no_of_employee: 0.0 + no_of_recruitment: 5.0 +- + !record {model: hr.employee, id: employee1, view: False}: + address_id: base.main_address + company_id: base.main_company + department_id: dep_technical + user_id: base.user_demo diff --git a/addons/hr/test/hr_employee_demo.yml b/addons/hr/test/hr_employee_demo.yml deleted file mode 100644 index 846747e9a25..00000000000 --- a/addons/hr/test/hr_employee_demo.yml +++ /dev/null @@ -1,21 +0,0 @@ -- - !record {model: hr.department, id: dep_technical, view: False}: - manager_id: base.user_root - name: 'R & D' -- - !record {model: hr.job, id: job_jr_appli, view: False}: - department_id: 'dep_technical' - description: 'Position of Junior Application Engineer' - expected_employees: 5.0 - name: 'JAE' - no_of_employee: 0.0 - no_of_recruitment: 5.0 - state: open -- - !record {model: hr.employee, id: employee1, view: False}: - address_id: base.main_address - company_id: base.main_company - department_id: dep_technical - name: smith - parent_id: hr.employee1 - user_id: base.user_demo \ No newline at end of file diff --git a/addons/hr/test/open2recruit2close_job.yml b/addons/hr/test/open2recruit2close_job.yml index 7647f525146..0e618f87a3d 100644 --- a/addons/hr/test/open2recruit2close_job.yml +++ b/addons/hr/test/open2recruit2close_job.yml @@ -1,8 +1,6 @@ - - I test the process of Job position in hr module of OpenERP, + In order to test the process of Human Resource Management, I open Job Postion for "Jr. Application Engineer". - - I open Job Postion for "Jr. Application Engineer". -- !python {model: hr.job}: | self.job_open(cr, uid, [ref('job_jr_appli')]) - @@ -37,4 +35,4 @@ - !assert {model: hr.job, id: job_jr_appli, string: Job position is in 'old' state and no_of_recruitment = 0}: - state == 'old' - - no_of_recruitment == 0 \ No newline at end of file + - no_of_recruitment == 0 From 14dd6ec79008c48eb61c8eb15c30d803ef07d757 Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Mon, 28 Nov 2011 11:39:21 +0530 Subject: [PATCH 409/892] [FIX] hr_recruitment: remove non-exits fields in demo file bzr revid: hmo@tinyerp.com-20111128060921-4v61dzokconpnzl0 --- addons/hr_recruitment/hr_recruitment_demo.xml | 37 ------------------- 1 file changed, 37 deletions(-) diff --git a/addons/hr_recruitment/hr_recruitment_demo.xml b/addons/hr_recruitment/hr_recruitment_demo.xml index 0fc2c94f034..f3790f3a43f 100644 --- a/addons/hr_recruitment/hr_recruitment_demo.xml +++ b/addons/hr_recruitment/hr_recruitment_demo.xml @@ -4,22 +4,17 @@ - - - - - @@ -33,44 +28,32 @@ - - - - - - - - - - - - @@ -78,36 +61,28 @@ - - - - - - - - @@ -121,14 +96,10 @@ - - - - @@ -141,14 +112,10 @@ - - - - @@ -157,18 +124,14 @@ - - - - From c7363ab6a2fe17b2df3486ec251d16f5a628d607 Mon Sep 17 00:00:00 2001 From: "DBR (OpenERP)" Date: Mon, 28 Nov 2011 11:43:07 +0530 Subject: [PATCH 410/892] [IMP]purchase_requisition: Improve the test case's statements bzr revid: dbr@tinyerp.com-20111128061307-8c7452lyvsin0qcn --- .../test/process/cancel_purchase_requisition.yml | 14 ++++++++++---- .../test/process/purchase_requisition.yml | 9 +++------ .../process/purchase_requisition_exclusive.yml | 12 ++++++++---- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/addons/purchase_requisition/test/process/cancel_purchase_requisition.yml b/addons/purchase_requisition/test/process/cancel_purchase_requisition.yml index eeae4689fbc..b065dfcff08 100644 --- a/addons/purchase_requisition/test/process/cancel_purchase_requisition.yml +++ b/addons/purchase_requisition/test/process/cancel_purchase_requisition.yml @@ -1,7 +1,7 @@ - - In order to test the cancel purchase requisition order. + In order to test the cancel flow of purchase requisition order. - - I try to cancel purchase requisition order. + I cancel the "New" purchase requisition order. - !python {model: purchase.requisition}: | self.tender_cancel(cr, uid, [ref("order_purchase_requisition1")]) @@ -10,6 +10,11 @@ - !assert {model: purchase.requisition, id: order_purchase_requisition1}: - state == 'cancel' +- + I reset the state of requisition as "New". +- + !python {model: purchase.requisition}: | + self.tender_reset(cr, uid, ref('order_purchase_requisition1')) - I change state of requisition in "In progress". - @@ -51,7 +56,7 @@ !assert {model: purchase.requisition, id: order_purchase_requisition1}: - state == 'done' - - I try to cancel 'Done' purchase requisition order. + I try to cancel "Done" purchase requisition order. - !python {model: purchase.requisition}: | self.tender_cancel(cr, uid, [ref("order_purchase_requisition1")]) @@ -64,4 +69,5 @@ I reset the state of requisition as "New". - !python {model: purchase.requisition}: | - self.tender_reset(cr, uid, ref('order_purchase_requisition1')) + self.tender_reset(cr, uid, ref('order_purchase_requisition1')) + diff --git a/addons/purchase_requisition/test/process/purchase_requisition.yml b/addons/purchase_requisition/test/process/purchase_requisition.yml index 3be7e2a9ea9..d1c6fe8eb84 100644 --- a/addons/purchase_requisition/test/process/purchase_requisition.yml +++ b/addons/purchase_requisition/test/process/purchase_requisition.yml @@ -1,18 +1,15 @@ - - In order to test the purchase requisition module, I have to checked a boolean field 'purchase requisition' in product, - If I checked it then it's requisition will be create. + In order to test the purchase requisition module, I have to checked product's boolean field 'purchase requisition'. - I start by Checking the product, Product must have requisition field checked. - and Product supply method is buy and the procure method is make to order. - !record {model: product.product, id: product.product_product_hdd3}: - supply_method: 'buy' purchase_requisition: True - - I create the procurement order for the product and after run that procurement for create purchase requisition. + I create the product's procurement order and run that procurement. + After Run the procurement I check created purchase requisition [Tender]. - !python {model: product.product}: | - import time import netsvc mk_proc = self.pool.get('make.procurement') proc_order = self.pool.get('procurement.order') diff --git a/addons/purchase_requisition/test/process/purchase_requisition_exclusive.yml b/addons/purchase_requisition/test/process/purchase_requisition_exclusive.yml index 8a9116de0d3..e5f7f61a5fd 100644 --- a/addons/purchase_requisition/test/process/purchase_requisition_exclusive.yml +++ b/addons/purchase_requisition/test/process/purchase_requisition_exclusive.yml @@ -1,17 +1,21 @@ - - In order to test the exclusive type requisition, I have to create two differ purchase order in one requisition [Tender] + In order to test the exclusive type requisition, I have to create two differ purchase order of one requisition [Tender] - - I start by Checking the product, Product must have requisition field checked. + I select purchase requisition of '[CPU1] Processor AMD Athlon XP 1800+' and '[CPU3] Processor AMD Athlon XP 2200+'. + So, those products must have requisition field checked. +- + I start by Checking requisition field for '[CPU1] Processor AMD Athlon XP 1800+' product. - !record {model: product.product, id: product.product_product_cpu1}: purchase_requisition: True - - Checking requisition field for another product. + Checked requisition field for '[CPU3] Processor AMD Athlon XP 2200+' product. - !record {model: product.product, id: product.product_product_cpu3}: purchase_requisition: True - - Now check that purchase order's product must have requisition field checked. + I search the purchase orders which have exclusive purchase requisition 'TE00001' and confirm any one of them. + Then check the remaining purchase orders goes in to cancel state. - !python {model: purchase.order}: | import netsvc From 3cba14171c02bdf818ce2b02be2049dbd509fe0e Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Mon, 28 Nov 2011 11:52:47 +0530 Subject: [PATCH 411/892] [IMP] hr_recruitment: improve yml test process to check attachment in email after getting bzr revid: hmo@tinyerp.com-20111128062247-ztxmc9zdrdzy57yp --- addons/hr_recruitment/test/recruitment_process.yml | 8 +++++--- addons/hr_recruitment/test/resume.eml | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/addons/hr_recruitment/test/recruitment_process.yml b/addons/hr_recruitment/test/recruitment_process.yml index 64e8ab687a8..33232ab0f2f 100644 --- a/addons/hr_recruitment/test/recruitment_process.yml +++ b/addons/hr_recruitment/test/recruitment_process.yml @@ -15,8 +15,10 @@ applicant_ids = self.search(cr, uid, [('email_from','=', 'Mr. Richard Anderson ')]) assert applicant_ids, "Applicant is not created after getting the mail" applicant = self.browse(cr, uid, applicant_ids[0], context=context) - assert applicant.name == "Application for the post of Jr.application Programmer", "Subject does not match" + resume_ids = self.pool.get('ir.attachment').search(cr, uid, [('datas_fname','=','resume.doc'),('res_model','=',self._name),('res_id','=',applicant.id)]) + assert applicant.name == "Application for the post of Jr.application Programmer.", "Subject does not match" assert applicant.state == "draft" + assert len(resume_ids), "Resume does not attached." - I assign the Job position to the applicant - @@ -54,7 +56,7 @@ !python {model: hr.applicant}: | self.action_print_survey(cr, uid, [ref('hr_case_programmer')]) - - On a successful meeting with the applicant, I hired employee. + On a successful interview with the applicant, I hired employee. - !python {model: hr.applicant}: | self.case_close(cr, uid, [ref('hr_case_programmer')]) @@ -62,4 +64,4 @@ I check that applicant is "Hired". - !assert {model: hr.applicant, id: hr_case_programmer}: - - state == 'done' \ No newline at end of file + - state == 'done' diff --git a/addons/hr_recruitment/test/resume.eml b/addons/hr_recruitment/test/resume.eml index 9529873a49c..00cc5620563 100644 --- a/addons/hr_recruitment/test/resume.eml +++ b/addons/hr_recruitment/test/resume.eml @@ -24,11 +24,11 @@ X-YMail-OSG: 09Al2uQVM1n5JcQepgua6wQsww7jiatAHXaSsMjP5Qvk9Ba LLM1_BE.EOvXdW38ZC_hHcrM4xYaYSR7c0WaOQsR8EZeXk_Vhio7HHUrdxZl 1oZz7YWK9Q04M023JJoM4v6IrThy3BNepluEFFcavkyOnCw-- X-Yahoo-SMTP: oNtzSBqswBAqJIGYOgyGesyleENrhUEtEgBkQ053 -Received: from [192.168.1.30] (jagdish.n_panchal@180.211.100.2 with plain) +Received: from [192.168.1.30] (test@180.211.100.2 with plain) by smtp205.mail.ne1.yahoo.com with SMTP; 18 Nov 2011 01:26:47 -0800 PST Message-ID: <4EC624C7.6020000@yahoo.in> Date: Fri, 18 Nov 2011 14:56:31 +0530 -From: Richard Anderson +From: Mr. Richard Anderson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110424 Thunderbird/3.1.10 MIME-Version: 1.0 To: hr@mycompany.com From b281d832197aaa73edc6ffd986c5a81ef723d6fa Mon Sep 17 00:00:00 2001 From: "DBR (OpenERP)" Date: Mon, 28 Nov 2011 11:54:22 +0530 Subject: [PATCH 412/892] [IMP,REMOVE]purchase_requisition: Remove onchange_events.yml Improve the requisition2request_quotation.yml and __openerp__.py bzr revid: dbr@tinyerp.com-20111128062422-1l7jopbjkwajc3dc --- addons/purchase_requisition/__openerp__.py | 1 - .../test/ui/onchange_events.yml | 28 ------------------- .../test/ui/requisiton2request_quotation.yml | 6 ++-- 3 files changed, 3 insertions(+), 32 deletions(-) delete mode 100644 addons/purchase_requisition/test/ui/onchange_events.yml diff --git a/addons/purchase_requisition/__openerp__.py b/addons/purchase_requisition/__openerp__.py index 426e8a770fc..67c916aefae 100644 --- a/addons/purchase_requisition/__openerp__.py +++ b/addons/purchase_requisition/__openerp__.py @@ -48,7 +48,6 @@ This new object will regroup and will allow you to easily keep track and order a 'test/process/purchase_requisition_exclusive.yml', 'test/ui/requisiton2request_quotation.yml', 'test/process/cancel_purchase_requisition.yml', - 'test/ui/onchange_events.yml', 'test/ui/purchase_requisition_report.yml', 'test/ui/delete_requisition.yml', ], diff --git a/addons/purchase_requisition/test/ui/onchange_events.yml b/addons/purchase_requisition/test/ui/onchange_events.yml deleted file mode 100644 index 901c50ca1c9..00000000000 --- a/addons/purchase_requisition/test/ui/onchange_events.yml +++ /dev/null @@ -1,28 +0,0 @@ -- - In order to test the onchange events of purchase requisition. -- - I call onchange event to change the product of purchase requisition line. -- - !python {model: purchase.requisition.line}: | - self.onchange_product_id(cr, uid, [ref('order_purchase_requisition1')],ref('product.product_product_hdd2'), ref('product.product_uom_unit')) -- - I change state of requisition in "In progress". -- - !python {model: purchase.requisition}: | - self.tender_in_progress(cr, uid, ref('order_purchase_requisition1')) -- - I change state of requisition as "done". -- - !python {model: purchase.requisition}: | - self.tender_done(cr, uid, ref('order_purchase_requisition1')) -- - I reset the state of requisition as "New". -- - !python {model: purchase.requisition}: | - self.tender_reset(cr, uid, ref('order_purchase_requisition1')) -- - I call onchange event to change the partner of purchase requisition. -- - !python {model: purchase.requisition.partner}: | - self.onchange_partner_id(cr, uid, ref('order_purchase_requisition1'), ref('base.res_partner_desertic_hispafuentes')) - diff --git a/addons/purchase_requisition/test/ui/requisiton2request_quotation.yml b/addons/purchase_requisition/test/ui/requisiton2request_quotation.yml index 6c0ce5eee0a..722ab6df591 100644 --- a/addons/purchase_requisition/test/ui/requisiton2request_quotation.yml +++ b/addons/purchase_requisition/test/ui/requisiton2request_quotation.yml @@ -5,13 +5,13 @@ partner_address_id: base.res_partner_address_3000 partner_id: base.res_partner_desertic_hispafuentes - - I click on 'Create Quotation' for creating PO. + I click on 'Create Quotation' for creating a Quatation. - !python {model: purchase.requisition.partner}: | self.create_order(cr, uid, [ref("purchase_requisition_partner_0")], {"active_model": "purchase.requisition", "active_ids": [ref("order_purchase_requisition1")],"active_id": ref("order_purchase_requisition1"), }) - - I check that the purchase order is created. + I check that the purchase order created. - !python {model: purchase.order}: | purchase_ids= self.search(cr, uid, [('requisition_id','=',ref("order_purchase_requisition1"))]) @@ -20,4 +20,4 @@ assert rfq.state == 'draft',"Purchase Order should be in draft state" assert rfq.partner_address_id.id == ref('base.res_partner_address_3000'),"Purchase Order Partner address is not correspond" assert rfq.partner_id.id == ref('base.res_partner_desertic_hispafuentes'),"Purchase Order Partner is not correspond" - + From 9c582e04e7b00d0f022f853e6228df2c642e4b7f Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Mon, 28 Nov 2011 12:03:18 +0530 Subject: [PATCH 413/892] [REF] hr_recruitment: refector code of case_close_with_rmp of hr_recruitment bzr revid: hmo@tinyerp.com-20111128063318-02c90onrf005yo9t --- addons/hr_recruitment/hr_recruitment.py | 47 +++++++------------ .../test/recruitment_process.yml | 2 +- 2 files changed, 17 insertions(+), 32 deletions(-) diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index 931600fef9f..60657e9ff85 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -403,14 +403,6 @@ class hr_applicant(crm.crm_case, osv.osv): return res def case_close(self, cr, uid, ids, *args): - """ - @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 case's Ids - @param *args: Give Tuple Value - """ - employee_obj = self.pool.get('hr.employee') res = super(hr_applicant, self).case_close(cr, uid, ids, *args) for (id, name) in self.name_get(cr, uid, ids): message = _("Applicant '%s' is being hired.") % name @@ -418,29 +410,22 @@ class hr_applicant(crm.crm_case, osv.osv): return res def case_close_with_emp(self, cr, uid, ids, *args): - """ - @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 case's Ids - @param *args: Give Tuple Value - """ - employee_obj = self.pool.get('hr.employee') - partner_obj = self.pool.get('res.partner') - address_id = False - applicant = self.browse(cr, uid, ids)[0] - if applicant.partner_id: - address_id = partner_obj.address_get(cr, uid, [applicant.partner_id.id], ['contact'])['contact'] - if applicant.job_id: - self.pool.get('hr.job').write(cr, uid, [applicant.job_id.id], {'no_of_recruitment': applicant.job_id.no_of_recruitment - 1}) - emp_id = employee_obj.create(cr,uid,{'name': applicant.partner_name or applicant.name, - 'job_id': applicant.job_id.id, - 'address_home_id': address_id, - 'department_id': applicant.department_id.id - }) - else: - raise osv.except_osv(_('Warning!'),_('You must define Applied Job for Applicant !')) - return self.case_close(cr, uid, ids, *args) + hr_employee = self.pool.get('hr.employee') + for applicant in self.browse(cr, uid, ids): + address_id = False + if applicant.partner_id: + address_id = applicant.partner_id.address_get(['contact'])['contact'] + if applicant.job_id: + applicant.job_id.write({'no_of_recruitment': applicant.job_id.no_of_recruitment - 1}) + emp_id = hr_employee.create(cr,uid,{'name': applicant.partner_name or applicant.name, + 'job_id': applicant.job_id.id, + 'address_home_id': address_id, + 'department_id': applicant.department_id.id + }) + self.case_close(cr, uid, [applicant.id], *args) + else: + raise osv.except_osv(_('Warning!'),_('You must define Applied Job for Applicant !')) + return True def case_reset(self, cr, uid, ids, *args): """Resets case as draft diff --git a/addons/hr_recruitment/test/recruitment_process.yml b/addons/hr_recruitment/test/recruitment_process.yml index 33232ab0f2f..43575137a6e 100644 --- a/addons/hr_recruitment/test/recruitment_process.yml +++ b/addons/hr_recruitment/test/recruitment_process.yml @@ -59,7 +59,7 @@ On a successful interview with the applicant, I hired employee. - !python {model: hr.applicant}: | - self.case_close(cr, uid, [ref('hr_case_programmer')]) + self.case_close_with_emp(cr, uid, [ref('hr_case_programmer')]) - I check that applicant is "Hired". - From 5e0a6fe7d762619af497aa7fdd0411aaf670bf2d Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Mon, 28 Nov 2011 12:27:18 +0530 Subject: [PATCH 414/892] [FIX] crm, crm_partner_assing: Fixed : [crm, crm_partner_assign installed] and i try to reinstall crm module and generate lead record from yml Its generated traceback: Error Cannot find field partner_assigned_id in the following view parts composing the view of object model crm.lead bzr revid: ron@tinyerp.com-20111128065718-qqtju7r8cxizdagq --- addons/crm/crm_lead_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index fad7859fee5..82be78a5728 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -444,7 +444,7 @@ Opportunities crm.lead form - 10 + 20
From 42a7b9f9a6e28352412817acd1fba728b7340d6d Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Mon, 28 Nov 2011 12:35:29 +0530 Subject: [PATCH 415/892] [IMP] crm, crm_claim: Removed commented lines from __openerp__.py bzr revid: ron@tinyerp.com-20111128070529-eizoo3f93d0qrfob --- addons/crm/__openerp__.py | 2 +- addons/crm_claim/__openerp__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/crm/__openerp__.py b/addons/crm/__openerp__.py index acba8d3c510..a98a0cbc6a4 100644 --- a/addons/crm/__openerp__.py +++ b/addons/crm/__openerp__.py @@ -123,7 +123,7 @@ Creates a dashboard for CRM that includes: 'test/process/merge_opportunity.yml', 'test/process/cancel_lead.yml', 'test/process/segmentation.yml', - 'test/ui/crm_demo.yml', #TODO : After installing crm_partner_assign view error + 'test/ui/crm_demo.yml', 'test/ui/duplicate_lead.yml', 'test/ui/delete_lead.yml' ], diff --git a/addons/crm_claim/__openerp__.py b/addons/crm_claim/__openerp__.py index 217bec232c1..8c3854ffd2e 100644 --- a/addons/crm_claim/__openerp__.py +++ b/addons/crm_claim/__openerp__.py @@ -49,7 +49,7 @@ automatically new claims based on incoming emails. 'crm_claim_demo.xml', ], 'test': ['test/process/claim.yml', - 'test/ui/claim_demo.yml'#TODO : After installing crm_partner_assign view error + 'test/ui/claim_demo.yml' ], 'installable': True, 'active': False, From 54d2f76703983cf2ed11e260723f606d9a4234fb Mon Sep 17 00:00:00 2001 From: "DBR (OpenERP)" Date: Mon, 28 Nov 2011 12:39:51 +0530 Subject: [PATCH 416/892] [REMOVE]purchase_requisition: remove duplicate_requisition.yml bzr revid: dbr@tinyerp.com-20111128070951-1pogxrrc3921tv24 --- .../test/ui/duplicate_requisition.yml | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 addons/purchase_requisition/test/ui/duplicate_requisition.yml diff --git a/addons/purchase_requisition/test/ui/duplicate_requisition.yml b/addons/purchase_requisition/test/ui/duplicate_requisition.yml deleted file mode 100644 index 742500d865d..00000000000 --- a/addons/purchase_requisition/test/ui/duplicate_requisition.yml +++ /dev/null @@ -1,8 +0,0 @@ -- - In order to test the duplicate order and check duplicate details. -- - I duplicate order. -- - !python {model: purchase.requisition}: | - context.update({'active_id':ref('order_purchase_requisition1')}) - self.copy(cr, uid, ref('order_purchase_requisition1'), context) From 5f2c5a43222a1cfe63621c77a738f8f536f8ce06 Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Mon, 28 Nov 2011 13:36:57 +0530 Subject: [PATCH 417/892] [IMP] hr_expense: YML test cases of expenses process bzr revid: hmo@tinyerp.com-20111128080657-tevdtnx70fbdnpbn --- addons/hr_expense/__openerp__.py | 2 +- addons/hr_expense/hr_expense.py | 1 + addons/hr_expense/hr_expense_data.xml | 14 +-- addons/hr_expense/hr_expense_demo.xml | 94 ++++++++----------- .../hr_expense/test/confirm2heldinvoiced.yml | 71 -------------- addons/hr_expense/test/expense_process.yml | 46 +++++++++ 6 files changed, 86 insertions(+), 142 deletions(-) delete mode 100644 addons/hr_expense/test/confirm2heldinvoiced.yml create mode 100644 addons/hr_expense/test/expense_process.yml diff --git a/addons/hr_expense/__openerp__.py b/addons/hr_expense/__openerp__.py index 7d11b0912bc..f2ae82662fd 100644 --- a/addons/hr_expense/__openerp__.py +++ b/addons/hr_expense/__openerp__.py @@ -63,7 +63,7 @@ re-invoice your customer's expenses if your work by project. 'hr_expense_demo.xml', ], 'test': [ - 'test/confirm2heldinvoiced.yml', + 'test/expense_process.yml', ], 'installable': True, 'active': False, diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py index 478b8120935..572da086e8d 100644 --- a/addons/hr_expense/hr_expense.py +++ b/addons/hr_expense/hr_expense.py @@ -87,6 +87,7 @@ class hr_expense_expense(osv.osv): \nIf the admin accepts it, the state is \'Accepted\'.\n If an invoice is made for the expense request, the state is \'Invoiced\'.\n If the expense is paid to user, the state is \'Reimbursed\'.'), } _defaults = { + 'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'hr.employee', context=c), 'date': lambda *a: time.strftime('%Y-%m-%d'), 'state': 'draft', 'employee_id': _employee_get, diff --git a/addons/hr_expense/hr_expense_data.xml b/addons/hr_expense/hr_expense_data.xml index 9660dbb2543..0e940c74cc0 100644 --- a/addons/hr_expense/hr_expense_data.xml +++ b/addons/hr_expense/hr_expense_data.xml @@ -8,18 +8,6 @@ Expenses - - - 0.32 - 0.32 - - - consu - Travel Expenses - TRA - - - - \ No newline at end of file + diff --git a/addons/hr_expense/hr_expense_demo.xml b/addons/hr_expense/hr_expense_demo.xml index 80c9cd66694..7e079b21e14 100644 --- a/addons/hr_expense/hr_expense_demo.xml +++ b/addons/hr_expense/hr_expense_demo.xml @@ -1,96 +1,76 @@ - + - - 1.0 - 1.0 - - + + + + + + 0.32 + service + Car Travel Expenses + CarTRA + + + + + + 700.0 service Air Ticket AT - + - - 1.0 - 1.0 - - + + 400.0 service Hotel Accommodation HA0 - + - - - - - May Expenses - - - draft + + + September Expenses + - + Travel by Air - + - - + + - - Basic PC - Server for Seagate - - - - - - - - - - - - - - - - - Travel Expenses - - - draft - - - + Hotel Expenses - Thymbra - + - - + + - + Bruxelles - Paris - + - - + + + diff --git a/addons/hr_expense/test/confirm2heldinvoiced.yml b/addons/hr_expense/test/confirm2heldinvoiced.yml deleted file mode 100644 index 5574317de0d..00000000000 --- a/addons/hr_expense/test/confirm2heldinvoiced.yml +++ /dev/null @@ -1,71 +0,0 @@ -- - In Order to test process of Employee Expenses. -- - I create this expense. -- - !workflow {model: hr.expense.expense, action: confirm, ref: hr_expense_expense_septemberexpenses0} -- - I change the state of expense. -- - !python {model: hr.expense.expense}: | - self.expense_confirm(cr, uid, [ref('hr_expense_expense_septemberexpenses0')]) -- - I check the the expense is created or not -- - !assert {model: hr.expense.expense, id: hr_expense_expense_septemberexpenses0}: - - state == 'confirm' -- - I accept this expense. -- - !workflow {model: hr.expense.expense, action: validate, ref: hr_expense_expense_septemberexpenses0} -- - I assign home address to employee. -- - !record {model: hr.employee, id: hr.employee1}: - address_home_id: base.res_partner_address_1 - address_id: base.main_address -- - I create the Invoiced for the expense. -- - !python {model: hr.expense.expense}: | - self.invoice(cr, uid, [ref('hr_expense_expense_septemberexpenses0')]) - -- - I check that expense is "Invoiced". -- - !assert {model: hr.expense.expense, id: hr_expense_expense_septemberexpenses0}: - - state == 'invoiced' -- - I check that Invoice is created for the expense. -- - !python {model: hr.expense.expense}: | - exp = self.browse(cr, uid, [ref('hr_expense_expense_septemberexpenses0')])[0] - assert exp.invoice_id, "Invoice should be created" -- - I paid the expense -- - !python {model: hr.expense.expense}: | - self.expense_paid(cr, uid, [ref('hr_expense_expense_septemberexpenses0')]) -- - I check the expense is paid. -- - !assert {model: hr.expense.expense, id: hr_expense_expense_septemberexpenses0}: - - state == 'paid' -- - I cancel the expense -- - !python {model: hr.expense.expense}: | - self.expense_canceled(cr, uid, [ref('hr_expense_expense_septemberexpenses0')]) -- - I check the expense is cancel. -- - !assert {model: hr.expense.expense, id: hr_expense_expense_septemberexpenses0}: - - state == 'cancelled' -- - we will print a PDF report defined on a HR Expense. -- - !python {model: hr.expense.expense}: | - import netsvc, tools, os - (data, format) = netsvc.LocalService('report.hr.expense').create(cr, uid, [ref('hr_expense.hr_expense_expense_septemberexpenses0'),ref('hr_expense.hr_expense_expense_septemberexpenses1')], {}, {}) - if tools.config['test_report_directory']: - file(os.path.join(tools.config['test_report_directory'], 'hr_expense-report.'+format), 'wb+').write(data) \ No newline at end of file diff --git a/addons/hr_expense/test/expense_process.yml b/addons/hr_expense/test/expense_process.yml new file mode 100644 index 00000000000..6db6f4d0204 --- /dev/null +++ b/addons/hr_expense/test/expense_process.yml @@ -0,0 +1,46 @@ +- + In Order to test process of "Employee Expenses". +- + I confirm "Expense Bill of September" of one employee of Marketing Department. +- + !workflow {model: hr.expense.expense, action: confirm, ref: sep_expenses} +- + I check state of expense after confirmed +- + !assert {model: hr.expense.expense, id: sep_expenses}: + - state == 'confirm' +- + I accept this expense. +- + !workflow {model: hr.expense.expense, action: validate, ref: sep_expenses} +- + I make Invoice for the expense. +- + !python {model: hr.expense.expense}: | + self.invoice(cr, uid, [ref('sep_expenses')]) + +- + I check invoice details after invoiced. +- + !python {model: hr.expense.expense}: | + sep_expenses = self.browse(cr, uid, ref("sep_expenses"), context=context) + assert sep_expenses.state == 'invoiced', "Expense should be in 'Invoiced' state." + assert sep_expenses.invoice_id, "Expense should have link of Invoice." +- + I paid the expense +- + !python {model: hr.expense.expense}: | + self.expense_paid(cr, uid, [ref('sep_expenses')]) +- + I check the expense after paid. +- + !assert {model: hr.expense.expense, id: sep_expenses}: + - state == 'paid' +- + I print this expense +- + !python {model: hr.expense.expense}: | + import netsvc, tools, os + (data, format) = netsvc.LocalService('report.hr.expense').create(cr, uid, [ref('hr_expense.sep_expenses')], {}, {}) + if tools.config['test_report_directory']: + file(os.path.join(tools.config['test_report_directory'], 'hr_expense-report.'+format), 'wb+').write(data) From 4a39d126a1198e482c56cffb7e5d54e1ea848708 Mon Sep 17 00:00:00 2001 From: "Khushboo Bhatt (Open ERP)" Date: Mon, 28 Nov 2011 14:34:36 +0530 Subject: [PATCH 418/892] [IMP]project:impove test case yml for project management. bzr revid: kbh@tinyerp.com-20111128090436-5v6yd7ytbbch5b93 --- addons/project/__openerp__.py | 6 +- .../project/test/process/cancel_project.yml | 40 ++++++++++ addons/project/test/process/cancel_task.yml | 35 +++++++++ .../process/draft2delegate2open2done_task.yml | 76 +++++++++++++++++++ .../test/process/template2project2close.yml | 61 +++++++++++++++ 5 files changed, 216 insertions(+), 2 deletions(-) create mode 100644 addons/project/test/process/cancel_project.yml create mode 100644 addons/project/test/process/cancel_task.yml create mode 100644 addons/project/test/process/draft2delegate2open2done_task.yml create mode 100644 addons/project/test/process/template2project2close.yml diff --git a/addons/project/__openerp__.py b/addons/project/__openerp__.py index 9132636b56f..1c1b8fea4f8 100644 --- a/addons/project/__openerp__.py +++ b/addons/project/__openerp__.py @@ -61,8 +61,10 @@ Dashboard for project members that includes: 'project_demo.xml', ], 'test':[ - 'test/test_project.yml', - 'test/test_project_delegation.yml', + 'test/process/draft2delegate2open2done_task.yml', + 'test/process/template2project2close.yml', + 'test/process/cancel_project.yml', + 'test/process/cancel_task.yml', ], 'installable': True, 'active': False, diff --git a/addons/project/test/process/cancel_project.yml b/addons/project/test/process/cancel_project.yml new file mode 100644 index 00000000000..db5ba8ff0b7 --- /dev/null +++ b/addons/project/test/process/cancel_project.yml @@ -0,0 +1,40 @@ +- + I cancel unqualified Project. +- + !python {model: project.project}: | + self.set_cancel(cr, uid, [ref("project_task_1")]) +- + I cancel Project in to Draft. +- + !python {model: project.project}: | + self.set_cancel(cr, uid, [ref("project_task_1")]) +- + I cancel pending Project. +- + !python {model: project.project}: | + self.set_cancel(cr, uid, [ref("project_task_1")]) +- + I cancel opened Project. +- + !python {model: project.project}: | + self.set_cancel(cr, uid, [ref("project_task_1")]) +- + I cancel delegated Project. +- + !python {model: project.project}: | + self.set_cancel(cr, uid, [ref("project_task_1")]) +- + I cancel done Project. +- + !python {model: project.project}: | + self.set_cancel(cr, uid, [ref("project_task_1")]) +- + I cancel close Project. +- + !python {model: project.project}: | + self.set_cancel(cr, uid, [ref("project_task_1")]) +- + I reset canclled Project into Draft. +- + !python {model: project.project}: | + self.set_cancel(cr, uid, [ref("project_task_1")]) \ No newline at end of file diff --git a/addons/project/test/process/cancel_task.yml b/addons/project/test/process/cancel_task.yml new file mode 100644 index 00000000000..618db25b22d --- /dev/null +++ b/addons/project/test/process/cancel_task.yml @@ -0,0 +1,35 @@ +- + I cancel unqualified Task. +- + !python {model: project.task}: | + self.do_cancel(cr, uid, [ref("project_task_1")]) +- + I cancel Task in to Draft. +- + !python {model: project.task}: | + self.do_cancel(cr, uid, [ref("project_task_1")]) +- + I cancel pending Task. +- + !python {model: project.task}: | + self.do_cancel(cr, uid, [ref("project_task_1")]) +- + I cancel opened Task. +- + !python {model: project.task}: | + self.do_cancel(cr, uid, [ref("project_task_1")]) +- + I cancel done Task. +- + !python {model: project.task}: | + self.do_cancel(cr, uid, [ref("project_task_1")]) +- + I cancel close Task. +- + !python {model: project.task}: | + self.do_cancel(cr, uid, [ref("project_task_1")]) +- + I reset canclled Task into Draft. +- + !python {model: project.task}: | + self.do_cancel(cr, uid, [ref("project_task_1")]) \ No newline at end of file diff --git a/addons/project/test/process/draft2delegate2open2done_task.yml b/addons/project/test/process/draft2delegate2open2done_task.yml new file mode 100644 index 00000000000..544d95c326e --- /dev/null +++ b/addons/project/test/process/draft2delegate2open2done_task.yml @@ -0,0 +1,76 @@ +- + In order to test process of Project Task, +- + I put task in pending due to specification is not clear. +- + !python {model: project.task}: | + self.do_pending(cr, uid, [ref("project_task_1")]) +- + I Check state of task after put in pending. +- + !assert {model: project.task, id: project_task_1, severity: error, string: task should be in pending state}: + - state == "pending" +- + Now I delegate task to team member. +- + !python {model: project.task.delegate}: | + new_id = self.create(cr,uid,{'planned_hours': 1.0, 'user_id': 3, + 'name': 'demo task', 'state': 'pending', 'prefix': 'CHECK: demo task', + 'planned_hours_me': 1.0, 'new_task_description': 'this is demo.'}) + self.delegate(cr, uid, [new_id], {"active_id": ref("project_task_1")}) +- + I check delegated task details. +- + !assert {model: project.task.delegate, id: project_task_1, severity: error, string: Task should be pending state}: + + - planned_hours == 0.0 + - name == 'a' + - state == "pending" +- + I check new task after delegated task. +- + !record {model: project.task, id: project_task_delegate }: + name: test + planned_hours: 30.0 + project_id: project_task_1 + remaining_hours: 30.0 + description: testing of delegated task + state: draft +- + Now I Delegate task to these tasks and make it pending +- + !record {model: project.task, id: project_task_1 }: + child_ids: + - project.project_task_delegate + planned_hours: 20.0 + state: pending +- + I Re-open the task +- + !python {model: project.task}: | + self.do_reopen(cr, uid, [ref("project_task_1")]) +- + + I check reopened task details. +- + !assert {model: project.task, id: project_task_1, severity: error, string: task should be open.}: + - state == "open" +- + I reevaluate task with remaining hours. +- + + I Check remaining hours after reevaluated task. +- + !assert {model: project.task.reevaluate, id: project_task_1, severity: error, string: task should be reevaluated}: + - remaining_hours == 1.0 +- + I close the task. +- + !python {model: project.task}: | + self.do_close(cr, uid, [ref("project_task_1")]) +- + I Check state after closed. +- + !assert {model: project.task, id: project_task_1, severity: error, string: task is in open state}: + - state == "done" +- diff --git a/addons/project/test/process/template2project2close.yml b/addons/project/test/process/template2project2close.yml new file mode 100644 index 00000000000..a4c7da0a9b5 --- /dev/null +++ b/addons/project/test/process/template2project2close.yml @@ -0,0 +1,61 @@ +- + In order to Test Process of Project Management, +- + I create duplicate template +- + !python {model: project.project}: | + new_project = self.duplicate_template(cr, uid, [ref("project_integrate_openerp")]) + if not new_project: + raise Exception( "New project based on template not created") + new_id = new_project['res_id'] + new_project = self.read(cr, uid, [new_id], ['name', 'state'])[0] + state = new_project['state'] + name = new_project['name'] + assert state == 'open', "Project in %s state. Project created from template project must be in open state"%state +- + I convert template into real Project. +- + !python {model: project.project}: | + self.reset_project(cr, uid, [ref("project_integrate_openerp")]) +- + I check project details after convert from template. +- + !assert {model: project.project, id: project_integrate_openerp, severity: error, string: Project should be active}: + - state == "open" + +- + I put project in pending +- + !python {model: project.project}: | + self.set_pending(cr, uid, [ref("project_integrate_openerp")]) +- + I Check state after put in pending. +- + !assert {model: project.project, id: project_integrate_openerp, severity: error, string: Project should be in pending state}: + - state == "pending" +- + I Re-open the project. +- + !python {model: project.project}: | + self.set_open(cr, uid, [ref("project_integrate_openerp")]) +- + I Check state after reopen. +- + !assert {model: project.project, id: project_integrate_openerp, severity: error, string: Project should be open.}: + - state == "open" +- + I close the project. +- + !python {model: project.project}: | + self.set_done(cr, uid, [ref("project_integrate_openerp")]) +- + I Check state after closed. +- + !assert {model: project.project, id: project_integrate_openerp, severity: error, string: Project should be close.}: + - state == "close" +- + I set project into template. +- + !python {model: project.project}: | + self.set_template(cr, uid, [ref("project_integrate_openerp")]) +- From dfbfaf6d1d4ba397e2261e90eed1f4aa84499fd1 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Mon, 28 Nov 2011 14:41:58 +0530 Subject: [PATCH 419/892] [IMP] event: Added copy of event registration in duplicate_event.yml bzr revid: ron@tinyerp.com-20111128091158-lm8j37ej39oz7xu0 --- addons/event/test/ui/duplicate_event.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/addons/event/test/ui/duplicate_event.yml b/addons/event/test/ui/duplicate_event.yml index 03be9a3d06d..c1287353c67 100644 --- a/addons/event/test/ui/duplicate_event.yml +++ b/addons/event/test/ui/duplicate_event.yml @@ -4,5 +4,13 @@ !python {model: event.event}: | try: self.copy(cr, uid, ref("event_2")) + except: + pass +- + Copy of event registarion. +- + !python {model: event.registration}: | + try: + self.copy(cr, uid, ref("reg_1_1")) except: pass \ No newline at end of file From 718fa1d0523ff0ba1a07b74cb1d675866408012a Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Mon, 28 Nov 2011 14:55:47 +0530 Subject: [PATCH 420/892] [IMP] project_scrum: rename file with proper name, change string of test change bzr revid: hmo@tinyerp.com-20111128092547-yr2t7elicvtmj1ld --- addons/project_scrum/__openerp__.py | 5 ++--- ...t2open2close_backlog.yml => backlog_process.yml} | 10 ++++------ addons/project_scrum/test/cancel_backlog.yml | 12 +++++------- addons/project_scrum/test/project_scrum_report.yml | 9 --------- ...aft2open2close_sprint.yml => sprint_process.yml} | 13 ++++++++++--- 5 files changed, 21 insertions(+), 28 deletions(-) rename addons/project_scrum/test/{draft2open2close_backlog.yml => backlog_process.yml} (85%) delete mode 100644 addons/project_scrum/test/project_scrum_report.yml rename addons/project_scrum/test/{draft2open2close_sprint.yml => sprint_process.yml} (84%) diff --git a/addons/project_scrum/__openerp__.py b/addons/project_scrum/__openerp__.py index affe67f0658..d4aa99196b0 100644 --- a/addons/project_scrum/__openerp__.py +++ b/addons/project_scrum/__openerp__.py @@ -65,11 +65,10 @@ More information on the methodology: "board_project_scrum_view.xml", ], 'demo_xml': ['project_scrum_demo.xml'], - 'test': ['test/draft2open2close_backlog.yml', - 'test/draft2open2close_sprint.yml', + 'test': ['test/backlog_process.yml', + 'test/sprint_process.yml', 'test/cancel_backlog.yml', 'test/project_scrum_demo.yml', - 'test/project_scrum_report.yml', ], 'installable': True, 'active': False, diff --git a/addons/project_scrum/test/draft2open2close_backlog.yml b/addons/project_scrum/test/backlog_process.yml similarity index 85% rename from addons/project_scrum/test/draft2open2close_backlog.yml rename to addons/project_scrum/test/backlog_process.yml index 29b6a528abc..08a0d52ed0a 100644 --- a/addons/project_scrum/test/draft2open2close_backlog.yml +++ b/addons/project_scrum/test/backlog_process.yml @@ -1,5 +1,5 @@ - - In Order to Test process of Backlog, + In Order to Test process of Project Agile Methology, - I put Backlog in pending state because of specification is not ready. - @@ -21,7 +21,7 @@ !assert {model: project.scrum.product.backlog, id: scrum_product_backlog_0, severity: error, string: Backlog should be in open state}: - state == "open" - - I close Backlog after review + I close Backlog after review. - !python {model: project.scrum.product.backlog}: | self.button_close(cr, uid, [ref("scrum_product_backlog_0")]) @@ -31,11 +31,9 @@ !assert {model: project.scrum.product.backlog, id: scrum_product_backlog_0, severity: error, string: Backlog should be in close state}: - state == "done" - - I merge two Backlogs in to one Backlog -- - First check If only one product backlog selected and If any of the backlog state is done Then not allow merge.then do merge + I merge two Backlogs in to one Backlog. - !python {model: project.scrum.backlog.merge}: | self.check_backlogs(cr, uid, [ref("scrum_product_backlog_1"),ref("scrum_product_backlog_2")], {"active_ids": [ref("scrum_product_backlog_1"),ref("scrum_product_backlog_2")], "active_id": ref("scrum_product_backlog_1") - }) \ No newline at end of file + }) diff --git a/addons/project_scrum/test/cancel_backlog.yml b/addons/project_scrum/test/cancel_backlog.yml index 5d954972140..0ab8dedec26 100644 --- a/addons/project_scrum/test/cancel_backlog.yml +++ b/addons/project_scrum/test/cancel_backlog.yml @@ -1,5 +1,3 @@ -- - In Order to Test process of Backlog cancellation, - I cancel Backlog "Automatic migration system" from draft state. - @@ -11,7 +9,7 @@ !assert {model: project.scrum.product.backlog, id: scrum_product_backlog_0, severity: error, string: backlog should be in cancel state}: - state == "cancel" - - I cancel Backlog "Editable Trees" from open state. + I cancel opened Backlog "Editable Trees". - !python {model: project.scrum.product.backlog}: | self.button_cancel(cr, uid, [ref("scrum_product_backlog_7")]) @@ -21,7 +19,7 @@ !assert {model: project.scrum.product.backlog, id: scrum_product_backlog_7, severity: error, string: backlog should be in cancel state}: - state == "cancel" - - I put Backlog in pending state because of resource unavailability. + I put Backlog in pending due to resource unavailability. - !python {model: project.scrum.product.backlog}: | self.button_pending(cr, uid, [ref("scrum_product_backlog_0")]) @@ -31,7 +29,7 @@ !assert {model: project.scrum.product.backlog, id: scrum_product_backlog_0, severity: error, string: Backlog should be in pending state}: - state == "pending" - - I cancel Backlog "Automatic migration system" from pending state. + I cancel pending Backlog "Automatic migration system". - !python {model: project.scrum.product.backlog}: | self.button_cancel(cr, uid, [ref("scrum_product_backlog_0")]) @@ -41,7 +39,7 @@ !assert {model: project.scrum.product.backlog, id: scrum_product_backlog_0, severity: error, string: backlog should be in cancel state}: - state == "cancel" - - I Postpone Backlog "Reshape the complete menu" from open state. + I Postpone opened Backlog "Reshape the complete menu". - !python {model: project.scrum.product.backlog}: | self.button_postpone(cr, uid, [ref("scrum_product_backlog_6")]) @@ -49,4 +47,4 @@ I check state of Backlog after Postpone. - !assert {model: project.scrum.product.backlog, id: scrum_product_backlog_6, severity: error, string: backlog should be in cancel state}: - - state == "cancel" \ No newline at end of file + - state == "cancel" diff --git a/addons/project_scrum/test/project_scrum_report.yml b/addons/project_scrum/test/project_scrum_report.yml deleted file mode 100644 index 7fb3e9c07fc..00000000000 --- a/addons/project_scrum/test/project_scrum_report.yml +++ /dev/null @@ -1,9 +0,0 @@ -- - In order to test the PDF reports defined on a Project Scrum, we will print Project Scrum Sprint Burndown Report -- - !python {model: project.scrum.sprint}: | - import netsvc, tools, os - data_dict = {'model': 'project.scrum.sprint', 'id':ref('project_scrum.scrum_sprint_0')} - (data, format) = netsvc.LocalService('report.scrum.sprint.burndown').create(cr, uid, [ref('project_scrum.scrum_sprint_0')], data_dict, {}) - if tools.config['test_report_directory']: - file(os.path.join(tools.config['test_report_directory'], 'project_scrum-project_scrum_sprint_burndown.'+format), 'wb+').write(data) \ No newline at end of file diff --git a/addons/project_scrum/test/draft2open2close_sprint.yml b/addons/project_scrum/test/sprint_process.yml similarity index 84% rename from addons/project_scrum/test/draft2open2close_sprint.yml rename to addons/project_scrum/test/sprint_process.yml index aa9bc170115..dc7e4f46666 100644 --- a/addons/project_scrum/test/draft2open2close_sprint.yml +++ b/addons/project_scrum/test/sprint_process.yml @@ -1,5 +1,3 @@ -- - In Order to Test process of Sprint, - I put sprint in pending state to allocate task to resources. - @@ -68,4 +66,13 @@ I check state after closed sprint. - !assert {model: project.scrum.sprint, id: scrum_sprint_0, severity: error, string: Sprint shoud be in close state}: - - state == "done" \ No newline at end of file + - state == "done" +- + I print Burndown chart of Sprint. +- + !python {model: project.scrum.sprint}: | + import netsvc, tools, os + data_dict = {'model': 'project.scrum.sprint', 'id':ref('scrum_sprint_0')} + (data, format) = netsvc.LocalService('report.scrum.sprint.burndown').create(cr, uid, [ref('scrum_sprint_0')], data_dict, {}) + if tools.config['test_report_directory']: + file(os.path.join(tools.config['test_report_directory'], 'project_scrum-project_scrum_sprint_burndown.'+format), 'wb+').write(data) From be3f9fa4362d095d6d5268f46e433c7bcbf5b2e3 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Mon, 28 Nov 2011 15:07:23 +0530 Subject: [PATCH 421/892] [IMP] clean YML and added draft2open2close_phase.yml bzr revid: tpa@tinyerp.com-20111128093723-8cny1olo2wcnitxt --- addons/project_long_term/__openerp__.py | 7 +- .../project_long_term_demo.xml | 6 +- .../test/draft2open2close_phase.yml | 40 +++ .../test/phase_constraint.yml | 118 --------- .../test/project_schedule_consecutive_day.yml | 127 --------- .../project_schedule_without_wroking_hour.yml | 76 ------ .../test/schedule_project_phases.yml | 221 ++++------------ .../test/schedule_project_tasks.yml | 93 ++----- .../test/test_schedule_phases_case1.yml | 76 ------ .../test/test_schedule_phases_case2.yml | 193 -------------- .../test/test_schedule_tasks_case1.yml | 246 ------------------ 11 files changed, 112 insertions(+), 1091 deletions(-) create mode 100644 addons/project_long_term/test/draft2open2close_phase.yml delete mode 100644 addons/project_long_term/test/phase_constraint.yml delete mode 100644 addons/project_long_term/test/project_schedule_consecutive_day.yml delete mode 100644 addons/project_long_term/test/project_schedule_without_wroking_hour.yml delete mode 100644 addons/project_long_term/test/test_schedule_phases_case1.yml delete mode 100644 addons/project_long_term/test/test_schedule_phases_case2.yml delete mode 100644 addons/project_long_term/test/test_schedule_tasks_case1.yml diff --git a/addons/project_long_term/__openerp__.py b/addons/project_long_term/__openerp__.py index 31522d63ea2..f4dd4637f0f 100644 --- a/addons/project_long_term/__openerp__.py +++ b/addons/project_long_term/__openerp__.py @@ -43,14 +43,9 @@ Features "init_xml": [], "demo_xml": ["project_long_term_demo.xml"], "test": [ - 'test/test_schedule_phases_case1.yml', 'test/schedule_project_phases.yml', 'test/schedule_project_tasks.yml', - 'test/test_schedule_phases_case2.yml', - 'test/project_schedule_consecutive_day.yml', - 'test/project_schedule_without_wroking_hour.yml', - 'test/phase_constraint.yml', - 'test/test_schedule_tasks_case1.yml', + 'test/draft2open2close_phase.yml', ], "update_xml": [ "security/ir.model.access.csv", diff --git a/addons/project_long_term/project_long_term_demo.xml b/addons/project_long_term/project_long_term_demo.xml index fe3f8c8e510..ac15249499e 100644 --- a/addons/project_long_term/project_long_term_demo.xml +++ b/addons/project_long_term/project_long_term_demo.xml @@ -37,9 +37,9 @@ - + - + Development and Integration @@ -60,7 +60,7 @@ Deployement and Training - + 10 diff --git a/addons/project_long_term/test/draft2open2close_phase.yml b/addons/project_long_term/test/draft2open2close_phase.yml new file mode 100644 index 00000000000..610ccb8180a --- /dev/null +++ b/addons/project_long_term/test/draft2open2close_phase.yml @@ -0,0 +1,40 @@ +- + I make "Collect Requirement and Make SRS" in open state. +- + !python {model: project.phase}: | + self.set_open(cr, uid, [ref("project_phase_1")]) +- + I check state of phase after put in open. +- + !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in open state}: + - state == "open" +- + I make Phase in pending state because of resource problem. +- + !python {model: project.phase}: | + self.set_pending(cr, uid, [ref("project_phase_1")]) +- + I check state of phase after put in pending. +- + !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in pending state}: + - state == "pending" +- + I make Phase in cancel state. +- + !python {model: project.phase}: | + self.set_cancel(cr, uid, [ref("project_phase_1")]) +- + I check state of phase after put in cancel. +- + !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in cancel state}: + - state == "cancelled" +- + I make Phase "Design Model" in done state. +- + !python {model: project.phase}: | + self.set_done(cr, uid, [ref("project_phase_2")]) +- + I check state of phase after put in done. +- + !assert {model: project.phase, id: project_phase_2, severity: error, string: Phase should be in done state}: + - state == "done" \ No newline at end of file diff --git a/addons/project_long_term/test/phase_constraint.yml b/addons/project_long_term/test/phase_constraint.yml deleted file mode 100644 index f4fa09e6e38..00000000000 --- a/addons/project_long_term/test/phase_constraint.yml +++ /dev/null @@ -1,118 +0,0 @@ -- - Given that I have a project 'Test Phases'. -- - !record {model: project.project, id: project_project_developyamlproject0}: - name: "Develop Yaml Project Module" - date_start: !eval time.strftime('%Y-%m-%d') - resource_calendar_id: resource.timesheet_group1 - members: - - base.user_admin -- - And I create three human ressources to work on this project, an analyst. -- - !record {model: resource.resource, id: resource_resource_analyst1}: - calendar_id: resource.timesheet_group1 - name: Analyst - resource_type: user - time_efficiency: 1.0 - user_id: base.user_admin -- - I define a developer HR. -- - !record {model: resource.resource, id: resource_resource_develop0}: - calendar_id: resource.timesheet_group1 - name: Developer - resource_type: user - time_efficiency: 1.0 - user_id: base.user_admin -- - I define a tester HR. -- - !record {model: resource.resource, id: resource_resource_tester1}: - calendar_id: resource.timesheet_group1 - name: tester - resource_type: user - time_efficiency: 1.0 - user_id: base.user_admin -- - Then I create three phases for my projects; Analysis, Development, Testing. -- - The first phase is 'Analysis' and has a duration of 6 days. -- - !record {model: project.phase, id: project_phase_analysisflowforyaml0}: - date_start: !eval time.strftime('%Y-%m-%d') - duration: 6.0 - name: "Analysis" - product_uom: product.uom_day - project_id: project_project_developyamlproject0 - state: draft - -- - I update the constrain and the analysis phase to not start before 4 days. -- - !python {model : project.phase }: | - pass - import datetime - from dateutil.relativedelta import * - start = datetime.date.today() + relativedelta(days=4) - self.write(cr,uid, [(ref("project_phase_analysisflowforyaml0"))], {'constraint_date_start': start}) -- - The second phase is 'Development' and depend on the 'Analysis', with a duration of 6 days. -- - !record {model: project.phase, id: project_phase_developyaml0}: - duration: 6.0 - name: Development - product_uom: product.uom_day - project_id: project_project_developyamlproject0 - previous_phase_ids: - - project_phase_analysisflowforyaml0 - -- - I update the Constrain Date Start adn Date End for phase Develop yaml -- - !python {model : project.phase }: | - pass - import datetime - #from dateutil.relativedelta import * - #start = datetime.date.today() - relativedelta(days=5) - #end = datetime.date.today() + relativedelta(days=10) - #self.write(cr,uid, [(ref("project_phase_developyaml0"))], {'constraint_date_start': start, 'constraint_date_end':end}) -- - The third phase is 'Testing' and depend on the 'Develop' phase, with a duration of 6 days. -- - !record {model: project.phase, id: project_phase_testyaml0}: - duration: 6.0 - name: Testing - product_uom: product.uom_day - project_id: project_project_developyamlproject0 - previous_phase_ids: - - project_phase_developyaml0 -- - Then I launch the scheduler to compute starting and ending phases on all phases of this project. -- - !record {model: project.compute.phases, id: project_compute_phases_0}: - project_id: project_project_developyamlproject0 - target_project: one -- - !python {model: project.project}: | - self.schedule_phases(cr, uid, [ref("project_project_developyamlproject0")]) -- - After scheduling, I check the starting date and ending date on the phases are correct. -- - !python {model: project.phase}: | - import datetime - from dateutil.relativedelta import * - minstart = (datetime.date.today() + relativedelta(days=4)).strftime('%Y-%m-%d') - minend = (datetime.date.today() + relativedelta(days=11)).strftime('%Y-%m-%d') - - phase1=self.browse(cr, uid, ref('project_phase_analysisflowforyaml0')) - assert phase1.date_start>=minstart, 'Error, the Analysis phase '+phase1.date_start+' should start after '+str(minstart) - assert phase1.date_end>=minend, 'Error, the Analysis phase should end after '+str(minend) - - phase2=self.browse(cr, uid, ref('project_phase_developyaml0')) - assert phase2.date_start>=phase1.date_end, 'Error, the phase Development should start after the end of the Analysis phase' - - phase3=self.browse(cr, uid, ref('project_phase_testyaml0')) - assert phase3.date_start>=phase2.date_end, 'Error, the phase Testing should start after the end of the Development phase' - assert phase3.date_start=minstart, 'Error, the Collect Requirement and Make SRS phase '+phase1.date_start+' should start after '+str(minstart) + assert phase1.date_end>=minend, 'Error, the Collect Requirement and Make SRS phase should end after '+str(minend) + phase2=self.browse(cr, uid, ref('project_phase_2')) + assert phase2.date_start>=phase1.date_end, 'Error, the phase Design Model should start after the end of the Collect Requirement and Make SRS phase' + + phase3=self.browse(cr, uid, ref('project_phase_3')) + assert phase3.date_start>=phase2.date_end, 'Error, the phase Development and Integration should start after the end of the Design Model phase' + + phase4=self.browse(cr, uid, ref('project_phase_4')) + assert phase4.date_start>=phase3.date_end, 'Error, the phase Review and Testing should start after the end of the Development and Integration phase' + + phase5=self.browse(cr, uid, ref('project_phase_5')) + assert phase5.date_start>=phase4.date_end, 'Error, the phase Deployement and Training start after the end of the Review and Testing phase' + assert phase5.date_start= start),'Start dates are wrong: %s < %s !' % (first_phase.date_start[:10], start) - assert (first_phase.date_end >= end),'End dates are wrong: %s <%s!' % (first_phase.date_end, end) - - second_phase = self.browse(cr, uid, ref('project_phase_secondphase0_case2')) - start = first_phase.date_end - end = (datetime.date.today() + relativedelta(days=4)).strftime('%Y-%m-%d') - assert second_phase.date_start >= start, 'Dates are wrong on second phase: %s < %s!' % (second_phase.date_start, start) - assert second_phase.date_end >= end, 'Dates are wrong on second phase %s < %s!' % (second_phase.date_end, end) - diff --git a/addons/project_long_term/test/test_schedule_phases_case2.yml b/addons/project_long_term/test/test_schedule_phases_case2.yml deleted file mode 100644 index 35173a897a3..00000000000 --- a/addons/project_long_term/test/test_schedule_phases_case2.yml +++ /dev/null @@ -1,193 +0,0 @@ -- - In order to test scheduling of project phases, I create two different - working periods and resources. And schedule the phases. -- - I create first working period 'Working Time A'. -- - !record {model: resource.calendar, id: resource_calendar_workingtimea0}: - attendance_ids: - - dayofweek: '0' - hour_from: 10.0 - hour_to: 16.0 - name: Monday - - dayofweek: '1' - hour_from: 10.0 - hour_to: 16.0 - name: Tuesday - - dayofweek: '2' - hour_from: 10.0 - hour_to: 16.0 - name: Wednesday - - dayofweek: '3' - hour_from: 10.0 - hour_to: 16.0 - name: Thursday - name: Working Time A - -- - Creating a resource.calendar.attendance record -- - !record {model: resource.calendar.attendance, id: resource_calendar_attendance_monday0}: - calendar_id: resource_calendar_workingtimea0 - dayofweek: '0' - hour_from: 10.0 - hour_to: 16.0 - name: Monday -- - Creating a resource.calendar.attendance record -- - !record {model: resource.calendar.attendance, id: resource_calendar_attendance_tuesday0}: - calendar_id: resource_calendar_workingtimea0 - dayofweek: '1' - hour_from: 10.0 - hour_to: 16.0 - name: Tuesday -- - Creating a resource.calendar.attendance record -- - !record {model: resource.calendar.attendance, id: resource_calendar_attendance_wednesday0}: - calendar_id: resource_calendar_workingtimea0 - dayofweek: '2' - hour_from: 10.0 - hour_to: 16.0 - name: Wednesday -- - Creating a resource.calendar.attendance record -- - !record {model: resource.calendar.attendance, id: resource_calendar_attendance_thursday0}: - calendar_id: resource_calendar_workingtimea0 - dayofweek: '3' - hour_from: 10.0 - hour_to: 16.0 - name: Thursday -- - I create second working period 'Working Time B'. -- - !record {model: resource.calendar, id: resource_calendar_workingtimeb0}: - attendance_ids: - - dayofweek: '4' - hour_from: 9.0 - hour_to: 18.0 - name: Friday - name: Working Time B -- - Creating a resource.calendar.attendance record -- - !record {model: resource.calendar.attendance, id: resource_calendar_attendance_friday0}: - calendar_id: resource_calendar_workingtimeb0 - dayofweek: '4' - hour_from: 9.0 - hour_to: 18.0 - name: Friday -- - I create first resource say 'Resource X' without assigning working period. -- - !record {model: resource.resource, id: resource_resource_resourcex0}: - name: Resource X - resource_type: user - time_efficiency: 1.0 - user_id: base.user_admin -- - I create first resource say 'Resource Y' with working period 'Working Time B'. -- - !record {model: resource.resource, id: resource_resource_resourcey0}: - calendar_id: resource_calendar_workingtimeb0 - name: Resource Y - resource_type: user - time_efficiency: 1.0 - user_id: base.user_admin -- - I create a project 'Development and Testing' and assign working period 'Working Time A'. -- - !record {model: project.project, id: project_project_project0}: - balance: 0.0 - credit: 0.0 - currency_id: base.EUR - debit: 0.0 - effective_hours: 0.0 - members: - - base.user_admin - name: Development and Testing - planned_hours: 20.0 - progress_rate: 0.0 - quantity: 0.0 - quantity_max: 0.0 - resource_calendar_id: resource_calendar_workingtimea0 - state: open - tasks: - - delay_hours: 0.0 - effective_hours: 0.0 - name: Task 1 - planned_hours: 10.0 - remaining_hours: 10.0 - state: draft - total_hours: 10.0 - - delay_hours: 0.0 - effective_hours: 0.0 - name: Task 2 - planned_hours: 10.0 - remaining_hours: 10.0 - state: draft - total_hours: 10.0 - total_hours: 10.0 - members: - - project.res_users_analyst - - project.res_users_project_manager - - project.res_users_technical_leader - - project.res_users_developer - - project.res_users_designer - - project.res_users_tester - type_ids: - - project.project_tt_specification - - project.project_tt_development - - project.project_tt_testing - - project.project_tt_merge - -- - I create a phase 'Initial Phase' for project 'Development and Testing'. -- - !record {model: project.phase, id: project_phase_phase0}: - date_start: '2011-01-03 08:00:00' - duration: 0.0 - name: Initial Phase - product_uom: product.uom_day - project_id: project_project_project0 - state: draft -- - I create first task 'Developing module' and assign 10h. -- - !record {model: project.task, id: project_task_task0}: - delay_hours: 0.0 - effective_hours: 0.0 - name: Developing module - planned_hours: 10.0 - project_id: project_project_project0 - remaining_hours: 10.0 - state: draft - total_hours: 10.0 - phase_id: project_phase_phase0 -- - I create first task 'Testing module' and assign 10h. -- - !record {model: project.task, id: project_task_task1}: - delay_hours: 0.0 - effective_hours: 0.0 - name: Testing module - planned_hours: 10.0 - project_id: project_project_project0 - remaining_hours: 10.0 - state: draft - total_hours: 10.0 - phase_id: project_phase_phase0 -- - Now I create a record to compute the phase of project. -- - !record {model: project.compute.phases, id: project_compute_phases0}: - target_project: 'one' - project_id: project_project_project0 -- - I schedule the phases. -- - !python {model: project.compute.phases}: | - self.check_selection(cr, uid, [ref("project_compute_phases0")]) - diff --git a/addons/project_long_term/test/test_schedule_tasks_case1.yml b/addons/project_long_term/test/test_schedule_tasks_case1.yml deleted file mode 100644 index 3bb0ea87c43..00000000000 --- a/addons/project_long_term/test/test_schedule_tasks_case1.yml +++ /dev/null @@ -1,246 +0,0 @@ -- - In order to test scheduling of tasks, I create four tasks with different sequences and schedule them. -- - I create first user. -- - !record {model: res.users, id: res_users_user0}: - company_id: base.main_company - context_lang: en_US - groups_id: - - base.group_partner_manager - - base.group_user - login: user1 - name: User 1 - password: user1 -- - I create second user. -- - !record {model: res.users, id: res_users_user1}: - company_id: base.main_company - context_lang: en_US - groups_id: - - base.group_partner_manager - - base.group_user - login: user2 - name: User 2 - password: user2 -- - I create a Project. -- - !record {model: project.project, id: project_project_projecta0}: - balance: 0.0 - credit: 0.0 - currency_id: base.EUR - debit: 0.0 - effective_hours: 0.0 - name: Project A - members: - - res_users_user0 - - res_users_user1 - phase_ids: - - date_start: '2011-01-06 08:00:00' - duration: 2.0 - name: Phase A - product_uom: product.uom_day - state: draft - task_ids: - - delay_hours: 0.0 - effective_hours: 0.0 - name: Task D - planned_hours: 5.0 - remaining_hours: 5.0 - state: draft - total_hours: 5.0 - - delay_hours: 0.0 - effective_hours: 0.0 - name: Task C - planned_hours: 5.0 - remaining_hours: 5.0 - sequence: 11 - state: draft - total_hours: 5.0 - - delay_hours: 0.0 - effective_hours: 0.0 - name: Task B - planned_hours: 5.0 - remaining_hours: 5.0 - sequence: 13 - state: draft - total_hours: 5.0 - - delay_hours: 0.0 - effective_hours: 0.0 - name: Task A - planned_hours: 5.0 - remaining_hours: 5.0 - sequence: 14 - state: draft - total_hours: 5.0 - planned_hours: 20.0 - progress_rate: 0.0 - quantity: 0.0 - quantity_max: 0.0 - state: open - tasks: - - delay_hours: 0.0 - effective_hours: 0.0 - name: Task D - planned_hours: 5.0 - remaining_hours: 5.0 - state: draft - total_hours: 5.0 - - delay_hours: 0.0 - effective_hours: 0.0 - name: Task C - planned_hours: 5.0 - remaining_hours: 5.0 - sequence: 11 - state: draft - total_hours: 5.0 - - delay_hours: 0.0 - effective_hours: 0.0 - name: Task B - planned_hours: 5.0 - remaining_hours: 5.0 - sequence: 13 - state: draft - total_hours: 5.0 - - delay_hours: 0.0 - effective_hours: 0.0 - name: Task A - planned_hours: 5.0 - remaining_hours: 5.0 - sequence: 14 - state: draft - total_hours: 5.0 - total_hours: 15.0 -- - I create first task with highest sequence. -- - !record {model: project.task, id: project_task_taska0}: - delay_hours: 0.0 - effective_hours: 0.0 - name: Task A - planned_hours: 5.0 - project_id: project_project_projecta0 - remaining_hours: 5.0 - sequence: 14 - state: draft - total_hours: 5.0 -- - I create second task. -- - !record {model: project.task, id: project_task_taskb0}: - delay_hours: 0.0 - effective_hours: 0.0 - name: Task B - planned_hours: 5.0 - project_id: project_project_projecta0 - remaining_hours: 5.0 - sequence: 13 - state: draft - total_hours: 5.0 -- - I create third task. -- - !record {model: project.task, id: project_task_taskc0}: - delay_hours: 0.0 - effective_hours: 0.0 - name: Task C - planned_hours: 5.0 - project_id: project_project_projecta0 - remaining_hours: 5.0 - sequence: 11 - state: draft - total_hours: 5.0 -- - I create fourth task with lowest sequence. -- - !record {model: project.task, id: project_task_taskd0}: - delay_hours: 0.0 - effective_hours: 0.0 - name: Task D - planned_hours: 5.0 - project_id: project_project_projecta0 - remaining_hours: 5.0 - state: draft - total_hours: 5.0 -- - Now I create a resource for first user. -- - !record {model: resource.resource, id: resource_resource_user0}: - name: User 1 - resource_type: user - time_efficiency: 1.0 - user_id: res_users_user0 -- - I create a resource for second user. -- - !record {model: resource.resource, id: resource_resource_user1}: - name: User 2 - resource_type: user - time_efficiency: 1.0 - user_id: res_users_user1 -- - Now I create one phase for the project. -- - !record {model: project.phase, id: project_phase_phasea0}: - date_start: '2011-01-06 08:00:00' - duration: 2.0 - name: Phase A - product_uom: product.uom_day - project_id: project_project_projecta0 - state: draft - task_ids: - - delay_hours: 0.0 - effective_hours: 0.0 - name: Task D - planned_hours: 5.0 - project_id: project_project_projecta0 - remaining_hours: 5.0 - state: draft - total_hours: 5.0 - - delay_hours: 0.0 - effective_hours: 0.0 - name: Task C - planned_hours: 5.0 - project_id: project_project_projecta0 - remaining_hours: 5.0 - sequence: 11 - state: draft - total_hours: 5.0 - - delay_hours: 0.0 - effective_hours: 0.0 - name: Task B - planned_hours: 5.0 - project_id: project_project_projecta0 - remaining_hours: 5.0 - sequence: 13 - state: draft - total_hours: 5.0 - - delay_hours: 0.0 - effective_hours: 0.0 - name: Task A - planned_hours: 5.0 - project_id: project_project_projecta0 - remaining_hours: 5.0 - sequence: 14 - state: draft - total_hours: 5.0 -- - Now I create a record to schedule the tasks of project. -- - !record {model: project.compute.tasks, id: project_compute_tasks0}: - project_id: project_project_projecta0 -- - I schedule the tasks. -- - !python {model: project.compute.tasks}: | - self.compute_date(cr, uid, [ref("project_compute_tasks0")]) -- - I check that whether the tasks now allocated to respected resources or not. -- - !python {model: project.task}: | - task_ids = self.search(cr, uid, [('project_id','=',ref('project_project_projecta0'))]) - for task in self.browse(cr, uid, task_ids): - if (not task.date_start) or (not task.date_end): - raise AssertionError("Tasks are not scheduled.") From 1a635e2216a294c7ab5b78c6fa6742a7c676fc2b Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Mon, 28 Nov 2011 15:10:28 +0530 Subject: [PATCH 422/892] [IMP] event: called onchange_contact_id() on event bzr revid: ron@tinyerp.com-20111128094028-6a96zd70xnb21b40 --- addons/event/test/ui/demo_data.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/event/test/ui/demo_data.yml b/addons/event/test/ui/demo_data.yml index 66a3cbe8263..2762e3b3cda 100644 --- a/addons/event/test/ui/demo_data.yml +++ b/addons/event/test/ui/demo_data.yml @@ -3,7 +3,7 @@ - !record {model: event.registration, id: reg_0_1}: event_id: event_0 - partner_id: base.res_partner_c2c + partner_id: base.res_partner_asus name: 'Ticket for Concert' - I create event record to call product onchange and team onchange. From 90cb2af8d31c3e35acb93c4f9e069317b7bbeeeb Mon Sep 17 00:00:00 2001 From: "Naresh (OpenERP)" Date: Mon, 28 Nov 2011 15:38:23 +0530 Subject: [PATCH 423/892] [FIX]:Incorect format of report in OpenOffice lp bug: https://launchpad.net/bugs/891544 fixed bzr revid: nch@tinyerp.com-20111128100823-0pllyv7qivnlesuk --- addons/base_report_designer/base_report_designer.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/addons/base_report_designer/base_report_designer.py b/addons/base_report_designer/base_report_designer.py index 90c48f7f17c..ae3b57d9fcc 100644 --- a/addons/base_report_designer/base_report_designer.py +++ b/addons/base_report_designer/base_report_designer.py @@ -59,9 +59,17 @@ class report_xml(osv.osv): return True def report_get(self, cr, uid, report_id, context=None): + if context is None: + context = {} + #we ask osv.fields.sanitize_binary_value() not to encode the binary value" + context.update({'bin_raw':True}) report = self.browse(cr, uid, report_id, context=context) - sxw_data=(report.report_sxw_content).encode("iso-8859-1", "replace") - rml_data= (report.report_rml_content).encode("iso-8859-1", "replace") + sxw_data = report.report_sxw_content + rml_data = report.report_rml_content + if isinstance(report.report_sxw_content, unicode): + sxw_data = (report.report_sxw_content).encode("iso-8859-1", "replace") + if isinstance(report.report_rml_content, unicode): + rml_data = (report.report_rml_content).encode("iso-8859-1", "replace") return { 'file_type' : report.report_type, 'report_sxw_content': report.report_sxw_content and base64.encodestring(sxw_data) or False, From c11d1f06a9b25eccd5c0c7e45f955d1c8f258848 Mon Sep 17 00:00:00 2001 From: "Naresh (OpenERP)" Date: Mon, 28 Nov 2011 15:38:36 +0530 Subject: [PATCH 424/892] [FIX]:Incorect format of report in OpenOffice lp bug: https://launchpad.net/bugs/891544 fixed bzr revid: nch@tinyerp.com-20111128100836-ad40b5hvoeqyoggm --- openerp/osv/fields.py | 2 +- openerp/report/report_sxw.py | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index f1a90277c4a..84d35367f3e 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -1018,7 +1018,7 @@ class function(_column): if context.get('bin_size', False): # client requests only the size of binary fields result = get_nice_size(value) - else: + elif not context.get('bin_raw'): result = sanitize_binary_value(value) if field_type in ("integer","integer_big") and value > xmlrpclib.MAXINT: diff --git a/openerp/report/report_sxw.py b/openerp/report/report_sxw.py index 742efd7e5f5..e0a09a6a56b 100644 --- a/openerp/report/report_sxw.py +++ b/openerp/report/report_sxw.py @@ -391,8 +391,12 @@ class report_sxw(report_rml, preprocess.report): return table_obj.browse(cr, uid, ids, list_class=browse_record_list, context=context, fields_process=_fields_process) def create(self, cr, uid, ids, data, context=None): + if context is None: + context = {} if self.internal_header: context.update({'internal_header':self.internal_header}) + #we ask osv.fields.sanitize_binary_value() not to encode the binary value" + context.update({'bin_raw':True}) pool = pooler.get_pool(cr.dbname) ir_obj = pool.get('ir.actions.report.xml') report_xml_ids = ir_obj.search(cr, uid, @@ -519,12 +523,13 @@ class report_sxw(report_rml, preprocess.report): context = context.copy() report_type = report_xml.report_type context['parents'] = sxw_parents - - # if binary content was passed as unicode, we must - # re-encode it as a 8-bit string using the pass-through - # 'latin1' encoding, to restore the original byte values. - # See also osv.fields.sanitize_binary_value() - binary_report_content = report_xml.report_sxw_content.encode("latin1") + binary_report_content = report_xml.report_sxw_content + if isinstance(report_xml.report_sxw_content, unicode): + # if binary content was passed as unicode, we must + # re-encode it as a 8-bit string using the pass-through + # 'latin1' encoding, to restore the original byte values. + # See also osv.fields.sanitize_binary_value() + binary_report_content = report_xml.report_sxw_content.encode("latin1") sxw_io = StringIO.StringIO(binary_report_content) sxw_z = zipfile.ZipFile(sxw_io, mode='r') From 8108d522e3eb6ccf80db6daaa4cf7a98f7414077 Mon Sep 17 00:00:00 2001 From: "Hemendra Paregi (Open ERP)" Date: Mon, 28 Nov 2011 15:49:52 +0530 Subject: [PATCH 425/892] [IMP]project_gtd: improvement in yml of project_gtd bzr revid: hpa@tinyerp.com-20111128101952-99qis8rd0l9kjkp4 --- addons/project_gtd/test/task_timebox.yml | 29 +++++++++++++----------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/addons/project_gtd/test/task_timebox.yml b/addons/project_gtd/test/task_timebox.yml index 7379f5857cf..84de7bda953 100644 --- a/addons/project_gtd/test/task_timebox.yml +++ b/addons/project_gtd/test/task_timebox.yml @@ -1,42 +1,45 @@ - - In order to set Daily tasks into Weekly Timebox, I create plan for that + In order to test the process of Timebox in Project Management module, + I set my task from Daily to Weekly Timebox through Plannify Timebox - !record {model: project.timebox.fill.plan, id: plan_id}: task_ids: [project.project_task_10] timebox_id: timebox_daily timebox_to_id: timebox_weekly - - I run plan to set Daily tasks into Weekly Timebox + I set the task from Daily Timebox to Weekly Timebox - !python {model: project.timebox.fill.plan}: | self.process(cr, uid, [ref("plan_id")]) - - I check Weekly Timebox of task after set Timebox + I check task is set to Weekly Timebox - !assert {model: project.task, id: project.project_task_10, string: Task should be set to weekly timebox}: - timebox_id.id == ref("timebox_weekly") - - I Empty the Daily Timebox + I Empty the Weekly Timebox - !python {model: project.timebox.empty}: | self._empty(cr, uid, {"active_model": "project.gtd.timebox", - "active_ids":[ref("timebox_daily")], - "active_id": ref("timebox_daily"), + "active_ids":[ref("timebox_weekly")], + "active_id": ref("timebox_weekly"), }) - - I check task 'Develop time management module' is no more in Daily Timebox + I check task 'Develop Module in Sale Management' is no more in Weekly Timebox - - !assert {model: project.task, id: project.project_task_10 , string: Task is not in Daily Timebox}: - - timebox_id.id != ref("timebox_daily") + !assert {model: project.task, id: project.project_task_10 , string: Task is not in Weekly Timebox }: + - timebox_id.id != ref("timebox_weekly") - I set Previous Timebox on task - !python {model: project.task}: | - self.prev_timebox(cr, uid, [ref("project.project_task_10")], - {'active_ids': [ref("project.project_task_1")],}) + previous_timebox = self.prev_timebox(cr, uid, [ref("project.project_task_10")], + {'active_ids': [ref("project_gtd.menu_open_gtd_timebox_tree")],}) + assert previous_timebox == True, "I set Previous Timebox on task" - I set Next Timebox on task - !python {model: project.task}: | - self.next_timebox(cr, uid, [ref("project.project_task_10")], - {'active_ids': [ref("project.project_task_1")],}) + nexts_timebox = self.next_timebox(cr, uid, [ref("project.project_task_10")], + {'active_ids': [ref("project_gtd.menu_open_gtd_timebox_tree")],}) + assert nexts_timebox == True, "I set Previous Timebox on task" \ No newline at end of file From fcce28a1d574f3a7e208d68f903a59180956379b Mon Sep 17 00:00:00 2001 From: "Hemendra Paregi (Open ERP)" Date: Mon, 28 Nov 2011 16:00:56 +0530 Subject: [PATCH 426/892] [IMP]project_gtd: yml improvement bzr revid: hpa@tinyerp.com-20111128103056-ldrcaujjik4zmwqd --- addons/project_gtd/test/task_timebox.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/project_gtd/test/task_timebox.yml b/addons/project_gtd/test/task_timebox.yml index 84de7bda953..8efa7219b21 100644 --- a/addons/project_gtd/test/task_timebox.yml +++ b/addons/project_gtd/test/task_timebox.yml @@ -40,6 +40,6 @@ I set Next Timebox on task - !python {model: project.task}: | - nexts_timebox = self.next_timebox(cr, uid, [ref("project.project_task_10")], + next_timebox = self.next_timebox(cr, uid, [ref("project.project_task_10")], {'active_ids': [ref("project_gtd.menu_open_gtd_timebox_tree")],}) - assert nexts_timebox == True, "I set Previous Timebox on task" \ No newline at end of file + assert next_timebox == True, "I set Next Timebox on task" \ No newline at end of file From 1f7737946f89fa3360d11ff3fc39c230bf628672 Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Mon, 28 Nov 2011 16:10:02 +0530 Subject: [PATCH 427/892] [IMP] project: refactor test cases of process of project bzr revid: hmo@tinyerp.com-20111128104002-2rq1o010c0zl49jn --- addons/project/__openerp__.py | 6 +- .../project/test/process/cancel_project.yml | 40 --- addons/project/test/process/cancel_task.yml | 35 --- .../process/draft2delegate2open2done_task.yml | 76 ----- ...2project2close.yml => project_process.yml} | 21 +- addons/project/test/task_process.yml | 69 ++++ addons/project/test/test_project.yml | 296 ------------------ .../project/test/test_project_delegation.yml | 230 -------------- 8 files changed, 82 insertions(+), 691 deletions(-) delete mode 100644 addons/project/test/process/cancel_project.yml delete mode 100644 addons/project/test/process/cancel_task.yml delete mode 100644 addons/project/test/process/draft2delegate2open2done_task.yml rename addons/project/test/{process/template2project2close.yml => project_process.yml} (73%) create mode 100644 addons/project/test/task_process.yml delete mode 100644 addons/project/test/test_project.yml delete mode 100644 addons/project/test/test_project_delegation.yml diff --git a/addons/project/__openerp__.py b/addons/project/__openerp__.py index 1c1b8fea4f8..c9484ae9dd8 100644 --- a/addons/project/__openerp__.py +++ b/addons/project/__openerp__.py @@ -61,10 +61,8 @@ Dashboard for project members that includes: 'project_demo.xml', ], 'test':[ - 'test/process/draft2delegate2open2done_task.yml', - 'test/process/template2project2close.yml', - 'test/process/cancel_project.yml', - 'test/process/cancel_task.yml', + 'test/project_process.yml', + 'test/task_process.yml', ], 'installable': True, 'active': False, diff --git a/addons/project/test/process/cancel_project.yml b/addons/project/test/process/cancel_project.yml deleted file mode 100644 index db5ba8ff0b7..00000000000 --- a/addons/project/test/process/cancel_project.yml +++ /dev/null @@ -1,40 +0,0 @@ -- - I cancel unqualified Project. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel Project in to Draft. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel pending Project. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel opened Project. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel delegated Project. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel done Project. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel close Project. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) -- - I reset canclled Project into Draft. -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_task_1")]) \ No newline at end of file diff --git a/addons/project/test/process/cancel_task.yml b/addons/project/test/process/cancel_task.yml deleted file mode 100644 index 618db25b22d..00000000000 --- a/addons/project/test/process/cancel_task.yml +++ /dev/null @@ -1,35 +0,0 @@ -- - I cancel unqualified Task. -- - !python {model: project.task}: | - self.do_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel Task in to Draft. -- - !python {model: project.task}: | - self.do_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel pending Task. -- - !python {model: project.task}: | - self.do_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel opened Task. -- - !python {model: project.task}: | - self.do_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel done Task. -- - !python {model: project.task}: | - self.do_cancel(cr, uid, [ref("project_task_1")]) -- - I cancel close Task. -- - !python {model: project.task}: | - self.do_cancel(cr, uid, [ref("project_task_1")]) -- - I reset canclled Task into Draft. -- - !python {model: project.task}: | - self.do_cancel(cr, uid, [ref("project_task_1")]) \ No newline at end of file diff --git a/addons/project/test/process/draft2delegate2open2done_task.yml b/addons/project/test/process/draft2delegate2open2done_task.yml deleted file mode 100644 index 544d95c326e..00000000000 --- a/addons/project/test/process/draft2delegate2open2done_task.yml +++ /dev/null @@ -1,76 +0,0 @@ -- - In order to test process of Project Task, -- - I put task in pending due to specification is not clear. -- - !python {model: project.task}: | - self.do_pending(cr, uid, [ref("project_task_1")]) -- - I Check state of task after put in pending. -- - !assert {model: project.task, id: project_task_1, severity: error, string: task should be in pending state}: - - state == "pending" -- - Now I delegate task to team member. -- - !python {model: project.task.delegate}: | - new_id = self.create(cr,uid,{'planned_hours': 1.0, 'user_id': 3, - 'name': 'demo task', 'state': 'pending', 'prefix': 'CHECK: demo task', - 'planned_hours_me': 1.0, 'new_task_description': 'this is demo.'}) - self.delegate(cr, uid, [new_id], {"active_id": ref("project_task_1")}) -- - I check delegated task details. -- - !assert {model: project.task.delegate, id: project_task_1, severity: error, string: Task should be pending state}: - - - planned_hours == 0.0 - - name == 'a' - - state == "pending" -- - I check new task after delegated task. -- - !record {model: project.task, id: project_task_delegate }: - name: test - planned_hours: 30.0 - project_id: project_task_1 - remaining_hours: 30.0 - description: testing of delegated task - state: draft -- - Now I Delegate task to these tasks and make it pending -- - !record {model: project.task, id: project_task_1 }: - child_ids: - - project.project_task_delegate - planned_hours: 20.0 - state: pending -- - I Re-open the task -- - !python {model: project.task}: | - self.do_reopen(cr, uid, [ref("project_task_1")]) -- - - I check reopened task details. -- - !assert {model: project.task, id: project_task_1, severity: error, string: task should be open.}: - - state == "open" -- - I reevaluate task with remaining hours. -- - - I Check remaining hours after reevaluated task. -- - !assert {model: project.task.reevaluate, id: project_task_1, severity: error, string: task should be reevaluated}: - - remaining_hours == 1.0 -- - I close the task. -- - !python {model: project.task}: | - self.do_close(cr, uid, [ref("project_task_1")]) -- - I Check state after closed. -- - !assert {model: project.task, id: project_task_1, severity: error, string: task is in open state}: - - state == "done" -- diff --git a/addons/project/test/process/template2project2close.yml b/addons/project/test/project_process.yml similarity index 73% rename from addons/project/test/process/template2project2close.yml rename to addons/project/test/project_process.yml index a4c7da0a9b5..c440c757273 100644 --- a/addons/project/test/process/template2project2close.yml +++ b/addons/project/test/project_process.yml @@ -1,17 +1,13 @@ - In order to Test Process of Project Management, - - I create duplicate template + I create duplicate template. - !python {model: project.project}: | - new_project = self.duplicate_template(cr, uid, [ref("project_integrate_openerp")]) - if not new_project: - raise Exception( "New project based on template not created") - new_id = new_project['res_id'] - new_project = self.read(cr, uid, [new_id], ['name', 'state'])[0] - state = new_project['state'] - name = new_project['name'] - assert state == 'open', "Project in %s state. Project created from template project must be in open state"%state + new_template = self.duplicate_template(cr, uid, [ref("project_integrate_openerp")]) + assert new_template, "duplicate template is not created" + template = self.browse(cr, uid, new_template['res_id'], context=context) + assert template.state == 'open', "Duplicate template must be in open state." - I convert template into real Project. - @@ -24,7 +20,7 @@ - state == "open" - - I put project in pending + I put project in pending. - !python {model: project.project}: | self.set_pending(cr, uid, [ref("project_integrate_openerp")]) @@ -59,3 +55,8 @@ !python {model: project.project}: | self.set_template(cr, uid, [ref("project_integrate_openerp")]) - + I cancel Project. +- + !python {model: project.project}: | + self.set_cancel(cr, uid, [ref("project_integrate_openerp")]) + diff --git a/addons/project/test/task_process.yml b/addons/project/test/task_process.yml new file mode 100644 index 00000000000..0a6a15a230b --- /dev/null +++ b/addons/project/test/task_process.yml @@ -0,0 +1,69 @@ +- + I put task in pending due to specification is not clear. +- + !python {model: project.task}: | + self.do_pending(cr, uid, [ref("project_task_1")]) + context.update({"active_id": ref("project_task_1")}) +- + I Check state of task after put in pending. +- + !assert {model: project.task, id: project_task_1, severity: error, string: task should be in pending state}: + - state == "pending" +- + !record {model: project.task.delegate, id: delegate_id}: + user_id: res_users_analyst + planned_hours: 12.0 + planned_hours_me: 2.0 +- + Now I delegate task to team member. +- + !python {model: project.task.delegate}: | + self.delegate(cr, uid, [ref("delegate_id")], {"active_id": ref("project_task_1")}) +- + I check delegated task details. +- + !python {model: project.task}: | + task = self.browse(cr, uid, ref("project_task_1"), context=context) + assert task.planned_hours == 2.0, "Planning hours is not correct after delegated." + assert task.state == "pending", "Task should be in Pending after delegated." + assert len(task.child_ids), "Sub task is not created after delegate." +- + I Re-open the task. +- + !python {model: project.task}: | + self.do_reopen(cr, uid, [ref("project_task_1")]) +- + I check reopened task details. +- + !assert {model: project.task, id: project_task_1, severity: error, string: task should be open.}: + - state == "open" +- + !record {model: project.task.reevaluate, id: reevaluate_id}: + remaining_hours : 120 +- + I reevaluate task with remaining hours. +- + !python {model: project.task.reevaluate}: | + self.compute_hours(cr, uid, [ref("reevaluate_id")], {"active_id": ref("project_task_1")}) +- + I check remaining hours after reevaluated task. +- + !assert {model: project.task, id: project_task_1, severity: error, string: task should be reevaluated}: + - remaining_hours == 120.0 +- + I close the task. +- + !python {model: project.task}: | + self.do_close(cr, uid, [ref("project_task_1")]) +- + I Check state after closed. +- + !assert {model: project.task, id: project_task_1, severity: error, string: task is in open state}: + - state == "done" +- + I cancel Task. +- + !python {model: project.task}: | + self.do_cancel(cr, uid, [ref("project_task_2")]) + + diff --git a/addons/project/test/test_project.yml b/addons/project/test/test_project.yml deleted file mode 100644 index f79c2a34224..00000000000 --- a/addons/project/test/test_project.yml +++ /dev/null @@ -1,296 +0,0 @@ -- - Test project template feature -- - Create project 'OpenERP Training Programme' -- - !record {model: project.project, id: project_project_openerptrainingprogramme0}: - company_id: base.main_company - name: OpenERP Training Programme -- - Create task 'Technical Training' for this project -- - !record {model: project.task, id: project_task_technicaltraining0}: - date_start: !eval time.strftime('%Y-%m-%d %H:%M:%S') - name: Technical Training - planned_hours: 30.0 - project_id: project_project_openerptrainingprogramme0 - remaining_hours: 30.0 - state: draft -- - Create task 'Functional Training' for this project -- - !record {model: project.task, id: project_task_functionaltraining0}: - date_start: !eval time.strftime('%Y-%m-%d %H:%M:%S') - name: Functional Training - planned_hours: 30.0 - project_id: project_project_openerptrainingprogramme0 - remaining_hours: 30.0 - state: draft -- - Set project as project template -- - !python {model: project.project}: | - self.set_template(cr, uid, [ref("project_project_openerptrainingprogramme0")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_open_view_project_all")], - "tz": False, "active_id": ref("project.menu_open_view_project_all"), }) -- - Check if project in template state -- - !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in template state}: - - state == "template" -- - Create new project based on this template -- - !python {model: project.project}: | - new_prj = self.duplicate_template(cr, uid, [ref("project_project_openerptrainingprogramme0")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_open_view_project_all")], - "tz": False, "active_id": ref("project.menu_open_view_project_all"), }) - if not new_prj: - raise Exception( "New project based on template not created") - new_id = new_prj['res_id'] - new_prj = self.read(cr, uid, [new_id], ['name', 'state'])[0] - state = new_prj['state'] - name = new_prj['name'] - assert state == 'open', "Project in %s state. Project created from template project must be in open state"%state -- - Reset project template to normal project -- - !python {model: project.project}: | - self.reset_project(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": - [ref("project.menu_open_view_project_all")], "tz": False, "active_model": - "ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"), - }) -- - Check if project in open state -- - !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in open state}: - - state == "open" -- - Test for different project-states -- - Keep project pending -- - !python {model: project.project}: | - self.set_pending(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": - [ref("project.menu_open_view_project_all")], "tz": False, "active_model": - "ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"), - }) -- - Check if project in pending state -- - !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in pending state}: - - state == "pending" -- - Cancel the project -- - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": - [ref("project.menu_open_view_project_all")], "tz": False, "active_model": - "ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"), - }) -- - Check if project in cancel state -- - !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in cancel state}: - - state == "cancelled" -- - Re-open the project -- - !python {model: project.project}: | - self.set_open(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": [ref("project.menu_open_view_project_all")], - "tz": False, "active_model": "ir.ui.menu", "project_id": False, "active_id": - ref("project.menu_open_view_project_all"), }) -- - Check if project in open state -- - !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in open state}: - - state == "open" -- - Test for task work allocation -- - As i cancelled my project before, i check if the task 'Technical Training' is in cancelled state -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: Task is in cancelled state}: - - state == "cancelled" -- - Now in order to reactivate the task 'Technical Training', i click on the "Reactivate" button and fill the remaining hour field -- - !record {model: project.task.reevaluate, id: project_task_technicaltraining_remainingwiz0}: - remaining_hours: 30.0 -- | - I click the apply button -- - !python {model: project.task.reevaluate}: | - self.compute_hours(cr, uid, [ref('project_task_technicaltraining_remainingwiz0')], {'active_id': ref("project_task_technicaltraining0"),'button_reactivate': True}) -- | - Check if task 'Technical Training' in open state and for other initial values -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: Project is in open state}: - - state == "open" - - planned_hours == 30 - - remaining_hours == 30 - - delay_hours == 0.0 - - effective_hours == 0.0 -- - Make a work task entry 'Training on OpenERP modules, models and classes' of 10 hours -- - !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}: - work_ids: - - date: !eval time.strftime('%Y-%m-%d %H:%M:%S') - hours: 10.0 - name: Training on OpenERP modules, models and classes - user_id: base.user_root -- - Check for effective hours and remaining hours, effective_hours must be equal to 10 -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After work task of 10 hours effective_hours must be equal to 10}: - - remaining_hours == 20 - - effective_hours == 10.0 -- - Make a work task entry 'Training on OpenERP xml views' of 10 hours -- - !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}: - work_ids: - - date: !eval time.strftime('%Y-%m-%d %H:%M:%S') - hours: 10.0 - name: Training on OpenERP xml views - user_id: base.user_root -- - Check for effective hours and remaining hours, effective_hours must be equal to 20 -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After one more work task of 10 hours effective_hours must be equal to 20}: - - remaining_hours == 10 - - effective_hours == 20.0 -- - Make a work task entry 'Training on workflows' of 10 hours -- - !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}: - work_ids: - - date: !eval time.strftime('%Y-%m-%d %H:%M:%S') - hours: 10.0 - name: Training on workflows - user_id: base.user_root -- - Check for effective hours and remaining hours, effective_hours must be equal to 30 -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After one more work task of 10 hours effective_hours must be equal to 30}: - - remaining_hours == 0 - - effective_hours == 30.0 -- - Set remaining hours of 10 hours for reevaluating the task -- - !record {model: project.task.reevaluate, id: config_compute_remaining_0}: - remaining_hours: 10.0 -- - Reevaluate the task -- - !python {model: project.task.reevaluate}: | - self.compute_hours(cr, uid, [ref("config_compute_remaining_0")], {"lang": "en_US", - "project_id": False, "tz": False, "active_model": "project.task", "search_default_project_id": - False, "search_default_user_id": 1, "search_default_current": 1, "active_ids": - [ref("project_task_technicaltraining0")], "active_id": ref("project_task_technicaltraining0"), }) - -- - Check for effective hours and remaining hours, remaining_hours must be 10 while planned_hours remains 30 -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After reevaluating the task with 10 hours remaining_hours must be 10 while planned_hours remains 30}: - - planned_hours == 30 - - remaining_hours == 10.0 - - effective_hours == 30.0 -- - Make a work task entry 'Training on reports and wizards' of 10 hours -- - !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}: - work_ids: - - date: !eval time.strftime('%Y-%m-%d %H:%M:%S') - hours: 10.0 - name: Training on reports and wizards - user_id: base.user_root -- - Check for effective hours and remaining hours -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After one more work task of 10 hours effective_hours must be equal to 40 while planned_hours remains 30}: - - planned_hours == 30 - - remaining_hours == 0 - - effective_hours == 40.0 -- - Close the task -- - !python {model: project.task}: | - self.do_close(cr, uid, [ref("project_task_technicaltraining0")], {'mail_send': False}) -- - Check if task in done state -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: Task is in done state}: - - state == "done" - - -- - Test for task reactivation -- - Reactivate task -- - !record {model: project.task.reevaluate, id: config_compute_remaining_1}: - remaining_hours: 10.0 -- - Reevaluate the task with 10 hours remaining -- - !python {model: project.task.reevaluate}: | - self.compute_hours(cr, uid, [ref("config_compute_remaining_1")], {"lang": "en_US", - "project_id": False, "tz": False, "button_reactivate": True, "active_model": - "project.task", "search_default_project_id": False, "search_default_user_id": - 1, "search_default_current": 1, "active_ids": [ref("project_task_technicaltraining0")], "active_id": ref("project_task_technicaltraining0"), - }) -- - Check for effective hours and remaining hours, remaining_hours must be 10 while planned_hours remains 30 -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After reevaluating the task with 10 hours remaining_hours must be 10 while planned_hours remains 30}: - - planned_hours == 30 - - remaining_hours == 10.0 - - effective_hours == 40.0 -- - Make a work task entry 'Training on yml' of 5 hours -- - !record {model: project.task, id: project_task_technicaltraining0, context:{'no_analytic_entry':True}}: - work_ids: - - date: !eval time.strftime('%Y-%m-%d %H:%M:%S') - hours: 5.0 - name: Training on yml - user_id: base.user_root -- - Check for effective hours and remaining hours, remaining_hours must be 5, effective_hours must be 45 -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After work task of 5 hours effective_hours must be equal to 45 and remaining_hours is 5}: - - planned_hours == 30 - - remaining_hours == 5.0 - - effective_hours == 45.0 -- - Close the task -- - !python {model: project.task}: | - self.do_close(cr, uid, [ref("project_task_technicaltraining0")], {'mail_send': False}) -- - Check if task in done state -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error}: - - state == "done" -- - Check for effective hours and remaining hours -- - !assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: After closing the task planned_hours must remain 30 effective_hours must be 45 and remaining hours must be 0}: - - planned_hours == 30 - - remaining_hours == 0.0 - - effective_hours == 45.0 -- - Close project 'OpenERP Training Programme' -- - !python {model: project.project}: | - self.set_done(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": [ref("project.menu_open_view_project_all")], - "tz": False, "active_model": "ir.ui.menu", "project_id": False, "active_id": - ref("project.menu_open_view_project_all"), }) -- - Check if project in close state -- - !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: "Project must be in closed state"}: - - state == "close" - diff --git a/addons/project/test/test_project_delegation.yml b/addons/project/test/test_project_delegation.yml deleted file mode 100644 index 02bc9afaae8..00000000000 --- a/addons/project/test/test_project_delegation.yml +++ /dev/null @@ -1,230 +0,0 @@ -- - This scenario tests the delegation process. Closing all the delegated tasks(task delegation at multiple levels) transits the parent task from pending to open state. -- - Creating a project OpenERP Documentation -- - !record {model: project.project, id: project_project_openerpdocumentation0}: - company_id: base.main_company - name: OpenERP Documentation - -- - Creating a task 'Develop book for Technical and Functional reference' -- - !record {model: project.task, id: project_task_documentation_book}: - name: Develop book for Technical and Functional reference - planned_hours: 20.0 - project_id: project_project_openerpdocumentation0 - remaining_hours: 20.0 - state: draft - -- - Open the task -- - !python {model: project.task}: | - self.do_open(cr, uid, [ref("project_task_documentation_book")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")], - "tz": False, "active_id": ref("project.menu_action_view_task"), }) - -- - Creating a task 'Publish the References' -- - !record {model: project.task, id: project_task_publish_book}: - name: Publish the References - planned_hours: 10.0 - project_id: project_project_openerpdocumentation0 - remaining_hours: 10.0 - state: draft - -- - Open the task -- - !python {model: project.task}: | - self.do_open(cr, uid, [ref("project_task_publish_book")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")], - "tz": False, "active_id": ref("project.menu_action_view_task"), }) - -- - Test the delegate wizard -- - Creating a delegate task 'Publish the References' of 15 hours, renaming parent task to 'CHECK Publish the References' of 1 hour -- - !record {model: project.task.delegate, id: project_task_publish_book_delegate}: - name: Publish the References - new_task_description: aaa - planned_hours: 15.0 - planned_hours_me: 1.0 - prefix: 'CHECK: Publish the References' - state: pending - user_id: base.user_demo - -- - Validating the delegate task -- - !python {model: project.task.delegate}: | - self.delegate(cr, uid, [ref("project_task_publish_book_delegate")], - {"lang": "en_US", "active_model": "project.task", "tz": False, "record_id": - 4, "active_ids": [ref("project_task_publish_book")], "active_id": ref("project_task_publish_book"), - }) - -- - Check if parent task 'CHECK Publish the References' is in pending state -- - !assert {model: project.task, id: project_task_publish_book, severity: error, string: "Task must be in pending state after delegation"}: - - state == "pending" -- - Creating a delegate task 'Prepare a book that gives functional overview of OpenERP' -- - !record {model: project.task, id: project_task_delegate_openerp_tutorial}: - name: Prepare a book that gives functional overview of OpenERP - planned_hours: 30.0 - project_id: project.project_project_openerpdocumentation0 - remaining_hours: 30.0 - state: draft - -- - Open the task -- - !python {model: project.task}: | - self.do_open(cr, uid, [ref("project_task_delegate_openerp_tutorial")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")], - "tz": False, "active_id": ref("project.menu_action_view_task"), }) - -- - Creating a delegate task 'Prepare a technical reference for creating your modules' -- - !record {model: project.task, id: project_task_delegate_developer_book}: - name: Prepare a technical reference for creating your modules - planned_hours: 30.0 - project_id: project_project_openerpdocumentation0 - remaining_hours: 30.0 - state: draft - -- - Open the task -- - !python {model: project.task}: | - self.do_open(cr, uid, [ref("project_task_delegate_developer_book")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")], - "tz": False, "active_id": ref("project.menu_action_view_task"), }) - -- - Delegate task 'Develop book for Technical and Functional reference' to these tasks and make it pending -- - !record {model: project.task, id: project_task_documentation_book}: - child_ids: - - project.project_task_delegate_openerp_tutorial - - project.project_task_delegate_developer_book - planned_hours: 20.0 - state: pending - -- - Creating a delegate task 'Prepare documentation for Module Development' -- - !record {model: project.task, id: project_task_delegate_module_develop}: - name: Prepare documentation for Module Development - planned_hours: 30.0 - project_id: project.project_project_openerpdocumentation0 - remaining_hours: 30.0 - state: draft - - -- - Creating a delegate 'Prepare documentation for Business Process Development' -- - !record {model: project.task, id: project_task_delegate_business_process_develop}: - name: Prepare documentation for Business Process Development - planned_hours: 30.0 - project_id: project_project_openerpdocumentation0 - remaining_hours: 30.0 - state: draft - -- - Delegate task 'Prepare a technical reference for creating your modules' to these tasks and make it pending -- - !record {model: project.task, id: project_task_delegate_developer_book}: - child_ids: - - project.project_task_delegate_module_develop - - project.project_task_delegate_business_process_develop - planned_hours: 20.0 - state: pending - -- - Open the task -- - !python {model: project.task}: | - self.do_open(cr, uid, [ref("project_task_delegate_module_develop")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")], - "tz": False, "active_id": ref("project.menu_action_view_task"), }) - -- - Open the task -- - !python {model: project.task}: | - self.do_open(cr, uid, [ref("project_task_delegate_business_process_develop")], - {"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_action_view_task")], - "tz": False, "active_id": ref("project.menu_action_view_task"), }) - -- - Check if 'Prepare a technical reference for creating your modules' in pending state -- - !assert {model: project.task, id: project_task_delegate_developer_book, severity: error, string: Task must be in pending state}: - - state == "pending" - -- - Close the child task 'Prepare documentation for Module Development' -- - !python {model: project.task}: | - self.do_close(cr, uid, [ref("project_task_delegate_module_develop")], {"lang": "en_US", - "active_ids": [ref("project.menu_action_view_task")], "tz": False, "active_model": - "ir.ui.menu", "section_id": False, "search_default_project_id": False, "search_default_user_id": - 1, "search_default_current": 1, "mail_send": False, "active_id": ref("project.menu_action_view_task"), - }) - -- - Close the child task 'Prepare documentation for Business Process Development' -- - !python {model: project.task}: | - self.do_close(cr, uid, [ref("project_task_delegate_business_process_develop")], {"lang": "en_US", - "active_ids": [ref("project.menu_action_view_task")], "tz": False, "active_model": - "ir.ui.menu", "section_id": False, "search_default_project_id": False, "search_default_user_id": - 1, "search_default_current": 1, "mail_send": False, "active_id": ref("project.menu_action_view_task"), - }) - -- - Parent task 'Prepare a technical reference for creating your modules' task must now be in open state -- - !assert {model: project.task, id: project_task_delegate_developer_book, severity: error, string: Task is in done state}: - - state == "open" - - -- - Check if task 'Develop book for Technical and Functional reference' in pending state -- - !assert {model: project.task, id: project_task_documentation_book, severity: error, string: Task is in pending state}: - - state == "pending" - -- - Close the child task 'Prepare a technical reference for creating your modules' -- - !python {model: project.task}: | - self.do_close(cr, uid, [ref("project_task_delegate_developer_book")], {"lang": "en_US", - "active_ids": [ref("project.menu_action_view_task")], "tz": False, "active_model": - "ir.ui.menu", "section_id": False, "search_default_project_id": False, "search_default_user_id": - 1, "search_default_current": 1, "mail_send": False, "active_id": ref("project.menu_action_view_task"), - }) - -- - Close the child task 'Prepare a book that gives functional overview of OpenERP' -- - !python {model: project.task}: | - self.do_close(cr, uid, [ref("project_task_delegate_openerp_tutorial")], {"lang": "en_US", - "active_ids": [ref("project.menu_action_view_task")], "tz": False, "active_model": - "ir.ui.menu", "section_id": False, "search_default_project_id": False, "search_default_user_id": - 1, "search_default_current": 1, "mail_send": False, "active_id": ref("project.menu_action_view_task"), - }) - -- - Parent task 'Develop book for Technical and Functional reference' must be now in open state -- - !assert {model: project.task, id: project_task_documentation_book, severity: error, string: Task is in done state}: - - state == "open" From da44c1f9998f315fb7f60be62e0384898f54e1e3 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 28 Nov 2011 11:49:43 +0100 Subject: [PATCH 428/892] [FIX] Kanban: Warn user when record fails to be moved to a column (eg: group by date fields) bzr revid: fme@openerp.com-20111128104943-3yf4xjphpzk3196e --- addons/web_kanban/static/src/js/kanban.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index d9f1a83c50e..cc83433cca5 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -237,6 +237,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ } }, on_record_moved : function(record, old_group, old_index, new_group, new_index) { + var self = this; if (old_group === new_group) { new_group.records.splice(old_index, 1); new_group.records.splice(new_index, 0, record); @@ -250,6 +251,10 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.dataset.write(record.id, data, {}, function() { record.do_reload(); new_group.do_save_sequences(); + }).fail(function(error, evt) { + evt.preventDefault(); + alert("An error has occured while moving the record to this group."); + self.do_reload(); // TODO: use draggable + sortable in order to cancel the dragging when the rcp fails }); } }, From 7bb36d6c1b76cee148cb998fdb553fee57d9a839 Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Mon, 28 Nov 2011 16:21:40 +0530 Subject: [PATCH 429/892] [IMP] project: add test case for scheduling task in project process bzr revid: hmo@tinyerp.com-20111128105140-1wo9f883saij6wft --- addons/project/test/project_process.yml | 8 ++++++-- addons/project/test/task_process.yml | 1 - 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/addons/project/test/project_process.yml b/addons/project/test/project_process.yml index c440c757273..4e1a5e80281 100644 --- a/addons/project/test/project_process.yml +++ b/addons/project/test/project_process.yml @@ -54,9 +54,13 @@ - !python {model: project.project}: | self.set_template(cr, uid, [ref("project_integrate_openerp")]) +- + I schedule tasks of project. +- + !python {model: project.project}: | + self.schedule_tasks(cr, uid, [ref("project_integrate_openerp")], context=context) - I cancel Project. - !python {model: project.project}: | - self.set_cancel(cr, uid, [ref("project_integrate_openerp")]) - + self.set_cancel(cr, uid, [ref("project_project_9")]) diff --git a/addons/project/test/task_process.yml b/addons/project/test/task_process.yml index 0a6a15a230b..87d2206a918 100644 --- a/addons/project/test/task_process.yml +++ b/addons/project/test/task_process.yml @@ -26,7 +26,6 @@ task = self.browse(cr, uid, ref("project_task_1"), context=context) assert task.planned_hours == 2.0, "Planning hours is not correct after delegated." assert task.state == "pending", "Task should be in Pending after delegated." - assert len(task.child_ids), "Sub task is not created after delegate." - I Re-open the task. - From 7505b3952b95dae22567a0356690348d28eb4835 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 28 Nov 2011 11:54:20 +0100 Subject: [PATCH 430/892] [ADD] Added Done + Delegate buttons to product kanban view bzr revid: fme@openerp.com-20111128105420-8o73ws76nvftjaqj --- addons/project/project_view.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 50ab84c27f4..a9dd99789d3 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -377,6 +377,8 @@
From ee3dd3f581e259af3084b2b0289c02e8de404ed8 Mon Sep 17 00:00:00 2001 From: "Khushboo Bhatt (Open ERP)" Date: Mon, 28 Nov 2011 16:41:07 +0530 Subject: [PATCH 431/892] [IMP]minor changes to the statements of YML. bzr revid: kbh@tinyerp.com-20111128111107-gsnjmi1xm9z647vv --- addons/project/test/project_process.yml | 8 ++++---- addons/project/test/task_process.yml | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/addons/project/test/project_process.yml b/addons/project/test/project_process.yml index 4e1a5e80281..1c0c7a18713 100644 --- a/addons/project/test/project_process.yml +++ b/addons/project/test/project_process.yml @@ -25,17 +25,17 @@ !python {model: project.project}: | self.set_pending(cr, uid, [ref("project_integrate_openerp")]) - - I Check state after put in pending. + I check state after put in pending. - !assert {model: project.project, id: project_integrate_openerp, severity: error, string: Project should be in pending state}: - state == "pending" - - I Re-open the project. + I re-open the project. - !python {model: project.project}: | self.set_open(cr, uid, [ref("project_integrate_openerp")]) - - I Check state after reopen. + I check state after reopen. - !assert {model: project.project, id: project_integrate_openerp, severity: error, string: Project should be open.}: - state == "open" @@ -45,7 +45,7 @@ !python {model: project.project}: | self.set_done(cr, uid, [ref("project_integrate_openerp")]) - - I Check state after closed. + I check state after closed. - !assert {model: project.project, id: project_integrate_openerp, severity: error, string: Project should be close.}: - state == "close" diff --git a/addons/project/test/task_process.yml b/addons/project/test/task_process.yml index 87d2206a918..e294b117397 100644 --- a/addons/project/test/task_process.yml +++ b/addons/project/test/task_process.yml @@ -5,12 +5,12 @@ self.do_pending(cr, uid, [ref("project_task_1")]) context.update({"active_id": ref("project_task_1")}) - - I Check state of task after put in pending. + I check state of task after put in pending. - !assert {model: project.task, id: project_task_1, severity: error, string: task should be in pending state}: - state == "pending" - - !record {model: project.task.delegate, id: delegate_id}: + !record {model: project.task.delegate, id: delegate_id}: user_id: res_users_analyst planned_hours: 12.0 planned_hours_me: 2.0 @@ -27,7 +27,7 @@ assert task.planned_hours == 2.0, "Planning hours is not correct after delegated." assert task.state == "pending", "Task should be in Pending after delegated." - - I Re-open the task. + I re-open the task. - !python {model: project.task}: | self.do_reopen(cr, uid, [ref("project_task_1")]) @@ -37,7 +37,7 @@ !assert {model: project.task, id: project_task_1, severity: error, string: task should be open.}: - state == "open" - - !record {model: project.task.reevaluate, id: reevaluate_id}: + !record {model: project.task.reevaluate, id: reevaluate_id}: remaining_hours : 120 - I reevaluate task with remaining hours. @@ -55,7 +55,7 @@ !python {model: project.task}: | self.do_close(cr, uid, [ref("project_task_1")]) - - I Check state after closed. + I check state after closed. - !assert {model: project.task, id: project_task_1, severity: error, string: task is in open state}: - state == "done" From 2d0fbaa18dbdce23dff24c82c38e398a818a77b6 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 28 Nov 2011 12:51:36 +0100 Subject: [PATCH 432/892] [FIX] Kanban: buttons type action were not working anymore bzr revid: fme@openerp.com-20111128115136-e2q5mzdwn6bysxri --- addons/web_kanban/static/src/js/kanban.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index cc83433cca5..585ae1138d5 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -411,7 +411,7 @@ openerp.web_kanban.KanbanRecord = openerp.web.Widget.extend({ this.$element.find('.oe_kanban_action').click(function() { var $action = $(this), type = $action.data('type') || 'button', - method = 'do_action_' + type; + method = 'do_action_' + (type === 'action' ? 'object' : type); if (typeof self[method] === 'function') { self[method]($action); } else { From 073244191af89ae8fc7e2be38067af064b48a7a1 Mon Sep 17 00:00:00 2001 From: "Kirti Savalia (OpenERP)" Date: Mon, 28 Nov 2011 17:49:40 +0530 Subject: [PATCH 433/892] [FIX]:wrong check for browse record to integer lp bug: https://launchpad.net/bugs/894434 fixed bzr revid: ksa@tinyerp.com-20111128121940-7rhez036lhgd090y --- addons/product/product.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/product/product.py b/addons/product/product.py index ecf1761318e..c67b1f6c029 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -171,7 +171,7 @@ class product_uom(osv.osv): def write(self, cr, uid, ids, vals, context=None): if 'category_id' in vals: for uom in self.browse(cr, uid, ids, context=context): - if uom.category_id != vals['category_id']: + if uom.category_id.id != vals['category_id']: raise osv.except_osv(_('Warning'),_("Cannot change the category of existing UoM '%s'.") % (uom.name,)) return super(product_uom, self).write(cr, uid, ids, vals, context=context) From 235d501eeff302cde8b7409d3bbb5f0749d0f8d1 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Mon, 28 Nov 2011 18:17:48 +0530 Subject: [PATCH 434/892] [IMP] event: Added case of button_reg_close and event confirm from wizard and improved data data to confirm stage instead of done stage bzr revid: ron@tinyerp.com-20111128124748-f1xge9tyh9dv30tn --- addons/event/event_demo.xml | 2 +- addons/event/test/ui/demo_data.yml | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/addons/event/event_demo.xml b/addons/event/event_demo.xml index 9c9dba85730..4f86f620e6f 100644 --- a/addons/event/event_demo.xml +++ b/addons/event/event_demo.xml @@ -94,7 +94,7 @@ Thanks for registration. The conference will begin at 2 PM and will be given by Mr. Pinckaers. - + diff --git a/addons/event/test/ui/demo_data.yml b/addons/event/test/ui/demo_data.yml index 2762e3b3cda..2f48cf1a90b 100644 --- a/addons/event/test/ui/demo_data.yml +++ b/addons/event/test/ui/demo_data.yml @@ -18,3 +18,15 @@ !python {model: partner.event.registration}: | context.update({'active_id': ref("base.res_partner_ericdubois0")}) self.onchange_event_id(cr, uid, 1, ref("event_1"), context=context) +- + I confirm event from wizard. +- + !python {model: event.confirm}: | + context.update({'event_ids': [ref("event_2")]}) + id = self.create(cr, uid , {}) + self.confirm(cr, uid, [id], context=context) +- + I call close registration process. +- + !python {model: event.registration}: | + self.button_reg_close(cr, uid, [ref("reg_0_2")]) From 5ea00d2f0c270cd6315251f241d4c51674be9bfa Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Mon, 28 Nov 2011 18:23:28 +0530 Subject: [PATCH 435/892] [IMP] project_long_term: improve YML test cases of phase bzr revid: hmo@tinyerp.com-20111128125328-vd4ovcibw844y0d7 --- addons/project_long_term/__openerp__.py | 4 +- .../project_long_term_demo.xml | 5 ++ .../test/draft2open2close_phase.yml | 40 ---------- .../project_long_term/test/phase_process.yml | 79 +++++++++++++++++++ .../test/schedule_project_phases.yml | 63 --------------- .../test/schedule_project_tasks.yml | 25 ------ 6 files changed, 85 insertions(+), 131 deletions(-) delete mode 100644 addons/project_long_term/test/draft2open2close_phase.yml create mode 100644 addons/project_long_term/test/phase_process.yml delete mode 100644 addons/project_long_term/test/schedule_project_phases.yml delete mode 100644 addons/project_long_term/test/schedule_project_tasks.yml diff --git a/addons/project_long_term/__openerp__.py b/addons/project_long_term/__openerp__.py index f4dd4637f0f..9c6e1410b41 100644 --- a/addons/project_long_term/__openerp__.py +++ b/addons/project_long_term/__openerp__.py @@ -43,9 +43,7 @@ Features "init_xml": [], "demo_xml": ["project_long_term_demo.xml"], "test": [ - 'test/schedule_project_phases.yml', - 'test/schedule_project_tasks.yml', - 'test/draft2open2close_phase.yml', + 'test/phase_process.yml', ], "update_xml": [ "security/ir.model.access.csv", diff --git a/addons/project_long_term/project_long_term_demo.xml b/addons/project_long_term/project_long_term_demo.xml index ac15249499e..4cd6d5cdec4 100644 --- a/addons/project_long_term/project_long_term_demo.xml +++ b/addons/project_long_term/project_long_term_demo.xml @@ -5,6 +5,10 @@ This Demo data file Human Resources, Phases and Resources,Tasks allocation and also run scheduling of phase and tasks. --> + + + + @@ -13,6 +17,7 @@ 30 + diff --git a/addons/project_long_term/test/draft2open2close_phase.yml b/addons/project_long_term/test/draft2open2close_phase.yml deleted file mode 100644 index 610ccb8180a..00000000000 --- a/addons/project_long_term/test/draft2open2close_phase.yml +++ /dev/null @@ -1,40 +0,0 @@ -- - I make "Collect Requirement and Make SRS" in open state. -- - !python {model: project.phase}: | - self.set_open(cr, uid, [ref("project_phase_1")]) -- - I check state of phase after put in open. -- - !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in open state}: - - state == "open" -- - I make Phase in pending state because of resource problem. -- - !python {model: project.phase}: | - self.set_pending(cr, uid, [ref("project_phase_1")]) -- - I check state of phase after put in pending. -- - !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in pending state}: - - state == "pending" -- - I make Phase in cancel state. -- - !python {model: project.phase}: | - self.set_cancel(cr, uid, [ref("project_phase_1")]) -- - I check state of phase after put in cancel. -- - !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in cancel state}: - - state == "cancelled" -- - I make Phase "Design Model" in done state. -- - !python {model: project.phase}: | - self.set_done(cr, uid, [ref("project_phase_2")]) -- - I check state of phase after put in done. -- - !assert {model: project.phase, id: project_phase_2, severity: error, string: Phase should be in done state}: - - state == "done" \ No newline at end of file diff --git a/addons/project_long_term/test/phase_process.yml b/addons/project_long_term/test/phase_process.yml new file mode 100644 index 00000000000..77d7b6bce1a --- /dev/null +++ b/addons/project_long_term/test/phase_process.yml @@ -0,0 +1,79 @@ +- + In order to test process of Phases, +- + I create a record to schedule the phase of project. +- + !record {model: project.compute.phases, id: project_compute_phases01}: + target_project: 'one' + project_id: project.project_integrate_openerp +- + I schedule the phases. +- + !python {model: project.compute.phases}: | + self.check_selection(cr, uid, [ref("project_compute_phases01")]) +- + I check the starting date and ending date on the phases after scheduling. +- + !python {model: project.project}: | + project = self.browse(cr, uid, ref("project.project_integrate_openerp"), context=context) + def _convert(date): + import time + return time.strptime(date, '%Y-%m-%d %H:%M:%S') + def _check(phase, _convert, _check): #TOFIX: why need to pass function ? + for next_phase in phase.next_phase_ids: + assert _convert(next_phase.date_start) >= _convert(phase.date_end), "Phase does not start in proper date." + _check(next_phase, _convert, _check) + return True + + for phase in project.phase_ids: + + assert phase.date_start, "Start date should be computed." + assert phase.date_end, "End date should be computed." + if not phase.previous_phase_ids and phase.constraint_date_start: + assert _convert(phase.date_start) >= _convert(phase.constraint_date_start), "Phase does not start in proper date." + _check(phase, _convert, _check) +- + I open phase. +- + !python {model: project.phase}: | + self.set_open(cr, uid, [ref("project_phase_1")]) +- + I check state of phase after opened. +- + !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in open state}: + - state == "open" +- + I put phase in pending state. +- + !python {model: project.phase}: | + self.set_pending(cr, uid, [ref("project_phase_1")]) +- + I check state of phase after put in pending. +- + !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in pending state}: + - state == "pending" +- + I make Phase in cancel state. +- + !python {model: project.phase}: | + self.set_cancel(cr, uid, [ref("project_phase_1")]) +- + I check state of phase after cancelled. +- + !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in cancel state}: + - state == "cancelled" +- + I put again in draft phase. +- + !python {model: project.phase}: | + self.set_draft(cr, uid, [ref("project_phase_1")]) +- + I close phase. +- + !python {model: project.phase}: | + self.set_done(cr, uid, [ref("project_phase_1")]) +- + I check state of phase after closed. +- + !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in done state}: + - state == "done" diff --git a/addons/project_long_term/test/schedule_project_phases.yml b/addons/project_long_term/test/schedule_project_phases.yml deleted file mode 100644 index c7a2addddb2..00000000000 --- a/addons/project_long_term/test/schedule_project_phases.yml +++ /dev/null @@ -1,63 +0,0 @@ -- - I Set working period to Project 'Integrate a Sale and Warehouse Management' -- - !python {model: project.project}: | - self.write(cr, uid, [ref("project.project_integrate_openerp")], {'resource_calendar_id': ref("resource.timesheet_group1")}) -- - I update the constrain and the "Collect Requirement and Make SRS" to not start before 4 days. -- - !python {model : project.phase }: | - pass - import datetime - from dateutil.relativedelta import * - start = datetime.date.today() + relativedelta(days=4) - self.write(cr,uid, [(ref("project_phase_1"))], {'constraint_date_start': start}) -- - I Schedule Phases of Project. -- - !python {model: project.project}: | - self.schedule_phases(cr, uid, ref("project.project_integrate_openerp")) -- - Now I create a record to compute the phase of project. -- - !record {model: project.compute.phases, id: project_compute_phases01}: - target_project: 'one' - project_id: project.project_integrate_openerp -- - I schedule the phases. -- - !python {model: project.compute.phases}: | - self.check_selection(cr, uid, [ref("project_compute_phases01")]) -- - Check if phases scheduled, check that either of phase's start_date, end_date and user_id is not null -- - !python {model: project.project}: | - prj=self.browse(cr, uid, [ref("project.project_integrate_openerp")])[0] - for phase in prj.phase_ids: - if (not phase.date_start) or (not phase.date_end): - raise AssertionError("Phase not scheduled") -- - After scheduling, I check the starting date and ending date on the phases are correct. -- - !python {model: project.phase}: | - import datetime - from dateutil.relativedelta import * - minstart = (datetime.date.today() + relativedelta(days=4)).strftime('%Y-%m-%d') - minend = (datetime.date.today() + relativedelta(days=5)).strftime('%Y-%m-%d') - - phase1=self.browse(cr, uid, ref('project_phase_1')) - assert phase1.date_start>=minstart, 'Error, the Collect Requirement and Make SRS phase '+phase1.date_start+' should start after '+str(minstart) - assert phase1.date_end>=minend, 'Error, the Collect Requirement and Make SRS phase should end after '+str(minend) - - phase2=self.browse(cr, uid, ref('project_phase_2')) - assert phase2.date_start>=phase1.date_end, 'Error, the phase Design Model should start after the end of the Collect Requirement and Make SRS phase' - - phase3=self.browse(cr, uid, ref('project_phase_3')) - assert phase3.date_start>=phase2.date_end, 'Error, the phase Development and Integration should start after the end of the Design Model phase' - - phase4=self.browse(cr, uid, ref('project_phase_4')) - assert phase4.date_start>=phase3.date_end, 'Error, the phase Review and Testing should start after the end of the Development and Integration phase' - - phase5=self.browse(cr, uid, ref('project_phase_5')) - assert phase5.date_start>=phase4.date_end, 'Error, the phase Deployement and Training start after the end of the Review and Testing phase' - assert phase5.date_start Date: Mon, 28 Nov 2011 18:25:47 +0530 Subject: [PATCH 436/892] [IMP] project_long_term: indetation in yml bzr revid: hmo@tinyerp.com-20111128125547-sy83re0c5vjb51sy --- addons/project_long_term/test/phase_process.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/project_long_term/test/phase_process.yml b/addons/project_long_term/test/phase_process.yml index 77d7b6bce1a..725c5b2a97d 100644 --- a/addons/project_long_term/test/phase_process.yml +++ b/addons/project_long_term/test/phase_process.yml @@ -41,7 +41,7 @@ I check state of phase after opened. - !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in open state}: - - state == "open" + - state == "open" - I put phase in pending state. - @@ -51,7 +51,7 @@ I check state of phase after put in pending. - !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in pending state}: - - state == "pending" + - state == "pending" - I make Phase in cancel state. - @@ -61,7 +61,7 @@ I check state of phase after cancelled. - !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in cancel state}: - - state == "cancelled" + - state == "cancelled" - I put again in draft phase. - From 10a371398ea7f645ef44ee3077943863f033f64d Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 28 Nov 2011 14:57:09 +0100 Subject: [PATCH 437/892] [REM] Kanban: removed 1px padding around gravatar image (requested by fp) bzr revid: fme@openerp.com-20111128135709-3jj8r6onj8d2g5e9 --- addons/web_kanban/static/src/css/kanban.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 451727d9207..55da90810cd 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -111,11 +111,11 @@ margin: 0; padding: 0; } +.openerp .oe_kanban_table tr td { + padding: 0; +} .openerp .oe_kanban_gravatar { display: block; - border-radius: 2px; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; } .openerp .oe_kanban_box_content { padding: 4px; From 8c593ea507bf42438f5a0653f2bea70e55deee48 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 28 Nov 2011 15:03:02 +0100 Subject: [PATCH 438/892] [IMP] jQuery tipTip: call options.content() with 'this' == element Note: will maintain forked version here https://github.com/amigrave/TipTip bzr revid: fme@openerp.com-20111128140302-uukrsnpfneksr9co --- addons/web/static/lib/jquery.tipTip/jquery.tipTip.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/lib/jquery.tipTip/jquery.tipTip.js b/addons/web/static/lib/jquery.tipTip/jquery.tipTip.js index 0b3a24d4beb..d5295f1e155 100644 --- a/addons/web/static/lib/jquery.tipTip/jquery.tipTip.js +++ b/addons/web/static/lib/jquery.tipTip/jquery.tipTip.js @@ -94,7 +94,7 @@ function active_tiptip(){ opts.enter.call(this); - var org_title = typeof opts.content === 'function' ? opts.content() : opts.content; + var org_title = typeof opts.content === 'function' ? opts.content.call(org_elem, opts) : opts.content; org_title = org_title || org_elem.attr(opts.attribute); tiptip_content.html(org_title); tiptip_holder.hide().removeAttr("class").css("margin","0"); From 25f83943e19904a9358ad15fb59e6f26f2baffcf Mon Sep 17 00:00:00 2001 From: Numerigraphe - Lionel Sausin Date: Mon, 28 Nov 2011 15:43:48 +0100 Subject: [PATCH 439/892] =?UTF-8?q?[IMP]=20extensive=20module=20descriptio?= =?UTF-8?q?n=20[IMP]=20assign=20(c)=20back=20to=20Num=C3=A9rigraphe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit lp bug: https://launchpad.net/bugs/387958 fixed bzr revid: ls@numerigraphe.fr-20111128144348-ccl8ays59rc2hvj2 --- addons/l10n_fr_rib/__init__.py | 2 +- addons/l10n_fr_rib/__openerp__.py | 17 ++++++++++++++--- addons/l10n_fr_rib/bank.py | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/addons/l10n_fr_rib/__init__.py b/addons/l10n_fr_rib/__init__.py index bdaab364c54..a061d3f40a2 100644 --- a/addons/l10n_fr_rib/__init__.py +++ b/addons/l10n_fr_rib/__init__.py @@ -2,7 +2,7 @@ ############################################################################## # # OpenERP, Open Source Management Solution -# Copyright (C) 2011 OpenERP SA (). +# Copyright (C) 2011 Numérigraphe SARL. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/addons/l10n_fr_rib/__openerp__.py b/addons/l10n_fr_rib/__openerp__.py index 16ae81fb431..87614dfa01e 100644 --- a/addons/l10n_fr_rib/__openerp__.py +++ b/addons/l10n_fr_rib/__openerp__.py @@ -2,7 +2,7 @@ ############################################################################## # # OpenERP, Open Source Management Solution -# Copyright (C) 2011 OpenERP SA (). +# Copyright (C) 2011 Numérigraphe SARL. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -24,8 +24,19 @@ 'version': '1.0', 'category': 'Hidden', 'description': ''' -This module installs the base for RIB bank accounts (French standard for bank accounts). -To make it easier to enter RIB data, it will also allow to search for banks by code.''', +This module lets users enter the banking details of Partners in the RIB format (French standard for bank accounts details). +RIB Bank Accounts can be entered in the "Accounting" tab of the Partner form by specifying the account type "RIB". The four standard RIB fields will then become mandatory: +- Bank Code +- Office Code +- Account number +- RIB key +As a safety measure, OpenERP will check the RIB key whenever a RIB is saved, and will refuse to record the data if the key is incorrect. Please bear in mind that this can only happen when the user presses the "save" button, for example on the Partner Form. +Since each bank account may relate to a Bank, users may enter the RIB Bank Code in the Bank form - it will the pre-fill the Bank Code on the RIB when they select the Bank. +To make this easier, this module will also let users find Banks using their RIB code. + +The module base_iban can be a useful addition to this module, because French banks are now progressively adopting the international IBAN format instead of the RIB format. +The RIB and IBAN codes for a single account can be entered by recording two Bank Accounts in OpenERP: the first with the type "RIB", the second with the type "IBAN". +''', 'author' : u'Numérigraphe SARL', 'depends': ['base', 'account'], 'init_xml': ['bank_data.xml', ], diff --git a/addons/l10n_fr_rib/bank.py b/addons/l10n_fr_rib/bank.py index b1a285ef743..22b1bad01e1 100644 --- a/addons/l10n_fr_rib/bank.py +++ b/addons/l10n_fr_rib/bank.py @@ -2,7 +2,7 @@ ############################################################################## # # OpenERP, Open Source Management Solution -# Copyright (C) 2011 OpenERP SA (). +# Copyright (C) 2011 Numérigraphe SARL. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as From 4d7fff7851c5c45ad191efe04b4fb424d0459c2a Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 28 Nov 2011 15:47:26 +0100 Subject: [PATCH 440/892] [FIX] move reload-webclient-on-module-install to act_window execution A special case reloads the Webclient if a dialog-included operation involving potential module installation (base.module.upgrade, or base.setup.installer) is involved. This was performed on an act_close, but it meant a module-involving act_window followed by a non-module-involving act_window (e.g. installation of a chart of account) did not match the check criteria and failed to trigger the reloading of the web client. Check moved to act_window execution, and augments the on_close handler bound to the dialog's closing any time a potential module installation (see above) is encountered, to ensure we don't "lose" cases, such as the installation of the `sales` application (from "add more features"), which was the issue in the related lp bug. lp bug: https://launchpad.net/bugs/887459 fixed bzr revid: xmo@openerp.com-20111128144726-aurpni1go73ezs6y --- addons/web/static/src/js/views.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 5a26ef58b03..582a526e57a 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -91,6 +91,14 @@ session.web.ActionManager = session.web.Widget.extend({ return this[type](action, on_close); }, ir_actions_act_window: function (action, on_close) { + if (_(['base.module.upgrade', 'base.setup.installer']) + .contains(action.res_model)) { + var old_close = on_close; + on_close = function () { + session.webclient.do_reload(); + if (old_close) { old_close(); } + }; + } if (action.target === 'new') { if (this.dialog == null) { this.dialog = new session.web.Dialog(this, { title: action.name, width: '80%' }); @@ -121,12 +129,6 @@ session.web.ActionManager = session.web.Widget.extend({ if (!this.dialog && on_closed) { on_closed(); } - if (this.dialog && action.context) { - var model = action.context.active_model; - if (model === 'base.module.upgrade' || model === 'base.setup.installer' || model === 'base.module.upgrade') { - session.webclient.do_reload(); - } - } this.dialog_stop(); }, ir_actions_server: function (action, on_closed) { From 8b2f958cb09be20ce5c7e31edc9b9c9a51509940 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 28 Nov 2011 16:00:03 +0100 Subject: [PATCH 441/892] [ADD] Kanban: added possibility to use tooltips bzr revid: fme@openerp.com-20111128150003-t6bu6c63xnoy1lhg --- addons/web_kanban/static/src/css/kanban.css | 9 +++++++++ addons/web_kanban/static/src/js/kanban.js | 19 ++++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 55da90810cd..1a45155058e 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -114,6 +114,9 @@ .openerp .oe_kanban_table tr td { padding: 0; } +.openerp .oe_kanban_table tr td.oe_kanban_title3 { + padding: 2px; +} .openerp .oe_kanban_gravatar { display: block; } @@ -194,6 +197,12 @@ .openerp .oe_kanban_color_border { border-color: #CCCCCC; } +.openerp .oe_kanban_tooltip ul, +.openerp ul.oe_kanban_tooltip { + padding: 0 0 4px 0; + margin: 5px 0 0 15px; + list-style: circle; +} /* Custom colors are also present in kanban.js */ /* Custom color#0 */ diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 585ae1138d5..c21b5bc151e 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -387,17 +387,17 @@ openerp.web_kanban.KanbanRecord = openerp.web.Widget.extend({ return new_record; }, render: function() { - var ctx = { + this.qweb_context = { record: this.record, widget: this } for (var p in this) { if (_.str.startsWith(p, 'kanban_')) { - ctx[p] = _.bind(this[p], this); + this.qweb_context[p] = _.bind(this[p], this); } } return this._super({ - 'content': this.view.qweb.render('kanban-box', ctx) + 'content': this.view.qweb.render('kanban-box', this.qweb_context) }); }, bind_events: function() { @@ -408,6 +408,19 @@ openerp.web_kanban.KanbanRecord = openerp.web.Widget.extend({ $show_on_click.toggle(); self.state.folded = !self.state.folded; }); + + this.$element.find('[tooltip]').tipTip({ + maxWidth: 500, + defaultPosition: 'top', + content: function() { + var template = $(this).attr('tooltip'); + if (!self.view.qweb.has_template(template)) { + return false; + } + return self.view.qweb.render(template, self.qweb_context); + } + }); + this.$element.find('.oe_kanban_action').click(function() { var $action = $(this), type = $action.data('type') || 'button', From 6710f39da0f85b43984d718be31ef201744ce729 Mon Sep 17 00:00:00 2001 From: Numerigraphe - Lionel Sausin Date: Mon, 28 Nov 2011 16:10:16 +0100 Subject: [PATCH 442/892] [DEL] l10n_fr_rib: drop useless Bank Account search() overload bzr revid: ls@numerigraphe.fr-20111128151016-0z48km039apfq3q5 --- addons/l10n_fr_rib/bank.py | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/addons/l10n_fr_rib/bank.py b/addons/l10n_fr_rib/bank.py index 22b1bad01e1..ea32bca4467 100644 --- a/addons/l10n_fr_rib/bank.py +++ b/addons/l10n_fr_rib/bank.py @@ -54,23 +54,6 @@ class res_partner_bank(osv.osv): return False return True - def search(self, cr, uid, args, offset=0, limit=None, order=None, - context=None, count=False): - """Search on type == rib""" - res = super(res_partner_bank, self).search(cr, uid, args, offset, - limit=limit, order=order, context=context, count=count) - if filter(lambda x:x[0] == 'acc_number' , args): - #get the value of the search - rib_value = filter(lambda x:x[0] == 'acc_number' , args)[0][2] - #get the other arguments of the search - args1 = filter(lambda x:x[0] != 'acc_number' , args) - #add the new criterion - args1 += [('rib', 'ilike', rib_value)] - #append the results to the older search - res += super(res_partner_bank, self).search(cr, uid, args1, offset, - limit, order, context=context, count=count) - return res - def onchange_bank_id(self, cr, uid, ids, bank_id, context=None): """Change the bank code""" result = super(res_partner_bank, self).onchange_bank_id(cr, uid, ids, bank_id, From 38e1a8a66013adc0a2baf7cb8097789a82507bd3 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 28 Nov 2011 16:39:41 +0100 Subject: [PATCH 443/892] [FIX] according to spec, Array.prototype.sort is not defined as returning anything, Opera implements it strictly bzr revid: xmo@openerp.com-20111128153941-xox35xedo9v2du2d --- addons/web/static/src/js/core.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index 8eeca33934f..c9255d31949 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -1029,7 +1029,8 @@ openerp.web.TranslationDataBase = openerp.web.Class.extend(/** @lends openerp.we set_bundle: function(translation_bundle) { var self = this; this.db = {}; - var modules = _.keys(translation_bundle.modules).sort(); + var modules = _.keys(translation_bundle.modules); + modules.sort(); if (_.include(modules, "web")) { modules = ["web"].concat(_.without(modules, "web")); } From a7425afa444f23d3116bfca29437a048d546db31 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 28 Nov 2011 16:48:48 +0100 Subject: [PATCH 444/892] [IMP] Improved crm.lead and project.task kanban views bzr revid: fme@openerp.com-20111128154848-22wgu39fktg9o0v3 --- addons/crm/crm_lead.py | 1 + addons/crm/crm_lead_view.xml | 44 +++++++++++++++------- addons/pad_project/models/project_task.xml | 4 +- addons/project/project_view.xml | 28 +++++++++----- 4 files changed, 51 insertions(+), 26 deletions(-) diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index e74ce00d728..f7c2769ba46 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -206,6 +206,7 @@ class crm_lead(crm_case, osv.osv): 'stage_id': fields.many2one('crm.case.stage', 'Stage', domain="[('section_ids', '=', section_id)]"), 'color': fields.integer('Color Index'), 'partner_address_name': fields.related('partner_address_id', 'name', type='char', string='Partner Contact Name', readonly=True), + 'partner_address_email': fields.related('partner_address_id', 'email', type='char', string='Partner Contact Email', readonly=True), 'company_currency': fields.related('company_id', 'currency_id', 'symbol', type='char', string='Company Currency', readonly=True), 'user_email': fields.related('user_id', 'user_email', type='char', string='User Email', readonly=True), 'user_login': fields.related('user_id', 'login', type='char', string='User Login', readonly=True), diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index bed2e110b3e..9a6aaea66b4 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -304,31 +304,46 @@ + + + +
    +
  • Phone:
  • +
  • Probability: %%
  • +
  • Creation date:
  • +
  • Date Deadline:
  • +
+
- -
+ oe_kanban_color_red +
- + - - +
+ + + + - + + - -
diff --git a/addons/pad_project/models/project_task.xml b/addons/pad_project/models/project_task.xml index 5fa113e9b54..3c734cf3b97 100644 --- a/addons/pad_project/models/project_task.xml +++ b/addons/pad_project/models/project_task.xml @@ -6,8 +6,8 @@ kanban - - PAD + + PAD diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index a9dd99789d3..7c169bfa1cc 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -263,7 +263,7 @@
From 64a08f7165c1dfab695a2f74f296f46afb8c6821 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Tue, 29 Nov 2011 14:23:26 +0530 Subject: [PATCH 454/892] [FIX] mrp :- add view_mode in mrp.bom tree view. bzr revid: ysa@tinyerp.com-20111129085326-05iks6b7lv7bkhgg --- addons/mrp/mrp_view.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index dafe399b583..60f1414b635 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -521,6 +521,7 @@ ir.actions.act_window mrp.bom [('id','=',active_id)] + tree tree @@ -776,7 +777,7 @@ - + @@ -972,7 +973,7 @@ - + - + Date: Tue, 29 Nov 2011 10:38:00 +0100 Subject: [PATCH 455/892] [FIX] ir.translation: keywargs not supported when clearing caches bzr revid: odo@openerp.com-20111129093800-4bsldbpjh1q4zix1 --- openerp/addons/base/ir/ir_translation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_translation.py b/openerp/addons/base/ir/ir_translation.py index d8127da0593..121de57b7b0 100644 --- a/openerp/addons/base/ir/ir_translation.py +++ b/openerp/addons/base/ir/ir_translation.py @@ -198,7 +198,7 @@ class ir_translation(osv.osv): if isinstance(ids, (int, long)): ids = [ids] for trans_obj in self.read(cursor, user, ids, ['name','type','res_id','src','lang'], context=context): - self._get_source.clear_cache(self, user, trans_obj['name'], trans_obj['type'], trans_obj['lang'], source=trans_obj['src']) + self._get_source.clear_cache(self, user, trans_obj['name'], trans_obj['type'], trans_obj['lang'], trans_obj['src']) self._get_ids.clear_cache(self, user, trans_obj['name'], trans_obj['type'], trans_obj['lang'], trans_obj['res_id']) result = super(ir_translation, self).unlink(cursor, user, ids, context=context) return result From b30865bdefb87bc5dfb65612ea10a9fe8923dab7 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Tue, 29 Nov 2011 10:39:13 +0100 Subject: [PATCH 456/892] [IMP] module: rename `Schedule Upgrade` to `Upgrade`, as it start immediately now bzr revid: odo@openerp.com-20111129093913-8s50nn38mdqtkiwu --- openerp/addons/base/module/module_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/module/module_view.xml b/openerp/addons/base/module/module_view.xml index 06c4202d822..987914a1e66 100644 --- a/openerp/addons/base/module/module_view.xml +++ b/openerp/addons/base/module/module_view.xml @@ -117,7 +117,7 @@ - - -
@@ -674,6 +670,16 @@
+ + + + + + + +
From 44f04130c6d0dafc5d19df0156a02f5872cb99c7 Mon Sep 17 00:00:00 2001 From: "nicolas.bessi@camptocamp.com" <> Date: Tue, 29 Nov 2011 16:03:45 +0100 Subject: [PATCH 467/892] =?UTF-8?q?[FIX]=C2=A0view=20domain?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bzr revid: nicolas.bessi@camptocamp.com-20111129150345-tq2p9esoi8lc22fa --- addons/l10n_ch/bank_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/l10n_ch/bank_view.xml b/addons/l10n_ch/bank_view.xml index f8c66c16000..705e2d63ef4 100644 --- a/addons/l10n_ch/bank_view.xml +++ b/addons/l10n_ch/bank_view.xml @@ -138,7 +138,7 @@ - + From 9f58a783ae416509f12279cda76ddefc62811322 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Tue, 29 Nov 2011 16:48:41 +0100 Subject: [PATCH 468/892] [IMP] project: filter Tasks with user's preferred project bzr revid: odo@openerp.com-20111129154841-d0airx6e0xxmu4cc --- addons/project/project_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 3acdcec82f4..9f79b4ca95d 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -529,7 +529,7 @@ tree,form,calendar,gantt,graph,kanban - {"search_default_draft": 1, "search_default_open":1} + {"search_default_draft": 1, "search_default_open":1, "search_default_project_id": project_id} A task represents a work that has to be done. Each user works in his own list of tasks where he can record his task work in hours. He can work and close the task itself or delegate it to another user. If you delegate a task to another user, you get a new task in pending state, which will be reopened when you have to review the work achieved. If you install the project_timesheet module, task work can be invoiced based on the project configuration. With the project_mrp module, sales orders can create tasks automatically when they are confirmed. From a6a069a5db811d5572db7908ff86248f56553d29 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 30 Nov 2011 00:20:25 +0100 Subject: [PATCH 469/892] [FIX] QWeb inheritance broken in MSIE (8, 9, 10), client does not work at all Could not test on IE 7 neither IE 10 IE 8 still crashes but for another error lp bug: https://launchpad.net/bugs/891132 fixed bzr revid: fme@openerp.com-20111129232025-b49gr4k2ngnqahbt --- addons/web/static/lib/qweb/qweb2.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/addons/web/static/lib/qweb/qweb2.js b/addons/web/static/lib/qweb/qweb2.js index a6a6da5a6d7..093b3651fa0 100644 --- a/addons/web/static/lib/qweb/qweb2.js +++ b/addons/web/static/lib/qweb/qweb2.js @@ -373,6 +373,12 @@ QWeb2.Engine = (function() { if (!this.jQuery) { return this.tools.exception("Can't extend template " + template + " without jQuery"); } + var template_dest = this.templates[template], + msie_trololo = false; + if (template_dest.xml !== undefined) { + template_dest = this.jQuery(template_dest.xml); + msie_trololo = true; + } for (var i = 0, ilen = extend_node.childNodes.length; i < ilen; i++) { var child = extend_node.childNodes[i]; if (child.nodeType === 1) { @@ -382,7 +388,7 @@ QWeb2.Engine = (function() { target, error_msg = "Error while extending template '" + template; if (jquery) { - target = this.jQuery(jquery, this.templates[template]); + target = this.jQuery(jquery, template_dest); } else if (xpath) { // NOTE: due to the XPath implementation, extending a template will only work once // when using XPath because XPathResult won't match objects with other constructor than 'Element' @@ -415,6 +421,9 @@ QWeb2.Engine = (function() { } } } + if (msie_trololo) { + this.templates[template] = template_dest[0]; + } } }); return Engine; From 44e9d42e0815abf1e7d1a088f059e581ef0cac0a Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Wed, 30 Nov 2011 05:27:37 +0000 Subject: [PATCH 470/892] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20111130052737-yw0i1aunztyvwfzu --- addons/account_asset/i18n/de.po | 188 +++++------ addons/hr_payroll/i18n/cs.po | 552 ++++++++++++++++--------------- addons/portal/i18n/de.po | 137 ++++---- addons/stock/i18n/de.po | 12 +- addons/stock_planning/i18n/de.po | 30 +- 5 files changed, 484 insertions(+), 435 deletions(-) diff --git a/addons/account_asset/i18n/de.po b/addons/account_asset/i18n/de.po index 41ca6dd0fbe..5b6c044d3c2 100755 --- a/addons/account_asset/i18n/de.po +++ b/addons/account_asset/i18n/de.po @@ -8,31 +8,31 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2009-11-24 12:54+0000\n" -"PO-Revision-Date: 2011-07-12 12:04+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2011-11-29 08:00+0000\n" +"Last-Translator: Ferdinand @ Camptocamp \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:57+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-30 05:27+0000\n" +"X-Generator: Launchpad (build 14404)\n" #. module: account_asset #: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_list_normal #: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_list_normal msgid "Open Assets" -msgstr "" +msgstr "Anlage (Entwurf)" #. module: account_asset #: field:account.asset.property,method_end:0 #: field:account.asset.property.history,method_end:0 msgid "Ending date" -msgstr "" +msgstr "Ende Datum" #. module: account_asset #: view:account.asset.asset:0 msgid "Depreciation board" -msgstr "" +msgstr "Abschreibungs-Tableau" #. module: account_asset #: view:account.asset.asset:0 @@ -45,61 +45,61 @@ msgstr "" #: model:ir.model,name:account_asset.model_account_asset_asset #: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_form msgid "Asset" -msgstr "" +msgstr "Anlagegüter" #. module: account_asset #: constraint:ir.actions.act_window:0 msgid "Invalid model name in the action definition." -msgstr "" +msgstr "Ungültiger Modellname in der Aktionsdefinition." #. module: account_asset #: selection:account.asset.property,method:0 msgid "Linear" -msgstr "" +msgstr "Linear" #. module: account_asset #: view:account.asset.asset:0 msgid "Change duration" -msgstr "" +msgstr "Verändere Lebensdauer" #. module: account_asset #: field:account.asset.asset,child_ids:0 msgid "Child assets" -msgstr "" +msgstr "untergeordnete Anlagengüter" #. module: account_asset #: field:account.asset.board,value_asset:0 msgid "Asset Value" -msgstr "" +msgstr "Anlagenwert" #. module: account_asset #: wizard_field:account.asset.modify,init,name:0 msgid "Reason" -msgstr "" +msgstr "Begründung" #. module: account_asset #: view:account.asset.asset:0 #: field:account.asset.asset,entry_ids:0 #: wizard_field:account.asset.compute,asset_compute,move_ids:0 msgid "Entries" -msgstr "" +msgstr "Buchungen" #. module: account_asset #: wizard_view:account.asset.compute,asset_compute:0 msgid "Generated entries" -msgstr "" +msgstr "erzeugte Buchungen" #. module: account_asset #: wizard_field:account.asset.modify,init,method_delay:0 #: field:account.asset.property,method_delay:0 #: field:account.asset.property.history,method_delay:0 msgid "Number of interval" -msgstr "" +msgstr "Anzahl der Intervalle" #. module: account_asset #: wizard_button:account.asset.compute,asset_compute,asset_open:0 msgid "Open entries" -msgstr "" +msgstr "offene Buchungen" #. module: account_asset #: view:account.asset.asset:0 @@ -108,102 +108,102 @@ msgstr "" #: model:ir.ui.menu,name:account_asset.menu_finance_Assets #: model:ir.ui.menu,name:account_asset.menu_finance_config_Assets msgid "Assets" -msgstr "" +msgstr "Anlagegüter" #. module: account_asset #: selection:account.asset.property,method:0 msgid "Progressive" -msgstr "" +msgstr "Progressiv" #. module: account_asset #: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_list_draft #: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_list_draft msgid "Draft Assets" -msgstr "" +msgstr "Anlagegüter (Entwurf)" #. module: account_asset #: wizard_view:account.asset.modify,init:0 #: wizard_field:account.asset.modify,init,note:0 #: view:account.asset.property.history:0 msgid "Notes" -msgstr "" +msgstr "Bemerkungen" #. module: account_asset #: view:account.asset.asset:0 msgid "Change history" -msgstr "" +msgstr "Bearbeitungshistorie" #. module: account_asset #: view:account.asset.asset:0 msgid "Depreciation entries" -msgstr "" +msgstr "Abschreibungsbuchungen" #. module: account_asset #: view:account.asset.asset:0 msgid "Methods" -msgstr "" +msgstr "Methoden" #. module: account_asset #: wizard_view:account.asset.modify,init:0 msgid "Asset properties to modify" -msgstr "" +msgstr "zu verändernde Anlagenmerkmale" #. module: account_asset #: field:account.asset.asset,partner_id:0 msgid "Partner" -msgstr "" +msgstr "Partner" #. module: account_asset #: wizard_field:account.asset.modify,init,method_period:0 #: field:account.asset.property,method_period:0 #: field:account.asset.property.history,method_period:0 msgid "Period per interval" -msgstr "" +msgstr "Perioden pro Intervall" #. module: account_asset #: view:account.asset.asset:0 msgid "Depreciation duration" -msgstr "" +msgstr "Abschreibungsdauer" #. module: account_asset #: field:account.asset.property,account_analytic_id:0 msgid "Analytic account" -msgstr "" +msgstr "Analytisches Konto" #. module: account_asset #: field:account.asset.property,state:0 msgid "State" -msgstr "" +msgstr "Status" #. module: account_asset #: view:account.asset.asset:0 msgid "Depreciation methods" -msgstr "" +msgstr "Abschreibungsmethode" #. module: account_asset #: view:account.asset.asset:0 msgid "Other information" -msgstr "" +msgstr "Andere Informationen" #. module: account_asset #: field:account.asset.board,value_asset_cumul:0 msgid "Cumul. value" -msgstr "" +msgstr "kummulierter Betrag" #. module: account_asset #: view:account.asset.property:0 msgid "Assets methods" -msgstr "" +msgstr "Anlagen Methoden" #. module: account_asset #: constraint:ir.ui.view:0 msgid "Invalid XML for View Architecture!" -msgstr "" +msgstr "Fehlerhafter XML-Code für diese Ansicht!" #. module: account_asset #: model:ir.model,name:account_asset.model_account_asset_property msgid "Asset property" -msgstr "" +msgstr "Anlagenmerkmale" #. module: account_asset #: wizard_view:account.asset.compute,asset_compute:0 @@ -212,30 +212,30 @@ msgstr "" #: model:ir.actions.wizard,name:account_asset.wizard_asset_compute #: model:ir.ui.menu,name:account_asset.menu_wizard_asset_compute msgid "Compute assets" -msgstr "" +msgstr "Berechne Anlagen" #. module: account_asset #: wizard_view:account.asset.modify,init:0 #: wizard_button:account.asset.modify,init,asset_modify:0 #: model:ir.actions.wizard,name:account_asset.wizard_asset_modify msgid "Modify asset" -msgstr "" +msgstr "Verändere Anlagegut" #. module: account_asset #: view:account.asset.asset:0 msgid "Confirm asset" -msgstr "" +msgstr "Anlagegut bestätigen" #. module: account_asset #: view:account.asset.property.history:0 #: model:ir.model,name:account_asset.model_account_asset_property_history msgid "Asset history" -msgstr "" +msgstr "Anlagenhistorie" #. module: account_asset #: field:account.asset.property,date:0 msgid "Date created" -msgstr "" +msgstr "Erstellungsdatum" #. module: account_asset #: model:ir.module.module,description:account_asset.module_meta_information @@ -252,211 +252,213 @@ msgstr "" #: field:account.asset.board,value_gross:0 #: field:account.asset.property,value_total:0 msgid "Gross value" -msgstr "" +msgstr "Anschaffungswert" #. module: account_asset #: selection:account.asset.property,method_time:0 msgid "Ending period" -msgstr "" +msgstr "Periodenende" #. module: account_asset #: field:account.asset.board,name:0 msgid "Asset name" -msgstr "" +msgstr "Anlagenname" #. module: account_asset #: view:account.asset.asset:0 msgid "Accounts information" -msgstr "" +msgstr "Konto Information" #. module: account_asset #: field:account.asset.asset,note:0 #: field:account.asset.category,note:0 #: field:account.asset.property.history,note:0 msgid "Note" -msgstr "" +msgstr "Notiz" #. module: account_asset #: selection:account.asset.asset,state:0 #: selection:account.asset.property,state:0 msgid "Draft" -msgstr "" +msgstr "Entwurf" #. module: account_asset #: field:account.asset.property,type:0 msgid "Depr. method type" -msgstr "" +msgstr "Abschreibungsmethode" #. module: account_asset #: field:account.asset.property,account_asset_id:0 msgid "Asset account" -msgstr "" +msgstr "Anlagenkonto" #. module: account_asset #: field:account.asset.property.history,asset_property_id:0 msgid "Method" -msgstr "" +msgstr "Methode" #. module: account_asset #: selection:account.asset.asset,state:0 msgid "Normal" -msgstr "" +msgstr "Normal" #. module: account_asset #: field:account.asset.property,method_progress_factor:0 msgid "Progressif factor" -msgstr "" +msgstr "Progressionsfaktor" #. module: account_asset #: field:account.asset.asset,localisation:0 msgid "Localisation" -msgstr "" +msgstr "Lokalisation" #. module: account_asset #: field:account.asset.property,method:0 msgid "Computation method" -msgstr "" +msgstr "Berechnungsmethode" #. module: account_asset #: field:account.asset.property,method_time:0 msgid "Time method" -msgstr "" +msgstr "Zeitmethode" #. module: account_asset #: field:account.asset.asset,active:0 msgid "Active" -msgstr "" +msgstr "Aktiv" #. module: account_asset #: field:account.asset.property.history,user_id:0 msgid "User" -msgstr "" +msgstr "Benutzer" #. module: account_asset #: field:account.asset.asset,property_ids:0 msgid "Asset method name" -msgstr "" +msgstr "Anlagenmethoden Bezeichnung" #. module: account_asset #: field:account.asset.asset,date:0 #: field:account.asset.property.history,date:0 msgid "Date" -msgstr "" +msgstr "Datum" #. module: account_asset #: field:account.asset.board,value_net:0 msgid "Net value" -msgstr "" +msgstr "Netto Wert" #. module: account_asset #: wizard_view:account.asset.close,init:0 #: model:ir.actions.wizard,name:account_asset.wizard_asset_close msgid "Close asset" -msgstr "" +msgstr "Anlagegut schliessen" #. module: account_asset #: field:account.asset.property,history_ids:0 msgid "History" -msgstr "" +msgstr "Verlauf" #. module: account_asset #: field:account.asset.property,account_actif_id:0 msgid "Depreciation account" -msgstr "" +msgstr "AfA-Konto" #. module: account_asset #: field:account.asset.asset,period_id:0 #: wizard_field:account.asset.compute,init,period_id:0 msgid "Period" -msgstr "" +msgstr "Periode" #. module: account_asset #: model:ir.actions.act_window,name:account_asset.action_account_asset_category_form #: model:ir.ui.menu,name:account_asset.menu_action_account_asset_category_form msgid "Asset Category" -msgstr "" +msgstr "Anlagenkategorie" #. module: account_asset #: wizard_button:account.asset.close,init,end:0 #: wizard_button:account.asset.compute,init,end:0 #: wizard_button:account.asset.modify,init,end:0 msgid "Cancel" -msgstr "" +msgstr "Abbrechen" #. module: account_asset #: selection:account.asset.asset,state:0 #: wizard_button:account.asset.compute,asset_compute,end:0 #: selection:account.asset.property,state:0 msgid "Close" -msgstr "" +msgstr "Schließen" #. module: account_asset #: selection:account.asset.property,state:0 msgid "Open" -msgstr "" +msgstr "Öffnen" #. module: account_asset #: constraint:ir.model:0 msgid "" "The Object name must start with x_ and not contain any special character !" msgstr "" +"Der Objektname muss mit \"x_\" beginnen und darf keine Sonderzeichen " +"beinhalten!" #. module: account_asset #: model:ir.module.module,shortdesc:account_asset.module_meta_information msgid "Asset management" -msgstr "" +msgstr "Anlagenbuchhaltung" #. module: account_asset #: view:account.asset.board:0 #: field:account.asset.property,board_ids:0 #: model:ir.model,name:account_asset.model_account_asset_board msgid "Asset board" -msgstr "" +msgstr "Anlagenspiegel" #. module: account_asset #: field:account.asset.asset,state:0 msgid "Global state" -msgstr "" +msgstr "Globaler Status" #. module: account_asset #: selection:account.asset.property,method_time:0 msgid "Delay" -msgstr "" +msgstr "Verzögerung" #. module: account_asset #: wizard_view:account.asset.close,init:0 msgid "General information" -msgstr "" +msgstr "Allgemeine Informationen" #. module: account_asset #: field:account.asset.property,journal_analytic_id:0 msgid "Analytic journal" -msgstr "" +msgstr "analytisches Journal" #. module: account_asset #: field:account.asset.property,name:0 msgid "Method name" -msgstr "" +msgstr "Methodenname" #. module: account_asset #: field:account.asset.property,journal_id:0 msgid "Journal" -msgstr "" +msgstr "Journal" #. module: account_asset #: field:account.asset.property.history,name:0 msgid "History name" -msgstr "" +msgstr "Verlauf Bezeichnung" #. module: account_asset #: view:account.asset.asset:0 msgid "Close method" -msgstr "" +msgstr "Abschlussmethode" #. module: account_asset #: field:account.asset.property,entry_asset_ids:0 msgid "Asset Entries" -msgstr "" +msgstr "Anlagen" #. module: account_asset #: field:account.asset.asset,category_id:0 @@ -464,66 +466,66 @@ msgstr "" #: field:account.asset.category,name:0 #: model:ir.model,name:account_asset.model_account_asset_category msgid "Asset category" -msgstr "" +msgstr "Analgenkategorie" #. module: account_asset #: view:account.asset.asset:0 msgid "Depreciation" -msgstr "" +msgstr "Abschreibung" #. module: account_asset #: field:account.asset.asset,code:0 #: field:account.asset.category,code:0 msgid "Asset code" -msgstr "" +msgstr "Kurzbezeichnung" #. module: account_asset #: field:account.asset.asset,value_total:0 msgid "Total value" -msgstr "" +msgstr "Gesamt Wert" #. module: account_asset #: selection:account.asset.asset,state:0 msgid "View" -msgstr "" +msgstr "Ansicht" #. module: account_asset #: view:account.asset.asset:0 msgid "General info" -msgstr "" +msgstr "Allgemeine Informationen" #. module: account_asset #: field:account.asset.asset,sequence:0 msgid "Sequence" -msgstr "" +msgstr "Sequenz" #. module: account_asset #: field:account.asset.property,value_residual:0 msgid "Residual value" -msgstr "" +msgstr "Buchwert" #. module: account_asset #: wizard_button:account.asset.close,init,asset_close:0 msgid "End of asset" -msgstr "" +msgstr "Ende des Anlagegutes" #. module: account_asset #: selection:account.asset.property,type:0 msgid "Direct" -msgstr "" +msgstr "Direkt" #. module: account_asset #: selection:account.asset.property,type:0 msgid "Indirect" -msgstr "" +msgstr "Indirekt" #. module: account_asset #: field:account.asset.asset,parent_id:0 msgid "Parent asset" -msgstr "" +msgstr "übergeordnetes Anlagegut" #. module: account_asset #: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_tree #: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_tree msgid "Asset Hierarchy" -msgstr "" +msgstr "Anlangenhierarchie" diff --git a/addons/hr_payroll/i18n/cs.po b/addons/hr_payroll/i18n/cs.po index 39f45018ed4..bf9a6b2bddd 100644 --- a/addons/hr_payroll/i18n/cs.po +++ b/addons/hr_payroll/i18n/cs.po @@ -8,24 +8,25 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2011-11-25 12:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Czech \n" +"PO-Revision-Date: 2011-11-29 13:31+0000\n" +"Last-Translator: Jiří Hajda \n" +"Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-26 05:50+0000\n" -"X-Generator: Launchpad (build 14381)\n" +"X-Launchpad-Export-Date: 2011-11-30 05:27+0000\n" +"X-Generator: Launchpad (build 14404)\n" +"X-Poedit-Language: Czech\n" #. module: hr_payroll #: report:employees.salary:0 msgid "E-mail Address" -msgstr "" +msgstr "E-mailová adresa" #. module: hr_payroll #: view:hr.allounce.deduction.categoty:0 msgid "Based" -msgstr "" +msgstr "Založeno" #. module: hr_payroll #: field:hr.contract,net:0 @@ -34,56 +35,56 @@ msgstr "" #: field:hr.payslip,net:0 #: report:salary.structure:0 msgid "Net Salary" -msgstr "" +msgstr "Čistý plat" #. module: hr_payroll #: view:hr.payslip:0 msgid "Recompute Sheet" -msgstr "" +msgstr "Přepočítat list" #. module: hr_payroll #: report:employees.salary:0 msgid "Employees Salary Details" -msgstr "" +msgstr "Podrobnosti platu zaměstnance" #. module: hr_payroll #: report:employees.salary:0 msgid "Allowances with Basic:" -msgstr "" +msgstr "Odměny se základem:" #. module: hr_payroll #: report:employees.salary:0 #: report:salary.structure:0 msgid "Department" -msgstr "" +msgstr "Oddělení" #. module: hr_payroll #: report:employees.salary:0 msgid "Deductions:" -msgstr "" +msgstr "Odpočty" #. module: hr_payroll #: field:company.contribution,gratuity:0 msgid "Use for Gratuity ?" -msgstr "" +msgstr "Použití pro prémie ?" #. module: hr_payroll #: field:hr.contract,working_days_per_week:0 #: field:hr.payslip,working_days:0 #: report:payslip.pdf:0 msgid "Working Days" -msgstr "" +msgstr "Pracovní dny" #. module: hr_payroll #: selection:hr.allounce.deduction.categoty,type:0 #: selection:hr.payslip.line,type:0 msgid "Loan" -msgstr "" +msgstr "Půjčka" #. module: hr_payroll #: report:hr.payroll.register.sheet:0 msgid "Salary Payment Register" -msgstr "" +msgstr "Registr placení mzdy" #. module: hr_payroll #: field:hr.employee,slip_ids:0 @@ -91,23 +92,23 @@ msgstr "" #: field:hr.payroll.register,line_ids:0 #: model:ir.actions.act_window,name:hr_payroll.act_hr_employee_payslip_list msgid "Payslips" -msgstr "" +msgstr "Výplatní pásky" #. module: hr_payroll #: model:ir.actions.report.xml,name:hr_payroll.year_salary_report msgid "Year Salary Report" -msgstr "" +msgstr "Roční výkaz platu" #. module: hr_payroll #: selection:hr.payroll.register,state:0 #: selection:hr.payslip,state:0 msgid "Paid Salary" -msgstr "" +msgstr "Zaplacený plat" #. module: hr_payroll #: report:payslip.pdf:0 msgid "(" -msgstr "" +msgstr "(" #. module: hr_payroll #: field:company.contribution,company_id:0 @@ -119,30 +120,30 @@ msgstr "" #: field:hr.payroll.structure,company_id:0 #: field:hr.payslip,company_id:0 msgid "Company" -msgstr "" +msgstr "Společnost" #. module: hr_payroll #: report:payroll.advice:0 msgid "The Manager" -msgstr "" +msgstr "Správce" #. module: hr_payroll #: view:hr.payroll.advice:0 msgid "Letter Details" -msgstr "" +msgstr "Podrobnosti dopisu" #. module: hr_payroll #: report:hr.payroll.register.sheet:0 #: report:payslip.pdf:0 msgid "," -msgstr "" +msgstr "," #. module: hr_payroll #: view:hr.payroll.advice:0 #: view:hr.payroll.register:0 #: view:hr.payslip:0 msgid "Set to Draft" -msgstr "" +msgstr "Nastavit na koncept" #. module: hr_payroll #: code:addons/hr_payroll/hr_payroll.py:180 @@ -154,66 +155,66 @@ msgstr "" #: code:addons/hr_payroll/hr_payroll.py:1410 #, python-format msgid "Variable Error: %s " -msgstr "" +msgstr "Chyba proměnné: %s " #. module: hr_payroll #: view:hr.passport:0 msgid "Expire" -msgstr "" +msgstr "Vyprší" #. module: hr_payroll #: selection:hr.holidays.status,type:0 msgid "Half-Pay Holiday" -msgstr "" +msgstr "Na půl placená dovolená" #. module: hr_payroll #: report:hr.payroll.register.sheet:0 #: field:hr.payslip,other_pay:0 msgid "Others" -msgstr "" +msgstr "Jiné" #. module: hr_payroll #: field:hr.payslip.line,slip_id:0 #: model:ir.model,name:hr_payroll.model_hr_payslip #: report:payslip.pdf:0 msgid "Pay Slip" -msgstr "" +msgstr "Mzdový list" #. module: hr_payroll #: report:salary.structure:0 msgid "Contract Detail:" -msgstr "" +msgstr "Podrobnosti smlouvy:" #. module: hr_payroll #: field:hr.payslip,igross:0 #: field:hr.payslip,inet:0 msgid "Calculaton Field" -msgstr "" +msgstr "Výpočtové pole" #. module: hr_payroll #: help:hr.payroll.advice,bank_id:0 #: help:hr.payroll.register,bank_id:0 msgid "Select the Bank Address from whcih the salary is going to be paid" -msgstr "" +msgstr "Vyberte adresu banky, z které bude vyplacen plat" #. module: hr_payroll #: view:hr.payroll.advice:0 #: field:hr.payroll.advice.line,advice_id:0 msgid "Bank Advice" -msgstr "" +msgstr "Bankovní návěští" #. module: hr_payroll #: selection:hr.payroll.advice,state:0 #: selection:hr.payroll.register,state:0 #: selection:hr.payslip,state:0 msgid "Reject" -msgstr "" +msgstr "Zamítnout" #. module: hr_payroll #: selection:hr.allounce.deduction.categoty,type:0 #: selection:hr.payslip.line,type:0 msgid "Leaves" -msgstr "" +msgstr "Uvolnění" #. module: hr_payroll #: field:hr.contibution.register.line,register_id:0 @@ -221,84 +222,84 @@ msgstr "" #: field:hr.payslip,register_id:0 #: report:payslip.pdf:0 msgid "Register" -msgstr "" +msgstr "Registrace" #. module: hr_payroll #: constraint:hr.employee:0 msgid "" "Error ! You cannot select a department for which the employee is the manager." -msgstr "" +msgstr "Chyba ! Nemůžete vybrat oddělení, kterého je zaměstnanec vedoucí." #. module: hr_payroll #: report:payslip.pdf:0 msgid "Total Deductions" -msgstr "" +msgstr "Celkem odpočty" #. module: hr_payroll #: field:company.contribution.line,value:0 #: field:hr.payslip.line.line,value:0 msgid "Value" -msgstr "" +msgstr "Hodnota" #. module: hr_payroll #: report:payroll.advice:0 msgid "Name of the Employee" -msgstr "" +msgstr "Jméno zaměstnance" #. module: hr_payroll #: view:hr.contibution.register:0 msgid "Register Lines" -msgstr "" +msgstr "Řádky registru" #. module: hr_payroll #: view:hr.payslip:0 msgid "Salary Computation" -msgstr "" +msgstr "Výpočet mzdy" #. module: hr_payroll #: field:hr.payroll.advice.line,amount:0 #: report:payroll.advice:0 #: report:salary.structure:0 msgid "Amount" -msgstr "" +msgstr "Částka" #. module: hr_payroll #: code:addons/hr_payroll/hr_payroll.py:1225 #, python-format msgid "Please check configuration of %s, payroll head is missing" -msgstr "" +msgstr "Prosíme zkontrolujte nastavení %s, chybí hlavička výplatního listu" #. module: hr_payroll #: selection:company.contribution,amount_type:0 msgid "Percentage" -msgstr "" +msgstr "Procenta" #. module: hr_payroll #: view:company.contribution:0 #: view:hr.allounce.deduction.categoty:0 msgid "Other Information" -msgstr "" +msgstr "Jiné informace" #. module: hr_payroll #: field:hr.passport,country_id:0 msgid "Country of Issue" -msgstr "" +msgstr "Vydávající země" #. module: hr_payroll #: field:hr.contibution.register.line,emp_deduction:0 msgid "Employee Deduction" -msgstr "" +msgstr "Odpočty zaměstnance" #. module: hr_payroll #: selection:hr.allounce.deduction.categoty,type:0 #: selection:hr.payslip.line,type:0 msgid "Other Deduction" -msgstr "" +msgstr "Jiné odpočty" #. module: hr_payroll #: selection:hr.holidays.status,type:0 msgid "Paid Holiday" -msgstr "" +msgstr "Placená dovolená" #. module: hr_payroll #: view:company.contribution:0 @@ -306,22 +307,22 @@ msgstr "" #: view:hr.passport:0 #: view:hr.payslip:0 msgid "Group By..." -msgstr "" +msgstr "Seskupit podle..." #. module: hr_payroll #: field:hr.passport,date_expire:0 msgid "Passport Expire Date" -msgstr "" +msgstr "Datum vypršení pasu" #. module: hr_payroll #: selection:hr.holidays.status,type:0 msgid "Un-Paid Holiday" -msgstr "" +msgstr "Neplacená dovolená" #. module: hr_payroll #: view:hr.passport:0 msgid "Valid From" -msgstr "" +msgstr "Platné od" #. module: hr_payroll #: help:hr.payslip,igross:0 @@ -329,16 +330,17 @@ msgstr "" msgid "" "Calculation field used for internal calculation, do not place this on form" msgstr "" +"Výpočtové pole použité pro vnitřní výpočty, neumísťujte jej do formuláře" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Amount (in words) :" -msgstr "" +msgstr "Částka (slovně) :" #. module: hr_payroll #: field:hr.holidays.status,type:0 msgid "Payment" -msgstr "" +msgstr "Patba" #. module: hr_payroll #: view:hr.payroll.structure:0 @@ -347,39 +349,39 @@ msgstr "" #: view:hr.payslip.line:0 #: model:ir.model,name:hr_payroll.model_hr_payslip_line msgid "Payslip Line" -msgstr "" +msgstr "Řádek výplatní pásky" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Identification No" -msgstr "" +msgstr "Identifikační č." #. module: hr_payroll #: view:hr.allounce.deduction.categoty:0 #: field:hr.allounce.deduction.categoty,base:0 msgid "Based on" -msgstr "" +msgstr "Založeno na" #. module: hr_payroll #: selection:hr.payroll.register,state:0 #: selection:hr.payslip,state:0 msgid "Wating for Verification" -msgstr "" +msgstr "Čekající na ověření" #. module: hr_payroll #: model:ir.module.module,shortdesc:hr_payroll.module_meta_information msgid "Human Resource Payroll" -msgstr "" +msgstr "Mzdy lidských zdrojů" #. module: hr_payroll #: report:payroll.advice:0 msgid "Total:" -msgstr "" +msgstr "Celkem:" #. module: hr_payroll #: view:hr.payslip:0 msgid "Posted" -msgstr "" +msgstr "Zasláno" #. module: hr_payroll #: model:ir.module.module,description:hr_payroll.module_meta_information @@ -395,31 +397,41 @@ msgid "" " * Integrated with Holiday Management\n" " " msgstr "" +"Obecný mzdový systém\n" +" * Podrobnosti zaměstnance\n" +" * Smlouvy zaměstnance\n" +" * Smlouvy založené na pasu\n" +" * Přídavky / Odpočty\n" +" * Umožňuje nastavit základní / hrubé /čisté mzdy\n" +" * Výplatní pásky zaměstnanců\n" +" * Měsíční registr mezd\n" +" * Integrováno se správou dovolených\n" +" " #. module: hr_payroll #: model:ir.model,name:hr_payroll.model_hr_holidays_status msgid "Leave Type" -msgstr "" +msgstr "Typ uvolnění" #. module: hr_payroll #: report:hr.payroll.register.sheet:0 msgid "Date :" -msgstr "" +msgstr "Datum:" #. module: hr_payroll #: field:hr.payslip.line,total:0 msgid "Sub Total" -msgstr "" +msgstr "Mezivýsledek" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Payments -" -msgstr "" +msgstr "Platby -" #. module: hr_payroll #: field:hr.contract,visa_no:0 msgid "Visa No" -msgstr "" +msgstr "Č. víza" #. module: hr_payroll #: field:company.contribution.line,from_val:0 @@ -427,68 +439,68 @@ msgstr "" #: field:hr.payslip.line.line,from_val:0 #: report:year.salary:0 msgid "From" -msgstr "" +msgstr "Od" #. module: hr_payroll #: field:hr.payroll.advice.line,bysal:0 #: report:payroll.advice:0 msgid "By Salary" -msgstr "" +msgstr "Podle platu" #. module: hr_payroll #: field:hr.payroll.employees.detail,date_to:0 #: field:hr.payroll.year.salary,date_to:0 #: report:salary.structure:0 msgid "End Date" -msgstr "" +msgstr "Koncové datum" #. module: hr_payroll #: model:ir.actions.report.xml,name:hr_payroll.salary_payslip msgid "Employee PaySlip" -msgstr "" +msgstr "Výplatní páska zaměstnance" #. module: hr_payroll #: field:hr.payslip,leaves:0 msgid "Leave Deductions" -msgstr "" +msgstr "Odvody uvolnění" #. module: hr_payroll #: report:hr.payroll.register.sheet:0 #: report:payroll.advice:0 msgid "Authorised Signature" -msgstr "" +msgstr "Oprávněný podpis" #. module: hr_payroll #: selection:hr.payslip.line,amount_type:0 msgid "Function Value" -msgstr "" +msgstr "Hodnota funkce" #. module: hr_payroll #: model:ir.model,name:hr_payroll.model_hr_contibution_register_line msgid "Contribution Register Line" -msgstr "" +msgstr "Řádek registru příspěvků" #. module: hr_payroll #: report:salary.structure:0 msgid "Notes:" -msgstr "" +msgstr "Poznámky:" #. module: hr_payroll #: field:hr.payroll.advice,state:0 #: field:hr.payroll.register,state:0 #: field:hr.payslip,state:0 msgid "State" -msgstr "" +msgstr "Stav" #. module: hr_payroll #: view:hr.payroll.advice:0 msgid "Paymeny Lines" -msgstr "" +msgstr "Řádky platby" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Other Lines" -msgstr "" +msgstr "Jiné řádky" #. module: hr_payroll #: view:company.contribution:0 @@ -497,13 +509,13 @@ msgstr "" #: view:hr.payslip:0 #: view:hr.payslip.line:0 msgid "Function Arguments" -msgstr "" +msgstr "Parametry funkce" #. module: hr_payroll #: model:ir.actions.act_window,name:hr_payroll.action_hr_company_contribution_tree #: model:ir.ui.menu,name:hr_payroll.menu_hr_company_contribution_tree msgid "Company Contributions" -msgstr "" +msgstr "Příspěvky společnosti" #. module: hr_payroll #: field:hr.contibution.register.line,employee_id:0 @@ -513,17 +525,17 @@ msgstr "" #: field:hr.payslip.line,employee_id:0 #: model:ir.model,name:hr_payroll.model_hr_employee msgid "Employee" -msgstr "" +msgstr "Zaměstnanec" #. module: hr_payroll #: field:hr.payslip.line,base:0 msgid "Formula" -msgstr "" +msgstr "Vzorec" #. module: hr_payroll #: model:ir.model,name:hr_payroll.model_hr_payroll_advice_line msgid "Bank Advice Lines" -msgstr "" +msgstr "Řádky bankovního avíza" #. module: hr_payroll #: view:company.contribution:0 @@ -532,46 +544,46 @@ msgstr "" #: field:hr.payslip.line,type:0 #: report:salary.structure:0 msgid "Type" -msgstr "" +msgstr "Typ" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Email" -msgstr "" +msgstr "Email" #. module: hr_payroll #: report:hr.payroll.register.sheet:0 msgid "#" -msgstr "" +msgstr "#" #. module: hr_payroll #: code:addons/hr_payroll/hr_payroll.py:469 #: code:addons/hr_payroll/hr_payroll.py:1225 #, python-format msgid "Error !" -msgstr "" +msgstr "Chyba !" #. module: hr_payroll #: view:hr.payroll.register:0 #: view:hr.payslip:0 msgid "Verify Sheet" -msgstr "" +msgstr "Ověřovací list" #. module: hr_payroll #: help:hr.contract,working_days_per_week:0 msgid "No of Working days / week for an employee" -msgstr "" +msgstr "Poč. pracovních dnů / týdnů pro zaměstnance" #. module: hr_payroll #: selection:hr.payroll.register,state:0 #: selection:hr.payslip,state:0 msgid "New Slip" -msgstr "" +msgstr "Nový list" #. module: hr_payroll #: field:hr.payslip,basic:0 msgid "Net Basic" -msgstr "" +msgstr "Základ čistého" #. module: hr_payroll #: field:hr.contract,gross:0 @@ -580,56 +592,56 @@ msgstr "" #: field:hr.payslip,grows:0 #: report:salary.structure:0 msgid "Gross Salary" -msgstr "" +msgstr "Hrubá mzda" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Total Earnings" -msgstr "" +msgstr "Výdělek celkem" #. module: hr_payroll #: model:ir.actions.act_window,name:hr_payroll.action_hr_payroll_employees_detail #: model:ir.ui.menu,name:hr_payroll.menu_hr_payroll_employees_detail msgid "Employee Salary Statement" -msgstr "" +msgstr "Příkaz mzdy zaměstnance" #. module: hr_payroll #: selection:hr.allounce.deduction.categoty,type:0 #: selection:hr.payslip.line,type:0 msgid "Other Payment" -msgstr "" +msgstr "Jiné platby" #. module: hr_payroll #: field:hr.employee,advantages_net:0 #: report:payslip.pdf:0 #: report:salary.structure:0 msgid "Deductions" -msgstr "" +msgstr "Odpočty" #. module: hr_payroll #: report:payroll.advice:0 msgid "C/D" -msgstr "" +msgstr "C/D" #. module: hr_payroll #: field:hr.contract,permit_no:0 msgid "Work Permit No" -msgstr "" +msgstr "Č. pracovního povolení" #. module: hr_payroll #: field:hr.payroll.advice,line_ids:0 msgid "Employee Salary" -msgstr "" +msgstr "Mzda zaměstnance" #. module: hr_payroll #: field:hr.payroll.advice,chaque_nos:0 msgid "Chaque Nos" -msgstr "" +msgstr "Č. poukázek" #. module: hr_payroll #: field:hr.contibution.register,monthly_total_by_emp:0 msgid "Total By Employee" -msgstr "" +msgstr "Celkem podle zaměstnance" #. module: hr_payroll #: view:company.contribution:0 @@ -638,7 +650,7 @@ msgstr "" #: selection:hr.payslip.line,amount_type:0 #: selection:hr.payslip.line.line,amount_type:0 msgid "Fixed Amount" -msgstr "" +msgstr "Pevná částka" #. module: hr_payroll #: field:company.contribution.line,to_val:0 @@ -646,7 +658,7 @@ msgstr "" #: field:hr.payslip.line.line,to_val:0 #: report:year.salary:0 msgid "To" -msgstr "" +msgstr "Komu" #. module: hr_payroll #: code:addons/hr_payroll/hr_payroll.py:180 @@ -658,33 +670,33 @@ msgstr "" #: code:addons/hr_payroll/hr_payroll.py:1410 #, python-format msgid "Variable Error !" -msgstr "" +msgstr "Chyba proměnné !" #. module: hr_payroll #: model:ir.model,name:hr_payroll.model_hr_payroll_employees_detail msgid "hr.payroll.employees.detail" -msgstr "" +msgstr "hr.payroll.employees.detail" #. module: hr_payroll #: view:hr.payroll.register:0 #: view:hr.payslip:0 msgid "Pay Salary" -msgstr "" +msgstr "Vyplatit mzdu" #. module: hr_payroll #: field:hr.payroll.advice.line,name:0 msgid "Bank Account A/C" -msgstr "" +msgstr "Bankovní účet A/C" #. module: hr_payroll #: view:hr.contibution.register:0 msgid "Contribution Lines" -msgstr "" +msgstr "Řádky příspěvků" #. module: hr_payroll #: report:hr.payroll.register.sheet:0 msgid "For the month of" -msgstr "" +msgstr "Pro měsíc z" #. module: hr_payroll #: view:hr.allounce.deduction.categoty:0 @@ -694,64 +706,64 @@ msgstr "" #: field:hr.payslip,deduction:0 #: selection:hr.payslip.line,type:0 msgid "Deduction" -msgstr "" +msgstr "Odpočty" #. module: hr_payroll #: model:ir.model,name:hr_payroll.model_hr_payroll_advice msgid "Bank Advice Note" -msgstr "" +msgstr "Poznámka bankovního avíza" #. module: hr_payroll #: view:hr.payroll.register:0 #: view:hr.payslip:0 msgid "Payslip" -msgstr "" +msgstr "Výplatní list" #. module: hr_payroll #: constraint:hr.contract:0 msgid "Error! contract start-date must be lower then contract end-date." -msgstr "" +msgstr "Chyba! Počáteční datum smlouvy musí být nižší než konečné datum." #. module: hr_payroll #: selection:hr.allounce.deduction.categoty,type:0 #: selection:hr.payslip.line,type:0 msgid "Loan Installment" -msgstr "" +msgstr "Půjčovací zřízení" #. module: hr_payroll #: view:hr.payroll.register:0 msgid "Complete HR Checking" -msgstr "" +msgstr "Celková kontrola HR" #. module: hr_payroll #: report:payroll.advice:0 msgid "Yours Sincerely" -msgstr "" +msgstr "S přátelským pozdravem" #. module: hr_payroll #: report:payroll.advice:0 msgid "SI. No." -msgstr "" +msgstr "Č. SI." #. module: hr_payroll #: report:payslip.pdf:0 msgid "Net Amount" -msgstr "" +msgstr "Částka čistkého" #. module: hr_payroll #: report:salary.structure:0 msgid "Salary Structure:" -msgstr "" +msgstr "Struktura platu:" #. module: hr_payroll #: model:ir.actions.report.xml,name:hr_payroll.year_employees_detail msgid "Employees Salary Detail" -msgstr "" +msgstr "Podrobnosti mezd zaměstnanců" #. module: hr_payroll #: model:ir.model,name:hr_payroll.model_hr_payslip_line_line msgid "Function Line" -msgstr "" +msgstr "Řádek funkce" #. module: hr_payroll #: view:hr.payroll.advice:0 @@ -759,49 +771,49 @@ msgstr "" #: selection:hr.payroll.register,state:0 #: selection:hr.payslip,state:0 msgid "Confirm Sheet" -msgstr "" +msgstr "Potvrzovací list" #. module: hr_payroll #: report:employees.salary:0 msgid "Others:" -msgstr "" +msgstr "Jiné:" #. module: hr_payroll #: view:company.contribution:0 #: selection:company.contribution,amount_type:0 msgid "Function Calculation" -msgstr "" +msgstr "Výpoče funkce" #. module: hr_payroll #: field:hr.payslip,worked_days:0 #: report:payslip.pdf:0 msgid "Worked Day" -msgstr "" +msgstr "Pracovních dnů" #. module: hr_payroll #: field:hr.contibution.register,monthly_total_by_comp:0 msgid "Total By Company" -msgstr "" +msgstr "Celkem podle společnosti" #. module: hr_payroll #: field:hr.payroll.advice.line,flag:0 msgid "D/C" -msgstr "" +msgstr "D/C" #. module: hr_payroll #: view:hr.passport:0 msgid "Country & Address" -msgstr "" +msgstr "Zěmě & Adresa" #. module: hr_payroll #: report:employees.salary:0 msgid "Employee Code" -msgstr "" +msgstr "Kód zaměstnance" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Basic Salary – Leaves" -msgstr "" +msgstr "Základní mzda - uvolnění" #. module: hr_payroll #: field:company.contribution,amount_type:0 @@ -810,13 +822,13 @@ msgstr "" #: field:hr.payslip.line.line,amount_type:0 #: report:salary.structure:0 msgid "Amount Type" -msgstr "" +msgstr "Typ částky" #. module: hr_payroll #: view:company.contribution:0 #: field:hr.payslip.line,category_id:0 msgid "Category" -msgstr "" +msgstr "Kategorie" #. module: hr_payroll #: view:company.contribution:0 @@ -824,60 +836,60 @@ msgstr "" #: field:hr.payslip.line,company_contrib:0 #: model:ir.model,name:hr_payroll.model_company_contribution msgid "Company Contribution" -msgstr "" +msgstr "Příspěvek společnosti" #. module: hr_payroll #: field:company.contribution,category_id:0 msgid "Heads" -msgstr "" +msgstr "Hlavičky" #. module: hr_payroll #: model:ir.actions.report.xml,name:hr_payroll.year_payroll_register msgid "Print Statement" -msgstr "" +msgstr "Tiskový příkaz" #. module: hr_payroll #: view:hr.payslip:0 msgid "Draft" -msgstr "" +msgstr "Koncept" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Earnings" -msgstr "" +msgstr "Výdělek" #. module: hr_payroll #: report:hr.payroll.register.sheet:0 #: report:salary.structure:0 msgid "Basic" -msgstr "" +msgstr "Základní" #. module: hr_payroll #: model:ir.actions.act_window,name:hr_payroll.action_hr_passport_tree msgid "All Passports" -msgstr "" +msgstr "Všechny průkazy" #. module: hr_payroll #: model:ir.actions.act_window,name:hr_payroll.action_hr_payroll_year_salary #: model:ir.ui.menu,name:hr_payroll.menu_wizard_print_year_salary msgid "Salary Register" -msgstr "" +msgstr "Registr mezd" #. module: hr_payroll #: report:employees.salary:0 #: report:hr.payroll.register.sheet:0 msgid "Employee Name" -msgstr "" +msgstr "Jméno zaměstnance" #. module: hr_payroll #: model:ir.model,name:hr_payroll.model_hr_passport msgid "Passport Detail" -msgstr "" +msgstr "Podrobnosti pasu" #. module: hr_payroll #: selection:hr.payslip.line,amount_type:0 msgid "Percentage (%)" -msgstr "" +msgstr "Procenta (%)" #. module: hr_payroll #: field:hr.payroll.advice,register_id:0 @@ -886,110 +898,110 @@ msgstr "" #: model:ir.model,name:hr_payroll.model_hr_payroll_register #: model:ir.ui.menu,name:hr_payroll.hr_menu_payroll_register msgid "Payroll Register" -msgstr "" +msgstr "Registr výplat" #. module: hr_payroll #: report:hr.payroll.register.sheet:0 #: report:payroll.advice:0 msgid "For" -msgstr "" +msgstr "Pro" #. module: hr_payroll #: field:hr.passport,contracts_ids:0 msgid "Contracts" -msgstr "" +msgstr "Smlouvy" #. module: hr_payroll #: view:hr.payroll.structure:0 msgid "Employee Function" -msgstr "" +msgstr "Funkce zaměstnance" #. module: hr_payroll #: view:hr.payslip:0 msgid "Paid" -msgstr "" +msgstr "Placeno" #. module: hr_payroll #: view:hr.payslip:0 msgid "Approve Sheet" -msgstr "" +msgstr "Schvalovací list" #. module: hr_payroll #: field:hr.payslip,paid:0 msgid "Paid ? " -msgstr "" +msgstr "Placeno ? " #. module: hr_payroll #: view:hr.holidays.status:0 msgid "Validation" -msgstr "" +msgstr "Ověření" #. module: hr_payroll #: report:employees.salary:0 msgid "Title" -msgstr "" +msgstr "Oslovení" #. module: hr_payroll #: view:company.contribution:0 msgid "Search Company Contribution" -msgstr "" +msgstr "Hledat příspěvky společnosti" #. module: hr_payroll #: field:hr.allounce.deduction.categoty,user_id:0 msgid "User" -msgstr "" +msgstr "Uživatel" #. module: hr_payroll #: view:hr.payroll.advice:0 msgid "Payment Lines" -msgstr "" +msgstr "Platební řádky" #. module: hr_payroll #: view:hr.payslip:0 msgid "Compute Sheet" -msgstr "" +msgstr "Výpočtový list" #. module: hr_payroll #: field:company.contribution,active:0 #: field:hr.payroll.register,active:0 msgid "Active" -msgstr "" +msgstr "Aktivní" #. module: hr_payroll #: help:hr.allounce.deduction.categoty,condition:0 msgid "Applied this head for calculation if condition is true" -msgstr "" +msgstr "Tato hlavička použita pro výpočty, pokud je pravda" #. module: hr_payroll #: report:year.salary:0 msgid "Yearly Salary Details" -msgstr "" +msgstr "Roční podrobnosti platu" #. module: hr_payroll #: constraint:hr.employee:0 msgid "Error ! You cannot create recursive Hierarchy of Employees." -msgstr "" +msgstr "Chyba ! Nemůžete vytvořit rekurzivní Hierarchii zaměstnanců" #. module: hr_payroll #: field:hr.allounce.deduction.categoty,condition:0 msgid "Condition" -msgstr "" +msgstr "Podmínka" #. module: hr_payroll #: selection:hr.payroll.register,state:0 #: selection:hr.payslip,state:0 msgid "Wating for HR Verification" -msgstr "" +msgstr "Čekající na ověření HR" #. module: hr_payroll #: report:payroll.advice:0 msgid "Payment Advice:" -msgstr "" +msgstr "Platební avízo:" #. module: hr_payroll #: view:hr.payroll.register:0 msgid "Compute" -msgstr "" +msgstr "Spočítat" #. module: hr_payroll #: report:employees.salary:0 @@ -997,12 +1009,12 @@ msgstr "" #: report:payslip.pdf:0 #: report:salary.structure:0 msgid "Designation" -msgstr "" +msgstr "Zařazení" #. module: hr_payroll #: report:hr.payroll.register.sheet:0 msgid "HR Manager" -msgstr "" +msgstr "Správce HR" #. module: hr_payroll #: field:hr.contract,basic:0 @@ -1010,49 +1022,49 @@ msgstr "" #: field:hr.payslip,basic_before_leaves:0 #: report:payslip.pdf:0 msgid "Basic Salary" -msgstr "" +msgstr "Základní plat" #. module: hr_payroll #: field:hr.allounce.deduction.categoty,code:0 msgid "Category Code" -msgstr "" +msgstr "Kód kategorie" #. module: hr_payroll #: view:hr.payroll.register:0 msgid "Salary Information" -msgstr "" +msgstr "Mzdové informace" #. module: hr_payroll #: model:ir.model,name:hr_payroll.model_hr_allounce_deduction_categoty #: model:ir.model,name:hr_payroll.model_hr_allounce_deduction_categoty_line msgid "Allowance Deduction Categoty" -msgstr "" +msgstr "Kategorie přídavků a odpočtů" #. module: hr_payroll #: view:hr.payslip:0 msgid "Companies" -msgstr "" +msgstr "Společnosti" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Authorized Signature" -msgstr "" +msgstr "Oprávněný podpis" #. module: hr_payroll #: field:hr.payslip,contract_id:0 #: model:ir.model,name:hr_payroll.model_hr_contract msgid "Contract" -msgstr "" +msgstr "Smlouva" #. module: hr_payroll #: selection:hr.payroll.advice,state:0 msgid "Draft Sheet" -msgstr "" +msgstr "Návrhový list" #. module: hr_payroll #: selection:hr.payroll.year.salary,salary_on:0 msgid "Next Month Date" -msgstr "" +msgstr "Datum dalšího měsíce" #. module: hr_payroll #: field:hr.contibution.register.line,date:0 @@ -1060,23 +1072,23 @@ msgstr "" #: field:hr.payroll.register,date:0 #: field:hr.payslip,date:0 msgid "Date" -msgstr "" +msgstr "Datum" #. module: hr_payroll #: field:hr.contract,visa_expire:0 msgid "Visa Expire Date" -msgstr "" +msgstr "Datum vypršení víza" #. module: hr_payroll #: view:hr.passport:0 msgid "Search Passport" -msgstr "" +msgstr "Hledat pas" #. module: hr_payroll #: report:employees.salary:0 #: report:salary.structure:0 msgid "Phone No." -msgstr "" +msgstr "Č. telefonu" #. module: hr_payroll #: field:company.contribution,contribute_per:0 @@ -1085,25 +1097,25 @@ msgstr "" #: view:hr.contibution.register:0 #: view:hr.contibution.register.line:0 msgid "Contribution" -msgstr "" +msgstr "Příspěvky" #. module: hr_payroll #: field:hr.allounce.deduction.categoty,state:0 msgid "Label" -msgstr "" +msgstr "Označení" #. module: hr_payroll #: view:hr.payroll.structure:0 #: view:hr.payslip:0 #: view:hr.payslip.line:0 msgid "Company contribution" -msgstr "" +msgstr "Příspěvky společnosti" #. module: hr_payroll #: report:employees.salary:0 #: report:salary.structure:0 msgid "Other No." -msgstr "" +msgstr "Jiné č." #. module: hr_payroll #: field:company.contribution,code:0 @@ -1114,18 +1126,18 @@ msgstr "" #: report:payslip.pdf:0 #: report:salary.structure:0 msgid "Code" -msgstr "" +msgstr "Kód" #. module: hr_payroll #: model:ir.actions.act_window,name:hr_payroll.action_view_hr_bank_advice_tree #: model:ir.ui.menu,name:hr_payroll.hr_menu_payment_advice msgid "Payment Advice" -msgstr "" +msgstr "Platební avízo" #. module: hr_payroll #: report:hr.payroll.register.sheet:0 msgid "Number :" -msgstr "" +msgstr "Číslo :" #. module: hr_payroll #: help:hr.allounce.deduction.categoty,base:0 @@ -1134,23 +1146,26 @@ msgid "" "You can use all heads code field in small letter as a variable name i.e. " "hra, ma, lta, etc...., also you can use, static varible basic" msgstr "" +"Toto bude použito pro výpočet hodnot polí %s , obecně je na základě, ale " +"můžete použít všechny pole kódů v malých písmenných jako jména proměnných " +"např. hra, ma, lta, atd..., také můžete použít základní statické proměnné." #. module: hr_payroll #: view:hr.payslip:0 msgid "Computation Overview" -msgstr "" +msgstr "Přehled výpočtů" #. module: hr_payroll #: field:hr.payroll.year.salary,salary_on:0 msgid "Salary On" -msgstr "" +msgstr "Mzda na" #. module: hr_payroll #: field:hr.payroll.advice,number:0 #: field:hr.payroll.register,number:0 #: field:hr.payslip,number:0 msgid "Number" -msgstr "" +msgstr "Číslo" #. module: hr_payroll #: field:hr.contract,struct_id:0 @@ -1164,72 +1179,72 @@ msgstr "" #: model:ir.model,name:hr_payroll.model_hr_payroll_structure #: model:ir.ui.menu,name:hr_payroll.menu_hr_employee_function msgid "Salary Structure" -msgstr "" +msgstr "Struktura platu" #. module: hr_payroll #: field:hr.contibution.register,register_line_ids:0 msgid "Register Line" -msgstr "" +msgstr "Řádek registru" #. module: hr_payroll #: view:hr.payroll.register:0 #: view:hr.payslip:0 msgid "Cancel" -msgstr "" +msgstr "Zrušit" #. module: hr_payroll #: view:hr.payroll.employees.detail:0 #: view:hr.payroll.year.salary:0 msgid "Close" -msgstr "" +msgstr "Uzavřít" #. module: hr_payroll #: field:hr.payslip.line,amount:0 msgid "Amount / Percentage" -msgstr "" +msgstr "Částka / Procenta" #. module: hr_payroll #: field:hr.employee,advantages_gross:0 #: report:hr.payroll.register.sheet:0 #: report:salary.structure:0 msgid "Allowances" -msgstr "" +msgstr "Dávky" #. module: hr_payroll #: selection:hr.payroll.year.salary,salary_on:0 msgid "Current Month Date" -msgstr "" +msgstr "Datum aktuálního měsíce" #. module: hr_payroll #: report:salary.structure:0 msgid "Salary" -msgstr "" +msgstr "Plat" #. module: hr_payroll #: field:hr.contract,passport_id:0 #: field:hr.passport,name:0 msgid "Passport No" -msgstr "" +msgstr "Číslo pasu" #. module: hr_payroll #: view:hr.passport:0 msgid "Passport" -msgstr "" +msgstr "Pas" #. module: hr_payroll #: report:hr.payroll.register.sheet:0 msgid "Total Salary" -msgstr "" +msgstr "Celkový plat" #. module: hr_payroll #: report:payroll.advice:0 msgid "for period" -msgstr "" +msgstr "pro období" #. module: hr_payroll #: field:hr.holidays.status,head_id:0 msgid "Payroll Head" -msgstr "" +msgstr "Hlavička výplatního listu" #. module: hr_payroll #: field:company.contribution,register_id:0 @@ -1237,25 +1252,25 @@ msgstr "" #: model:ir.model,name:hr_payroll.model_hr_contibution_register #: model:ir.ui.menu,name:hr_payroll.menu_action_hr_contibution_register_form msgid "Contribution Register" -msgstr "" +msgstr "Registr příspěvků" #. module: hr_payroll #: report:salary.structure:0 msgid "E-mail" -msgstr "" +msgstr "E-mail" #. module: hr_payroll #: view:hr.allounce.deduction.categoty:0 #: model:ir.actions.act_window,name:hr_payroll.hr_allounce_deduction_tree #: model:ir.ui.menu,name:hr_payroll.menu_hr_allounce_deduction_tree msgid "Salary Heads" -msgstr "" +msgstr "Hlavičky platu" #. module: hr_payroll #: view:hr.payroll.employees.detail:0 #: view:hr.payroll.year.salary:0 msgid "Print Report" -msgstr "" +msgstr "Tisknout výkaz" #. module: hr_payroll #: field:company.contribution,line_ids:0 @@ -1264,7 +1279,7 @@ msgstr "" #: view:hr.payslip.line:0 #: field:hr.payslip.line,line_ids:0 msgid "Calculations" -msgstr "" +msgstr "Výpočty" #. module: hr_payroll #: help:company.contribution,contribute_per:0 @@ -1273,31 +1288,34 @@ msgid "" "Contribute 5% then company will and here 0.50 defined then company will " "contribute 50% on employee 5% contribution" msgstr "" +"Určuje poměř příspěvků společnosti 1,00=100% příspěvků. Pokud je zaměstnance " +"přispěje 5%, pak spoleřnost bude a zde 0,5 určeno, pak společnost přispěje " +"50% na 5% příspěvek zaměstnance." #. module: hr_payroll #: view:hr.payslip:0 msgid "Other Informations" -msgstr "" +msgstr "Jiné informace" #. module: hr_payroll #: view:hr.contibution.register:0 msgid "Month" -msgstr "" +msgstr "Měsíc" #. module: hr_payroll #: view:hr.passport:0 msgid "Issue" -msgstr "" +msgstr "Vydano" #. module: hr_payroll #: view:hr.allounce.deduction.categoty:0 msgid "Dynamic Computation" -msgstr "" +msgstr "Dynamický výpočet" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Basic Salary without Leave:" -msgstr "" +msgstr "Základní mzda bez uvolnění:" #. module: hr_payroll #: view:company.contribution:0 @@ -1307,27 +1325,27 @@ msgstr "" #: view:hr.payslip.line:0 #: field:hr.payslip.line,function_id:0 msgid "Function" -msgstr "" +msgstr "Funkce" #. module: hr_payroll #: view:hr.payslip:0 msgid "States" -msgstr "" +msgstr "Stavy" #. module: hr_payroll #: report:payroll.advice:0 msgid "Dear Sir/Madam," -msgstr "" +msgstr "Vážený pane/paní," #. module: hr_payroll #: model:ir.model,name:hr_payroll.model_hr_allounce_deduction_categoty msgid "Allowance Deduction Heads" -msgstr "" +msgstr "Hlavičky přídavků a odpočtů" #. module: hr_payroll #: report:hr.payroll.register.sheet:0 msgid "Gross Sal." -msgstr "" +msgstr "Hrubá mzda" #. module: hr_payroll #: view:company.contribution:0 @@ -1347,61 +1365,61 @@ msgstr "" #: view:hr.payslip.line:0 #: field:hr.payslip.line,note:0 msgid "Description" -msgstr "" +msgstr "Popis" #. module: hr_payroll #: field:hr.payroll.employees.detail,date_from:0 #: field:hr.payroll.year.salary,date_from:0 #: report:salary.structure:0 msgid "Start Date" -msgstr "" +msgstr "Počáteční datum" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Deduction -" -msgstr "" +msgstr "Odpočty -" #. module: hr_payroll #: report:payslip.pdf:0 msgid ")" -msgstr "" +msgstr ")" #. module: hr_payroll #: view:hr.contibution.register:0 msgid "Contribution Registers" -msgstr "" +msgstr "Registr příspěvků" #. module: hr_payroll #: model:ir.ui.menu,name:hr_payroll.menu_hr_payroll_reporting #: model:ir.ui.menu,name:hr_payroll.menu_hr_root_payroll #: model:ir.ui.menu,name:hr_payroll.payroll_configure msgid "Payroll" -msgstr "" +msgstr "Mzdy" #. module: hr_payroll #: model:ir.model,name:hr_payroll.model_hr_contract_wage_type msgid "Wage Type" -msgstr "" +msgstr "Typ mzdy" #. module: hr_payroll #: report:hr.payroll.register.sheet:0 msgid "Net Sal." -msgstr "" +msgstr "Čistá mzda" #. module: hr_payroll #: sql_constraint:hr.passport:0 msgid "The Passport No must be unique !" -msgstr "" +msgstr "Číslo pasu musí být jedinečné !" #. module: hr_payroll #: field:hr.allounce.deduction.categoty,name:0 msgid "Category Name" -msgstr "" +msgstr "Název kategorie" #. module: hr_payroll #: model:ir.model,name:hr_payroll.model_hr_payroll_year_salary msgid "hr.payroll.year.salary" -msgstr "" +msgstr "hr.payroll.year.salary" #. module: hr_payroll #: report:employees.salary:0 @@ -1409,17 +1427,17 @@ msgstr "" #: report:payslip.pdf:0 #: report:salary.structure:0 msgid "Address" -msgstr "" +msgstr "Adresa" #. module: hr_payroll #: field:hr.payslip.line.line,slipline_id:0 msgid "Slip Line" -msgstr "" +msgstr "Řádek listu" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Number of Leaves" -msgstr "" +msgstr "Počet uvolnění" #. module: hr_payroll #: report:employees.salary:0 @@ -1427,23 +1445,23 @@ msgstr "" #: field:hr.payroll.register,bank_id:0 #: report:salary.structure:0 msgid "Bank" -msgstr "" +msgstr "Banka" #. module: hr_payroll #: view:hr.payroll.advice:0 msgid "Cancel Sheet" -msgstr "" +msgstr "Zrušit list" #. module: hr_payroll #: selection:hr.allounce.deduction.categoty,type:0 #: selection:hr.payslip.line,type:0 msgid "Advance" -msgstr "" +msgstr "Záloha" #. module: hr_payroll #: report:salary.structure:0 msgid "Special Allowances and Deductions For Employee:" -msgstr "" +msgstr "Speciální přídavky a odpočty pro zaměstnance:" #. module: hr_payroll #: field:company.contribution,name:0 @@ -1460,17 +1478,17 @@ msgstr "" #: report:salary.structure:0 #: report:year.salary:0 msgid "Name" -msgstr "" +msgstr "Jméno" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Leaved Deduction" -msgstr "" +msgstr "Odpočty uvolnění" #. module: hr_payroll #: view:hr.passport:0 msgid "Country" -msgstr "" +msgstr "Země" #. module: hr_payroll #: view:hr.passport:0 @@ -1480,59 +1498,59 @@ msgstr "" #: field:hr.payroll.year.salary,employee_ids:0 #: view:hr.payslip:0 msgid "Employees" -msgstr "" +msgstr "Zaměstnanci" #. module: hr_payroll #: report:payroll.advice:0 msgid "Bank Account" -msgstr "" +msgstr "Bankovní účet" #. module: hr_payroll #: help:company.contribution,register_id:0 msgid "Contribution register based on company" -msgstr "" +msgstr "Registr příspěvků založený na spoleřnosti" #. module: hr_payroll #: help:hr.allounce.deduction.categoty,sequence:0 msgid "Use to arrange calculation sequence" -msgstr "" +msgstr "Použijte pro uspořádání pořadí výpočtů" #. module: hr_payroll #: field:hr.payslip,total_pay:0 msgid "Total Payment" -msgstr "" +msgstr "Celková platba" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Leave Deductions Line:" -msgstr "" +msgstr "Řádek odpočtu uvolnění:" #. module: hr_payroll #: selection:hr.payroll.register,state:0 #: selection:hr.payslip,state:0 msgid "Wating for Account Verification" -msgstr "" +msgstr "Čekající na ověření účtu" #. module: hr_payroll #: field:hr.contibution.register.line,comp_deduction:0 msgid "Company Deduction" -msgstr "" +msgstr "Odpočty společnosti" #. module: hr_payroll #: view:hr.holidays.status:0 msgid "Payroll Configurtion" -msgstr "" +msgstr "Nastavení mezd" #. module: hr_payroll #: code:addons/hr_payroll/hr_payroll.py:469 #, python-format msgid "Please define bank account for the %s employee" -msgstr "" +msgstr "Prosíme zkontrolujte bankovní účet zaměstnance %s" #. module: hr_payroll #: field:hr.passport,date_issue:0 msgid "Passport Issue Date" -msgstr "" +msgstr "Datum vydání pasu" #. module: hr_payroll #: view:hr.allounce.deduction.categoty:0 @@ -1541,27 +1559,27 @@ msgstr "" #: field:hr.payslip,allounce:0 #: selection:hr.payslip.line,type:0 msgid "Allowance" -msgstr "" +msgstr "Přídavky" #. module: hr_payroll #: field:hr.payslip,holiday_days:0 msgid "No of Leaves" -msgstr "" +msgstr "Poč. uvolnění" #. module: hr_payroll #: field:hr.employee,otherid:0 msgid "Other Id" -msgstr "" +msgstr "Jiné Id" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Bank Details" -msgstr "" +msgstr "Bankovní podrobnosti" #. module: hr_payroll #: report:payslip.pdf:0 msgid "Slip ID" -msgstr "" +msgstr "ID výplatní pásky" #. module: hr_payroll #: field:company.contribution.line,sequence:0 @@ -1569,50 +1587,50 @@ msgstr "" #: field:hr.payslip.line,sequence:0 #: field:hr.payslip.line.line,sequence:0 msgid "Sequence" -msgstr "" +msgstr "Posloupnost" #. module: hr_payroll #: model:ir.actions.act_window,name:hr_payroll.action_view_hr_payslip_form #: model:ir.ui.menu,name:hr_payroll.menu_department_tree msgid "Employee Payslip" -msgstr "" +msgstr "Výplatní list zaměstnance" #. module: hr_payroll #: view:hr.payroll.advice:0 msgid "Letter Content" -msgstr "" +msgstr "Obsah dopisu" #. module: hr_payroll #: view:hr.payroll.employees.detail:0 #: view:hr.payroll.year.salary:0 msgid "Year Salary" -msgstr "" +msgstr "Roční plat" #. module: hr_payroll #: view:hr.payroll.register:0 msgid "Allowance / Deduction" -msgstr "" +msgstr "Přídavky / odpočty" #. module: hr_payroll #: model:ir.actions.report.xml,name:hr_payroll.payroll_advice msgid "Bank Payment Advice" -msgstr "" +msgstr "Avízo bankovní platby" #. module: hr_payroll #: view:hr.payslip:0 msgid "Search Payslips" -msgstr "" +msgstr "Hledat výplatní pásky" #. module: hr_payroll #: report:employees.salary:0 #: field:hr.contibution.register.line,total:0 #: report:year.salary:0 msgid "Total" -msgstr "" +msgstr "Celkem" #. module: hr_payroll #: view:company.contribution:0 #: view:hr.allounce.deduction.categoty:0 #: field:hr.allounce.deduction.categoty,contribute_ids:0 msgid "Contributions" -msgstr "" +msgstr "Příspěvky" diff --git a/addons/portal/i18n/de.po b/addons/portal/i18n/de.po index 8fbe9e1e388..9f0429f0243 100644 --- a/addons/portal/i18n/de.po +++ b/addons/portal/i18n/de.po @@ -8,78 +8,80 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-07-04 14:16+0000\n" -"PO-Revision-Date: 2011-07-11 09:51+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2011-11-29 07:47+0000\n" +"Last-Translator: Ferdinand @ Camptocamp \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:57+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-30 05:27+0000\n" +"X-Generator: Launchpad (build 14404)\n" #. module: portal #: code:addons/portal/wizard/share_wizard.py:55 #, python-format msgid "Please select at least one user to share with" -msgstr "" +msgstr "Bitte wählen Sie mindestens einen Benutzer zum Teilen" #. module: portal #: code:addons/portal/wizard/share_wizard.py:59 #, python-format msgid "Please select at least one group to share with" -msgstr "" +msgstr "Bitte wählen Sie mindestens eine Gruppe zum Teilen" #. module: portal #: field:res.portal,group_id:0 msgid "Group" -msgstr "" +msgstr "Gruppe" #. module: portal #: help:res.portal,other_group_ids:0 msgid "Those groups are assigned to the portal's users" -msgstr "" +msgstr "Diese Gruppen sind den Portalbenutzern zugeordnet" #. module: portal #: view:share.wizard:0 #: field:share.wizard,group_ids:0 msgid "Existing groups" -msgstr "" +msgstr "Vorhandene Gruppen" #. module: portal #: model:ir.model,name:portal.model_res_portal_wizard_user msgid "Portal User Config" -msgstr "" +msgstr "Portalbenutzer Konfiguration" #. module: portal #: view:res.portal.wizard.user:0 msgid "Portal User" -msgstr "" +msgstr "Portalbenutzer" #. module: portal #: help:res.portal,override_menu:0 msgid "Enable this option to override the Menu Action of portal users" -msgstr "" +msgstr "Aktivieren, um die Menü Aktion für Portalbenutzer zu überschreiben" #. module: portal #: field:res.portal.wizard.user,user_email:0 msgid "E-mail" -msgstr "" +msgstr "E-Mail" #. module: portal #: view:res.portal:0 msgid "Other Groups assigned to Users" -msgstr "" +msgstr "Andere dem Benutzer zugeteilte Gruppen" #. module: portal #: constraint:res.users:0 msgid "The chosen company is not in the allowed companies for this user" msgstr "" +"Die gewählte Firma ist nicht in der Liste der erlaubten Firmen für diesen " +"Benutzer" #. module: portal #: view:res.portal:0 #: field:res.portal,widget_ids:0 msgid "Widgets" -msgstr "" +msgstr "Oberflächenelemente" #. module: portal #: model:ir.module.module,description:portal.module_meta_information @@ -103,67 +105,68 @@ msgstr "" #. module: portal #: view:share.wizard:0 msgid "Who do you want to share with?" -msgstr "" +msgstr "Mit wem wollen Sie teilen?" #. module: portal #: view:res.portal.wizard:0 msgid "Send Invitations" -msgstr "" +msgstr "Versende Einladungen" #. module: portal #: help:res.portal,url:0 msgid "The url where portal users can connect to the server" -msgstr "" +msgstr "Die URL, mit der sich Portalbenutzer anmelden können" #. module: portal #: field:res.portal.widget,widget_id:0 msgid "Widget" -msgstr "" +msgstr "Oberflächenelement" #. module: portal #: help:res.portal.wizard,message:0 msgid "This text is included in the welcome email sent to the users" -msgstr "" +msgstr "Dieser Text ist Bestandteil der Willkommen E-Mail an den Benutzer" #. module: portal #: help:res.portal,menu_action_id:0 msgid "If set, replaces the standard menu for the portal's users" msgstr "" +"Wenn definiert, dann ersetzt dies das Standardmenü für Portalbenutzer" #. module: portal #: field:res.portal,parent_menu_id:0 msgid "Parent Menu" -msgstr "" +msgstr "Obermenü" #. module: portal #: view:res.portal:0 msgid "Portal Name" -msgstr "" +msgstr "Portalname" #. module: portal #: view:res.portal.wizard.user:0 msgid "Portal Users" -msgstr "" +msgstr "Portalbenutzer" #. module: portal #: field:res.portal,override_menu:0 msgid "Override Menu Action of Users" -msgstr "" +msgstr "Überschreibe Die Menü-Aktion für Benutzer" #. module: portal #: field:res.portal,menu_action_id:0 msgid "Menu Action" -msgstr "" +msgstr "Menü Aktion" #. module: portal #: field:res.portal.wizard.user,name:0 msgid "User Name" -msgstr "" +msgstr "Benutzer Name" #. module: portal #: model:ir.model,name:portal.model_res_portal_widget msgid "Portal Widgets" -msgstr "" +msgstr "Portal Oberflächenelemente" #. module: portal #: model:ir.model,name:portal.model_res_portal @@ -172,47 +175,47 @@ msgstr "" #: field:res.portal.widget,portal_id:0 #: field:res.portal.wizard,portal_id:0 msgid "Portal" -msgstr "" +msgstr "Portal" #. module: portal #: code:addons/portal/wizard/portal_wizard.py:35 #, python-format msgid "Your OpenERP account at %(company)s" -msgstr "" +msgstr "Ihr OpenERP Konto bei %(company)s" #. module: portal #: code:addons/portal/portal.py:110 #: code:addons/portal/portal.py:184 #, python-format msgid "%s Menu" -msgstr "" +msgstr "%s Menü" #. module: portal #: help:res.portal.wizard,portal_id:0 msgid "The portal in which new users must be added" -msgstr "" +msgstr "Das Portal, zu dem neue Benutzer hinzugefügt werden müssen" #. module: portal #: help:res.portal,widget_ids:0 msgid "Widgets assigned to portal users" -msgstr "" +msgstr "Oberflächenelemente, die Portalbenutzern zugeordnet sind" #. module: portal #: code:addons/portal/wizard/portal_wizard.py:163 #, python-format msgid "(missing url)" -msgstr "" +msgstr "(fehlende URL)" #. module: portal #: view:share.wizard:0 #: field:share.wizard,user_ids:0 msgid "Existing users" -msgstr "" +msgstr "Bestehende Benutzer" #. module: portal #: field:res.portal.wizard.user,wizard_id:0 msgid "Wizard" -msgstr "" +msgstr "Assistent" #. module: portal #: help:res.portal.wizard.user,user_email:0 @@ -220,63 +223,65 @@ msgid "" "Will be used as user login. Also necessary to send the account information " "to new users" msgstr "" +"Wird als Benutzer Login verwendet. Ebenso notwendig die Kontoinformation an " +"neue Benutzer zu senden." #. module: portal #: field:res.portal.wizard.user,lang:0 msgid "Language" -msgstr "" +msgstr "Sprache" #. module: portal #: field:res.portal,url:0 msgid "URL" -msgstr "" +msgstr "URL" #. module: portal #: view:res.portal:0 msgid "Widgets assigned to Users" -msgstr "" +msgstr "Oberflächenelemente, die Benutzern zugeordnet sind" #. module: portal #: help:res.portal.wizard.user,lang:0 msgid "The language for the user's user interface" -msgstr "" +msgstr "Die Sprache für die Benutzerschnittstelle" #. module: portal #: view:res.portal.wizard:0 msgid "Cancel" -msgstr "" +msgstr "Abbrechen" #. module: portal #: view:res.portal:0 msgid "Website" -msgstr "" +msgstr "Webseite" #. module: portal #: view:res.portal:0 msgid "Create Parent Menu" -msgstr "" +msgstr "Erstelle Obermenü" #. module: portal #: view:res.portal.wizard:0 msgid "" "The following text will be included in the welcome email sent to users." -msgstr "" +msgstr "Der folgende Text wird im Willkommen E-Mail verwendet werden" #. module: portal #: code:addons/portal/wizard/portal_wizard.py:135 #, python-format msgid "Email required" -msgstr "" +msgstr "E-Mail ist erforderlich" #. module: portal #: model:ir.model,name:portal.model_res_users msgid "res.users" -msgstr "" +msgstr "res.users" #. module: portal #: constraint:res.portal.wizard.user:0 msgid "Invalid email address" -msgstr "" +msgstr "Ungültige E-Mail Adresse" #. module: portal #: code:addons/portal/wizard/portal_wizard.py:136 @@ -284,28 +289,30 @@ msgstr "" msgid "" "You must have an email address in your User Preferences to send emails." msgstr "" +"Sie müssen Ihre E-Mail Adresse in den Benuztereinstellungen erfassen um E-" +"Mails senden zu können." #. module: portal #: model:ir.model,name:portal.model_ir_ui_menu msgid "ir.ui.menu" -msgstr "" +msgstr "ir.ui.menu" #. module: portal #: help:res.portal,group_id:0 msgid "The group extended by this portal" -msgstr "" +msgstr "Die diesem Portal zugeordnete Gruppe" #. module: portal #: view:res.portal:0 #: view:res.portal.wizard:0 #: field:res.portal.wizard,user_ids:0 msgid "Users" -msgstr "" +msgstr "Benutzer" #. module: portal #: field:res.portal,other_group_ids:0 msgid "Other User Groups" -msgstr "" +msgstr "Andere Benutzergruppen" #. module: portal #: model:ir.actions.act_window,name:portal.portal_list_action @@ -313,38 +320,38 @@ msgstr "" #: model:ir.ui.menu,name:portal.portal_menu #: view:res.portal:0 msgid "Portals" -msgstr "" +msgstr "Portale" #. module: portal #: help:res.portal,parent_menu_id:0 msgid "The menu action opens the submenus of this menu item" -msgstr "" +msgstr "Die Menü-Aktion öffnet Unter-Menüeinträge dieses Menüeintrags" #. module: portal #: field:res.portal.widget,sequence:0 msgid "Sequence" -msgstr "" +msgstr "Sequenz" #. module: portal #: field:res.users,partner_id:0 msgid "Related Partner" -msgstr "" +msgstr "referenzierter Geschäftspartner" #. module: portal #: view:res.portal:0 msgid "Portal Menu" -msgstr "" +msgstr "Portal Menü" #. module: portal #: sql_constraint:res.users:0 msgid "You can not have two users with the same login !" -msgstr "" +msgstr "2 Benuzter können nicht den gleichen Login Code haben." #. module: portal #: view:res.portal.wizard:0 #: field:res.portal.wizard,message:0 msgid "Invitation message" -msgstr "" +msgstr "Einladungstext" #. module: portal #: code:addons/portal/wizard/portal_wizard.py:36 @@ -369,24 +376,24 @@ msgstr "" #. module: portal #: model:ir.model,name:portal.model_res_portal_wizard msgid "Portal Wizard" -msgstr "" +msgstr "Portal Assistent" #. module: portal #: help:res.portal.wizard.user,name:0 msgid "The user's real name" -msgstr "" +msgstr "Der vollständige Name des Benutzers" #. module: portal #: model:ir.actions.act_window,name:portal.address_wizard_action #: model:ir.actions.act_window,name:portal.partner_wizard_action #: view:res.portal.wizard:0 msgid "Add Portal Access" -msgstr "" +msgstr "Füge Portalberechtigung hinzu" #. module: portal #: field:res.portal.wizard.user,partner_id:0 msgid "Partner" -msgstr "" +msgstr "Partner" #. module: portal #: model:ir.actions.act_window,help:portal.portal_list_action @@ -398,8 +405,14 @@ msgid "" "the portal's users.\n" " " msgstr "" +"\n" +"Ein Portal erlaubt die Zuordnung von bestimmten Sichten und Regeln zu einer " +"Benutzergruppe (die Portalgruppe).\n" +"Ein Portalmenu, Oberflächenelemente und einzelne Gruppen können " +"Portalbenutzern zugeordnet werden.\n" +" " #. module: portal #: model:ir.model,name:portal.model_share_wizard msgid "Share Wizard" -msgstr "" +msgstr "Freigabeassistent" diff --git a/addons/stock/i18n/de.po b/addons/stock/i18n/de.po index 072c6d34cab..9c60193d1f1 100644 --- a/addons/stock/i18n/de.po +++ b/addons/stock/i18n/de.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:16+0000\n" -"PO-Revision-Date: 2011-11-07 12:47+0000\n" -"Last-Translator: Ferdinand-camptocamp \n" +"PO-Revision-Date: 2011-11-29 07:02+0000\n" +"Last-Translator: Ferdinand @ Camptocamp \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-12 04:50+0000\n" -"X-Generator: Launchpad (build 14277)\n" +"X-Launchpad-Export-Date: 2011-11-30 05:27+0000\n" +"X-Generator: Launchpad (build 14404)\n" #. module: stock #: field:product.product,track_outgoing:0 @@ -2256,7 +2256,7 @@ msgstr "Zukünftige Menge" #. module: stock #: field:product.category,property_stock_valuation_account_id:0 msgid "Stock Valuation Account" -msgstr "" +msgstr "Lagerbestandskonto" #. module: stock #: field:stock.move,note:0 @@ -4220,7 +4220,7 @@ msgstr "Optionale Lagerort Details, nur als Information" #. module: stock #: view:product.product:0 msgid "Expected Stock Variations" -msgstr "" +msgstr "Erwartete Lagerveränderungen" #~ msgid "LIFO" #~ msgstr "LiFo" diff --git a/addons/stock_planning/i18n/de.po b/addons/stock_planning/i18n/de.po index 022df420410..dcc5c9160c7 100644 --- a/addons/stock_planning/i18n/de.po +++ b/addons/stock_planning/i18n/de.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:16+0000\n" -"PO-Revision-Date: 2011-01-12 15:14+0000\n" -"Last-Translator: Ferdinand-camptocamp \n" +"PO-Revision-Date: 2011-11-29 07:08+0000\n" +"Last-Translator: Ferdinand @ Camptocamp \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-05 05:48+0000\n" -"X-Generator: Launchpad (build 14231)\n" +"X-Launchpad-Export-Date: 2011-11-30 05:27+0000\n" +"X-Generator: Launchpad (build 14404)\n" #. module: stock_planning #: code:addons/stock_planning/wizard/stock_planning_createlines.py:73 @@ -352,7 +352,7 @@ msgstr " Bedarfsmenge " #: code:addons/stock_planning/stock_planning.py:719 #, python-format msgid "%s Pick List %s (%s, %s) %s %s \n" -msgstr "" +msgstr "%s Lieferscheinliste %s (%s, %s) %s %s \n" #. module: stock_planning #: view:stock.planning.createlines:0 @@ -473,7 +473,7 @@ msgstr "Fehler !" #: code:addons/stock_planning/stock_planning.py:626 #, python-format msgid "Manual planning for %s" -msgstr "" +msgstr "Manuelle Planung für %s" #. module: stock_planning #: field:stock.sale.forecast,analyzed_user_id:0 @@ -1248,7 +1248,7 @@ msgstr "Erzeuge Prognosepositionen für d. ausgew. Zentrallager u. d. Periode" #: code:addons/stock_planning/stock_planning.py:656 #, python-format msgid "%s Requisition (%s, %s) %s %s \n" -msgstr "" +msgstr "%s Anforderung (%s, %s) %s %s \n" #. module: stock_planning #: code:addons/stock_planning/stock_planning.py:655 @@ -1757,6 +1757,22 @@ msgid "" " Expected Out: %s Incoming Left: %s \n" " Stock Simulation: %s Minimum stock: %s " msgstr "" +"Lieferschein erstellt im MPS von Benutzer: %s Erstellungsdatum: %s " +" \n" +"Für Periode: %s entspricht Status: \n" +" Lagervorschau: %s \n" +" Anfangsbestand: %s \n" +" Geplant Auslieferung: %s Geplanter Eingang: %s " +" \n" +" bereits ausgeliefert: %s Bereits eingegangen: %s " +" \n" +" bestätigte Auslieferung: %s Bestätigter Eingang: %s " +" \n" +" geplante Auslieferung vor: %s Geplanter Eingang vor: %s " +" \n" +" erwartete Auslieferung: %s restlicher Eingang: %s " +" \n" +" Lager Simulation: %s Minimumbestand: %s " #. module: stock_planning #: field:stock.planning,procure_to_stock:0 From b98a370ca6fb4f4f1fbfd2052abf95e73374c2ee Mon Sep 17 00:00:00 2001 From: "Kirti Savalia (OpenERP)" Date: Wed, 30 Nov 2011 11:00:24 +0530 Subject: [PATCH 471/892] [FIX]:bad layout of dashboard lp bug: https://launchpad.net/bugs/897227 fixed bzr revid: ksa@tinyerp.com-20111130053024-tudikew3uo8zx14q --- addons/hr/hr_board.xml | 2 +- addons/hr_timesheet_sheet/board_hr_timesheet_view.xml | 2 ++ addons/mrp/board_manufacturing_view.xml | 2 +- addons/project/board_project_view.xml | 2 +- addons/project_scrum/board_project_scrum_view.xml | 2 +- addons/stock/board_warehouse_view.xml | 2 +- 6 files changed, 7 insertions(+), 5 deletions(-) diff --git a/addons/hr/hr_board.xml b/addons/hr/hr_board.xml index 620f1f51c88..07fa76bba16 100644 --- a/addons/hr/hr_board.xml +++ b/addons/hr/hr_board.xml @@ -8,7 +8,7 @@ form - + diff --git a/addons/hr_timesheet_sheet/board_hr_timesheet_view.xml b/addons/hr_timesheet_sheet/board_hr_timesheet_view.xml index 39ab5fe3482..88e56ec6639 100644 --- a/addons/hr_timesheet_sheet/board_hr_timesheet_view.xml +++ b/addons/hr_timesheet_sheet/board_hr_timesheet_view.xml @@ -41,7 +41,9 @@ form + + diff --git a/addons/mrp/board_manufacturing_view.xml b/addons/mrp/board_manufacturing_view.xml index 427780f344c..55deb48a83d 100644 --- a/addons/mrp/board_manufacturing_view.xml +++ b/addons/mrp/board_manufacturing_view.xml @@ -7,7 +7,7 @@ form - + diff --git a/addons/project/board_project_view.xml b/addons/project/board_project_view.xml index a58557c94ba..50fa1b4f613 100644 --- a/addons/project/board_project_view.xml +++ b/addons/project/board_project_view.xml @@ -81,7 +81,7 @@ form - + diff --git a/addons/project_scrum/board_project_scrum_view.xml b/addons/project_scrum/board_project_scrum_view.xml index 2a9d3532b2d..dd01832b575 100644 --- a/addons/project_scrum/board_project_scrum_view.xml +++ b/addons/project_scrum/board_project_scrum_view.xml @@ -76,7 +76,7 @@ form - + diff --git a/addons/stock/board_warehouse_view.xml b/addons/stock/board_warehouse_view.xml index 3c645aecb5b..43600c1201d 100644 --- a/addons/stock/board_warehouse_view.xml +++ b/addons/stock/board_warehouse_view.xml @@ -45,7 +45,7 @@ form - + From a65a26d178ba59f5ea0cc5f41a858f6417939ac1 Mon Sep 17 00:00:00 2001 From: "Amit Bhavsar (Open ERP)" Date: Wed, 30 Nov 2011 11:04:26 +0530 Subject: [PATCH 472/892] [polish3],rename the string and remove col bzr revid: amb@tinyerp.com-20111130053426-3wjau1hcgmagq6hm --- addons/survey/survey_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/survey/survey_view.xml b/addons/survey/survey_view.xml index 0188d9555e8..26b19eeccd9 100644 --- a/addons/survey/survey_view.xml +++ b/addons/survey/survey_view.xml @@ -37,7 +37,7 @@ - + From 201365e2d2ba971d31b06457a04cb840b1d00835 Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Wed, 30 Nov 2011 11:28:47 +0530 Subject: [PATCH 473/892] [IMP] hr_expense: improve test case bzr revid: jap@tinyerp.com-20111130055847-2idpwqsufmk4whsm --- addons/hr_expense/test/expense_demo.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/hr_expense/test/expense_demo.yml b/addons/hr_expense/test/expense_demo.yml index 6364e44d9bd..cd88448fefa 100644 --- a/addons/hr_expense/test/expense_demo.yml +++ b/addons/hr_expense/test/expense_demo.yml @@ -4,7 +4,7 @@ name : 'Antoine Philippe' - !record {model: product.product, id: car_travel, view: False}: - hr_expense_ok: 'True + hr_expense_ok: 'True' - !record {model: hr.expense.line, id: expense_line, view: False}: product_id: 'car_travel' From a7c5f12504209b6f2b022dcbd525253e4cd13172 Mon Sep 17 00:00:00 2001 From: "Bharat (OpenERP)" Date: Wed, 30 Nov 2011 12:57:59 +0530 Subject: [PATCH 474/892] [FIX] account : Account voucher: Analytic account associated with write off entries while payment does not consider lp bug: https://launchpad.net/bugs/893977 fixed bzr revid: bde@tinyerp.com-20111130072759-n1oqq2dg2l3j313k --- addons/account_voucher/account_voucher.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py index fd6dac9f90d..a0d2b4660cb 100644 --- a/addons/account_voucher/account_voucher.py +++ b/addons/account_voucher/account_voucher.py @@ -935,6 +935,7 @@ class account_voucher(osv.osv): move_line = {} voucher_brw = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context) + analytic_id = voucher_brw.analytic_id.id or False current_currency_obj = voucher_brw.currency_id or voucher_brw.journal_id.company_id.currency_id if not currency_obj.is_zero(cr, uid, current_currency_obj, line_total): @@ -958,6 +959,7 @@ class account_voucher(osv.osv): 'debit': diff < 0 and -diff or 0.0, 'amount_currency': company_currency <> current_currency and voucher_brw.writeoff_amount or False, 'currency_id': company_currency <> current_currency and current_currency or False, + 'analytic_account_id': analytic_id } return move_line From d41bdb5ef6c78684d0f61949cdb0e3b4b18af5bb Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 30 Nov 2011 09:27:49 +0100 Subject: [PATCH 475/892] [IMP] Kanban: convert date string to js Date object for raw_value of date - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -223,6 +195,34 @@ name="%(mail.action_email_compose_message_wizard)d" icon="terp-mail-message-new" type="action"/> + + + + + + + + + + + + + + + + + + + + + + + + + + From 5f9c91621bb43f26a5a68f90a805bc2b55e69411 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 30 Nov 2011 11:03:47 +0100 Subject: [PATCH 481/892] [IMP] add some tests to format's intersperse (from corresponding server tests) bzr revid: xmo@openerp.com-20111130100347-8jd8nugnjgtj12oj --- addons/web/static/test/formats.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/web/static/test/formats.js b/addons/web/static/test/formats.js index f9f34dd44c0..cde11a188c0 100644 --- a/addons/web/static/test/formats.js +++ b/addons/web/static/test/formats.js @@ -113,6 +113,8 @@ $(document).ready(function () { equal(g("12345678", [2, 0, 1], '.'), '12.34.56.78'); equal(g("12345678", [2, 0, 0], '.'), '12.34.56.78'); equal(g("12345678", [2, 0, -1], '.'), '12.34.56.78'); + equal(g("12345678", [3,3,3,3], '.'), '12.345.678'); + equal(g("12345678", [3,0], '.'), '12.345.678'); }); test('format_integer', function () { openerp.web._t.database.parameters.grouping = [3, 3, 3, 3]; From bb67abe9140d73f6c8ad4c25eefc9d38be777485 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Wed, 30 Nov 2011 11:11:10 +0100 Subject: [PATCH 482/892] [IMP] account_voucher: improvements inj usability + changed the semantic of the payment_rate, which now depicts the rate of the payment_rate_currency_id against the voucher currency (instead of the main currency) bzr revid: qdp-launchpad@openerp.com-20111130101110-p19ujgsaqgfnuv1r --- addons/account_voucher/account_voucher.py | 100 +++++++++++------- .../test/account_voucher_report.yml | 4 +- addons/account_voucher/test/case4_cad_chf.yml | 2 + .../voucher_payment_receipt_view.xml | 18 ++-- 4 files changed, 76 insertions(+), 48 deletions(-) diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py index 6860665f71d..22824cb8db0 100644 --- a/addons/account_voucher/account_voucher.py +++ b/addons/account_voucher/account_voucher.py @@ -159,15 +159,6 @@ class account_voucher(osv.osv): res = super(account_voucher, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu) doc = etree.XML(res['arch']) - # replace the label of the field payment_rate - currency_obj = self.pool.get('res.currency') - base_currency_id = currency_obj.search(cr, uid, [('rate','=',1.0),('rate_ids','=',1.0)], context=context) - symbol = base_currency_id and currency_obj.name_get(cr, uid, base_currency_id, context=context)[0][1] - string = _("Rate for this operation: 1 %s is") % symbol - payment_rate_field = doc.xpath("//field[@name='payment_rate']") - for field in payment_rate_field: - field.set('string', string) - if context.get('type', 'sale') in ('purchase', 'payment'): nodes = doc.xpath("//field[@name='partner_id']") for node in nodes: @@ -183,17 +174,25 @@ class account_voucher(osv.osv): credit += l['amount'] return abs(amount - abs(credit - debit)) - def onchange_line_ids(self, cr, uid, ids, line_dr_ids, line_cr_ids, amount, context=None): + def onchange_line_ids(self, cr, uid, ids, line_dr_ids, line_cr_ids, amount, voucher_currency, context=None): context = context or {} if not line_dr_ids and not line_cr_ids: return {'value':{}} line_osv = self.pool.get("account.voucher.line") line_dr_ids = resolve_o2m_operations(cr, uid, line_osv, line_dr_ids, ['amount'], context) line_cr_ids = resolve_o2m_operations(cr, uid, line_osv, line_cr_ids, ['amount'], context) - return {'value': {'writeoff_amount': self._compute_writeoff_amount(cr, uid, line_dr_ids, line_cr_ids, amount)}} + + #loop into the lines to see if there is an amount allocated on a voucher line with a currency different than the voucher currency + is_multi_currency = False + for voucher_line in line_dr_ids+line_cr_ids: + if voucher_line.get('currency_id',False) != voucher_currency: + is_multi_currency = True + break + return {'value': {'writeoff_amount': self._compute_writeoff_amount(cr, uid, line_dr_ids, line_cr_ids, amount), 'is_multi_currency': is_multi_currency}} def _get_writeoff_amount(self, cr, uid, ids, name, args, context=None): if not ids: return {} + currency_obj = self.pool.get('res.currency') res = {} debit = credit = 0.0 for voucher in self.browse(cr, uid, ids, context=context): @@ -201,18 +200,24 @@ class account_voucher(osv.osv): debit += l.amount for l in voucher.line_cr_ids: credit += l.amount - res[voucher.id] = abs(voucher.amount - abs(credit - debit)) + currency = voucher.currency_id or voucher.company_id.currency_id + res[voucher.id] = currency_obj.round(cr, uid, currency, abs(voucher.amount - abs(credit - debit))) return res def _paid_amount_in_company_currency(self, cr, uid, ids, name, args, context=None): if not ids: return {} res = {} - debit = credit = 0.0 + voucher_rate = company_currency_rate = 1.0 for voucher in self.browse(cr, uid, ids, context=context): - rate = voucher.currency_id.rate or voucher.company_id.currency_id.rate - if voucher.currency_id == voucher.payment_rate_currency_id: - rate = voucher.payment_rate - res[voucher.id] = voucher.amount / rate * voucher.company_id.currency_id.rate + if voucher.currency_id: + ctx = context.copy() + ctx.update({'date': voucher.date}) + voucher_rate = self.browse(cr, uid, voucher.id, context=ctx).currency_id.rate + if voucher.company_id.currency_id.id == voucher.payment_rate_currency_id.id: + company_currency_rate = voucher.payment_rate + else: + company_currency_rate = voucher.company_id.currency_id.rate + res[voucher.id] = voucher.amount / voucher_rate * company_currency_rate return res _name = 'account.voucher' @@ -275,9 +280,10 @@ class account_voucher(osv.osv): 'analytic_id': fields.many2one('account.analytic.account','Write-Off Analytic Account', readonly=True, states={'draft': [('readonly', False)]}), 'writeoff_amount': fields.function(_get_writeoff_amount, string='Reconcile Amount', type='float', readonly=True), 'payment_rate_currency_id': fields.many2one('res.currency', 'Payment Rate Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}), - 'payment_rate': fields.float('Payment Rate', digits=(12,6), required=True, readonly=True, states={'draft': [('readonly', False)]}, - help='The specific rate that will be used for this voucher for the selected currency.'), + 'payment_rate': fields.float('Exchange Rate', digits=(12,6), required=True, readonly=True, states={'draft': [('readonly', False)]}, + help='The specific rate that will be used, in this voucher, between the selected currency (in \'Payment Rate Currency\' field) and the voucher currency.'), 'paid_amount_in_company_currency': fields.function(_paid_amount_in_company_currency, string='Paid Amount in Company Currency', type='float', readonly=True), + 'is_multi_currency': fields.boolean('Multi Currency Voucher', help='Fields with internal purpose only that depicts if the voucher is a multi currency one or not'), } _defaults = { 'period_id': _get_period, @@ -448,10 +454,15 @@ class account_voucher(osv.osv): return default def onchange_rate(self, cr, uid, ids, rate, amount, currency_id, payment_rate_currency_id, company_id, context=None): - res = {'value': {}} - if rate and amount and currency_id and currency_id == payment_rate_currency_id: - company_rate = self.pool.get('res.company').browse(cr, uid, company_id, context=context).currency_id.rate - res['value']['paid_amount_in_company_currency'] = amount / rate * company_rate + res = {'value': {'paid_amount_in_company_currency': amount}} + company_currency = self.pool.get('res.company').browse(cr, uid, company_id, context=context).currency_id + if rate and amount and currency_id:# and currency_id == payment_rate_currency_id: + voucher_rate = self.pool.get('res.currency').browse(cr, uid, currency_id, context).rate + if company_currency.id == payment_rate_currency_id: + company_rate = rate + else: + company_rate = self.pool.get('res.company').browse(cr, uid, company_id, context=context).currency_id.rate + res['value']['paid_amount_in_company_currency'] = amount / voucher_rate * company_rate return res def onchange_amount(self, cr, uid, ids, amount, rate, partner_id, journal_id, currency_id, ttype, date, payment_rate_currency_id, company_id, context=None): @@ -578,6 +589,7 @@ class account_voucher(osv.osv): else: amount_original = currency_pool.compute(cr, uid, company_currency, currency_id, line.credit or line.debit or 0.0) amount_unreconciled = currency_pool.compute(cr, uid, company_currency, currency_id, abs(line.amount_residual)) + currency_id = line.currency_id and line.currency_id.id or line.company_id.currency_id.id rs = { 'name':line.move_id.name, 'type': line.credit and 'dr' or 'cr', @@ -588,6 +600,7 @@ class account_voucher(osv.osv): 'date_original':line.date, 'date_due':line.date_maturity, 'amount_unreconciled': amount_unreconciled, + 'currency_id': currency_id, } #split voucher amount by most old first, but only for lines in the same currency @@ -650,7 +663,9 @@ class account_voucher(osv.osv): res['value'].update({'period_id':pids[0]}) if payment_rate_currency_id: ctx.update({'date': date}) - payment_rate = self.pool.get('res.currency').browse(cr, uid, payment_rate_currency_id, context=ctx).rate + payment_rate = 1.0 + if payment_rate_currency_id != currency_id: + payment_rate = self.pool.get('res.currency').browse(cr, uid, payment_rate_currency_id, context=ctx).rate vals = self.onchange_payment_rate_currency(cr, uid, ids, currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context=context) vals['value'].update({'payment_rate': payment_rate}) for key in vals.keys(): @@ -674,12 +689,13 @@ class account_voucher(osv.osv): currency_id = journal.currency.id ctx = context.copy() ctx.update({'date': date}) - payment_rate = self.pool.get('res.currency').browse(cr, uid, currency_id, context=ctx).rate - vals['value'].update({'payment_rate': payment_rate}) + #on change of the journal, we need to TODO coment me + payment_rate = 1.0 + res = self.onchange_rate(cr, uid, ids, payment_rate, amount, currency_id, currency_id, company_id, context=ctx) for key in res.keys(): vals[key].update(res[key]) - if currency_id: + vals['value'].update({'payment_rate': payment_rate}) vals['value'].update({'currency_id': currency_id}) vals['value'].update({'payment_rate_currency_id': currency_id}) res = self.onchange_partner_id(cr, uid, ids, partner_id, journal_id, amount, currency_id, ttype, date, context) @@ -912,12 +928,7 @@ class account_voucher(osv.osv): # the rate specified on the voucher is for the company currency rate_between_voucher_and_base = voucher.currency_id.rate or 1.0 rate_between_base_and_company = voucher.payment_rate or 1.0 - res = amount / rate_between_voucher_and_base * rate_between_base_and_company - elif voucher.payment_rate_currency_id.id == voucher.currency_id.id: - # the rate specified on the voucher is for the voucher currency - rate_between_base_and_company = voucher.company_id.currency_id.rate or 1.0 - rate_between_voucher_and_base = voucher.payment_rate or 1.0 - res = amount / rate_between_voucher_and_base * rate_between_base_and_company + res = currency_obj.round(cr, uid, voucher.company_id.currency_id, (amount / rate_between_voucher_and_base * rate_between_base_and_company)) else: # the rate specified on the voucher is not relevant, we use all the rates in the system res = currency_obj.compute(cr, uid, voucher.currency_id.id, voucher.company_id.currency_id.id, amount, context=context) @@ -997,7 +1008,7 @@ class account_voucher(osv.osv): if not (tax_data.base_code_id and tax_data.tax_code_id): raise osv.except_osv(_('No Account Base Code and Account Tax Code!'),_("You have to configure account base code and account tax code on the '%s' tax!") % (tax_data.name)) - # compute the amount in foreign currency. + # compute the amount in foreign currency amount_currency = False if line.move_line_id: # We want to set it on the account move line as soon as the original line had a foreign currency @@ -1200,6 +1211,20 @@ class account_voucher_line(osv.osv): rs_data[line.id] = res return rs_data + def _currency_id(self, cr, uid, ids, name, args, context=None): + ''' + This function returns the currency id of a voucher line. It's either the currency of the + associated move line (if any) or the currency of the voucher or the company currency. + ''' + res = {} + for line in self.browse(cr, uid, ids, context=context): + move_line = line.move_line_id + if move_line: + res[line.id] = move_line.currency_id and move_line.currency_id.id or move_line.company_id.currency_id.id + else: + res[line.id] = line.voucher_id.currency_id and line.voucher_id.currency_id.id or line.voucher_id.company_id.currency_id.id + return res + _columns = { 'voucher_id':fields.many2one('account.voucher', 'Voucher', required=1, ondelete='cascade'), 'name':fields.char('Description', size=256), @@ -1216,6 +1241,7 @@ class account_voucher_line(osv.osv): 'amount_original': fields.function(_compute_balance, multi='dc', type='float', string='Original Amount', store=True), 'amount_unreconciled': fields.function(_compute_balance, multi='dc', type='float', string='Open Balance', store=True), 'company_id': fields.related('voucher_id','company_id', relation='res.company', type='many2one', string='Company', store=True, readonly=True), + 'currency_id': fields.function(_currency_id, string='Currency', type='many2one', relation='res.currency', readonly=True), } _defaults = { 'name': '', @@ -1252,10 +1278,10 @@ class account_voucher_line(osv.osv): ttype = 'dr' else: ttype = 'cr' - account_id = move_line.account_id.id res.update({ - 'account_id':account_id, - 'type': ttype + 'account_id': move_line.account_id.id, + 'type': ttype, + 'currency_id': move_line.currency_id and move_line.currency_id.id or move_line.company_id.currency_id.id, }) return { 'value':res, diff --git a/addons/account_voucher/test/account_voucher_report.yml b/addons/account_voucher/test/account_voucher_report.yml index b41c33e4470..85432f747aa 100644 --- a/addons/account_voucher/test/account_voucher_report.yml +++ b/addons/account_voucher/test/account_voucher_report.yml @@ -1,7 +1,7 @@ - Demo for Account Voucher - - !record {model: account.voucher, id: account_voucher_voucheraxelor0}: + !record {model: account.voucher, id: account_voucher_voucheraxelor0again}: account_id: account.cash company_id: base.main_company journal_id: account.bank_journal @@ -19,6 +19,6 @@ - !python {model: account.voucher}: | import netsvc, tools, os - (data, format) = netsvc.LocalService('report.voucher.cash_receipt.drcr').create(cr, uid, [ref("account_voucher_voucheraxelor0")], {}, {}) + (data, format) = netsvc.LocalService('report.voucher.cash_receipt.drcr').create(cr, uid, [ref("account_voucher_voucheraxelor0again")], {}, {}) if tools.config['test_report_directory']: file(os.path.join(tools.config['test_report_directory'], 'account_voucher-report.'+format), 'wb+').write(data) diff --git a/addons/account_voucher/test/case4_cad_chf.yml b/addons/account_voucher/test/case4_cad_chf.yml index 7c0f9274ff8..f31a7393a8e 100644 --- a/addons/account_voucher/test/case4_cad_chf.yml +++ b/addons/account_voucher/test/case4_cad_chf.yml @@ -128,6 +128,8 @@ for item in voucher_id.line_cr_ids: if item.amount_unreconciled == 186.74: data += [(item.id, 186.74)] + else: + data += [(item.id, 0.0)] for line_id, amount in data: self.pool.get('account.voucher.line').write(cr, uid, [line_id], {'amount': amount}) assert (voucher_id.state=='draft'), "Voucher is not in draft state" diff --git a/addons/account_voucher/voucher_payment_receipt_view.xml b/addons/account_voucher/voucher_payment_receipt_view.xml index db7c9d9ec54..6ed7ab0fe7c 100644 --- a/addons/account_voucher/voucher_payment_receipt_view.xml +++ b/addons/account_voucher/voucher_payment_receipt_view.xml @@ -92,7 +92,7 @@ - + - + - + @@ -203,11 +203,11 @@ - + - + @@ -318,7 +318,7 @@ - + - + - + - + From 4cb6d48f1ff5fa21244396768ed82860f7ceb4a6 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Wed, 30 Nov 2011 16:56:14 +0530 Subject: [PATCH 483/892] [IMP] Improve m2m and o2m to show selected record in formview. bzr revid: jra@tinyerp.com-20111130112614-qrkmra8rzok7nksn --- .../web_mobile/static/src/js/form_mobile.js | 136 ++++++------------ .../web_mobile/static/src/xml/web_mobile.xml | 19 +-- 2 files changed, 47 insertions(+), 108 deletions(-) diff --git a/addons/web_mobile/static/src/js/form_mobile.js b/addons/web_mobile/static/src/js/form_mobile.js index cc816b75a21..13ff38bca5c 100644 --- a/addons/web_mobile/static/src/js/form_mobile.js +++ b/addons/web_mobile/static/src/js/form_mobile.js @@ -41,13 +41,13 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({ var fields = result.fields; var view_fields = result.arch.children; var get_fields = this.get_fields(view_fields); + var values = self.datarecord; for (var j = 0; j < view_fields.length; j++) { if (view_fields[j].tag == 'notebook') { var notebooks = view_fields[j]; } } - self.$element.html(self.render({'get_fields': get_fields, 'notebooks': notebooks || false, 'fields' : fields, 'values' : self.datarecord ,'temp_flag':'1'})); - self.formatdata(get_fields, fields, result, self.datarecord,self.element_id,'element'); + self.$element.html(self.render({'get_fields': get_fields, 'notebooks': notebooks || false, 'fields' : fields, 'values' : values ,'temp_flag':'1'})); self.$element.find("[data-role=header]").find('h1').html(self.head_title); self.$element.find("[data-role=header]").find('#home').click(function(){ $.mobile.changePage("#oe_menu", "slide", false, true); @@ -55,110 +55,56 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({ self.$element.find('[data-role=collapsible-set]').find('[data-role=collapsible]').each(function(i){ for (var k = 0; k < notebooks.children.length; k++) { if (notebooks.children[k].attrs.string == $(this).attr('id')) { - get_fields = self.get_fields(notebooks.children[k].children); - for (var i = 0; i < get_fields.length; i++) { - if (fields[get_fields[i].attrs.name].type == 'one2many'){ - self.relational_fields = get_fields[i].attrs.name; - if(fields[get_fields[i].attrs.name].views.form){ - var get_fields_test = self.get_fields(fields[get_fields[i].attrs.name].views.form.arch.children); - var fields_test = fields[get_fields[i].attrs.name]['views'].form.fields; - var notebook=fields[get_fields[i].attrs.name].views.form.arch; - } - } - } - $(this).find('div#page_content').html(self.render({'get_fields': get_fields,'fields' : result.fields, 'values' : self.datarecord})); + get_fields_notebook = self.get_fields(notebooks.children[k].children); + $(this).find('div#page_content').html(self.render({'get_fields': get_fields_notebook,'fields' : fields, 'values' : values})); } - self.formatdata(get_fields, fields, result, self.datarecord,'page_content','element'); } }); - self.$element.find('[data-role=collapsible-set]').find('[data-role=collapsible]').find('div#page_content').find('[data-role=content]').find('ul').find('li').click(function(ev){ + self.$element.find('#o2m_m2m').click(function(ev) { ev.preventDefault(); ev.stopPropagation(); - var latid,lastid; - $(this).parents().each(function(){ - latid = $(this).attr('id'); - self.$element.find('[data-role=collapsible-set]').find('[data-role=collapsible]').each(function(){ - if(latid==$(this).attr('id')){ - lastid = $(this).attr('id'); - } - }); - }); var relational = $(this).attr('for'); - if(result.fields[relational]){ - var head = $.trim($(this).text()); - var dataset = new openerp.web.DataSetSearch(self, result.fields[relational].relation, result.fields[relational].context); - dataset.domain=[['id', 'in', self.datarecord[relational]]]; - dataset.read_slice([], {limit:80}, function(result1,ids){ + var rel_field = fields[relational]; + var head = rel_field.string; + var rel_model = rel_field.relation; + var rel_ids = values[relational]; + if (rel_ids) { + var datasearch = new openerp.web.DataSetSearch(self, rel_field.relation, rel_field.context); + datasearch.domain=[['id', 'in', rel_ids]]; + datasearch.read_slice([], {limit:80}, function(listrec){ _.extend(self.action.context,{"html_name_get" : true}); - var dataset1 = new openerp.web.DataSet(self, result.fields[relational].relation,result.fields[relational].context); - dataset1.name_get(result1,function(res){ - var additional = ""; - if(res['html_name_get']){ - additional = res['display']; - } - if(!$('[id^="oe_list_'+relational+'_'+self.element_id+'"]').html()){ - $('
').appendTo('#moe'); - $('[id^="oe_list_'+relational+'_'+self.element_id+'"]').html(openerp.web.qweb.render("ListView", {'records' : res,'data': additional})); - $('[id^="oe_list_'+relational+'_'+self.element_id+'"]').find("[data-role=header]").find('h1').html(head); - $('[id^="oe_list_'+relational+'_'+self.element_id+'"]').find("[data-role=header]").find('#home').click(function(){ - $.mobile.changePage("#oe_menu", "slide", false, true); - }); - $('[id^="oe_list_'+relational+'_'+self.element_id+'"]').find("a#list-id").click(function(ev){ - ev.preventDefault(); - ev.stopPropagation(); - var head_title = $(this).text(); - var listid = $(ev.currentTarget).data('id'); - dataset = new openerp.web.DataSetSearch(self, dataset.model, null, null); - dataset.read_slice([],{}, function (result_relational) { - for (var i = 0; i < result_relational.length; i++) { - if (result_relational[i].id == listid) { - var data_relational = result_relational[i]; - } - } - if(!$('[id^="oe_form_'+listid+result.fields[relational].relation+'"]').html()){ - $('
').appendTo('#moe'); - for (var k = 0; k < notebooks.children.length; k++) { - if (notebooks.children[k].attrs.string == lastid) { - get_fields = self.get_fields(notebooks.children[k].children); - for (var i = 0; i < get_fields.length; i++) { - if (fields[get_fields[i].attrs.name].type == 'one2many'){ - self.relational_fields = get_fields[i].attrs.name; - if(fields[get_fields[i].attrs.name].views.form){ - var get_fields_test = self.get_fields(fields[get_fields[i].attrs.name].views.form.arch.children); - var fields_test = fields[get_fields[i].attrs.name]['views'].form.fields; - var notebook=fields[get_fields[i].attrs.name].views.form.arch; - } - } - } - } - } - if(notebook){ - $('[id^="oe_form_'+listid+result.fields[relational].relation+'"]').html(self.render({'get_fields': get_fields_test, 'notebooks': false, 'fields' : fields_test, 'values' : data_relational, 'temp_flag':'1' })); - }else{ - $('[id^="oe_form_'+listid+result.fields[relational].relation+'"]').html(self.render({'get_fields': get_fields_test, 'notebooks': false, 'fields' : fields, 'values' : data_relational, 'temp_flag':'1' })); - } - $('[id^="oe_form_'+listid+result.fields[relational].relation+'"]').find("[data-role=header]").find('h1').html(head_title); - $('[id^="oe_form_'+listid+result.fields[relational].relation+'"]').find("[data-role=header]").find('#home').click(function(){ - $.mobile.changePage("#oe_menu", "slide", false, true); - }); - if(notebook){ - self.formatdata(get_fields_test, fields_test, result, data_relational,'oe_form_'+listid+result.fields[relational].relation,'element'); - }else{ - self.formatdata(get_fields_test, fields, result, data_relational,'oe_form_'+listid+result.fields[relational].relation,'element'); - } - $.mobile.changePage('#oe_form_'+listid+result.fields[relational].relation, "slide", false, true); - self.formatdata('', '', '', '','oe_form_'+listid+result.fields[relational].relation,'slider'); + var dataset = new openerp.web.DataSet(self, rel_field.relation,rel_field.context); + dataset.name_get(listrec,function(res){ + var additional = ""; + if(res['html_name_get']){ + additional = res['display']; + } + if(!$('[id^="oe_list_'+relational+'_'+self.element_id+'"]').html()){ + $('
').appendTo('#moe'); + $('[id^="oe_list_'+relational+'_'+self.element_id+'"]').html(openerp.web.qweb.render("ListView", {'records' : res,'data': additional})); + $('[id^="oe_list_'+relational+'_'+self.element_id+'"]').find("[data-role=header]").find('h1').html(head); + $('[id^="oe_list_'+relational+'_'+self.element_id+'"]').find("[data-role=header]").find('#home').click(function(){ + $.mobile.changePage("#oe_menu", "slide", false, true); + }); + $('[id^="oe_list_'+relational+'_'+self.element_id+'"]').find("a#list-id").click(function(ev){ + ev.preventDefault(); + ev.stopPropagation(); + var head_title = $(this).text(); + var listid = $(ev.currentTarget).data('id'); + if(!$('[id^="oe_form_'+listid+rel_field.relation+'"]').html()){ + $('
').appendTo('#moe'); + this.formview = new openerp.web_mobile.FormView(self, "oe_form_"+listid+rel_field.relation, listid, '', head, rel_field.relation, false); + this.formview.start(); }else{ - $.mobile.changePage('#oe_form_'+listid+result.fields[relational].relation, "slide", false, true); + $.mobile.changePage('#oe_form_'+listid+rel_field.relation, "slide", false, true); } }); - }); - $.mobile.changePage("#oe_list_"+relational+"_"+self.element_id, "slide", false, true); - }else{ - $.mobile.changePage("#oe_list_"+relational+"_"+self.element_id, "slide", false, true); - } + $.mobile.changePage("#oe_list_"+relational+"_"+self.element_id, "slide", false, true); + }else{ + $.mobile.changePage("#oe_list_"+relational+"_"+self.element_id, "slide", false, true); + } }); - }); + }); } }); self.$element.find('#m2o_btn').click(this.open_m2o_form); diff --git a/addons/web_mobile/static/src/xml/web_mobile.xml b/addons/web_mobile/static/src/xml/web_mobile.xml index 1deb752cab6..f94117e6e0e 100644 --- a/addons/web_mobile/static/src/xml/web_mobile.xml +++ b/addons/web_mobile/static/src/xml/web_mobile.xml @@ -279,7 +279,9 @@ @@ -296,24 +298,15 @@ - + - - -
From c5c88c43c07dfb2ef2f3def2bd9441a3cbd1fba0 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Wed, 30 Nov 2011 13:02:39 +0100 Subject: [PATCH 484/892] [FIX] document: removed dangerous and useless commits These commits were introduce mostly at revision 1849.1.1 revid:hmo@tinyerp.com-20081111052750-zqzvr6oaihvt103t in an attempt to fix an issue with transactions originating from FTP connections. This was wrong: the virtual FTP filesystem should perform its own transaction management for each operation, just like the RPC layer does it for each request. Forcing a commit in the business code during the course of a normal transaction is totally *forbidden*! In addition, the FTP layer now properly manages its transactions, so the commit calls were useless anyway. bzr revid: odo@openerp.com-20111130120239-5fcavvpd14w056zb --- addons/document/document.py | 2 -- addons/document/test/document_test2.yml | 1 - 2 files changed, 3 deletions(-) diff --git a/addons/document/document.py b/addons/document/document.py index 1bf177f50e6..36b10b34e4b 100644 --- a/addons/document/document.py +++ b/addons/document/document.py @@ -254,7 +254,6 @@ class document_file(osv.osv): del vals['file_size'] if ids and vals: result = super(document_file,self).write(cr, uid, ids, vals, context=context) - cr.commit() # ? return result def create(self, cr, uid, vals, context=None): @@ -299,7 +298,6 @@ class document_file(osv.osv): else: #raise osv.except_osv(_('ValidateError'), _('File name must be unique!')) result = super(document_file, self).create(cr, uid, vals, context) - cr.commit() # ? return result def __get_partner_id(self, cr, uid, res_model, res_id, context=None): diff --git a/addons/document/test/document_test2.yml b/addons/document/test/document_test2.yml index 65312eaf10d..be91bfb3644 100644 --- a/addons/document/test/document_test2.yml +++ b/addons/document/test/document_test2.yml @@ -80,4 +80,3 @@ - !python {model: document.directory}: | self.unlink(cr, uid, [ref('dir_tests')]) - cr.commit() From 313897186c307afec4b5211f7db9df42c5f83844 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Wed, 30 Nov 2011 13:02:44 +0100 Subject: [PATCH 485/892] [IMP] document_ftp: improve/sanitize transaction management during tests Now that spurious commits were removed in document module, the test would not run properly anymore. We do need special care with transactions when we test the FTP layer because operations on the virtual FS are done in their own transaction, and immediately committed. In order for test code and FTP operations to be able to see each other, the transactions need to be synchronized. The current test transaction needs to be rolled back or committed after reach FTP operation so it can "see" the latest changes in the database. Similarly, we must force a commit of the test transaction whenever we want the FTP layer to be able to see its effects. bzr revid: odo@openerp.com-20111130120244-3m15sxdx1x5x1q1x --- addons/document_ftp/test/document_ftp_test2.yml | 6 +++--- addons/document_ftp/test/document_ftp_test4.yml | 16 +++++++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/addons/document_ftp/test/document_ftp_test2.yml b/addons/document_ftp/test/document_ftp_test2.yml index 33ce1416ec8..eb86a99407d 100644 --- a/addons/document_ftp/test/document_ftp_test2.yml +++ b/addons/document_ftp/test/document_ftp_test2.yml @@ -100,11 +100,11 @@ fdata = StringIO('abcd') ftp.storbinary('STOR test2.txt', fdata) ftp.close() - cr.commit() - I look for the "test2.txt" file at the server - !python {model: ir.attachment }: | + cr.rollback() # restart transaction to see changes (FTP-FS uses its own cursor) ids = self.search(cr, uid, [('name', '=', 'test2.txt')]) assert ids, "No test2.txt file found." - @@ -116,11 +116,11 @@ ftp = te.get_ftp_folder(cr, uid, self, 'Documents') ftp.delete('test2.txt') ftp.close() - cr.commit() - I check at the server that test2.txt is deleted - !python {model: ir.attachment }: | + cr.rollback() # restart transaction to see changes (FTP-FS uses its own cursor) ids = self.search(cr, uid, [('name', '=', 'test2.txt')]) assert not ids, "test2.txt file can still be found." - @@ -133,7 +133,7 @@ fdata = StringIO('abcd') ftp.storbinary('STOR test2.txt', fdata) ftp.close() - cr.commit() + cr.rollback() # restart transaction to see changes (FTP-FS uses its own cursor) - I delete the test2.txt from the server (RPC). - diff --git a/addons/document_ftp/test/document_ftp_test4.yml b/addons/document_ftp/test/document_ftp_test4.yml index 0a3ff33333e..9b311f64605 100644 --- a/addons/document_ftp/test/document_ftp_test4.yml +++ b/addons/document_ftp/test/document_ftp_test4.yml @@ -4,7 +4,6 @@ !python {model: ir.attachment}: | from document_ftp import test_easyftp as te ftp = te.get_plain_ftp(timeout=1.0) - cr.commit() - | I create two partners 'Partner1' and 'Partner2'. I create three partner categories: 'none', 'pat1' and 'all' @@ -54,7 +53,6 @@ dirs = ftp.nlst() for dir in [ 'All Partner1+2', 'No partners', 'Pat 1' ]: assert dir in dirs, "Dir %s not in folder" % dir - cr.commit() - I create a 'partners' folder by the first resource one. - @@ -65,6 +63,8 @@ ressource_type_id: base.model_res_partner domain: "[('category_id','in',[active_id])]" ressource_parent_type_id : base.model_res_partner_category +- + I commit (because FTP operations are on different transaction) - !python {model: document.directory, id: }: | cr.commit() @@ -81,7 +81,6 @@ for dir in correct: res = ftp.nlst(dir+'/Partners of Test') assert res == correct[dir], "Dir %s falsely contains %s" %(dir, res) - cr.commit() - I create an ir.attachment, attached (not related) to Partner1 - @@ -89,6 +88,11 @@ name: File of pat1 res_model: res.partner res_id: !eval ref("tpartner1") +- + I commit (because FTP operations are on different transaction) +- + !python {model: document.directory, id: }: | + cr.commit() - I check that pat1/Partner1 folder has the file. I check that all/Partner1 folder has the file @@ -109,6 +113,7 @@ ftp = te.get_ftp_folder(cr, uid, self, 'Documents/Partners Testing/Pat 1/Partners of Test/Partner 1') fdata = StringIO('abcd') ftp.storbinary('STOR pat1-dynamic.txt', fdata) + cr.rollback() # restart transaction to see changes (FTP-FS uses its own cursor) - I check at the server that the file is attached to Partner1 - @@ -159,7 +164,8 @@ from cStringIO import StringIO ftp = te.get_ftp_folder(cr, uid, self, 'Documents/Partners Testing/Pat 1/Partners of Test/Partner 1') ftp.delete('pat1-dynamic.txt') - ftp.close() + ftp.close() + cr.rollback() # restart transaction to see changes (FTP-FS uses its own cursor) - I delete the Partners Testing folder, "File of pat1" file, Partner and Partner category. @@ -177,5 +183,5 @@ partner_categ_pool.unlink(cr, uid, [ref('tpat_categ_all')]) partner_pool.unlink(cr, uid, [ref('tpartner1')]) partner_pool.unlink(cr, uid, [ref('tpartner_2')]) - cr.commit() + cr.commit() #required because all the operations via FTP were committed From f56cc312e46d3f63fcd6c5e57f3fb3293855ae6e Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Wed, 30 Nov 2011 17:36:40 +0530 Subject: [PATCH 486/892] [IMP] crm_parner_assign, crm: Corrected history[whole, laetst, case info] for lead forword to its nearest partner email wizard bzr revid: ron@tinyerp.com-20111130120640-t6l8pec0fb6pehjq --- addons/crm/crm_lead.py | 2 +- addons/crm_partner_assign/wizard/crm_forward_to_partner.py | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 9510041d37f..cbaa917eb88 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -422,7 +422,7 @@ class crm_lead(crm_case, osv.osv): else: value = lead[field_name] - body.append("%s: %s\n" % (field.string, value or '')) + body.append("%s: %s" % (field.string, value or '')) return "\n".join(body + ['---']) def _merge_notification(self, cr, uid, opportunity_id, opportunities, context=None): diff --git a/addons/crm_partner_assign/wizard/crm_forward_to_partner.py b/addons/crm_partner_assign/wizard/crm_forward_to_partner.py index 4286de91ed1..565f99b9db1 100644 --- a/addons/crm_partner_assign/wizard/crm_forward_to_partner.py +++ b/addons/crm_partner_assign/wizard/crm_forward_to_partner.py @@ -66,8 +66,7 @@ class crm_lead_forward_to_partner(osv.osv_memory): res_id = context.get('active_id') model = context.get('active_model') lead = self.pool.get(model).browse(cr, uid, res_id, context) - body_text = self._get_info_body_text(cr, uid, lead, context=context) - context['mail.compose.message.body'] = history_type + body_text = self._get_message_body_text(cr, uid, lead, history_type, context=context) if body_text: res = {'value': {'body_text' : body_text}} return res @@ -171,7 +170,7 @@ class crm_lead_forward_to_partner(osv.osv_memory): to = 'To: %s' % (message.email_to or '') sentdate = 'Date: %s' % (message.date or '') desc = '\n%s'%(message.body_text) - original = [header, sender, to, sentdate, desc] + original = [header, sender, to, sentdate, desc, '\n'] original = '\n'.join(original) body += original return body or '' From a7a4f50aefed52c706c8073e8248eccf98d815de Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 30 Nov 2011 13:31:54 +0100 Subject: [PATCH 487/892] [FIX] Preserve kanban views whitespaces bzr revid: fme@openerp.com-20111130123154-nhh6sj21s38ejsb5 --- addons/web/common/xml2json.py | 2 +- addons/web/controllers/main.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/web/common/xml2json.py b/addons/web/common/xml2json.py index 16022624fe7..14de0794b4d 100644 --- a/addons/web/common/xml2json.py +++ b/addons/web/common/xml2json.py @@ -31,7 +31,7 @@ class Xml2Json(object): if el.text and (not skip_whitespaces or el.text.strip() != ''): kids.append(el.text) for kid in el: - kids.append(Xml2Json.convert_element(kid)) + kids.append(Xml2Json.convert_element(kid, skip_whitespaces)) if kid.tail and (not skip_whitespaces or kid.tail.strip() != ''): kids.append(kid.tail) res["children"] = kids diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 7dbd696cfb4..d337fc240b5 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -841,12 +841,12 @@ class View(openerpweb.Controller): context = req.session.eval_context(req.context) fvg = Model.fields_view_get(view_id, view_type, context, toolbar, submenu) # todo fme?: check that we should pass the evaluated context here - self.process_view(req.session, fvg, context, transform) + self.process_view(req.session, fvg, context, transform, (view_type != 'kanban')) if toolbar and transform: self.process_toolbar(req, fvg['toolbar']) return fvg - def process_view(self, session, fvg, context, transform): + def process_view(self, session, fvg, context, transform, skip_whitespaces=True): # depending on how it feels, xmlrpclib.ServerProxy can translate # XML-RPC strings to ``str`` or ``unicode``. ElementTree does not # enjoy unicode strings which can not be trivially converted to @@ -864,7 +864,7 @@ class View(openerpweb.Controller): xml = self.transform_view(arch, session, evaluation_context) else: xml = ElementTree.fromstring(arch) - fvg['arch'] = web.common.xml2json.Xml2Json.convert_element(xml) + fvg['arch'] = web.common.xml2json.Xml2Json.convert_element(xml, skip_whitespaces) for field in fvg['fields'].itervalues(): if field.get('views'): From e3c9d0f3f4a9329bb35e0ae25947ba8c4264217e Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 30 Nov 2011 13:32:45 +0100 Subject: [PATCH 488/892] [ADD] Added oe_kanban_highlight css class bzr revid: fme@openerp.com-20111130123245-2lg9o2y87mnzg5bl --- addons/web_kanban/static/src/css/kanban.css | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 1a45155058e..2fc78ba87d0 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -203,6 +203,16 @@ margin: 5px 0 0 15px; list-style: circle; } +.openerp .oe_kanban_highlight { + border-radius: 2px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + padding: 1px 5px; + margin: 1px 4px; + white-space: nowrap; + display: inline-block; + line-height: 1em; +} /* Custom colors are also present in kanban.js */ /* Custom color#0 */ From 31880bd354ff4fef552b131916869a8324c061fb Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 30 Nov 2011 13:56:02 +0100 Subject: [PATCH 489/892] [REM] buggy webneko bzr revid: xmo@openerp.com-20111130125602-yyiymjkyg062fus7 --- addons/web/static/src/css/base.css | 8 -------- addons/web/static/src/xml/base.xml | 4 ---- 2 files changed, 12 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index cad536c0f1f..d8f31af1d35 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1310,14 +1310,6 @@ label.error { background: 1px 3px url(/web/static/src/img/icons/gtk-print.png) no-repeat; } -.openerp .oe-running-kitten { - display: none; -} - -.openerp.kitten-mode-activated .oe-running-kitten { - display: inherit; -} - .openerp.kitten-mode-activated .main_table { background: url(http://placekitten.com/g/1500/800) repeat; } diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 1fe4d028db4..4264ca8dd38 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -360,10 +360,6 @@
  • -
  • - - -
  • LOGOUT From 379ab719eec090c3dc83775c9856a564948d074f Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Wed, 30 Nov 2011 18:36:14 +0530 Subject: [PATCH 490/892] [IMP] crm: After Merged oppportunity, correct value of merge_description, and Email_cc[It means Text field value have filtered] bzr revid: ron@tinyerp.com-20111130130614-s9e1a8v6hra0kmxr --- addons/crm/crm_lead.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index cbaa917eb88..49272c97576 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -369,7 +369,7 @@ class crm_lead(crm_case, osv.osv): return res and res.id or False def _concat_all(attr): - return ', '.join([getattr(opportunity, attr) or '' for opportunity in opportunities if hasattr(opportunity, attr)]) + return ', '.join(filter(lambda x: x, [getattr(opportunity, attr) or '' for opportunity in opportunities if hasattr(opportunity, attr)])) data = {} for field_name in fields: From b552ff1991575bf167e2fe889521aa9268ecd7fc Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 30 Nov 2011 14:11:54 +0100 Subject: [PATCH 491/892] [IMP] Seperate menu tips from action view manager's content bzr revid: fme@openerp.com-20111130131154-cu9hrcxyjvw15wnc --- addons/web/static/src/js/views.js | 6 +++--- addons/web/static/src/xml/base.xml | 28 ++++++++++++++++++---------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 582a526e57a..b19cf7a7626 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -426,8 +426,8 @@ session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepner }); if (this.action.help && !this.flags.low_profile) { var Users = new session.web.DataSet(self, 'res.users'), - header = this.$element.find('.oe-view-manager-header'); - header.delegate('blockquote button', 'click', function() { + $tips = this.$element.find('.oe_view_manager_menu_tips'); + $tips.delegate('blockquote button', 'click', function() { var $this = $(this); //noinspection FallthroughInSwitchStatementJS switch ($this.attr('name')) { @@ -444,7 +444,7 @@ session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepner if (!(user && user.id === self.session.uid)) { return; } - header.find('blockquote').toggle(user.menu_tips); + $tips.find('blockquote').toggle(user.menu_tips); }); } } diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 23fa97ce7f5..754364c6c8d 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -418,6 +418,7 @@ + +
    @@ -443,21 +444,28 @@
    + + + +
    +

    +
    + + +
    +
    + + +
    -
    -

    -
    - - -
    -
    - + From 9e965230f6b06c90931915836c12b8e01cbda905 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 30 Nov 2011 14:25:43 +0100 Subject: [PATCH 492/892] [IMP] Include star shortcut in the view title h2 element bzr revid: fme@openerp.com-20111130132543-fcl4avnrmpryaryt --- addons/web/static/src/js/views.js | 6 +++--- addons/web/static/src/xml/base.xml | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index b19cf7a7626..e8af1290e48 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -280,7 +280,7 @@ session.web.ViewManager = session.web.Widget.extend(/** @lends session.web.View } } $.when(view_promise).then(function () { - self.$element.find('.oe_view_title:first').text( + self.$element.find('.oe_view_title_text:first').text( self.display_title()); }); return view_promise; @@ -472,10 +472,10 @@ session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepner view_id = (fvg && fvg.view_id) || '--'; self.$element.find('.oe_get_xml_view span').text(view_id); if (!self.action.name && fvg) { - self.$element.find('.oe_view_title').text(fvg.arch.attrs.string || fvg.name); + self.$element.find('.oe_view_title_text').text(fvg.arch.attrs.string || fvg.name); } - var $title = self.$element.find('.oe_view_title'), + var $title = self.$element.find('.oe_view_title_text'), $search_prefix = $title.find('span.oe_searchable_view'); if (controller.searchable !== false) { if (!$search_prefix.length) { diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 754364c6c8d..e097c4cd771 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -423,7 +423,7 @@

    - +

    @@ -463,9 +463,11 @@ - + + + From 832436c1487ca6accf074da8e73ce5cccda51c48 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Wed, 30 Nov 2011 14:30:08 +0100 Subject: [PATCH 493/892] [IMP] account_voucher: usability changes bzr revid: qdp-launchpad@openerp.com-20111130133008-lki16nzzlz78s0h8 --- addons/account_voucher/account_voucher.py | 6 ++--- .../voucher_payment_receipt_view.xml | 24 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py index 22824cb8db0..999de8dfbf4 100644 --- a/addons/account_voucher/account_voucher.py +++ b/addons/account_voucher/account_voucher.py @@ -274,11 +274,11 @@ class account_voucher(osv.osv): 'payment_option':fields.selection([ ('without_writeoff', 'Keep Open'), ('with_writeoff', 'Reconcile Payment Balance'), - ], 'Payment Difference', required=True, readonly=True, states={'draft': [('readonly', False)]}), + ], 'Payment Difference', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="This field helps you to choose what you want to do with the eventual difference between the paid amount and the sum of allocated amounts. You can either choose to keep open this difference on the partner's account, or reconcile it with the payment(s)"), 'writeoff_acc_id': fields.many2one('account.account', 'Counterpart Account', readonly=True, states={'draft': [('readonly', False)]}), 'comment': fields.char('Counterpart Comment', size=64, required=True, readonly=True, states={'draft': [('readonly', False)]}), 'analytic_id': fields.many2one('account.analytic.account','Write-Off Analytic Account', readonly=True, states={'draft': [('readonly', False)]}), - 'writeoff_amount': fields.function(_get_writeoff_amount, string='Reconcile Amount', type='float', readonly=True), + 'writeoff_amount': fields.function(_get_writeoff_amount, string='Difference Amount', type='float', readonly=True, help="Computed as the difference between the amount stated in the voucher and the sum of allocation on the voucher lines."), 'payment_rate_currency_id': fields.many2one('res.currency', 'Payment Rate Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}), 'payment_rate': fields.float('Exchange Rate', digits=(12,6), required=True, readonly=True, states={'draft': [('readonly', False)]}, help='The specific rate that will be used, in this voucher, between the selected currency (in \'Payment Rate Currency\' field) and the voucher currency.'), @@ -1231,7 +1231,7 @@ class account_voucher_line(osv.osv): 'account_id':fields.many2one('account.account','Account', required=True), 'partner_id':fields.related('voucher_id', 'partner_id', type='many2one', relation='res.partner', string='Partner'), 'untax_amount':fields.float('Untax Amount'), - 'amount':fields.float('Amount', digits_compute=dp.get_precision('Account')), + 'amount':fields.float('Allocation', digits_compute=dp.get_precision('Account')), 'reconcile': fields.boolean('Full Reconcile'), 'type':fields.selection([('dr','Debit'),('cr','Credit')], 'Dr/Cr'), 'account_analytic_id': fields.many2one('account.analytic.account', 'Analytic Account'), diff --git a/addons/account_voucher/voucher_payment_receipt_view.xml b/addons/account_voucher/voucher_payment_receipt_view.xml index 6ed7ab0fe7c..e2060a04533 100644 --- a/addons/account_voucher/voucher_payment_receipt_view.xml +++ b/addons/account_voucher/voucher_payment_receipt_view.xml @@ -102,8 +102,8 @@ - - + + @@ -116,8 +116,8 @@ - - + + @@ -177,9 +177,9 @@ - + - + @@ -193,9 +193,9 @@ - + - + @@ -329,9 +329,9 @@ - + - + @@ -345,9 +345,9 @@ - + - + From 8dcc7aac7ae32007795cf9c44f4a725a2c248404 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Wed, 30 Nov 2011 14:33:11 +0100 Subject: [PATCH 494/892] [IMP] account_voucher: usability changes bzr revid: qdp-launchpad@openerp.com-20111130133311-8t4sxrikywrkkkhh --- addons/account_voucher/voucher_payment_receipt_view.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/account_voucher/voucher_payment_receipt_view.xml b/addons/account_voucher/voucher_payment_receipt_view.xml index e2060a04533..13cbaa74688 100644 --- a/addons/account_voucher/voucher_payment_receipt_view.xml +++ b/addons/account_voucher/voucher_payment_receipt_view.xml @@ -252,7 +252,7 @@